EulerForge

Dense モデルを MoE のように訓練する LLM ファインチューニングツール

Dense → MoE 変換 + LoRA パイプライン。 HuggingFace モデルに LoRA を注入し、Dense モデルを Mixture-of-LoRAsMoE Expert LoRA 構造へ変換して訓練できる、研究志向のファインチューニングフレームワークです。

小さな GPU 予算でも MoE 実験を再現可能に。 フェーズスケジューリングで router → LoRA → base FFN を段階的に unfreeze し、エキスパート特化・ルーティング・MoE 安定性をコンシューマ GPU 一枚でも扱えます。

コード変更なし、YAML プリセット一枚でフルパイプライン。 SFT → DPO/ORPO → RM → PPO までを一連のシーケンスで — 実験はコード変更ではなく YAML 設定で管理します。

24本
KO/EN チュートリアル
4
LoRA インジェクション戦略
5
トレーニングタイプ
5
言語 CLI

MoE は方向であり、予算ではない

大規模 Mixture-of-Experts モデルがなぜ性能が高いか — 必要な専門領域だけパラメータを活性化するから。EulerForge は手元の Dense モデルをその方向に訓練します。

主に取り組む問題

  • Dense → MoE 変換をファーストクラスとして扱う
  • ルーティングとエキスパート特化の再現可能な実験
  • フェーズスケジューリングによる安定した大規模モデルのファインチューニング
  • MoE ルーター安定性と aux loss の一貫した観測

設計上の選択

  • 実験はモデルコードではなく YAML 設定で表現する
  • 学習開始前に Preflight + MoE 安定性検証を走らせる
  • 個別スクリプトではなく、チェックポイント自動引き継ぎによる多段パイプライン (SFT → DPO/ORPO → RM → PPO)
  • 限られた GPU 予算で回せる 4bit / 8bit 量子化訓練

主な機能

EulerForge を MoE 研究に適した形にしている 4 本の柱

01 Dense → MoE 変換

mixture_lora / moe_expert_lora インジェクションにより、任意の dense Qwen / Llama / Gemma を MoE スタイルの学習可能モデルへ変換します。モデルコードの書き換えは不要です。

02 LoRA Handoff + Phase Scheduling

router → LoRA → base FFN の順で段階的に unfreeze し、大規模モデルのファインチューニングを安定かつ再現可能にします。

03 単一プリセットで全パイプライン

SFT → DPO / ORPO → RM → PPO を 1 本のコマンド列で。段階間で base モデルと LoRA 設定を自動検出します。

04 Preflight + MoE 安定性検証

GPU サイクルを 1 つも消費する前に、設定エラーや MoE ルーター崩壊のリスクを検出します。高価な学習失敗を未然に防ぎます。

▶ インジェクション戦略の詳細 (4 種類)

4 つのインジェクション戦略

同じ dense バックボーンから出発し、どのような MoE 実験を行うかを YAML 1 行で決定します。

dense_lora

古典的な LoRA アダプター —— 最速のドメイン適応経路。MoE バリアントのベースライン対照として最適です。

mixture_lora

ルーター + 複数の LoRA エキスパート。dense モデルをトークンレベルのマルチタスクルーティング構造に変えます。

moe_expert_lora

FFN を MoE ブロックに置換し、各エキスパートに LoRA を注入(DeepSeek スタイル)。dense バックボーンをフル MoE 学習対象へ変換します。

native_moe_expert_lora

Mixtral、Gemma 4 MoE など既に MoE 構造のモデルの各エキスパートに LoRA を注入し、効率的にファインチューニングします。

▶ トレーニングタイプの詳細 (SFT / DPO / ORPO / RM / PPO)

5 つの訓練経路 —— 1 本のパイプラインで

SFT → DPO / ORPO → RM → PPO。各段階のチェックポイントが自動的に次段階へ流れます。

訓練タイプ 説明
SFTSupervised Fine-Tuning —— 基本アライメント段階
DPODirect Preference Optimization —— 参照モデル不要、メモリ効率的
ORPOOdds Ratio Preference Optimization —— 単一 forward pass アライメント
RMReward Model(Bradley-Terry)
PPOProximal Policy Optimization —— RLHF 最終段階

Dense → MoE変換パイプライン

EulerForgeは、HuggingFace denseモデルをMoE学習対象に変えるために必要なすべての段階を自動化します。

# 1枚のYAMLプリセットでdense 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. バックボーンアダプタがFFN / attentionモジュールを特定
# 3. FFNをMoEブロックに置換し、エキスパート毎にLoRAを注入
# 4. Phaseスケジューラ:router warmup -> LoRA -> base FFN
# 5. 学習開始前にPreflight + MoE安定性検証を実行
YAML プリセット
Config + Preflight 検証
Base モデルロード
MoE インジェクション
フェーズスケジュール学習
HF Export

コード変更なし。モデル選択・MoE 変換・トレーニング段階 — すべて YAML プリセット 1 枚で再現可能。Qwen / Llama / Gemma / Mixtral 系の主要バックボーンをサポート。

Phase Scheduling & LoRA Handoff

時間に沿って「誰が学習可能か」を段階化——大規模モデルのファインチューニングが安定かつ再現可能になります。

Router warmup

学習初期はルーターのみを学習し、トークン→エキスパート分布を安定化させます。この段階がないとルーター/エキスパート崩壊が頻発します。

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リファレンスは現在、韓国語と英語版のみ提供しています。以下のリンクは英語版に移動します。

国際化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で始める お問い合わせ