mcpField
M
miles-rl-training

miles-rl-training

github.com/kalarislabs开发9659 次安装4 天前更新
代码仓库

关于 miles-rl-training

miles 是面向大规模模型后训练的 RL 框架,适用于训练 MoE 等大型模型的团队。它侧重低精度训练、提升 rollout 吞吐量,以及训练与推理对齐。

主要功能

  1. 01统一的 FP8 训练与推理
  2. 02INT4 量化感知训练
  3. 03用于对齐的 MoE 路由回放
  4. 04推测式 RL 与部分 rollout
  5. 05训练推理离策略校正

适用场景

  1. 01大型 MoE 模型后训练
  2. 02使用 FP8 或 INT4 量化训练
  3. 03通过推测式 RL 提升 rollout 吞吐量

安装

复制下面的命令,在终端中运行。

$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 草稿模型,rollout 速度提升 25% 以上
  • 零拷贝权重同步:采用 CUDA IPC 零拷贝映射
  • 部分 Rollout:复用未完成的轨迹
训练与推理对齐
  • 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 推测解码实现最大 rollout 吞吐量。

推测式 RL 的工作原理
  1. 小型草稿模型生成候选 token
  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。

预期加速效果
  • 标准 rollout:基准
  • 推测式 RL:rollout 速度提升 25-40%
  • 配合部分 rollout:吞吐量额外提升 10-15%

配置参考

miles 继承了 slime 的所有参数。完整列表请参阅 slime API Reference。

集群资源(来自 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 显存INT4 显存降幅
70B140GB45GB3.1x
235B470GB150GB3.1x
671B1.3TB420GB3.1x
训练与推理对齐

miles 通过以下方式实现训练和推理之间“KL 散度精确为 0”:

  • Flash Attention 3
  • DeepGEMM
  • Thinking Machines Lab 提供的批次不变内核
  • torch.compile 集成

示例数据结构

miles 使用与 slime 相同的 Sample 数据类,并通过 rollout_routed_experts 字段实现 MoE 路由回放:

@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、4仅稠密
Gemma2、3、3N仅稠密
GLM4.5、4.6、4.7仅稠密
MiniMaxM2、M2.1完整

资源

相关技能

  • tensorrt-llm:使用 NVIDIA TensorRT 优化 LLM 推理,以实现最高吞吐量和最低延迟。
  • slime-rl-training:提供使用 slime 进行 LLM 强化学习后训练的指南。slime 是一个 Megatron+SGLang 框架。
  • serving-llms-vllm:使用 vLLM 的 PagedAttention 和连续批处理,以高吞吐量提供 LLM 服务。

评论

支持 Markdown