From 7a19c526024ce68b0a35f37b30b12037dba82240 Mon Sep 17 00:00:00 2001
From: haoneng.lhn <haoneng.lhn@alibaba-inc.com>
Date: 星期三, 19 七月 2023 16:41:39 +0800
Subject: [PATCH] add lora finetune code

---
 funasr/bin/train.py         |    2 +-
 funasr/bin/build_trainer.py |    7 ++++---
 funasr/tasks/abs_task.py    |   15 +++++++++++++++
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/funasr/bin/build_trainer.py b/funasr/bin/build_trainer.py
index bd30a83..0ab2013 100644
--- a/funasr/bin/build_trainer.py
+++ b/funasr/bin/build_trainer.py
@@ -55,7 +55,7 @@
                   scheduler_conf=None,
                   specaug=None,
                   specaug_conf=None,
-                  param_dict=None,
+                  meta_dict=None,
                   **kwargs):
     mode = modelscope_dict['mode']
     args, ASRTask = parse_args(mode=mode)
@@ -144,8 +144,9 @@
         args.patience = None
     args.local_rank = local_rank
     args.distributed = distributed
-    for key, value in kwargs.items():
-        args.key = value
+    if meta_dict is not None:
+        for key, value in meta_dict.items():
+            args.key = value
     ASRTask.finetune_args = args
 
     return ASRTask
diff --git a/funasr/bin/train.py b/funasr/bin/train.py
index c9c0b02..f5d10c4 100755
--- a/funasr/bin/train.py
+++ b/funasr/bin/train.py
@@ -489,7 +489,7 @@
         "--lora_bias",
         type=str,
         default="none",
-        help="oss bucket.",
+        help="lora bias.",
     )
 
     return parser
diff --git a/funasr/tasks/abs_task.py b/funasr/tasks/abs_task.py
index 91d33c5..f7f13d2 100644
--- a/funasr/tasks/abs_task.py
+++ b/funasr/tasks/abs_task.py
@@ -71,6 +71,7 @@
 from funasr.utils.types import str_or_none
 from funasr.utils.wav_utils import calc_shape, generate_data_list, filter_wav_text
 from funasr.utils.yaml_no_alias_safe_dump import yaml_no_alias_safe_dump
+from funasr.modules.lora.utils import mark_only_lora_as_trainable
 
 try:
     import wandb
@@ -952,6 +953,18 @@
             default=None,
             help="oss bucket.",
         )
+        group.add_argument(
+            "--enable_lora",
+            type=str2bool,
+            default=False,
+            help="Apply lora for finetuning.",
+        )
+        group.add_argument(
+            "--lora_bias",
+            type=str,
+            default="none",
+            help="lora bias.",
+        )
 
         cls.trainer.add_arguments(parser)
         cls.add_task_arguments(parser)
@@ -1246,6 +1259,8 @@
             dtype=getattr(torch, args.train_dtype),
             device="cuda" if args.ngpu > 0 else "cpu",
         )
+        if args.enable_lora:
+            mark_only_lora_as_trainable(model, args.lora_bias)
         for t in args.freeze_param:
             for k, p in model.named_parameters():
                 if k.startswith(t + ".") or k == t:

--
Gitblit v1.9.1