[ PROMPT_NODE_22870 ]
Post Training Slime API 参考
[ SKILL_DOCUMENTATION ]
# slime API 参考
## 架构概述
slime 采用由 Ray 编排的三模块架构:
┌─────────────────────────────────────────────────────────┐
│ 数据缓冲区 │
│ - 提示词初始化与管理 │
│ - 自定义数据生成与过滤 │
│ - Rollout 样本存储 │
└─────────────┬───────────────────────────┬───────────────┘
│ │
┌─────────────▼───────────┐ ┌─────────────▼───────────────┐
│ 训练 (Megatron-LM) │ │ Rollout (SGLang + 路由) │
│ - Actor 模型训练 │ │ - 回复生成 │
│ - Critic (可选) │ │ - 奖励/验证器输出 │
│ - 权重同步至 Rollout │ │ - 多轮对话支持 │
└─────────────────────────┘ └─────────────────────────────┘
## 核心数据结构
### Sample 对象
`Sample` 对象是定义在 `slime/utils/types.py` 中的核心数据结构:
python
from slime.utils.types import Sample
@dataclass
class Sample:
# 核心字段
group_index: Optional[int] # 用于批处理的组索引
index: Optional[int] # 样本索引
prompt: str | list[dict] = "" # 输入提示词或对话历史
tokens: list[int] = field(default_factory=list) # Token ID
response: str = "" # 生成的回复
response_length: int = 0 # 回复的 token 长度
label: Optional[str] = None # 真值标签
reward: Optional[float | dict] = None # RL 奖励信号
loss_mask: Optional[list[int]] = None # 1=计算损失, 0=掩码
status: Status = Status.PENDING # 样本状态
metadata: dict = field(default_factory=dict) # 自定义数据
# 多模态支持
multimodal_inputs: Optional[Any] = None # 原始多模态数据 (图像, 视频)
multimodal_train_inputs: Optional[Any] = None # 处理后的多模态数据 (pixel_values)
# Rollout 追踪
weight_versions: list[str] = field(default_factory=list)
rollout_log_probs: Optional[list[float]] = None # 来自 SGLang 的对数概率
rollout_routed_experts: Optional[list[list[int]]] = None # 专家路由 (MoE)
# 控制字段
remove_sample: bool = False
generate_function_path: Optional[str] = None
train_metadata: Optional[dict] = None
non_generation_time: float = 0.0
# 推理加速 (Speculative decoding)