如何用LoRA微调Llama3?cgft-llm LLaMA-Factory实战教程:从训练数据到模型合并量化全流程
【免费下载链接】cgft-llmcgft-llm 是一个学习大语言模型(LLM)开发的开源资源。它提供代码、文档和视频教程,帮助用户通过实践掌握前沿核心 LLM 技术项目地址: https://gitcode.com/echonoshy/cgft-llm
想让 Llama3 听懂你的业务?本文基于开源学习项目cgft-llm提供的完整实战资源,带你用LLaMA-Factory框架做LoRA 微调 Llama3 8B:从整理训练数据、配置超参数,到对话验证、模型合并与量化部署,全流程一步到位,单卡 24GB 显存即可跑通。
整个流程一览:
| 步骤 | 内容 | 关键产出 |
|---|---|---|
| ① 准备数据 | 整理 Alpaca 格式训练集并注册 | fintech.json、identity.json |
| ② 环境搭建 | 安装 LLaMA-Factory + 下载基座模型 | Llama3-8B-Chinese-Chat |
| ③ LoRA 训练 | 配置超参数启动 SFT 微调 | LoRA 适配器(仅几十 MB) |
| ④ 效果验证 | Web UI / 终端 / API 三种方式对话 | 可用的小模型 |
| ⑤ 合并量化 | 合并 LoRA + 量化瘦身 | 可独立部署的完整模型 |
为什么用 LoRA 微调 Llama3?
全量微调 8B 模型需要数百 GB 显存和大量算力,而LoRA(Low-Rank Adaptation)只训练一小部分低秩矩阵,原模型参数冻结不动:
- 💰显存友好:单张 RTX 4090(24GB)就能微调 8B 模型
- ⚡成本低:训练产物只是一个很小的 LoRA 适配器,便于保存和复用
- 🔄可插拔:同一个基座模型可挂多个适配器,切换不同业务场景
本实验的硬件环境(来自仓库文档):
| 设备 | 配置 |
|---|---|
| Ubuntu 服务器 | RTX 4090 24GB × 1,PyTorch 2.1.0 / CUDA 12.1 |
| Mac Mini M2 | 用于 Mac 端验证 |
更多环境说明可参考:02-llm-core/llama-factory/README.md
第一步:准备 Llama3 LoRA 微调训练数据
微调质量 = 数据质量。cgft-llm 仓库提供了两份现成的中文训练数据,可直接上手:
- data/fintech.json:金融领域的多轮对话数据(含
history历史轮次) - data/identity.json:身份人设数据(教模型"我是谁")
数据采用Alpaca 格式,每条样本包含 4 个字段:
| 字段 | 含义 |
|---|---|
instruction | 用户指令(与input拼接后作为人类指令) |
input | 补充输入(可为空) |
output | 模型期望的回答 |
history | 多轮对话历史(字符串二元组列表) |
{ "instruction": "国际经济与贸易专业的就业前景是怎样的?", "input": "", "output": "国际经济与贸易专业的就业前景较为广阔……", "history": [] }然后把数据集注册到 data/dataset_info.json,指定字段映射:
"fintech": { "file_name": "fintech.json", "columns": { "prompt": "instruction", "query": "input", "response": "output", "history": "history" } }📌 数据整理技巧(Alpaca / ShareGPT 两种格式、清洗建议)详见仓库文档:02-llm-core/docs/llama-factory-training-dataset.md
第二步:安装 LLaMA-Factory 与下载基座模型
克隆 LLaMA-Factory 官方仓库后,用 pip 以可编辑模式安装:
cd LLaMA-Factory pip install -e .基座模型选用经过中文数据训练的Llama3-8B-Chinese-Chat(模型托管平台搜索下载即可),国内网络建议配置镜像站再执行huggingface-cli download。
💡 想系统了解大模型学习顺序,可参考学习路径文档:02-llm-core/docs/llm-roadmap.md
第三步:配置 LoRA 关键超参数,启动训练
cgft-llm 提供了现成的训练配置文件 cust/train_llama3_lora_sft.yaml,核心参数解读:
| 参数 | 示例值 | 说明 |
|---|---|---|
model_name_or_path | 本地基座模型路径 | 指向 Llama3-8B-Chinese-Chat |
stage: sft+do_train: true | — | 监督微调并开启训练 |
finetuning_type: lora | lora | 使用 LoRA 而非全量微调 |
lora_target | q_proj,v_proj | 只注入注意力层的 Q/V 投影矩阵 |
template | llama3 | ⚠️ 必须与模型匹配,否则效果差 |
cutoff_len | 1024 | 单条样本最大长度 |
learning_rate | 1e-4 ~ 2e-4 | LoRA 常用学习率区间 |
num_train_epochs | 3 ~ 10 | 数据量小时可多跑几轮 |
fp16 | true | 半精度训练,省显存提速 |
配置好后,一条命令启动训练:
llamafactory-cli train cust/train_llama3_lora_sft.yaml不想写配置文件?也可以llamafactory-cli webui启动可视化界面,点鼠标完成同样的训练。
训练过程中会记录 loss 曲线(plot_loss: true),loss 平稳下降即正常;仓库配置还划分了 10% 验证集(val_size: 0.1)用于监控过拟合。
第四步:三种方式验证 LoRA 微调效果
训练结束后,用下面任一方式与微调后的模型对话(均以训练配置为入口):
- Web UI 对话(最直观):
llamafactory-cli webchat cust/train_llama3_lora_sft.yaml - 终端对话:
llamafactory-cli chat cust/train_llama3_lora_sft.yaml - OpenAI 兼容 API:
llamafactory-cli api cust/train_llama3_lora_sft.yaml,可直接接入现有应用
💬 用identity.json训练过的模型,问"你是谁"应该能回答出自定义的人设名字——这是验证微调是否生效的最快方式。
第五步:合并 LoRA 适配器,得到完整模型
LoRA 适配器需要配合基座加载。如果想得到可独立部署的完整模型,执行一次模型合并:
llamafactory-cli export cust/merge_llama3_lora_sft.yaml合并配置 cust/merge_llama3_lora_sft.yaml 只需关心两点:
model_name_or_path:基座模型路径adapter_name_or_path:训练产出的 LoRA 适配器路径export_dir:合并后模型的输出目录
⚠️重要避坑:合并时不要使用量化后的模型或
quantization_bit参数,否则会破坏精度(仓库配置文件的注释中也特别标注了这一点)。合并后的模型推理时不再需要加载适配器,速度更快。
第六步:模型量化与轻量化部署
模型量化是把 FP32/FP16 高精度参数转换为低精度(如 INT8、INT4)的过程,能显著减小模型体积、降低显存占用,是上生产前的常见一步。合并出完整模型后即可进行量化,再配合本地推理工具完成轻量化部署——仓库中 llama.cpp 相关文档可作延伸参考:02-llm-core/llama-cpp/README.md
常见问题与调优避坑指南
- ❓显存不够怎么办:调小
per_device_train_batch_size、增大gradient_accumulation_steps,或用 4bit 量化加载基座再训练 - ❓回答格式错乱:检查
template是否与模型匹配(Llama3 必须用llama3模板) - ❓loss 不下降或爆炸:先降学习率(如 1e-4 → 5e-5),再检查训练数据是否有脏数据
- ❓微调后"失忆":数据中混入身份/人设样本(如
identity.json)可缓解能力遗忘
延伸阅读:微调之后的 LLM 学习路线
微调只是 LLM 工程的一环。微调好的 Llama3 还可以结合 RAG 知识库回答企业内部问题,也可以赋予它调用工具的能力。cgft-llm 仓库中都有对应实践:
- 工具调用实战:02-llm-core/function-calling/README.md
- 完整微调节奏(数据整理 → 训练 → 部署):02-llm-core/llama-factory/README.md
掌握"数据 → 训练 → 验证 → 合并 → 量化"这条主线后,你可以把同一套流程平移到 DeepSeek、Qwen 等更多模型上,开启自己的大模型定制之旅 🚀
【免费下载链接】cgft-llmcgft-llm 是一个学习大语言模型(LLM)开发的开源资源。它提供代码、文档和视频教程,帮助用户通过实践掌握前沿核心 LLM 技术项目地址: https://gitcode.com/echonoshy/cgft-llm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考