从零开始微调大模型:基于 LLaMA-Factory 的实战指南
介绍如何使用阿里魔搭社区提供的免费 GPU 环境,结合 LLaMA-Factory 框架对零一万物 Yi-1.5-6B 开源大语言模型进行微调。流程涵盖账号注册、环境配置、模型下载、配置文件修改、训练执行及推理测试。通过修改数据集实现模型身份认知定制,并对比微调前后效果,帮助开发者快速掌握大模型微调的基本操作与核心原理。

介绍如何使用阿里魔搭社区提供的免费 GPU 环境,结合 LLaMA-Factory 框架对零一万物 Yi-1.5-6B 开源大语言模型进行微调。流程涵盖账号注册、环境配置、模型下载、配置文件修改、训练执行及推理测试。通过修改数据集实现模型身份认知定制,并对比微调前后效果,帮助开发者快速掌握大模型微调的基本操作与核心原理。

大模型微调本身是一项技术难度较高的任务,但对于初学者而言,理解其基本流程至关重要。本文将手把手带你从零开始,利用阿里魔搭社区提供的集成环境,完成一次完整的大模型微调过程。无需本地高配 GPU,只需浏览器即可操作。
本次微调的目标模型为零一万物的 Yi-1.5-6B 开源大语言模型。虽然不同模型的微调细节略有差异,但核心原理与流程基本一致。
首先,你需要注册并登录魔搭(ModelScope)账号: https://modelscope.cn/home
注册完成后,访问目标模型页面: https://www.modelscope.cn/models/01ai/Yi-1.5-6B
点击"在线运行"或类似入口,选择方式二:GPU 环境,点击"启动"。启动过程约需 2 分钟,待环境就绪后点击"查看 Notebook"进入。
魔搭社区内置了 JupyterLab 功能。进入后,在左侧导航栏找到 Notebook 标签,新建一个 Notebook 页面(也可以在 Terminal 中直接执行命令)。
在 Notebook 代码块中执行以下命令安装基础依赖:
!pip3 install --upgrade pip
!pip3 install bitsandbytes>=0.39.0
LLaMA-Factory 是一款开源低代码大模型微调框架,集成了业界广泛使用的微调技术。执行以下命令拉取源码:
!git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
接下来需要在 Launcher > Terminal 中执行安装命令。这一步耗时较长,请耐心等待。
# ⚠️下面两行命令在刚启动的 Terminal 中执行⚠️
cd LLaMA-Factory
pip3 install -e ".[torch,metrics]"
零一万物的 Yi 开源大语言模型权重可在 HuggingFace 和 ModelScope 上找到。这里选择从 ModelScope 下载。
本实验选用最小的 Yi-1.5-6B-Chat 模型进行验证。模型说明文档: https://www.modelscope.cn/models/01ai/Yi-1.5-6B-Chat/summary
Yi-1.5-6B-Chat 模型大小约 12G,下载时间视网络情况而定。在 Notebook 中执行以下命令下载:
!git clone https://www.modelscope.cn/01ai/Yi-1.5-6B-Chat.git
准备工作完成后,即可开始微调。虽然本文仅演示基础流程,但实际微调效果受数据质量、超参数影响较大。
在 LLaMA-Factory 文件夹下,打开 examples/train_qlora 目录,找到 llama3_lora_sft_awq.yaml 文件。复制一份并重命名为 yi_lora_sft_bitsandbytes.yaml。
该文件包含微调的关键参数。打开文件,修改第一行 model_name_or_path 为你下载的模型路径(不要带括号):
### model
model_name_or_path: ../Yi-1.5-6B-Chat
其他关键参数建议如下配置:
### dataset
dataset: identity
### finetuning
finetuning_type: lora
lora_target: all
output_dir: output/yi-lora
per_device_train_batch_size: 4
gradient_accumulation_steps: 4
learning_rate: 1.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
fp16: true
关于数据集:
默认使用 identity 数据集,这是一个自我认知数据集。当你问模型'你好你是谁'时,它会回答预设的身份信息。如果你想微调一个专属模型,可以修改 data/identity.json 文件,将 {{name}} 字段替换为你的名字。
回到终端 Terminal,确保当前目录在 LLaMA-Factory 目录下,输入以下命令启动训练脚本:
llamafactory-cli train examples/train_qlora/yi_lora_sft_bitsandbytes.yaml
看到进度条滚动即表示开始微调。运行过程大约需要 10 分钟(取决于 GPU 性能)。当界面显示训练结束标志时,微调过程完成。
常见问题提示:
per_device_train_batch_size 或开启 bf16 支持。gradient_accumulation_steps。微调后的模型有何变化?我们需要加载微调后的模型进行推理测试。
参考 examples/inference 下的 llama3_lora_sft.yaml,复制一份并重命名为 yi_lora_sft.yaml。修改内容如下:
model_name_or_path: ../Yi-1.5-6B-Chat
adapter_name_or_path: output/yi-lora/checkpoint-xxx
template: chatml
infer_backend: vllm
注意:
adapter_name_or_path需指向实际生成的 checkpoint 路径。
回到终端运行推理命令:
llamafactory-cli chat examples/inference/yi_lora_sft.yaml
等待模型加载完成后,即可开始对话。你会发现模型的自我身份认知已更改为数据集设定的内容,同时保持了通用对话能力。
为了直观对比,重新配置推理文件 yi.yaml,不加载 Adapter:
model_name_or_path: ../Yi-1.5-6B-Chat
template: chatml
运行命令:
llamafactory-cli chat examples/inference/yi.yaml
提问同样的问题,观察原始模型的回答。通过对比,你可以清晰地看到微调对模型行为的影响。
通过上述步骤,你已完成了一个简单的微调全流程。这包括环境搭建、模型获取、配置修改、训练执行及推理验证。掌握这一流程是深入大模型应用开发的基础。后续可以尝试更换数据集以适配特定领域,或探索更多高级微调技术如 P-Tuning、DPO 等。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 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