miles-rl-training について
milesは、大規模モデルの事後学習向けRLフレームワークです。MoEなどの大規模モデルを扱うチームを対象に、低精度学習、ロールアウトの高速化、学習と推論の整合に取り組みます。
主な機能
- 01FP8による学習と推論の統合
- 02INT4量子化対応学習
- 03整合性を高めるMoEルーティング再生
- 04投機的RLと部分ロールアウト
- 05学習・推論間のオフポリシー補正
活用シーン
- 01大規模MoEモデルの事後学習
- 02FP8またはINT4量子化での学習
- 03投機的RLによるロールアウト高速化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill miles-rl-trainingインストール後、Claude Code で/miles-rl-trainingを入力して読み込まれたか確認します。
同梱ファイルreferences/api-reference.mdreferences/troubleshooting.md
詳細
miles:大規模モデル学習向けのエンタープライズグレードRL
milesは、大規模モデルのポストトレーニング向けに最適化された、高性能でエンタープライズ対応のRLフレームワークです。slimeを本番環境向けにフォークして開発され、MoEトレーニングの安定性、低精度トレーニング、学習と推論の整合性に関する重要な課題に対処します。
milesを使う場面
次の要件がある場合は、milesを選択してください:
- 1TB以上のMoEモデル(DeepSeek V3、Qwen3-MoE)をトレーニングする
- FP8またはINT4の量子化を考慮したトレーニングが必要
- 学習と推論をビット単位で完全に一致させる
- スループットを最大化するために投機的RLを使う
- エンタープライズサポートを備えた、本番環境での安定性が必要
次の場合は、別の選択肢を検討してください:
- 研究用途向けのオリジナルが必要 → slimeを使用
- バックエンドを柔軟に切り替える必要がある → verlを使用
- PyTorchネイティブの抽象化が必要 → torchforgeを使用
主な機能
低精度トレーニング
- 統合FP8:推論とトレーニングの両方でエンドツーエンドのFP8に対応
- INT4 QAT:単一マシンのVRAM(H200)で1TBモデルを実行
- Rollout Routing Replay(R3):MoEのエキスパートをビット単位で整合
パフォーマンス最適化
- 投機的RL:オンラインSFTのドラフトモデルにより、ロールアウトを25%以上高速化
- ゼロコピー重み同期:CUDA IPCによるゼロコピーのマッピング
- 部分ロールアウト:未完了の軌跡を再利用
学習と推論の整合性
- TIS/MIS:オフポリシー補正のための切り詰め/マスク付き重要度サンプリング
- カーネルレベルの最適化:FlashAttention-3、DeepGEMMとの統合
インストール
# Recommended: Docker
docker pull radixark/miles:latest
docker run --rm --gpus all --ipc=host --shm-size=16g \
-it radixark/miles:latest /bin/bash
# From source
git clone https://github.com/radixark/miles.git
cd miles
pip install -r requirements.txt
pip install -e .
クイックスタート
milesはslimeの設定システムを継承しています。基本的なトレーニング:
python train.py \
--advantage-estimator grpo \
--model-name qwen3-30b-a3b \
--hf-checkpoint /path/to/qwen3-30b-a3b-hf \
--rollout-batch-size 512 \
--n-samples-per-prompt 8
ワークフロー1:大規模MoEトレーニング
DeepSeek V3やQwen3-MoEなどの大規模MoEモデルをトレーニングする場合は、このワークフローを使用してください。
前提条件のチェックリスト
- FP8に対応したH100/H200 GPU
- MoEモデル(DeepSeek V3、Qwen3-MoE)
- milesを含むDocker環境
ステップ1:環境のセットアップ
# FP8 block scaling (recommended for stability)
export NVTE_FP8_BLOCK_SCALING_FP32_SCALES=1
export CUDA_DEVICE_MAX_CONNECTIONS=1
ステップ2:トレーニングの設定
python train.py \
--actor-num-gpus-per-node 8 \
--rollout-num-gpus 8 \
--hf-checkpoint /path/to/deepseek-v3 \
--advantage-estimator grpo \
--tensor-model-parallel-size 8 \
--expert-model-parallel-size 4 \
--prompt-data /path/to/data.jsonl \
--num-rollout 3000
検証チェックリスト
- モデルがエラーなく読み込まれる
- ルーティングの決定が一貫している
- 損失値にNaN/Infが含まれない
ワークフロー2:投機的RLトレーニング
EAGLE投機的デコーディングを使ってロールアウトのスループットを最大化する場合は、このワークフローを使用してください。
投機的RLの仕組み
- 小規模なドラフトモデルが候補トークンを生成します
- ターゲットモデルが並列に検証します
- ポリシーに追従するよう、オンラインSFTを通じてドラフトモデルを更新します
ステップ1:投機的デコーディングの有効化
milesはSGLangを介したEAGLE投機的デコーディングに対応しています:
python train.py \
--actor-num-gpus-per-node 8 \
--hf-checkpoint /path/to/target-model \
--sglang-speculative-algorithm EAGLE \
--sglang-speculative-num-steps 3 \
--sglang-speculative-eagle-topk 1 \
--sglang-speculative-num-draft-tokens 4 \
--sglang-speculative-draft-model-path /path/to/draft-model \
--advantage-estimator grpo \
--prompt-data /path/to/data.jsonl
ステップ2:オンラインMTPトレーニングの有効化(任意)
トレーニング中にドラフトモデルをオンラインSFTする場合:
--mtp-num-layers 1 \
--enable-mtp-training \
--mtp-loss-scaling-factor 0.2
注:オンラインMTPトレーニングには、MTP重みを含むtorch distチェックポイントが必要です。HuggingFaceからチェックポイントを変換する際に、--mtp-num-layers 1を追加してください。
期待される高速化
- 標準ロールアウト:ベースライン
- 投機的RL:ロールアウトが25~40%高速化
- 部分ロールアウト併用時:スループットがさらに10~15%向上
設定リファレンス
milesはslimeのすべての引数を継承しています。完全な一覧については、slime APIリファレンスを参照してください。
クラスターリソース(slimeから継承)
--actor-num-nodes 1
--actor-num-gpus-per-node 8
--rollout-num-gpus 8
--rollout-num-gpus-per-engine 2
--colocate
Megatron並列化(slimeから継承)
--tensor-model-parallel-size 8
--pipeline-model-parallel-size 2
--expert-model-parallel-size 4 # MoE expert parallelism
投機的デコーディング(miles固有)
--sglang-speculative-algorithm EAGLE
--sglang-speculative-num-steps 3
--sglang-speculative-eagle-topk 1
--sglang-speculative-num-draft-tokens 4
--sglang-enable-draft-weights-cpu-backup
--sglang-speculative-draft-model-path /your/draft/model/path
オンラインMTPトレーニング(miles固有)
--mtp-num-layers 1
--enable-mtp-training
--mtp-loss-scaling-factor 0.2
主な機能(概念)
以下の機能はmilesで説明されていますが、具体的なCLIフラグは異なる場合があります。最新の設定については、milesリポジトリを参照してください。
統合FP8パイプライン
エンドツーエンドのFP8サンプリングとトレーニングにより、MoEモデルでRLの崩壊を引き起こす量子化由来の不一致を解消します。
Rollout Routing Replay(R3)
SGLangによる推論中にエキスパートのルーティング決定を記録し、Megatronによるトレーニング中に再生することで、エキスパートをビット単位で整合させます。
R3の仕組み:
- SGLangによる推論中に、エキスパートのルーティング決定を記録します
- ルーティング決定は
sample.rollout_routed_expertsに保存されます - Megatronによるトレーニング中に、ルーティングを再計算せずに再生します
- 学習と推論で、選択されるエキスパートが同一であることを保証します
INT4 量子化対応トレーニング
1TB 以上のモデルを単一マシン(例:H200)にデプロイできます。
INT4 によるメモリ削減:
| モデルサイズ | BF16 VRAM | INT4 VRAM | 削減率 |
|---|---|---|---|
| 70B | 140GB | 45GB | 3.1x |
| 235B | 470GB | 150GB | 3.1x |
| 671B | 1.3TB | 420GB | 3.1x |
トレーニングと推論の整合性
miles は、以下を通じてトレーニングと推論の間で「KL ダイバージェンスを正確に 0」にします。
- Flash Attention 3
- DeepGEMM
- Thinking Machines Lab のバッチ不変カーネル
torch.compileの統合
サンプルデータ構造
miles は、MoE ルーティングのリプレイ用に rollout_routed_experts フィールドを備えた、slime と同じ Sample データクラスを使用します。
@dataclass
class Sample:
prompt: str | list[dict]
tokens: list[int]
response: str
reward: float | dict
loss_mask: list[int]
status: Status
metadata: dict
rollout_log_probs: list[float]
rollout_routed_experts: list[list[int]] # MoE routing for R3
完全な Sample 定義については、slime API リファレンスを参照してください。
よくある問題と解決策
問題:FP8 トレーニングの崩壊
症状:損失が急増する、NaN 値が発生する
解決策:
- ブロックスケーリングを使用します:
export NVTE_FP8_BLOCK_SCALING_FP32_SCALES=1 - 学習率を下げます:
--lr 5e-7 - トレーニングと推論の間で MoE ルーティングが一貫していることを確認します
問題:投機的ドラフトのずれ
症状:時間の経過とともに受け入れ率が低下する
解決策:
- オンライン MTP トレーニングを有効にして、ドラフトモデルの整合性を保ちます
- 投機ステップを減らします:
--sglang-speculative-num-steps 2 - CPU バックアップを使用します:
--sglang-enable-draft-weights-cpu-backup
問題:トレーニングと推論の不一致
症状:ポリシーの乖離、報酬の崩壊
解決策:
- オフポリシー補正に TIS を使用します:
--use-tis --tis-threshold 0.9 - SGLang と Megatron の間で対数確率が一致することを確認します
- MoE モデルでは R3 を有効にします
対応モデル
| ファミリー | モデル | MoE 対応 |
|---|---|---|
| DeepSeek | R1, V3, V3.2 | 完全対応 |
| Qwen | 2, 2.5, 3(MoE を含む) | 完全対応 |
| Llama | 3, 3.1, 3.3, 4 | Dense のみ |
| Gemma | 2, 3, 3N | Dense のみ |
| GLM | 4.5, 4.6, 4.7 | Dense のみ |
| MiniMax | M2, M2.1 | 完全対応 |
リソース
- GitHub:https://github.com/radixark/miles
- 紹介ブログ:https://lmsys.org/blog/2025-11-19-miles/
- Slime(上流):https://github.com/THUDM/slime
- SGLang:https://github.com/sgl-project/sglang
関連スキル
tensorrt-llm:NVIDIA TensorRT で LLM 推論を最適化し、スループットを最大化してレイテンシを最小化します。slime-rl-training:Megatron+SGLang フレームワークの slime を使用した、RL による LLM のポストトレーニングのガイダンスを提供します。serving-llms-vllm:vLLM の PagedAttention と連続バッチ処理を使用して、高スループットで LLM を提供します。