> ## Documentation Index
> Fetch the complete documentation index at: https://starforge.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 选一个方法

> NeMo-RL、verl、TRL、OpenRLHF、evalkit 与 custom

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
sf methods                  # 这套部署提供的全部方法
sf methods nemo-rl/grpo     # 某个方法可调的参数，带取值范围
```

`sf methods` 才是「你连的这台服务器实际发布了什么」的权威答案。下面的表是一张地图，不是版本锁定。

控制台的[方法页](/zh-Hans/console/methods)展示同一份 catalog 并把参数铺开，第一次提交前看那个更省事。

## NeMo-RL

默认框架，覆盖完整后训练链路。当前 catalog 发布：`nemo-rl@0.7.0`。

| 方法                     | 是什么                                | 什么时候用                              |
| ---------------------- | ---------------------------------- | ---------------------------------- |
| `nemo-rl/sft`          | 监督指令微调                             | 流水线第一段，产物再进 DPO / GRPO             |
| `nemo-rl/dpo`          | Direct preference optimization     | 已有 pairwise 标签；比 GRPO 便宜           |
| `nemo-rl/grpo`         | Group relative policy optimization | 数学 / 推理 RL；没有 critic               |
| `nemo-rl/grpo-lora`    | GRPO + LoRA                        | 显存紧，或单机训更大底座。LoRA lr 比全参高 1–2 个数量级 |
| `nemo-rl/ppo`          | 带 critic 和 GAE 的 PPO               | 稠密奖励，或组内 baseline 被扭曲              |
| `nemo-rl/rm`           | Bradley-Terry 奖励模型                 | RL 的奖励源，或校准 LLM judge              |
| `nemo-rl/distillation` | On-policy 蒸馏                       | 学生采样，教师给全分布 KL                     |
| `nemo-rl/maxrl`        | Maximum-likelihood RL              | 把学习信号集中在低通过率的难题上                   |
| `nemo-rl/opsd`         | 同模型自蒸馏                             | 教师 = 同一模型 + 参考解答                   |

## verl

字节 verl 同步 trainer。catalog 发布：`verl@0.9.0`。入口和参数路径的版本差异写在版本矩阵里（[Recipe](/zh-Hans/concepts/recipes)）。

下面这些 RL 方法跑的都是同一个官方入口（`verl.trainer.main_ppo`），区别只在 recipe 钉死的 advantage estimator。
这是刻意的：estimator 不是可以写在 `config.yaml` 里的超参——写了会在提交时被拒，因为「配置和方法悄悄不一致」比报错更糟。

| 方法                        | 是什么                                                                                   |
| ------------------------- | ------------------------------------------------------------------------------------- |
| `verl/grpo`               | 同步 GRPO；镜像和依赖由 recipe 钉死                                                              |
| `verl/dapo`               | GRPO 之上默认开启 DAPO 四件套：clip-higher、动态采样、token 级 loss、超长奖励整形                             |
| `verl/ppo`                | 带 critic 的 GAE PPO。奖励密集/过程奖励，或组内基线被扭曲时用                                               |
| `verl/rloo`               | 留一法基线：无偏，且不除以组内标准差                                                                    |
| `verl/reinforce-baseline` | REINFORCE++-baseline：组内均值 + 全局 batch 白化。与 `openrlhf/reinforce-baseline` 同一个 estimator |
| `verl/remax`              | 基线取模型自己的贪心解；每题采一条，代价是每步多跑一遍贪心生成                                                       |
| `verl/distillation`       | On-policy 蒸馏（OPD）。教师推理服务要单独一个资源池                                                      |
| `verl/sft`                | 官方 SFT trainer；GPU 进程用显式 torchrun argv                                                |

loss 变体——GSPO、CISPO、GMPO、clip-cov / kl-cov、GPG——不是独立方法：它们是上面任一 RL recipe 的 `policy_loss_mode` 参数。
rollout 校正（TIS / IcePop）同理：每个 verl RL 方法都带 `rollout_is*` 参数——rollout 引擎和训练器从来就不是同一个策略。

## TRL

Hugging Face TRL + Accelerate。catalog 发布：`trl@1.10.0`。

| 方法         | 是什么                                                        |
| ---------- | ---------------------------------------------------------- |
| `trl/sft`  | SFTTrainer                                                 |
| `trl/dpo`  | DPOTrainer                                                 |
| `trl/grpo` | GRPOTrainer 在线 RL                                          |
| `trl/rm`   | RewardTrainer（SequenceClassification）                      |
| `trl/kto`  | 只要二元好/坏标签，不要 pairwise                                      |
| `trl/rloo` | leave-one-out 组内 baseline；和 GRPO 同族，不除组内标准差                |
| `trl/opsd` | DistillationTrainer on-policy 蒸馏；要词表相同的教师（`teacher_model`） |

## OpenRLHF

DeepSpeed ZeRO + vLLM hybrid engine（colocate）。catalog 发布：`openrlhf@0.11.0`。镜像要自建（`deploy/docker/Dockerfile.openrlhf`），配 `FORGE_IMAGE_OPENRLHF` 或 runtime 注册表。上游官方 Dockerfile 不会放出带包本体的现成镜像。

| 方法                            | 是什么                                                                                        |
| ----------------------------- | ------------------------------------------------------------------------------------------ |
| `openrlhf/sft`                | 官方 SFT（packing、多轮 loss、continued pre-training）                                             |
| `openrlhf/dpo`                | 官方 DPO（IPO / cDPO、NLL 正则）                                                                  |
| `openrlhf/rm`                 | Bradley-Terry 奖励模型；可作 OpenRLHF RL 的 `reward_pretrain`                                      |
| `openrlhf/grpo`               | group-norm GRPO，无 critic。`no_std_norm` 就是 Dr.GRPO                                          |
| `openrlhf/ppo`                | GAE PPO + critic；actor/critic/ref/reward 共卡                                                |
| `openrlhf/reinforce-baseline` | REINFORCE++-baseline（全局 batch 归一 + 组内均值）。与 `verl/reinforce-baseline` 是同一个 estimator，换栈不换算法 |

## 评测和 custom

| 方法                  | 是什么                                      | 文档                                       |
| ------------------- | ---------------------------------------- | ---------------------------------------- |
| `evalkit/benchmark` | lm-eval / evalscope；分数进看板                | [Benchmarks](/zh-Hans/guides/benchmarks) |
| `custom/custom`     | 跑 `train.sh`；镜像自备，曲线调 `starforge.report` | [自定义训练](/zh-Hans/guides/custom-training) |

按框架的走法：[NeMo-RL](/zh-Hans/guides/nemo-rl)、[verl](/zh-Hans/guides/verl)、[TRL](/zh-Hans/guides/trl)、[OpenRLHF](/zh-Hans/guides/openrlhf)。

## 怎么起手

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
flowchart TD
    A["手头是什么数据？"] --> B["指令-回复"]
    A --> C["pairwise 偏好"]
    A --> D["二元好/坏"]
    A --> E["可验证任务（数学/代码/工具）"]
    A --> F["有更强的教师模型"]
    B --> SFT["nemo-rl/sft、trl/sft 或 openrlhf/sft"]
    C --> DPO["nemo-rl / trl / openrlhf 的 dpo<br/>或先 rm 再 RL"]
    D --> KTO["trl/kto"]
    E --> GRPO["nemo-rl/grpo（默认）<br/>显存紧：grpo-lora<br/>过程奖励：ppo<br/>难题：maxrl<br/>verl：grpo / rloo / reinforce-baseline / remax / ppo<br/>OpenRLHF：grpo 或 reinforce-baseline"]
    F --> DIST["nemo-rl/distillation、verl/distillation 或 trl/opsd<br/>没有外部教师：nemo-rl/opsd"]
```

<Tip>
  常见流水线：SFT → DPO 或 GRPO → `evalkit/benchmark`。[流水线](/zh-Hans/guides/pipelines)。
</Tip>
