
LLaMA-Factory MoE微调实战指南3种配置跑通Qwen3-30B-A3B【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100 LLMs VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory想在单卡上微调 Qwen3-30B-A3B第一步 forward 就 OOM这篇指南给你 LLaMA-Factory 跑 MoE 指令微调的 3 套真实配置1×80GB 单卡 LoRA、8×78GB 全量专家并行、昇腾 NPU 全量——同一份数据集硬件需求从 16 张卡压到 1 张卡。路线先跑通 → 看懂原理 → 按你的硬件对号入座。⚡ 3分钟跑通不写任何 MoE 专属代码MoE 模型在 LLaMA-Factory 里没有独立入口——改一行model_name_or_path就行框架检测到 MoE 类型的model_type后会自动处理路由参数。先装环境git clone https://gitcode.com/GitHub_Trending/ll/LLaMA-Factory cd LLaMA-Factory pip install -e .装完直接复用官方 LoRA 示例把流程跑通这个配置基于 Qwen3-4B 稠密模型目的是先验证环境python src/train.py --config examples/train_lora/qwen3_lora_sft.yaml看到 loss 稳定下降后把配置里的模型换成 MoE 版本即可### model model_name_or_path: Qwen/Qwen3-30B-A3B-Instruct-2507 trust_remote_code: true moe_aux_loss_coef: 0.01 # 专家路由辅助损失系数下面细讲 ### method stage: sft do_train: true finetuning_type: lora lora_rank: 8 lora_target: all ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-4 bf16: true上面这份是在 examples/train_lora/qwen3_lora_sft.yaml 基础上改出来的。关键点MoE 模型的lora_target直接写all不用手动去数专家层叫什么名字新增的moe_aux_loss_coef是 MoE 训练唯一必看的参数。 背后原理路由器分活辅助损失防偏科MoE 把 FFN 层拆成 N 个专家每个 token 只由路由器一个线性层 softmax挑出 top-k 个专家处理——Qwen3-30B-A3B 的 30B 参数里每次只激活约 3B这就是它大参数、小算力的来源。但路由器会偷懒训练久了总想把 token 都塞给少数几个专家最后负载失衡、其他专家饿死。LLaMA-Factory 的做法很直接你在配置里写的moe_aux_loss_coef会被 src/llamafactory/model/model_utils/moe.py 里的configure_moe按模型家族映射到对应位置——Mixtral、Qwen2/3-MoE、Llama4 写到router_aux_loss_coefDeepSeek 写到aux_loss_alphaJetMoe 写到aux_loss_coef你不用关心每个模型的字段差异。同一文件里的add_z3_leaf_module还会把专家块注册成 DeepSpeed ZeRO-3 的 leaf module避免专家参数被过度切分拖慢速度。 核心配置4个键决定成败配置键所在位置怎么设moe_aux_loss_coefmodel 参数默认None不启用从 0.01 起步负载失衡再往上加lora_targetmethod 段一律写all专家层自动覆盖expert_model_parallel_sizeMegatron 段专家均分到几张卡8 卡常用 2moe_grouped_gemmMegatron 段全量训练必须true逐个说人话moe_aux_loss_coef给路由器的负载均衡罚分太小专家会偏科太大会压制正常学习0.01 是安全起点。lora_target: all稠密模型常只打 q_proj/v_proj但 MoE 的专家 MLP 才是知识所在必须全部注入。expert_model_parallel_size30B 模型的 128 个专家塞不进一张卡EP2 就是把专家两两拆开分摊。moe_grouped_gemm把多个小专家矩阵拼成一次分组 GEMM比逐专家串行快很多全量训练不开它 GPU 利用率会很难看。 三种硬件三套打法1×80GB 单卡KTransformers 把专家甩到 CPU显存只够放非专家权重 激活值时用 KTransformers 把 INT8 量化后的专家权重放 CPULoRA 只更新 GPU 上的小参数use_kt: true kt_weight_path: /path/to/routed-int8-experts kt_non_expert_weight_path: /path/to/bf16-non-expert-cache kt_config: kt_expert_weight_format: int8 kt_backend: auto kt_num_threads: 96 kt_tp_enabled: true这段取自 examples/ktransformers/train_lora/deepseek_v3_int8_lora_sft_kt.yamlDeepSeek-V3 这种 671B 级模型也是同一套方案。配套文档见 docs/zh/advanced/ktransformers.md。8×78GB 多卡Megatron 专家并行全量要动全部参数就上 examples/megatron/qwen3_moe_full.yaml 的组合核心几行model_name_or_path: Qwen/Qwen3-30B-A3B-Instruct-2507 stage: sft finetuning_type: full tensor_model_parallel_size: 1 pipeline_model_parallel_size: 4 expert_model_parallel_size: 2 # 专家均分到2组卡 moe_grouped_gemm: true # 分组GEMM提速专家计算 moe_token_dispatcher_type: alltoall recompute_granularity: full # 全重算换显存这是官方给出的 8×78GB 全量微调基准配置注释里写明了目标显存档位。学习率给到 3e-6全量微调 MoE 别用稠密模型的 1e-5 起步。昇腾 NPU 或普通多卡FSDP 全量没有 Megatron 环境就退一档参考 examples/ascend/qwen3moe_full_sft_fsdp.yamlfinetuning_type: full配 FSDP 启动保留梯度检查点cutoff_len 从 1024 起步先验证再拉长。 显存与吞吐对照Qwen3-30B-A3B SFTcutoff 2048方案硬件门槛单卡显存占用典型值相对速度稠密 32B 全量微调≥16×80GB溢出8 卡放不下—MoE 30B-A3B 全量Megatron EP28×78GB~70GB1.0×MoE 30B-A3B LoRA ZeRO-32×48GB~40GB~0.5×MoE 30B-A3B LoRA KTransformers INT81×80GB 大内存~60GB~0.3×数据为典型参考值实际以你的数据和卡型实测为准。规律很直白同样能力档位MoE 把全量微调的硬件门槛从 16 卡拉回到 8 卡LoRA 路线再砍到 1 卡。 卡住了先查这三处第一步 forward 就 OOM症状loss 还没打出来显存直接爆原因MoE 专家参数大普通 ZeRO-3 没切分专家块解法挂--deepspeed examples/deepspeed/ds_z3_config.json或直接切到上面 Megatron / KTransformers 路线loss 先降后升训到一半飞掉症状几百步后 loss 跳涨、grad_norm 飙升原因没加moe_aux_loss_coef路由偏科导致个别专家梯度爆炸解法加moe_aux_loss_coef: 0.01仍不稳就把learning_rate降到 5e-6 并保留warmup_ratio: 0.1GPU 利用率在 0~30% 之间抖症状显存够但 step 时间远超预期原因全量训练时专家串行计算 数据加载瓶颈解法开moe_grouped_gemm: truedataloader_num_workers提到 4、preprocessing_num_workers提到 16参考官方示例的默认值收尾一句话MoE 微调在 LLaMA-Factory 里就是换一行模型名 一个路由系数剩下的按硬件选 KTransformers、ZeRO-3 或 Megatron 三条路之一。关键入口都在仓库里src/llamafactory/model/model_utils/moe.py、examples/megatron/qwen3_moe_full.yaml、examples/ktransformers/train_lora/deepseek_v3_int8_lora_sft_kt.yaml。新加的 v1 训练管线也已内置 Triton 分组 GEMM 与 CUDA 融合 MoE 核跑通基础流程后值得切过去试试吞吐。【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100 LLMs VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考