恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
LLaMA-Factory 微调 MoE 模型的实战指南
首页
资讯中心
/
LLaMA-Factory 微调 MoE 模型的实战指南
LLaMA-Factory 微调 MoE 模型的实战指南
发布时间:2026/8/29 12:54:34
LLaMA-Factory 微调 MoE 模型的实战指南【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100 LLMs VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory手里只有一张 24GB 的卡却想把 Qwen2-MoE-7B 的 SFT 跑通——加载到一半显存就报警是最近不少人碰到的 MoE 训练场景。其实 LLaMA-Factory 早就把 MoE 模型的路由逻辑接好了训练时只激活被路由选中的少数专家配合 4-bit 量化或 DeepSpeed ZeRO-3 参数分片7B 级 MoE 在单卡上也压得下。下面这套做法不追求配置最全只追求你能最快跑通一轮微调。⚡ 三步跑通第一次 MoE 微调装依赖只需要两行。用 git 把仓库拉到本地之后以可编辑模式安装主包再补上画图用的 metrics 依赖跑 loss 曲线时它会用到。git clone --depth 1 https://gitcode.com/GitHub_Trending/ll/LLaMA-Factory cd LLaMA-Factory pip install -e . pip install -r requirements/metrics.txt第二步写一份最小 YAML。MoE 微调配置的核心只有三件事选 MoE 基座模型、声明 LoRA 目标、加上路由辅助损失系数model_name_or_path: Qwen/Qwen2-MoE-7B-Instruct trust_remote_code: true stage: sft do_train: true finetuning_type: lora lora_target: all # 让 LoRA 挂到全部可训练投影层含专家内部 moe_aux_loss_coef: 0.01 # 激活路由负载均衡损失不设等于放弃约束 dataset: alpaca_en_demo template: qwen2 cutoff_len: 2048 # MoE 专家激活随序列线性涨显存先压住 output_dir: saves/qwen2-moe/lora/sft per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 2.0e-4 num_train_epochs: 1.0 bf16: true第三步直接启动单卡裸跑python src/train.py --config qwen2_moe_lora_sft.yaml看到 loss 曲线画出来就说明这条链路通了。显存不够再去看下一节。配置里的 4 个参数设错会怎样MoE 微调配置里真正踩坑的就这 4 个。先说最关键的moe_aux_loss_coefLLaMA-Factory 在 MoE 路由接入逻辑 里检查它你给它设了非零值框架才会打开路由 logits 输出并把它的值写进模型的 router 损失系数逼着每个 token 的负载在各专家间摊开。它不设训练照样能跑但路由完全不受约束热门专家会越用越热微调后期输出容易复读。具体数值各模型差异很大Qwen2-MoE 官方推荐 0.01Mixtral 官方用 1e-3动手前以官方文档为准。再看lora_rank。LoRA 挂在专家投影层上秩不是越大越好8 到 16 是安全区间拉到 64 以上更新参数翻倍小数据集上很容易过拟合专家还没学出差异就先塌了。cutoff_len同理序列长度直接决定激活显存MoE 场景下先设 2048 验证能跑再按数据长度上调。disable_gradient_checkpointing是速度换显存的总闸默认不开即检查点开启只有你确认显存富余再考虑动它。参数设错会发生什么建议区间moe_aux_loss_coef专家负载失衡输出复读0.001~0.01以官方文档为准lora_rank过大过拟合过小欠拟合8~16cutoff_len过大显存翻倍溢出先 2048 再上调disable_gradient_checkpointing打开后省时间费显存默认 false按显存预算选训练策略策略跟着你的硬件走。预算 16GB 单卡唯一的路是量化quantization_bit: 4把权重压到 4-bitbatch size 收到 1用gradient_accumulation_steps补回等效批量QLoRA 跑 7B 级 MoE 的预算大约在 24GB 以内参考 README 的硬件需求表。预算 24GB 单卡可以去掉量化改跑 16-bit LoRAcutoff_len压到 1024~2048这套 LLaMA-Factory 显存优化组合基本就是单卡的天花板。预算到 2×24GB 多卡换 ZeRO-3框架对 Qwen2-MoE、Mixtral、DeepSeek、Llama4 这些模型会自动把专家块标记为分片叶模块避免被逐参数切开拖慢通信。配置里加一行deepspeed: examples/deepspeed/ds_z3_config.json同时把 DeepSpeed 装到 0.13 以上pip install -r requirements/deepspeed.txt预算 80GB×4 或更高直接上bf16全量finetuning_type: full仓库 examples 目录里就有 Qwen3-MoE 全量训练的配置可参照显存仍然紧张时再叠加 ZeRO-3 的 offload 把优化器状态挪到内存。训练跑偏了怎么救MoE 训练排错基本就这三类。现象是 CUDA OOM大概率是参数总量超预算改quantization_bit: 4或者上 ZeRO-3 分片别先怀疑代码。现象是 ZeRO-3 下训练中途崩溃、日志提到分片相关报错大概率 DeepSpeed 版本过旧pip install -U deepspeed0.13.0之后再重跑。现象是 loss 飙升并伴随路由损失持续走高专家负载塌了把moe_aux_loss_coef调大一个数量级或把学习率降一档、预热拉到 0.1。下一步做什么从 examples 里找一份现成的 MoE 训练配置比如[Qwen3-MoE 全量训练示例](https://link.gitcode.com/i/8fb4c232dc6544c8dc4d04453c6d9c6d)改模型名先在本地小数据上跑通验证环境没问题再放大。确认目标模型官方推荐的moe_aux_loss_coef取值再决定 LoRA 还是全量。训练中报错时按上一节三个现象对号入座先看预算再动配置。更多安装与硬件需求细节见 README_zh.md。【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100 LLMs VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考