A53039 | 程序题:参数高效微调低秩适配方法 LoRA(Low-Rank Adaptation)是一种参数高效微调方法,通过只训练 部分低秩矩阵插入至原始模型的关键层,实现大语言模型的高效定制。与传统微调相 比,LoRA 显著减少了训练参数量和显存需求,适用于资源受限场景下的大模型下游训练。一个典型训练场景如下:模型:Qwen-2.5-7B-Instruct;LoRA 仅插入注意力机制中关键的两个投影层。•…
来源2025年
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
程序题:参数高效微调
低秩适配方法 LoRA(Low-Rank Adaptation)是一种参数高效微调方法,通过只训练 部分低秩矩阵插入至原始模型的关键层,实现大语言模型的高效定制。与传统微调相 比,LoRA 显著减少了训练参数量和显存需求,适用于资源受限场景下的大模型下游训练。一个典型训练场景如下:
模型:Qwen-2.5-7B-Instruct;LoRA 仅插入注意力机制中关键的两个投影层。
• 资源:单卡 16GB 显存;输入序列长度上限 2048。
• 训练策略:需将全局 batch size 控制在 8 左右,在显存足够的情况下尽量快的进行训练。
• 精度:启用半精度训练以降低显存占用。
• 产出:训练完成后,仅保存 LoRA adapter 权重,供下游推理使用。
请阅读以下训练Pytho代码,并根据需求完成空缺部分。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM,
TrainingArguments, Trainer
from peft import LoraConfig, get_peft_model
model_name = "Qwen/Qwen2.5-7B-Instruct"
# 1) 加载分词器
tokenizer = ____[26]____
model = AutoModelForCausalLM.from_pretrained(
model_name, device_map="auto", torch_dtype=torch.float16,trust_remote_code=True
)
# 2) 配置 LoRA
lora_config = LoraConfig(
____[27]____
target_modules=____[28]____,
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
# 3) 定义 Trainer(假设 train_dataset 已经准备好)
training_args = TrainingArguments(
output_dir="./lora-qwen2.5-7b",
____[29]____
num_train_epochs=3,
learning_rate=2e-4,
____[30]____
logging_steps=10,
save_strategy="epoch"
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
tokenizer=tokenizer,
)
trainer.train()
# 4) 保存 LoRA 权重
model.save_pretrained("./lora-qwen2.5-7b-lora")暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?