大模型微调实战指南:基于 LLaMA-Factory 从零微调 Yi 模型
本文介绍了基于 LLaMA-Factory 框架对 Yi-1.5-6B 开源大模型进行 QLoRA 微调的完整流程。内容涵盖 ModelScope 云端环境搭建、依赖库安装、模型权重下载、训练配置文件编写、自定义数据集准备、训练执行监控以及推理测试方法。文章详细解析了关键参数含义,提供了常见问题的排查思路及模型导出方案,旨在帮助开发者快速上手大模型微调实战。

本文介绍了基于 LLaMA-Factory 框架对 Yi-1.5-6B 开源大模型进行 QLoRA 微调的完整流程。内容涵盖 ModelScope 云端环境搭建、依赖库安装、模型权重下载、训练配置文件编写、自定义数据集准备、训练执行监控以及推理测试方法。文章详细解析了关键参数含义,提供了常见问题的排查思路及模型导出方案,旨在帮助开发者快速上手大模型微调实战。

大模型微调(Fine-tuning)是个性化定制 AI 能力的关键步骤。通过微调,可以让通用大模型适应特定领域的知识或特定的对话风格。本文将以零一万物的 Yi-1.5-6B 开源模型为例,使用 LLaMA-Factory 框架,在云端 GPU 环境下演示完整的微调流程。
本指南适合希望了解大模型微调基本流程的开发者。我们将涵盖环境准备、模型下载、配置文件编写、训练执行及推理测试五个核心环节。
微调大模型通常需要高性能 GPU 资源。为了降低门槛,我们推荐使用 ModelScope(魔搭社区)提供的免费 GPU 算力环境。
在 Notebook 的代码单元格中执行以下命令,确保 Python 环境及基础库更新:
!pip3 install --upgrade pip
!pip3 install bitsandbytes>=0.39.0
随后拉取 LLaMA-Factory 项目仓库:
!git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
进入目录并安装框架依赖(此步骤耗时较长,请耐心等待):
cd LLaMA-Factory
pip3 install -e ".[torch,metrics]"
本次实验选用 Yi-1.5-6B-Chat 作为基座模型。该模型权重可在 HuggingFace 或 ModelScope 获取,建议优先从 ModelScope 下载以加速国内网络访问。
在终端或 Notebook 中执行以下命令克隆模型仓库:
!git clone https://www.modelscope.cn/01ai/Yi-1.5-6B-Chat.git
注意:模型文件较大(约 12GB),下载时间取决于网络状况。
确认模型已下载至当前目录下的 Yi-1.5-6B-Chat 文件夹内,后续配置中将引用此路径。
LLaMA-Factory 提供了丰富的微调脚本和配置文件。我们将使用 QLoRA 技术进行高效微调,该方法能显著降低显存占用。
在 LLaMA-Factory/examples/train_qlora 目录下,复制一份示例配置文件 llama3_lora_sft_awq.yaml,并重命名为 yi_lora_sft_bitsandbytes.yaml。
打开新创建的 YAML 文件,重点修改以下内容:
model_name_or_path 指向本地下载的模型目录。
model_name_or_path: ../Yi-1.5-6B-Chat
identity 数据集用于测试。如需自定义,需准备 JSONL 格式数据。per_device_train_batch_size 和 gradient_accumulation_steps。以下是一个典型的微调配置文件结构说明:
### model
model_name_or_path: ../Yi-1.5-6B-Chat
template: chatml
finetuning_type: lora
### method
stage: sft
do_train: true
quantization_bit: 4
lora_target: all
### dataset
dataset: identity
dataset_dir: data
template: yi
### output
output_dir: saves/yi/lora/sft
logging_steps: 10
save_steps: 100
learning_rate: 1.0e-4
num_train_epochs: 3.0
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
参数说明:
finetuning_type: 指定微调类型,lora 为低秩适配,full 为全量微调。quantization_bit: 量化位数,4 表示 4-bit 量化,节省显存。dataset: 指定使用的数据集名称,需在 data 目录下存在对应文件。lora_target: 指定需要微调的模块,all 表示所有线性层。若希望模型回答特定身份或领域问题,可修改数据集。LLaMA-Factory 支持 JSONL 格式。
数据集格式示例 (custom_data.jsonl):
{"messages": [{"role": "user", "content": "你好,你是谁?"}, {"role": "assistant", "content": "我是由 XX 公司开发的专属助手。"}]}
将自定义数据放入 data 目录,并在配置文件中修改 dataset: custom_data。
准备工作完成后,即可启动训练脚本。在 LLaMA-Factory 根目录下执行:
llamafactory-cli train examples/train_qlora/yi_lora_sft_bitsandbytes.yaml
output_dir 指定的路径下。训练完成后,加载微调后的模型进行推理测试,验证效果。
复制 examples/inference 下的示例配置文件,重命名为 yi_inference.yaml。
修改内容如下:
model_name_or_path: ../Yi-1.5-6B-Chat
adapter_name_or_path: saves/yi/lora/sft
template: chatml
注意:adapter_name_or_path 需指向刚才训练生成的权重目录。
在终端执行以下命令启动交互模式:
llamafactory-cli chat examples/inference/yi_inference.yaml
输入测试问题,例如:'你好,你是谁?'
建议同时保留原始模型的推理配置进行对比。通过对比微调前后的回答,评估模型在特定任务上的表现是否提升。
如果训练过程中出现显存溢出,请尝试:
per_device_train_batch_size 至 1 或 0。gradient_checkpointing 选项。若 Loss 震荡或不下降:
learning_rate。num_train_epochs 或 gradient_accumulation_steps。训练完成后,可将 LoRA 权重合并到基座模型中,生成完整模型以便部署:
llamafactory-cli export --model_name_or_path ../Yi-1.5-6B-Chat --adapter_name_or_path saves/yi/lora/sft --export_dir merged_model
本文详细介绍了使用 LLaMA-Factory 对 Yi-1.5-6B 模型进行 QLoRA 微调的全过程。通过掌握这一流程,您可以快速构建垂直领域的专用大模型。未来可进一步探索多模态微调、RLHF 对齐等高级技术,以满足更复杂的应用场景需求。
注:本文仅做技术交流,实际生产环境请严格遵守数据安全与合规要求。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online