mcpField
M
miles-rl-training

miles-rl-training

github.com/kalarislabs開発9659 回インストール4 日前に更新
リポジトリ

miles-rl-training について

milesは、大規模モデルの事後学習向けRLフレームワークです。MoEなどの大規模モデルを扱うチームを対象に、低精度学習、ロールアウトの高速化、学習と推論の整合に取り組みます。

主な機能

  1. 01FP8による学習と推論の統合
  2. 02INT4量子化対応学習
  3. 03整合性を高めるMoEルーティング再生
  4. 04投機的RLと部分ロールアウト
  5. 05学習・推論間のオフポリシー補正

活用シーン

  1. 01大規模MoEモデルの事後学習
  2. 02FP8またはINT4量子化での学習
  3. 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の仕組み
  1. 小規模なドラフトモデルが候補トークンを生成します
  2. ターゲットモデルが並列に検証します
  3. ポリシーに追従するよう、オンライン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の仕組み:

  1. SGLangによる推論中に、エキスパートのルーティング決定を記録します
  2. ルーティング決定はsample.rollout_routed_expertsに保存されます
  3. Megatronによるトレーニング中に、ルーティングを再計算せずに再生します
  4. 学習と推論で、選択されるエキスパートが同一であることを保証します
INT4 量子化対応トレーニング

1TB 以上のモデルを単一マシン(例:H200)にデプロイできます。

INT4 によるメモリ削減:

モデルサイズBF16 VRAMINT4 VRAM削減率
70B140GB45GB3.1x
235B470GB150GB3.1x
671B1.3TB420GB3.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 対応
DeepSeekR1, V3, V3.2完全対応
Qwen2, 2.5, 3(MoE を含む)完全対応
Llama3, 3.1, 3.3, 4Dense のみ
Gemma2, 3, 3NDense のみ
GLM4.5, 4.6, 4.7Dense のみ
MiniMaxM2, M2.1完全対応

リソース

関連スキル

  • tensorrt-llm:NVIDIA TensorRT で LLM 推論を最適化し、スループットを最大化してレイテンシを最小化します。
  • slime-rl-training:Megatron+SGLang フレームワークの slime を使用した、RL による LLM のポストトレーニングのガイダンスを提供します。
  • serving-llms-vllm:vLLM の PagedAttention と連続バッチ処理を使用して、高スループットで LLM を提供します。

コメント