news 2026/5/1 8:23:17

LoRA微调概论

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LoRA微调概论

🍋🍋AI学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


一、LoRA微调

✅ 核心思想

  • 不更新原始大模型的所有参数(7B 参数 ≈ 14GB 显存)
  • 而是在某些层(如 attention 的 Q/V 投影)插入低秩矩阵
  • 只训练 A 和 B(可减少 99%+ 可训练参数)

✅ 优势

项目传统全参数微调LoRA
显存占用极高(需多卡)极低(单卡 24G 可训 70B)
训练速度快 2~5 倍
存储成本每个任务存完整模型只存 ~100MB 的 adapter
多任务切换需加载不同模型动态切换 LoRA 权重

💡适用场景:SFT、DPO、甚至部分 RLHF(策略模型)


二、准备工作

1. 环境安装(推荐使用unsloth加速)

# 基础依赖 pip install torch transformers datasets accelerate peft bitsandbytes # (可选但强烈推荐)Unsloth:加速 LoRA 训练 2~5 倍 pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"

2. 选择基础模型

  • 中文推荐:Qwen/Qwen-1.5-7B-Chat,THUDM/chatglm3-6b
  • 英文推荐:meta-llama/Meta-Llama-3-8B-Instruct,mistralai/Mistral-7B-Instruct-v0.3
  • 注意:不要用 base 模型做对话任务!优先选-Instruct-Chat版本

3. 准备 SFT 数据集(Alpaca 格式)

[ { "instruction": "将以下英文翻译成中文", "input": "The future is already here — it's just not evenly distributed.", "output": "未来已来,只是尚未均匀分布。" }, // ... 更多样本 ]

三、LoRA 微调代码(Hugging Face + PEFT)

使用 Unsloth(更快更省显存)

from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( model_name="Qwen/Qwen-1.5-7B-Chat", max_seq_length=2048, dtype=None, # 自动选 float16/bfloat16 load_in_4bit=True, ) model = FastLanguageModel.get_peft_model( model, r=64, target_modules=["q_proj", "k_proj", "v_proj", "o_proj"], lora_alpha=128, lora_dropout=0, bias="none", use_gradient_checkpointing=True, random_state=3407, ) # 后续训练流程类似,但速度提升 2~5 倍

Unsloth 优势:自动融合 kernels、支持梯度检查点、内存优化,单卡 24G 可训 70B 模型


四、关键超参数调优指南

参数推荐值说明
r(rank)32 ~ 128越大拟合能力越强,但过大会过拟合;7B 模型常用 64
lora_alpha2×r控制 LoRA 更新幅度,通常设为 2*r
lora_dropout0.0 ~ 0.1小模型可设 0,大模型可加 0.05 防过拟合
target_modules见下表必须匹配模型架构
learning_rate1e-4 ~ 5e-4比全参数微调高 10 倍
batch_size越大越好通过gradient_accumulation_steps模拟大 batch

🔧 常见模型的target_modules

模型家族target_modules
Llama / Mistral["q_proj", "k_proj", "v_proj", "o_proj"]
Qwen["q_proj", "k_proj", "v_proj", "o_proj"]
ChatGLM["query_key_value"]
Phi-3["q_proj", "k_proj", "v_proj"]

💡 不确定?用print(model)查看模块名,或设target_modules="all-linear"(PEFT ≥ 0.10)


五、微调后如何推理?

方式 1:合并 LoRA 权重(推荐用于部署)

→ 合并后可用vLLM / TGI / Transformers直接加载

方式 2:动态加载 LoRA(适合多 adapter 切换)

from peft import PeftModel model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-1.5-7B-Chat", ...) model = PeftModel.from_pretrained(model, "./qwen-lora") # 推理时自动应用 LoRA

⚠️ 注意:vLLM 从 v0.4.0 开始实验性支持 LoRA 推理,但生产环境仍建议合并。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 0:13:29

7大核心功能重构:绝区零自动化解决方案的技术突破与实践指南

7大核心功能重构:绝区零自动化解决方案的技术突破与实践指南 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 绝…

作者头像 李华
网站建设 2026/4/19 17:24:08

四步重塑小米AI音箱:从语音助手到全屋智能中枢的进化之路

四步重塑小米AI音箱:从语音助手到全屋智能中枢的进化之路 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 你是否曾经对着家里的智能音…

作者头像 李华
网站建设 2026/4/29 3:57:59

简历优化大师:LobeChat让HR一眼相中你

LobeChat:当AI成为你的HR顾问,简历优化还能这么高效? 在求职市场竞争白热化的今天,一份简历从投递到进入面试环节的平均筛选时间不足10秒。HR面对海量简历,往往只能凭关键词和表达逻辑快速判断候选人的匹配度。而大多…

作者头像 李华
网站建设 2026/5/1 7:13:28

LobeChat能否用于生成简历模板?HR筛选友好格式输出

LobeChat能否用于生成简历模板?HR筛选友好格式输出 在求职市场竞争日益激烈的今天,一份能通过HR初筛的简历,往往决定了你是否有机会进入下一轮。但现实是,许多技术背景扎实、经验丰富的候选人,却因为“简历写得像岗位说…

作者头像 李华
网站建设 2026/4/18 23:59:44

Beyond Compare 5快速授权终极指南:完整解决方案

Beyond Compare 5快速授权终极指南:完整解决方案 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 还在为Beyond Compare 5的授权限制而烦恼吗?面对功能强大的文件对比工具…

作者头像 李华
网站建设 2026/5/1 6:14:39

8、GIMP 特效制作全攻略

GIMP 特效制作全攻略 在图形处理的世界里,借助合适的工具和技巧能够创造出令人惊叹的效果。本文将详细介绍如何使用 GIMP 软件制作多种特效,让你的图形作品更加生动、逼真。 特效制作的基本思路 在开始制作特效之前,有一些基本的思路和技巧值得牢记: 1. 勇于尝试 :通…

作者头像 李华