EulerForge

让 Dense 模型以 MoE 风格训练的 LLM 微调工具

面向研究的 LLM 微调框架,可向 HuggingFace 模型注入 LoRA,并把 Dense 模型作为 Mixture-of-LoRAsMoE Expert LoRA 结构来训练。在常见的 Dense SFT 流程之上,EulerForge 叠加了 Dense → MoE 转换阶段调度,使专家特化、路由与 MoE 稳定性能在有限的 GPU 预算下以可复现的方式进行研究——无需改写模型代码。一份 YAML 预设就可贯通 SFT → DPO/ORPO → RM → PPO 全流程。

EulerForge 的关注点

相较于做一款通用的 SFT 框架,我们把重心放在:以标准化的配置来表达 MoE 研究流程。

主要关注的问题

  • Dense → MoE 转换当作一等公民
  • 路由与专家特化的可复现实验
  • 基于阶段调度的稳定大模型微调
  • MoE 路由稳定性与 aux loss 的一致观测

设计上的选择

  • 实验由 YAML 配置描述,而不是改动模型代码
  • 训练开始前运行 Preflight + MoE 稳定性检查
  • 多阶段流水线以自动检查点衔接的方式完成(SFT → DPO/ORPO → RM → PPO),而非分散的脚本
  • 配合 4-bit / 8-bit 量化训练,让实验可以跑在有限的 GPU 预算上

核心能力

让 EulerForge 适合 MoE 研究的四个支柱

1. Dense → MoE转换

通过mixture_loramoe_expert_lora注入,把任意稠密Qwen / Llama / Gemma转换为MoE风格的可训练模型,无需改写模型代码。

2. LoRA Handoff + Phase Scheduling

按阶段解冻(router → LoRA → base FFN),让大模型微调稳定且可复现。

3. 一份预设,完整流水线

SFT → DPO / ORPO → RM → PPO一条命令序列完成,阶段之间自动检测base模型与LoRA配置。

4. Preflight + MoE稳定性验证

在烧掉哪怕一个GPU周期之前捕捉配置错误与MoE路由崩溃风险。

4种注入策略

从同一个稠密骨干出发,用一行YAML决定做哪种MoE实验。

dense_lora

经典LoRA适配器——最快的领域适配路径,适合作为MoE变体的基线对照。

mixture_lora

路由器 + 多个LoRA专家,把稠密模型改造为token级多任务路由结构。

moe_expert_lora

把FFN替换为MoE块,并为每个专家注入LoRA(DeepSeek风格),将稠密骨干转为完整MoE训练对象。

native_moe_expert_lora

向Mixtral、Gemma 4 MoE等原生MoE模型的每个专家注入LoRA以高效微调。

5种训练路径——同一条流水线

SFT → DPO / ORPO → RM → PPO。每一阶段的检查点自动衔接下一阶段。

训练类型 说明
SFTSupervised Fine-Tuning——基础对齐阶段
DPODirect Preference Optimization——无需参考模型,显存友好
ORPOOdds Ratio Preference Optimization——单次forward对齐
RMReward Model(Bradley-Terry)
PPOProximal Policy Optimization——RLHF最终阶段

Dense → MoE转换流水线

EulerForge自动完成把HuggingFace稠密模型变为MoE训练对象的每一步。

# 一份YAML预设即可把稠密Qwen转为MoE Expert LoRA训练对象
eulerforge train --preset configs/presets/qwen3.5_0.8b_moe_expert_lora_sft.yml

# 内部流程:
# 1. 加载HuggingFace AutoModel(可选bnb 4/8-bit)
# 2. Backbone适配器定位FFN / attention模块
# 3. 将FFN替换为MoE块,并为每个专家注入LoRA
# 4. Phase调度器:router warmup -> LoRA -> base FFN
# 5. 训练前执行Preflight + MoE稳定性验证
YAML预设
配置 + preflight
加载base模型
MoE注入
阶段化训练
HF导出

Phase Scheduling & LoRA Handoff

按时间阶段控制谁可训练——大模型微调因此变得稳定可复现。

Router warmup

训练早期只训练路由器,稳定token到专家的分布。缺少该阶段极易出现路由/专家崩溃。

LoRA专属阶段

路由器稳定后只训练各专家的LoRA,base FFN保持冻结。

LoRA Handoff(fade / ramp)

逐步衰减LoRA权重,将知识交接到base FFN;推理时保留MoE结构并降低对LoRA的依赖。

支持的骨干模型

同一套注入/训练代码适用于所有骨干系列。

骨干 模型
QwenQwen2 / Qwen3 / Qwen3.5(dense)
LlamaLlama 2 / Llama 3 / Llama 3.2、TinyLlama、Mistral
Gemma 3Gemma 3 1B / 4B(dense)
Gemma 4Gemma 4 dense(e2b / e4b)+ native MoE(26b a4b)
MixtralMixtral 8x7B / 8x22B(native MoE)
量化训练nf4 / int4 / int8(基于bitsandbytes)

精选预设

开箱即用的YAML预设位于configs/presets/

预设 策略 训练
qwen3.5_0.8b_dense_lora_sft.ymlDense LoRASFT
qwen3.5_0.8b_mixture_lora_sft.ymlMixture-of-LoRAsSFT
qwen3.5_0.8b_moe_expert_lora_sft.ymlMoE Expert LoRASFT
qwen3.5_0.8b_moe_expert_lora_dpo.ymlMoE Expert LoRADPO
llama3_1b_moe_expert_lora_sft_handoff.ymlMoE Expert LoRA + HandoffSFT
gemma3_4b_moe_expert_lora_orpo_handoff.ymlMoE Expert LoRA + HandoffORPO
gemma4_26b_a4b_native_expert_lora_sft.ymlNative MoE Expert LoRASFT
mixtral_native_expert_lora_sft.ymlNative MoE Expert LoRASFT

安装与快速开始

v0.1.0 —— 要求:Python ≥ 3.9、PyTorch ≥ 2.1、Transformers ≥ 5.5。

# 从源码安装(v0.1.0)
git clone https://github.com/eulerwa/eulerforge && cd eulerforge && pip install -e .

# 可选:HPO / TensorBoard
pip install -e .[hpo]
pip install -e .[tb]

# 1. 训练——在Qwen3.5-0.8B上进行Dense LoRA SFT
eulerforge train \
  --preset configs/presets/qwen3.5_0.8b_dense_lora_sft.yml \
  --set data.path=data/sft_10k_raw.jsonl --set data.max_length=512

# 2. 评测(target / baseline / judge)
eulerforge bench --preset configs/bench/sft_with_judge.yml \
  --target-output-dir outputs/run_YYYYMMDD_HHMMSS

# 3. 导出为标准HF目录
eulerforge export-hf \
  --checkpoint outputs/run_YYYYMMDD_HHMMSS --output ./exported

# 4. 在Python中加载
# from eulerforge import load_model
# result = load_model("outputs/run_YYYYMMDD_HHMMSS")

教程与CLI参考

分步指南与完整命令说明

注:教程与CLI参考目前仅提供韩语与英语版本。以下链接将跳转到英文页面。

国际化CLI

5种语言的日志输出——团队成员可用各自语言使用同一工具。

eulerforge --lang ko train --preset PRESET.yml
eulerforge --lang en train --preset PRESET.yml
eulerforge --lang zh train --preset PRESET.yml
eulerforge --lang ja train --preset PRESET.yml
eulerforge --lang es train --preset PRESET.yml

用EulerForge开始你的MoE实验

v0.1.0已发布——开源、可复现的研究。

前往GitHub 联系我们