昇思学习营-模型LoRA微调
是给后续生成任务定规则,让模型知道怎么结束文本、填充空白。这一步是‘搭好模型主干’,用预训练的强大能力打底。把 base model 和 LoRA 配置结合,模型就变成‘主干冻结 + 旁支可训’的形态。这一步是‘设计轻量插件的参数’,决定 LoRA 怎么插、插多深。冻结,给 Attention 层 QKV 这些关键模块加‘旁支’—— 低秩矩阵。,相当于给模型‘装轻量插件’,不动主干,却能适配新任务
原理示意图 + 流程
“先看左边 LoRA 原理 :预训练模型参数 W 冻结,给 Attention 层 QKV 这些关键模块加‘旁支’—— 低秩矩阵 A(正态分布初始化)和 B(初始全 0 )。输入 x 过模型,h 是中间输出,微调时只更新 A、B ,相当于给模型‘装轻量插件’,不动主干,却能适配新任务 。
为啥这么做?冻结预训练权重 能保留模型学到的通用知识,A、B 维度低(比如原矩阵 d×d ,旁支是 d×r + r×d ,r 远小于 d ),训练时只需更新少量参数,让训练成本暴跌 ,香橙派这类小硬件也能扛得住 。”
代码步骤拆解
-
1. 实例化 base model:
“第一块代码,用AutoModelForCausalLM.from_pretrained加载预训练模型(比如这里的DeepSeek系列模型 )。指定ms_dtype=mindspore.float16是为了在昇思框架里用半精度,省内存、加速计算 ;配generation_config、对齐pad_token_id和eos_token_id,是给后续生成任务定规则,让模型知道怎么结束文本、填充空白 。这一步是‘搭好模型主干’,用预训练的强大能力打底 。” -
2. 配置 LoraConfig:
“接着配LoraConfig,task_type选CAUSAL_LM(因果语言模型,适合文本生成 )。target_modules指定给哪些模块加 LoRA ,像q_proj、k_proj这些 QKV 投影层,就是要插旁支的地方;inference_mode=False开训练模式;r是低秩维度(控制旁支‘轻薄度’ ),lora_alpha影响缩放,lora_dropout正则化防过拟合。这一步是‘设计轻量插件的参数’,决定 LoRA 怎么插、插多深 。” -
3. 实例化 LoRA 模型:
“用get_peft_model把 base model 和 LoRA 配置结合,模型就变成‘主干冻结 + 旁支可训’的形态。最后model.trainable_parameters()能看哪些参数参与训练 ——只有 LoRA 旁支的A、B矩阵 ,参数量暴减(比如这里只占 0.5% )。训练时只更新这些‘轻量参数’,算力、内存压力大减 ,小硬件也能跑微调 。”
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)