start-run
GitHub指导启动 RL/SFT/推理训练任务,涵盖入口点选择、TOML配置加载、CLI参数覆盖及运行目录管理。支持单节点与SLURM模式,包含断点续训和干跑功能。
Trigger Scenarios
Install
npx skills add PrimeIntellect-ai/prime-rl --skill start-run -g -y
SKILL.md
Frontmatter
{
"name": "start-run",
"description": "How to launch prime-rl training runs — the `rl`, `sft`, and `inference` entrypoints, their config classes, and single-node\/SLURM\/dry-run modes. Use when starting a run or picking the right entrypoint."
}
Start a run
All entrypoints run via uv run <command> and accept TOML configs via @ path/to.toml plus CLI overrides.
Run directories
output_dir (default outputs) groups related runs; each run writes all its artifacts (logs, configs, checkpoints, weights, rollouts) to its own run directory <output_dir>/<run_name>. run.name auto-generates as <envs>--<model>--<short-id> (SFT: <dataset>--<model>--<short-id>), so every launch gets a fresh, readable run directory; run.dir overrides the directory leaf when it should differ from the name. Pass --run.name <name> to make the run directory predictable — required to resume the run later (--resume, or --resume.step N, reuses the named run directory; without [ckpt] it loads but saves no new checkpoints). Launching into a run directory that already contains artifacts fails unless resuming or --clean is set (which wipes only that run directory).
Config system at a glance
pydantic-config — Pydantic-based TOML + CLI loader. Highlights (see the configs skill for full mechanics):
- Config files via
@ path(TOML / YAML / JSON); CLI args layer on top, deep-merged with class defaults. - Nested groups via dotted CLI paths — kebab-case on the CLI, snake_case in TOML.
- Bool toggles: bare
--flagenables,--no-flagdisables (nested too). - Lists: space-separated or JSON literal. Dicts: JSON literal, deep-merged with file values.
- Optional sub-configs (
WandbMonitorConfig | None): bare--monitors.wandbenables defaults;--monitors.wandb @ wandb.tomlenables from a file;--no-monitors.wandbdisables. - Discriminated unions are switched by the
typetag (e.g.--optimizer.type muon). - Validation aliases let renamed fields keep working; legacy keys can be remapped in a
model_validator(mode="before"). - Auto-generated
--helppanels fromField(description=...)or PEP 224 docstrings. - Friendly errors: required-field boxes, validator errors point at the offending flag, unknown flags get a "did you mean" hint.
- State-only optimizer offload remains enabled by default with
model.optim_cpu_offload = true. - For gradients, FP32 masters, optimizer state, and optimizer-in-backward CPU execution, set
model.optim_cpu_offload = falseandmodel.full_offload = true. This mode uses the native CPU optimizer kernel, only supports AdamW and SignSGD (SignSGD is stateless and halves the host RAM footprint), and disables gradient clipping. Use a[model.full_offload]table only to select the Torch debugging backend or disable NUMA binding.
rl — RL training
Launches inference server, orchestrator, and trainer as subprocesses.
uv run rl @ examples/basic/reverse-text/rl.toml
uv run rl @ examples/basic/reverse-text/rl.toml --dry-run # write scripts, don't run
- Config:
RLConfig(packages/prime-rl-configs/src/prime_rl/configs/rl.py) - Entrypoint:
src/prime_rl/entrypoints/rl.py - SLURM: single- and multi-node
- Environment packages: before launching a config with a non-core verifier env id,
verify the package imports under
uv run(for exampleuv run python -c "import importlib.util; print(importlib.util.find_spec('r2e_gym'))"). If a local env exists underdeps/prime-envs/environments/ordeps/verifiers/environments/but does not import, install the env workspace members withuv sync --all-packages(all) oruv sync --package prime-rl --package <env>(one) — they're auto-discovered, nopyproject.tomledit needed.
sft — SFT training
Launches torchrun internally — never call torchrun directly.
uv run sft @ examples/basic/reverse-text/sft.toml
uv run sft @ examples/basic/reverse-text/sft.toml --slurm
uv run sft @ examples/basic/reverse-text/sft.toml --dry-run
- Config:
SFTConfig(packages/prime-rl-configs/src/prime_rl/configs/sft.py) - Entrypoint:
src/prime_rl/entrypoints/sft.py - SLURM: single- and multi-node
inference — vLLM server
OpenAI-compatible API plus prime-rl custom endpoints (/update_weights, /load_lora_adapter, /init_broadcaster). Always use this entrypoint — never vllm serve directly. It starts a vllm-router on server.port (default 8000, the client-facing URL) fronting the engine on backend_port (default 8100); admin endpoints must target the engine port directly.
uv run inference --vllm.model Qwen/Qwen3-0.6B
uv run inference --vllm.model Qwen/Qwen3-0.6B --vllm.enforce-eager
Smoke checks:
curl http://<host>:<port>/health
curl http://<host>:<port>/v1/models
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "Qwen/Qwen3-0.6B", "messages": [{"role": "user", "content": "Hi"}], "max_tokens": 50}'
- Config:
InferenceConfig(packages/prime-rl-configs/src/prime_rl/configs/inference.py) - Entrypoint:
src/prime_rl/entrypoints/inference.py - SLURM: single-node, multi-node, and disaggregated deployments
Summary
| Command | Purpose | Typical use |
|---|---|---|
rl |
Full RL pipeline | Production RL training |
sft |
Supervised fine-tuning | SFT and hard-distill |
inference |
vLLM server | Standalone serving / debugging |
Key paths
src/prime_rl/entrypoints/—rl,sft,inference(+trainer,orchestratorfor direct launches)packages/prime-rl-configs/src/prime_rl/configs/— all config classesconfigs/debug/— minimal debug configsexamples/— full example configs (e.g.reverse-text/)
Version History
-
bfb0fe3
Current 2026-08-20 05:54
新增SignSGD优化器在CPU全卸载模式下的支持,优化了每层优化器步骤的CUDA流重叠以节省显存,并更新了相关文档。
- 3b22dd9 2026-07-25 11:27


