К основному содержанию
скилл CX Codex

torchforge-rl-training — скилл для Claude Code: RL и установка

Скилл объясняет обучение агентных RL-моделей на PyTorch через torchforge. Пригодится для GRPO, SFT и экспериментов с распределённым обучением.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Orchestra-Research/AI-Research-SKILLs --skill torchforge-rl-training -a claude-code
npx skills add Orchestra-Research/AI-Research-SKILLs --skill torchforge -a claude-code
Открыть на GitHub

Что делает torchforge-rl-training

Скилл помогает агенту работать с torchforge — PyTorch-библиотекой для агентного reinforcement learning. Она отделяет алгоритмы от инфраструктуры: в материалах разобраны GRPO, DAPO, SAPO и другие функции потерь, а также связка TorchTitan для обучения, vLLM для инференса и Monarch для распределённых сервисов.

Внутри есть инструкции по SFT, GRPO для математического reasoning, собственным loss-функциям и multi-GPU-конфигурациям. Приведены конфиги, примеры reward-функций и команды запуска python -m apps.sft.main --config apps/sft/llama3_8b.yaml и python -m apps.grpo.main --config apps/grpo/qwen3_1_7b.yaml. Для установки используются torch>=2.9.0, torchtitan>=0.2.0, vllm и monarch; предусмотрен отдельный скрипт для ROCm.

Для SFT нужно 2+ GPU, а пример GRPO рассчитан на 3+ GPU, включая отдельные роли trainer, ref_model и generator. torchforge экспериментален, и его API может меняться, поэтому это повод проверить код перед переносом в стабильный пайплайн.

Какие задачи решает

  • настроить SFT-обучение на PyTorch
  • запустить GRPO для математических задач
  • описать собственную функцию потерь
  • распределить обучение между несколькими GPU

Примеры запросов агенту

  • Настрой SFT через torchforge для модели из apps/sft/llama3_8b.yaml и объясни команду запуска.
  • Создай конфигурацию GRPO для openai/gsm8k, добавь reward-функцию и запусти python -m apps.grpo.main --config config/grpo_math.yaml.
  • Покажи, как встроить собственный CustomLoss в цикл обучения torchforge и учти требования к GPU.

Как установить torchforge-rl-training

1Через Skills CLI (Vercel)

npx skills add Orchestra-Research/AI-Research-SKILLs --skill torchforge-rl-training -a claude-code
npx skills add Orchestra-Research/AI-Research-SKILLs --skill torchforge -a claude-code

2Вручную: положить файлы

~/.claude/skills/torchforge/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/torchforge/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о torchforge-rl-training

Как установить torchforge-rl-training в Claude Code?

Выполните npx skills add Orchestra-Research/AI-Research-SKILLs --skill torchforge-rl-training -a claude-code, затем npx skills add Orchestra-Research/AI-Research-SKILLs --skill torchforge -a claude-code. Файл скилла будет доступен по пути ~/.claude/skills/torchforge/SKILL.md.

Что делает torchforge-rl-training?

Скилл даёт агенту инструкции по PyTorch-native RL через torchforge: SFT, GRPO, собственным loss-функциям и распределённому обучению с TorchTitan, vLLM и Monarch.

Сколько GPU нужно для примеров torchforge?

Пример SFT рассчитан на 2+ GPU, а пример GRPO — на 3+ GPU. В GRPO отдельные GPU используются для trainer, ref_model и generator.

Исходный текст

SKILL.md · MIT
---
name: torchforge-rl-training
description: Provides guidance for PyTorch-native agentic RL using torchforge, Meta's library separating infra from algorithms. Use when you want clean RL abstractions, easy algorithm experimentation, or scalable training with Monarch and TorchTitan.
version: 1.0.0
author: Orchestra Research
license: MIT
tags: [Reinforcement Learning, PyTorch, GRPO, SFT, Monarch, TorchTitan, Meta]
dependencies: [torch>=2.9.0, torchtitan>=0.2.0, vllm, monarch]
---

# torchforge: PyTorch-Native Agentic RL Library

torchforge is Meta's PyTorch-native RL library that separates infrastructure concerns from algorithm concerns. It enables rapid RL research by letting you focus on algorithms while handling distributed training, inference, and weight sync automatically.

## When to Use torchforge

**Choose torchforge when you need:**
- Clean separation between RL algorithms and infrastructure
- PyTorch-native abstractions (no Ray dependency)
- Easy algorithm experimentation (GRPO, DAPO, SAPO in ~100 lines)
- Scalable training with Monarch actor system
- Integration with TorchTitan for model parallelism

**Consider alternatives when:**
- You need production-ready stability → use **miles** or **verl**
- You want Megatron-native training → use **slime**
- torchforge is experimental and APIs may change

## Key Features

- **Algorithm isolation**: Implement RL algorithms without touching infrastructure
- **Scalability**: From single GPU to thousands via Monarch
- **Modern stack**: TorchTitan (training), vLLM (inference), TorchStore (sync)
- **Loss functions**: GRPO, DAPO, CISPO, GSPO, SAPO built-in

## Architecture Overview

```
┌─────────────────────────────────────────────────────────┐
│ Application Layer (Your Code)                           │
│ - Define reward models, loss functions, sampling        │
└─────────────────────┬───────────────────────────────────┘
                      │
┌─────────────────────▼───────────────────────────────────┐
│ Forge API Layer                                         │
│ - Episode, Group dataclasses                           │
│ - Service interfaces (async/await)                      │
└─────────────────────┬───────────────────────────────────┘
                      │
┌─────────────────────▼───────────────────────────────────┐
│ Distributed Services (Monarch)                          │
│ ├── Trainer (TorchTitan FSDP)                          │
│ ├── Generator (vLLM inference)                          │
│ ├── Reference Model (frozen KL baseline)               │
│ └── Reward Actors (compute rewards)                    │
└─────────────────────────────────────────────────────────┘
```

## Installation

```bash
# Create environment
conda create -n forge python=3.12
conda activate forge

# Install (handles PyTorch nightly + dependencies)
./scripts/install.sh

# Verify
python -c "import torch, forge, vllm; print('OK')"
```

### ROCm Installation

```bash
./scripts/install_rocm.sh
```

## Quick Start

### SFT Training (2+ GPUs)

```bash
python -m apps.sft.main --config apps/sft/llama3_8b.yaml
```

### GRPO Training (3+ GPUs)

```bash
python -m apps.grpo.main --config apps/grpo/qwen3_1_7b.yaml
```

---

## Workflow 1: GRPO Training for Math Reasoning

Use this workflow for training reasoning models with group-relative advantages.

### Prerequisites Checklist
- [ ] 3+ GPUs (GPU0: trainer, GPU1: ref_model, GPU2: generator)
- [ ] Model from HuggingFace Hub
- [ ] Training dataset (GSM8K, MATH, etc.)

### Step 1: Create Configuration

```yaml
# config/grpo_math.yaml
model: "Qwen/Qwen2.5-7B-Instruct"

dataset:
  path: "openai/gsm8k"
  split: "train"
  streaming: true

training:
  batch_size: 4
  learning_rate: 1e-6
  seq_len: 4096
  dtype: bfloat16
  gradient_accumulation_steps: 4

grpo:
  n_samples: 8           # Responses per prompt
  clip_low: 0.2
  clip_high: 0.28
  beta: 0.1              # KL penalty coefficient
  temperature: 0.7

services:
  generator:
    procs: 1
    num_replicas: 1
    with_gpus: true
  trainer:
    procs: 1
    num_replicas: 1
    with_gpus: true
  ref_model:
    procs: 1
    num_replicas: 1
    with_gpus: true
```

### Step 2: Define Reward Function

```python
# rewards.py
# Reward functions are in forge.data.rewards
from forge.data.rewards import MathReward, ThinkingReward
import re

# Or define your own reward function
class CustomMathReward:
    def __call__(self, prompt: str, response: str, target: str) -> float:
        # Extract answer from response
        match = re.search(r'\\boxed{([^}]+)}', response)
        if not match:
            return 0.0

        answer = match.group(1).strip()
        return 1.0 if answer == target else 0.0
```

### Step 3: Launch Training

```bash
python -m apps.grpo.main --config config/grpo_math.yaml
```

### Step 4: Monitor Progress
- [ ] Check W&B dashboard for loss curves
- [ ] Verify entropy is decreasing (policy becoming more deterministic)
- [ ] Monitor KL divergence (should stay bounded)

---

## Workflow 2: Custom Loss Function

Use this workflow to implement new RL algorithms.

### Step 1: Create Loss Class

```python
# src/forge/losses/custom_loss.py
import torch
import torch.nn as nn

class CustomLoss(nn.Module):
    def __init__(self, clip_range: float = 0.2, beta: float = 0.1):
        super().__init__()
        self.clip_range = clip_range
        self.beta = beta

    def forward(
        self,
        logprobs: torch.Tensor,
        ref_logprobs: torch.Tensor,
        advantages: torch.Tensor,
        padding_mask: torch.Tensor,
    ) -> torch.Tensor:
        # Compute importance ratio
        ratio = torch.exp(logprobs - ref_logprobs)

        # Clipped policy gradient
        clipped_ratio = torch.clamp(
            ratio,
            1 - self.clip_range,
            1 + self.clip_range
        )
        pg_loss = -torch.min(ratio * advantages, clipped_ratio * advantages)

        # KL penalty
        kl = ref_logprobs - logprobs

        # Apply mask and aggregate
        masked_loss = (pg_loss + self.beta * kl) * padding_mask
        loss = masked_loss.sum() / padding_mask.sum()

        return loss
```

### Step 2: Integrate into Application

```python
# apps/custom/main.py
from forge.losses.custom_loss import CustomLoss

loss_fn = CustomLoss(clip_range=0.2, beta=0.1)

# In training loop
loss = loss_fn(
    logprobs=logprobs,
    ref_logprobs=ref_logprobs,
    advantages=advantages,
    padding_mask=padding_mask,
)
```

---

## Workflow 3: Multi-GPU Distributed Training

Use this workflow for scaling to multiple GPUs or nodes.

### Configuration for Distributed

```yaml
# config/distributed.yaml
model: "meta-llama/Meta-Llama-3.1-8B-Instruct"

parallelism:
  tensor_parallel_degree: 2    # Split model across GPUs
  pipeline_parallel_degree: 1
  data_parallel_shard_degree: 2

services:
  generator:
    procs: 2                   # 2 processes for TP=2
    num_replicas: 1
    with_gpus: true
  trainer:
    procs: 2
    num_replicas: 1
    with_gpus: true
```

### Launch with SLURM

```bash
# Submit job
sbatch --nodes=2 --gpus-per-node=8 run_grpo.sh
```

### Launch Locally (Multi-GPU)

```bash
# 8 GPU setup
python -m apps.grpo.main \
    --config config/distributed.yaml \
    --trainer.procs 4 \
    --generator.procs 4
```

---

## Core API Reference

### Training Batch Format

torchforge uses dictionary-based batches for training:

```python
# inputs: list of dicts with torch.Tensor values
inputs = [{"tokens": torch.Tensor}]

# targets: list of dicts with training signals
targets = [{
    "response": torch.Tensor,
    "ref_logprobs": torch.Tensor,
    "advantages": torch.Tensor,
    "padding_mask": torch.Tensor
}]

# train_step returns loss as float
loss = trainer.train_step(inputs, targets)
```

### Completion

Generated output from vLLM:

```python
@dataclass
class Completion:
    text: str              # Generated text
    token_ids: list[int]   # Token IDs
    logprobs: list[float]  # Log probabilities
    metadata: dict         # Custom metadata
```

---

## Built-in Loss Functions

### Loss Functions

Loss functions are in the `forge.losses` module:

```python
from forge.losses import SimpleGRPOLoss, ReinforceLoss

# SimpleGRPOLoss for GRPO training
loss_fn = SimpleGRPOLoss(beta=0.1)

# Forward pass
loss = loss_fn(
    logprobs=logprobs,
    ref_logprobs=ref_logprobs,
    advantages=advantages,
    padding_mask=padding_mask
)
```

### ReinforceLoss

```python
from forge.losses.reinforce_loss import ReinforceLoss

# With optional importance ratio clipping
loss_fn = ReinforceLoss(clip_ratio=0.2)
```

---

## Common Issues and Solutions

### Issue: Not Enough GPUs

**Symptoms**: "Insufficient GPU resources" error

**Solutions**:
```yaml
# Reduce service requirements
services:
  generator:
    procs: 1
    with_gpus: true
  trainer:
    procs: 1
    with_gpus: true
  # Remove ref_model (uses generator weights)
```

Or use CPU for reference model:
```yaml
ref_model:
  with_gpus: false
```

### Issue: OOM During Generation

**Symptoms**: CUDA OOM in vLLM

**Solutions**:
```yaml
# Reduce batch size
grpo:
  n_samples: 4  # Reduce from 8

# Or reduce sequence length
training:
  seq_len: 2048
```

### Issue: Slow Weight Sync

**Symptoms**: Long pauses between training and generation

**Solutions**:
```bash
# Enable RDMA (if available)
export TORCHSTORE_USE_RDMA=1

# Or reduce sync frequency
training:
  sync_interval: 10  # Sync every 10 steps
```

### Issue: Policy Collapse

**Symptoms**: Entropy drops to zero, reward stops improving

**Solutions**:
```yaml
# Increase KL penalty
grpo:
  beta: 0.2  # Increase from 0.1

# Or add entropy bonus
training:
  entropy_coef: 0.01
```

---

## Resources

- **Documentation**: https://meta-pytorch.org/torchforge
- **GitHub**: https://github.com/meta-pytorch/torchforge
- **Discord**: https://discord.gg/YsTYBh6PD9
- **TorchTitan**: https://github.com/pytorch/torchtitan
- **Monarch**: https://github.com/meta-pytorch/monarch

© Orchestra Research · MIT · Orchestra-Research/AI-Research-SKILLs

Похожие скиллы

Всё по теме «ИИ и ML» →
trl-training huggingface Помогает писать и отлаживать постобучение языковых моделей через TRL: SFT, DPO, GRPO, KTO и обучение модели награды. CX Codex +1 909установок finetuning-method-selection Seth Hobson Скилл решает, нужен ли fine-tuning, и выбирает метод по типу задачи и данным. Пригодится перед запуском обучения модели. CX Codex 2 600установок grpo-rlvr-training Seth Hobson Скилл помогает настроить обучение моделей рассуждениям через GRPO и RLVR с проверяемыми наградами. Пригодится для задач с тестами, схемами и точными ответами. CX Codex 2 600установок stable-baselines3 K-Dense-AI Скилл для обучения агентов с подкреплением на Stable Baselines3. Поддерживает PPO, SAC, DQN и другие алгоритмы, работает с пользовательскими средами Gymnasium и векторизованными окружениями. CX Codex +1 1 900установок nemo-automodel-distributed-training NVIDIA Подсказывает, какую стратегию распределённого обучения выбрать в NeMo AutoModel и какие поля YAML выставить. Пригодится, когда модель не влезает в одну GPU. CX Codex +1 2 000установок nemo-mbridge-mlm-bridge-training NVIDIA Скилл помогает запускать обучение Megatron-LM и Megatron Bridge, сравнивать кривые потерь и разбирать расхождения после изменений. CX Codex +1 1 800установок

Из того же набора66

simpo-training Готовит обучение языковой модели методом SimPO на парах предпочтений. Нужен, когда DPO требует лишней опорной модели. CX Codex +1 950установок gptq Скилл для посттренировочного 4-битного квантования LLM: сжимает модель в 4 раза с потерей точности меньше 2%. CX Codex +1 950установок mamba-architecture Скилл для работы с архитектурой Mamba: линейная сложность O(n), обучение и инференс языковых моделей без KV-кэша. CX Codex +1 949установок implementing-llms-litgpt Скилл помогает реализовать, обучать и дообучать LLM через LitGPT. Пригодится для работы с архитектурами Llama, Gemma, Phi, Qwen и Mistral. CX Codex +1 948установок miles-rl-training Скилл ведёт агента по RL-обучению больших MoE-моделей на фреймворке miles: FP8, INT4, спекулятивный rollout. Пригодится, когда нужно поднять тренировку на H100/H200. CX Codex +1 946установок nnsight-remote-interpretability Помогает исследовать и модифицировать внутренние слои нейросетей через nnsight локально или удалённо через NDIF. Пригодится для экспериментов с моделями от 70B без мощных GPU. CX Codex +1 945установок llamaguard Скилл подключает модель LlamaGuard на 7-8B параметров для фильтрации пользовательских запросов и ответов модели по 6 категориям безопасности. CX Codex +1 945установок skypilot-multi-cloud-orchestration Скилл помогает запускать обучение ML-моделей в разных облаках и срезать расходы на GPU за счёт автоматического подбора зон и спотовых инстансов. CX Codex +1 944установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой