miles强化学习训练框架Skill miles-rl-training

miles是一个企业级强化学习框架,专注于训练大型混合专家模型,支持FP8和INT4量化训练,确保训练与推理的精确对齐,并通过推测性RL优化性能,适合生产环境使用。关键词: 强化学习, MoE模型, FP8训练, INT4量化, 训练-推理对齐, 推测性RL, 企业级AI框架。

大模型微调 0 次安装 0 次浏览 更新于 3/21/2026

名称: miles-rl-training 描述: 提供使用miles进行企业级强化学习训练的指南,miles是slime的生产就绪分支。适用于使用FP8/INT4训练大型混合专家模型、需要训练-推理对齐或需要推测性RL以实现最大吞吐量的场景。 版本: 1.0.0 作者: Orchestra Research 许可证: MIT 标签: [强化学习, MoE, FP8, INT4, 企业级, SGLang, Megatron-LM] 依赖: [sglang-router>=0.2.3, ray, torch>=2.0.0, transformers>=4.40.0]

miles: 用于大规模模型训练的企业级强化学习

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%+的rollout加速
  • 零拷贝权重同步: CUDA IPC零拷贝映射
  • 部分Rollout: 回收半完成的轨迹

训练-推理对齐

  • TIS/MIS: 截断/掩码重要性采样用于离策略校正
  • 内核级优化: FlashAttention-3、DeepGEMM集成

安装

# 推荐: Docker
docker pull radixark/miles:latest
docker run --rm --gpus all --ipc=host --shm-size=16g \
  -it radixark/miles:latest /bin/bash

# 从源代码安装
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训练

使用此工作流训练大型MoE模型,如DeepSeek V3或Qwen3-MoE。

先决条件检查清单

  • [ ] 支持FP8的H100/H200 GPU
  • [ ] MoE模型(如DeepSeek V3、Qwen3-MoE)
  • [ ] 安装miles的Docker环境

步骤1: 环境设置

# FP8块缩放(推荐用于稳定性)
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训练

使用此工作流实现最大rollout吞吐量,通过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分布检查点。在从HuggingFace转换检查点时添加 --mtp-num-layers 1

预期加速

  • 标准rollout: 基线
  • 推测性RL: 25-40%更快的rollout
  • 带部分rollout: 额外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专家并行

推测解码(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采样和训练,消除量化导致的RL崩溃在MoE模型中。

Rollout Routing Replay (R3)

记录SGLang推理期间的专家路由决策,并在Megatron训练期间重放以实现位级专家对齐。

R3如何工作:

  1. 在SGLang推理期间,记录专家路由决策
  2. 路由决策存储在 sample.rollout_routed_experts
  3. 在Megatron训练期间,重放路由而不是重新计算
  4. 确保训练和推理间一致的专家选择

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散度”:

  • 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]]  # 用于R3的MoE路由

完整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间的log概率匹配
  • 为MoE模型启用R3

支持模型

家族 模型 MoE支持
DeepSeek R1, V3, V3.2 完整
Qwen 2, 2.5, 3(包括MoE) 完整
Llama 3, 3.1, 3.3, 4 仅密集
Gemma 2, 3, 3N 仅密集
GLM 4.5, 4.6, 4.7 仅密集
MiniMax M2, M2.1 完整

资源