手把手教你从零微调大模型
本文详细介绍了从零开始微调大模型的完整流程。基于阿里魔搭社区环境和 LLaMA-Factory 框架,使用 Yi-1.5-6B 开源模型进行实操。内容涵盖环境准备、依赖安装、模型下载、配置文件详解、训练执行及推理测试。重点解析了 LoRA 微调的核心参数含义,如量化位、学习率、批次大小等,并补充了显存不足、训练不收敛等常见问题的解决方案。通过本文,读者可掌握微调的基本方法,实现模型身份的自定义及特定任务的适配。

本文详细介绍了从零开始微调大模型的完整流程。基于阿里魔搭社区环境和 LLaMA-Factory 框架,使用 Yi-1.5-6B 开源模型进行实操。内容涵盖环境准备、依赖安装、模型下载、配置文件详解、训练执行及推理测试。重点解析了 LoRA 微调的核心参数含义,如量化位、学习率、批次大小等,并补充了显存不足、训练不收敛等常见问题的解决方案。通过本文,读者可掌握微调的基本方法,实现模型身份的自定义及特定任务的适配。

大模型微调本身是一件非常复杂且技术难度很高的任务。本文旨在从零开始,带你走一遍微调大模型的标准流程,帮助你了解微调的基本原理和操作步骤。
微调通常是在预训练好的基础模型上,使用特定领域的数据进行二次训练,使模型适应特定任务或风格。由于直接微调全量参数需要极高的显存和算力,目前业界广泛采用 LoRA (Low-Rank Adaptation) 或 QLoRA 等高效微调技术,大幅降低资源需求。
本次实战将使用阿里魔搭社区(ModelScope)提供的集成环境,无需本地高配 GPU,只需浏览器即可完成。我们将以零一万物的 Yi-1.5-6B 开源大语言模型为例,演示如何使用 LLaMA-Factory 框架进行微调。
首先你需要注册并登录魔搭社区的账号: https://modelscope.cn/home
登录后,访问 Yi-1.5-6B 模型页面: https://www.modelscope.cn/models/01ai/Yi-1.5-6B
在模型页面选择'方式二:GPU 环境',点击'启动'。启动过程大约需要 2 分钟。待 GPU 环境就绪后,点击'查看 Notebook'进入开发环境。
魔搭社区内置了 JupyterLab 功能。进入后,你可以找到 Notebook 标签,新建一个 Notebook 页面(也可以在 Terminal 中直接执行命令)。
在 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
随后,需要在 Launcher > Terminal 中执行安装命令。这一步耗时较长,请耐心等待:
cd LLaMA-Factory
pip3 install -e ".[torch,metrics]"
零一万物的 Yi 开源大语言模型的权重可以在 HuggingFace 和 ModelScope 上找到。这里我们选择从 ModelScope 下载。
所有零一万物开源模型链接: https://www.modelscope.cn/organization/01ai/
本实验选用最小的 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
model_name_or_path: ../Yi-1.5-6B-Chat
quantization_bit: 4
### method
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
### dataset
dataset: identity
template: yi
cutoff_len: 1024
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16
### output
output_dir: saves/yi-6b/lora/sft
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 1.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
### eval
val_size: 0.1
per_device_eval_batch_size: 1
eval_strategy: steps
eval_steps: 500
关键参数解析:
sft 表示监督微调(Supervised Fine-Tuning)。lora 表示使用 LoRA 适配器技术。identity 数据集,用于测试自我认知能力。你可以通过修改 data/identity.json 文件中的 {{name}} 字段来定义模型的新身份。保存配置文件后,回到终端 Terminal,在 LLaMA-Factory 目录下输入以下命令启动微调:
llamafactory-cli train examples/train_qlora/yi_lora_sft_bitsandbytes.yaml
运行命令后,系统将开始加载模型并进行训练。进度条显示训练状态,整个过程大约需要 10 分钟(视硬件性能而定)。当看到训练结束提示时,表示微调完成。
微调后的模型效果如何?我们需要通过推理测试来验证。
参考 examples/inference 下的 llama3_lora_sft.yaml,复制一份并重命名为 yi_lora_sft.yaml,内容修改如下:
model_name_or_path: ../Yi-1.5-6B-Chat
adapter_name_or_path: saves/yi-6b/lora/sft
template: yi
finetuning_type: lora
保存后,在终端运行推理命令:
llamafactory-cli chat examples/inference/yi_lora_sft.yaml
等待模型加载完成后,即可开始对话。此时模型应已具备你在配置文件中设定的新身份认知,同时保持通用对话能力。
为了对比效果,可以再次修改配置文件为原始模型配置(去掉 adapter_name_or_path),重新运行推理命令,观察未微调前的回答差异。
在实际微调过程中,可能会遇到以下问题:
显存不足 (OOM):
per_device_train_batch_size。gradient_accumulation_steps。bf16 或 fp16。cutoff_len。训练速度慢:
preprocessing_num_workers 是否设置合理。max_samples。模型不收敛:
learning_rate,过大的学习率可能导致震荡。超时错误:
通过上述步骤,你已经完成了从零开始的大模型微调全流程。包括环境搭建、依赖安装、模型下载、参数配置、训练执行以及推理验证。
微调大模型不仅是技术的实践,更是对模型行为控制能力的探索。通过调整数据集和参数,你可以让模型适应不同的应用场景,如客服助手、垂直领域专家或个性化角色。希望本文能为你开启大模型应用开发的大门。
后续你可以尝试更换数据集,微调出真正服务于业务场景的专属模型。

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