toml-config

How to write and use TOML configs in prime-rl. Use when creating config files, running commands with configs, or overriding config values via CLI.

npx skills add https://github.com/huggingface/prime-rl --skill toml-config

TOML Config

All prime-rl commands use pydantic_config (tyro-backed) with TOML configs and CLI overrides.

Running with configs

# Load a config file with @ syntax
uv run inference @ configs/debug/infer.toml
uv run sft @ configs/debug/sft/train.toml
uv run rl @ configs/debug/rl/train.toml

# CLI overrides (take precedence over TOML)
uv run inference @ config.toml --model.name Qwen/Qwen3-0.6B --server.port 8001

# Boolean flags: no value needed
uv run inference --model.enforce-eager          # sets to true
uv run inference --no-model.enforce-eager       # sets to false

# CLI-only (no TOML file)
uv run inference --model.name Qwen/Qwen3-0.6B --model.max-model-len 2048

# Compose multiple config files (later files override earlier ones)
uv run rl @ examples/reverse_text/rl.toml @ examples/reverse_text/slurm_rl.toml

# Nested config files: load a config for a specific section
uv run rl --model @ model.toml --data @ data.toml

TOML structure

Top-level fields must come before any [section] header — this is a TOML rule.

# Top-level fields first
gpu_memory_utilization = 0.5
seed = 42

# Then sections
[model]
name = "Qwen/Qwen3-0.6B"
max_model_len = 4096

[server]
port = 8000

Putting a top-level field after a section header nests it inside that section, which causes validation errors.

Setting None

Use the string "None" in TOML to set a field to None:

max_model_len = "None"

SLURM mode

Both rl and sft commands support SLURM execution via an optional [slurm] section. When present, the run is submitted as a SLURM job instead of running locally.

SLURM configs are composed with the base config via CLI:

uv run rl @ examples/reverse_text/rl.toml @ examples/reverse_text/slurm_rl.toml

RL SLURM

output_dir = "/shared/experiments/my-run"

[deployment]
type = "multi_node"
num_train_nodes = 2
num_infer_nodes = 1
gpus_per_node = 8
# nodes_per_fsdp_group = 1

[slurm]
job_name = "my-rl-job"
# dry_run = true          # generate script without submitting
# template_path = "path/to/custom.sh.j2"
# project_dir = "/path/to/project"

When [slurm] is set for RL:

  • output_dir must be explicitly set (the default outputs is rejected)
  • Teacher inference is not supported in multi-node deployment

SFT SLURM

output_dir = "/shared/experiments/my-sft-run"

[deployment]
type = "multi_node"
num_nodes = 2
gpus_per_node = 8
# nodes_per_fsdp_group = 1

[slurm]
job_name = "my-sft-job"
# dry_run = true
# template_path = "path/to/custom.sh.j2"
# project_dir = "/path/to/project"

SFT deployment follows the same pattern as RL:

  • [deployment] configures node/GPU allocation (single_node default or multi_node)
  • [slurm] configures SLURM submission (job name, partition, template)
  • output_dir must be explicitly set when using SLURM
  • Multi-node deployment requires [slurm] to be set

Available commands

All accept @ config.toml and CLI overrides:

CommandConfig classDescription
uv run rlfull RL pipelineOrchestrator + inference + trainer (local or SLURM)
uv run inferenceInferenceConfigvLLM inference server
uv run trainertrainer configRL trainer
uv run orchestratororchestrator configRollout orchestrator
uv run env-serverenv server configEnvironment server
uv run sftSFT configSupervised fine-tuning (local or SLURM)

Key files

  • src/prime_rl/utils/config.pyBaseConfig, cli, get_all_fields
  • src/prime_rl/entrypoints/rl.py — unified RL entrypoint (local + SLURM)
  • src/prime_rl/configs/rl.pyRLConfig, SlurmConfig, DeploymentConfig
  • src/prime_rl/entrypoints/sft.py — unified SFT entrypoint (local + SLURM)
  • src/prime_rl/configs/sft.pySFTConfig
  • configs/ — all config files, organized by task

Mais skills de huggingface

Hugging Face Cli
huggingface
Execute Hugging Face Hub operations using the `hf` CLI. Use when the user needs to download models/datasets/spaces, upload files to Hub repositories, create repos, manage local cache, or run compute jobs on HF infrastructure. Covers authentication, file transfers, repository creation, cache operations, and cloud compute.
official
Hugging Face Datasets
huggingface
Criar e gerenciar datasets no Hugging Face Hub. Suporta inicialização de repositórios, definição de configurações/prompts de sistema, atualização de linhas em streaming e consulta/transformação de datasets baseada em SQL. Projetado para funcionar junto ao servidor MCP do HF para fluxos de trabalho abrangentes com datasets.
official
Hugging Face Evaluation
huggingface
Adicionar e gerenciar resultados de avaliação em model cards do Hugging Face. Suporta extração de tabelas de avaliação do conteúdo do README, importação de pontuações da API Artificial Analysis e execução de avaliações personalizadas de modelos com vLLM/lighteval. Funciona com o formato de metadados model-index.
official
Hugging Face Jobs
huggingface
Execute qualquer workload na infraestrutura de Hugging Face Jobs. Abrange scripts UV, jobs baseados em Docker, seleção de hardware, estimativa de custos, autenticação com tokens, gerenciamento de segredos, configuração de timeout e persistência de resultados. Projetado para workloads de computação de uso geral, incluindo processamento de dados, inferência, experimentos, jobs em lote e qualquer tarefa baseada em Python.
official
Hugging Face Model Trainer
huggingface
Treine ou ajuste modelos de linguagem usando TRL (Transformer Reinforcement Learning) na infraestrutura de Jobs do Hugging Face. Abrange os métodos de treinamento SFT, DPO, GRPO e modelagem de recompensa, além da conversão para GGUF para implantação local. Inclui orientações sobre preparação de conjuntos de dados, seleção de hardware, estimativa de custos e persistência de modelos.
official
Hugging Face Paper Publisher
huggingface
Publique e gerencie artigos de pesquisa no Hugging Face Hub. Suporta a criação de páginas de artigos, vinculação de artigos a modelos/conjuntos de dados, reivindicação de autoria e geração de artigos de pesquisa profissionais baseados em markdown.
official
Hugging Face Tool Builder
huggingface
Construa scripts e ferramentas reutilizáveis usando a API do Hugging Face. Útil ao encadear ou combinar chamadas de API, ou quando tarefas forem repetidas/automatizadas. Cria scripts de linha de comando reutilizáveis para buscar, enriquecer ou processar dados do Hugging Face Hub.
official
Hugging Face Trackio
huggingface
Acompanhe e visualize experimentos de treinamento de ML com o Trackio. Use ao registrar métricas durante o treinamento (API Python) ou ao recuperar/analisar métricas registradas (CLI). Suporta visualização em dashboard em tempo real, sincronização com HF Space e saída JSON para automação.
official