
使用 LLaMA-Factory 对 Yi-1.5-6B-Chat 进行 QLoRA 微调实战指南【免费下载链接】YiA series of large language models trained from scratch by developers 01-ai项目地址: https://gitcode.com/GitHub_Trending/yi/Yi本文以开源仓库 Cookbook 教程为核心完整演示如何用 LLaMA-Factory 这一低代码微调框架对 01.AI 的 Yi-1.5-6B-Chat 模型执行 4-bit 量化下的 LoRAQLoRA监督微调并完成对话式推理验证。读完本文你将掌握从环境安装、模型下载、微调配置到推理测试的完整闭环并能结合实际仓库源码理解每个关键参数背后的原理。LLaMA-Factory 与 Yi 模型为什么组合在一起LLaMA-Factory 是一个开源、低代码的大模型微调框架集成了业界广泛使用的微调技术如 LoRA、QLoRA、SFT、DPO 等把复杂的微调流程收敛为一份 YAML 配置加一条 CLI 命令。在本文场景中我们将它用于微调 01.AI 训练的开源 Yi 系列大语言模型——具体目标是Yi-1.5-6B-Chat。Yi 系列模型由 01.AI 的开发者从零开始训练包含 6B、9B、34B 等不同规模并提供 Chat 对话版本及 4-bit/8-bit 量化版本Yi-1.5 系列进一步改进了编程、数学、推理与指令遵循能力详见仓库根 README.md 的版本记录。其仓库同时自带一套基于 DeepSpeed LoRA 的官方微调实现见 finetune/README.md而本教程使用社区更轻量的 LLaMA-Factory 路线两者可以互为印证。第一步安装 LLaMA-Factory首先将 LLaMA-Factory 仓库克隆到本地--depth 1只拉取最新提交节省时间和磁盘空间git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git进入目录并以可编辑模式安装依赖torch与metrics为可选扩展分别提供训练框架与评估指标支持cd LLaMA-Factory pip install -e .[torch,metrics]安装完成后llamafactory-cli命令行工具即可全局使用。后续的启动微调与推理测试均依赖该命令。第二步下载 Yi-1.5-6B-Chat 模型微调前需要先把基座模型下载到本地。可以从 ModelScope 或 Hugging Face 任一渠道获取Yi-1.5-6B-Chat# 从 ModelScope 下载 git clone https://www.modelscope.cn/01ai/Yi-1.5-6B-Chat.git # 从 Hugging Face 下载 git clone https://huggingface.co/01-ai/Yi-1.5-6B-Chat下载完成后记住模型的本地路径例如仓库目录旁的../Yi-1.5-6B-Chat后续两份配置文件都需要引用它。与仓库官方微调说明一致一个完整的模型目录通常包含config.json、pytorch_model-*.bin、tokenizer_config.json、tokenizer.model等文件参见 finetune/README.md 中的目录结构示例。第三步创建并理解训练配置文件进入 LLaMA-Factory 目录在examples/train_qlora下找到官方示例llama3_lora_sft_awq.yaml复制一份并重命名为yi_lora_sft_bitsandbytes.yamlcd LLaMA-Factory cp examples/train_qlora/llama3_lora_sft_awq.yaml examples/train_qlora/yi_lora_sft_bitsandbytes.yaml然后将文件内容替换为以下针对 Yi 的完整配置### model model_name_or_path: Path to your downloaded model, e.g., ../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 fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 eval_strategy: steps eval_steps: 500下面逐组说明这份配置里每个参数的作用模型组modelmodel_name_or_path指向第一步下载的 Yi 模型本地路径。quantization_bit: 4对模型做 4-bit 量化后加载。配合 LoRA 即构成 QLoRA——只更新低秩适配器权重大幅降低显存占用是普通消费级显卡微调 6B 模型的可行前提。方法组methodstage: sft训练阶段为监督微调Supervised Fine-Tuning。do_train: true执行训练流程。finetuning_type: lora采用 LoRA 参数高效微调仅训练插入的低秩分解矩阵原始权重保持冻结。lora_target: all对模型中所有可适配的线性层注入 LoRA而非仅限定某几个模块。数据集组datasetdataset: identity使用 LLaMA-Factory 内置的 identity自我认知数据集。该数据让模型学会自我介绍当你问 Hello, who are you? 时模型会回答它被指定的名字name和开发者author。把该数据集内容替换成你自己的信息即可微调出专属的个性化 AI 助手。template: yi指定对话模板为 Yi 模板确保指令-响应的格式与 Yi 的训练方式一致。这是微调 Yi 模型时最容易遗漏、却最关键的一项。cutoff_len: 1024样本截断长度超过 1024 token 的样本会被截断。max_samples: 1000最多使用 1000 条样本方便快速验证流程。overwrite_cache: true覆盖已有的预处理缓存。preprocessing_num_workers: 16数据预处理使用的进程数。输出组outputoutput_dir: saves/yi-6b/lora/sft微调后的 LoRA 适配器权重保存目录。logging_steps: 10每 10 步打印一次训练日志。save_steps: 500每 500 步保存一次检查点。plot_loss: true训练结束后绘制 loss 曲线。overwrite_output_dir: true允许覆盖输出目录中的旧文件。训练组trainper_device_train_batch_size: 1每张 GPU 的训练 batch 大小。4-bit 量化下取 1 以控制显存。gradient_accumulation_steps: 8梯度累积 8 步后再更新参数等效 batch size 为 1 × 8 8兼顾了显存与训练稳定性。learning_rate: 1.0e-4LoRA 适配器的初始学习率。num_train_epochs: 3.0数据集完整训练 3 轮。lr_scheduler_type: cosine学习率按余弦曲线衰减。该取值与仓库官方微调脚本的选择一致其lr_scheduler_type同样为cosine见 finetune/scripts/run_sft_lora_Yi_6b.sh从 finetune/sft/main.py 的参数定义可看到该框架还支持linear、cosine_with_restarts、polynomial、constant、constant_with_warmup等调度器。warmup_ratio: 0.1训练前 10% 的步数用于学习率预热。评估组evalval_size: 0.1从训练集中划出 10% 作为验证集。per_device_eval_batch_size: 1评估时的 batch 大小。eval_strategy: steps与eval_steps: 500每 500 步执行一次验证评估。第四步启动微调训练在终端中执行以下命令LLaMA-Factory 会读取配置并开始训练示例数据集规模下大约需要 10 分钟llamafactory-cli train examples/train_qlora/yi_lora_sft_bitsandbytes.yaml训练结束后LoRA 适配器权重会保存在saves/yi-6b/lora/sftoutput_dir下的trainer_log.jsonl与 loss 曲线图可用来检查训练是否收敛。第五步加载适配器并做推理测试微调完成后需要把 LoRA 适配器与基座模型合并加载才能进行对话验证。在 LLaMA-Factory 的examples/inference目录下复制官方示例llama3_lora_sft.yaml重命名为yi_lora_sft.yamlcp examples/inference/llama3_lora_sft.yaml examples/inference/yi_lora_sft.yaml将文件内容替换为model_name_or_path: Same path as before, e.g., ../Yi-1.5-6B-Chat adapter_name_or_path: saves/yi-6b/lora/sft template: yi finetuning_type: lora参数说明model_name_or_path与训练配置一致的基座模型路径。adapter_name_or_path第四步训练产出的 LoRA 适配器目录。template: yi推理时同样必须使用 Yi 对话模板与训练保持一致。finetuning_type: lora声明加载的是 LoRA 类型的适配器。然后在终端中启动交互式对话llamafactory-cli chat examples/inference/yi_lora_sft.yaml进入聊天界面后向模型提问 Hello, who are you?如果微调成功模型会按照 identity 数据集中的设定介绍自己的名字与开发者。你也可以在此基础上替换数据集内容定制属于自己的大模型。纵深拓展从源码理解 LoRA 微调原理上述 QLoRA 流程背后是冻结原权重、只训练低秩增量的参数高效微调思想。这一点在仓库自带的官方 LoRA 实现中有非常直观的体现在 finetune/utils/module/lora.py 中LinearLayer_LoRA类把原始线性层权重包装起来lora_right_weight形状columns × lora_dim与lora_left_weight形状lora_dim × rows构成低秩分解前向计算时在原始线性输出上叠加input right left * lora_scaling的增量构造函数中显式设置self.weight.requires_grad False即冻结原始权重。convert_linear_layer_to_lora遍历模型中所有线性层将匹配lora_module_name官方脚本中为layers.的模块替换为 LoRA 版本only_optimize_lora_parameters则把除lora_right_weight/lora_left_weight之外的所有参数梯度关闭确保优化器只更新适配器参数。训练结束后通过fuse_lora_weight把学习到的增量合并回原始权重实现无损导出。在 finetune/sft/main.py 中可以看到仓库官方微调脚本的参数设计--lora_dim 128指定低秩维度、--lora_module_name layers.指定注入范围、--lora_learning_rate默认为5e-4此外还支持--only_optimize_lora、--gradient_checkpointing、--offload等选项。与之对比LLaMA-Factory 的lora_target: all、learning_rate: 1.0e-4等参数本质上是同一套原理的不同封装两者可互为参考。进阶对比仓库自带的官方微调路线如果你的目标是更大规模的微调仓库根 README.md 与 finetune/README.md 提供了官方 DeepSpeed 路线作为参照数据格式为 JSONL每条样本形如{ prompt: Human: Who are you? Assistant:, chosen: Im Yi. }仓库在 finetune/yi_example_dataset/data 下提供了可直接使用的train.jsonl与eval.jsonl示例源自 BAAI/COIG 数据集。直接运行官方脚本即可开始微调cd finetune/scripts bash run_sft_Yi_6b.sh官方硬件建议微调 Yi-6B 建议使用 4 张显存大于 60GB 的 GPU微调 Yi-34B 因使用 ZeRO-Offload 技术会占用大量 CPU 内存建议 8 卡运行时可经CUDA_VISIBLE_DEVICES0,1,2,3限制为 4 卡、单卡显存大于 80GB、总 CPU 内存大于 900GB。LLaMA-Factory 的 QLoRA 路线则通过 4-bit 量化大幅降低了硬件门槛。微调完成后可用 finetune/scripts/run_eval.sh 同时输出基座模型与微调模型的回答直观对比微调效果。常见问题与调参建议基于上文源码与配置信息整理几条实操要点对话模板必须匹配template必须设为yi训练与推理两端保持一致否则模型输出的格式会错乱。显存不足时优先确认quantization_bit: 4已生效可将per_device_train_batch_size保持为 1、调高gradient_accumulation_steps等效 batch 不变训练更稳。过拟合或欠拟合identity数据集很小若训练集变大可适当增加num_train_epochs同时观察plot_loss: true生成的 loss 曲线与验证集指标val_size、eval_steps已配置。自定义数据集把 identity 数据集替换为自己的 JSONL/JSON 指令数据即可微调出具备特定能力或人设的 Yi 模型。合并与导出LoRA 权重保存在output_dir需要与基座模型配合加载即上文推理配置的用法或使用 LLaMA-Factory 的导出功能将适配器合并回完整权重。至此从环境搭建、模型下载、QLoRA 微调配置、训练启动到对话验证的完整链路已经跑通。你可以在此基础上替换数据集与超参数把 Yi 模型微调成真正贴合自己业务的助手。【免费下载链接】YiA series of large language models trained from scratch by developers 01-ai项目地址: https://gitcode.com/GitHub_Trending/yi/Yi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考