[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XGH68H3D8EMZPBE2GW6A3Y":3,"skill-same:01M6XGH68H3D8EMZPBE2GW6A3Y":86},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":14,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6XGH68H3D8EMZPBE2GW6A3Y","verl-rl-training",null,"Provides guidance for training LLMs with reinforcement learning using verl (Volcano Engine RL). Use when implementing RLHF, GRPO, PPO, or other RL algorithms for LLM post-training at scale with flexible infrastructure backends.","fadrienne\u002FMyGitHub","fadrienne","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F197874571?v=4","01M6X64V8VWCRSMFZ4EPS2BWXG","Francesca Adrienne","01M6X64VD5MW4F9PHDWQKS7ZAF",0,"MIT","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fml-training\u002Fverl\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"training","verl rl training","verl","rl","when","llms","for","implementing","at","volcano","synthetic","algorithms","use","learning","Transformers","PPO","RLHF","Post-Training","Distributed Training","infrastructure","2026-11-10 10:12:30",false,"---\nname: verl-rl-training\ndescription: Provides guidance for training LLMs with reinforcement learning using verl (Volcano Engine RL). Use when implementing RLHF, GRPO, PPO, or other RL algorithms for LLM post-training at scale with flexible infrastructure backends.\ncategory: ml-training\nversion: 1.0.0\nauthor: Synthetic Sciences\nlicense: MIT\ntags: [Reinforcement Learning, RLHF, GRPO, PPO, Post-Training, Distributed Training]\ndependencies: [verl>=0.3.0, torch>=2.0.0, ray>=2.41.0, vllm>=0.8.2, transformers>=4.40.0]\n---\n\n# verl: Volcano Engine Reinforcement Learning for LLMs\n\nverl is a flexible, efficient, and production-ready RL training library for large language models from ByteDance's Seed team. It implements the HybridFlow framework (EuroSys 2025) and powers models like Doubao-1.5-pro achieving O1-level performance on math benchmarks.\n\n## When to Use verl\n\n**Choose verl when you need:**\n- Production-ready RL training at scale (tested up to 671B parameters)\n- Flexibility to swap backends (FSDP ↔ Megatron-LM ↔ vLLM ↔ SGLang)\n- Support for multiple RL algorithms (PPO, GRPO, RLOO, REINFORCE++, DAPO)\n- Multi-turn rollout with tool calling for agentic workflows\n- Vision-language model RL training\n\n**Consider alternatives when:**\n- You need Megatron-native training → use **slime** or **miles**\n- You want PyTorch-native abstractions with Monarch → use **torchforge**\n- You only need simple SFT\u002FDPO → use **TRL** or **Axolotl**\n\n## Key Features\n\n- **Training backends**: FSDP, FSDP2, Megatron-LM\n- **Rollout engines**: vLLM, SGLang, HuggingFace Transformers\n- **Algorithms**: PPO, GRPO, DAPO, RLOO, ReMax, REINFORCE++, SPIN, SPPO\n- **Models**: Qwen-3, Llama-3.1, DeepSeek, Gemma-2 (0.5B to 671B)\n- **Advanced**: LoRA RL, sequence parallelism, expert parallelism, multi-turn tools\n\n## Installation\n\n```bash\n# Option 1: pip install\npip install verl[vllm]  # or verl[sglang] for SGLang backend\n\n# Option 2: Docker (recommended for production)\ndocker pull verlai\u002Fverl:vllm011.latest\n\n# Option 3: From source\ngit clone https:\u002F\u002Fgithub.com\u002Fvolcengine\u002Fverl.git\ncd verl && pip install -e .[vllm,math]\n```\n\n## Quick Start: GRPO Training\n\n```bash\npython3 -m verl.trainer.main_ppo \\\n    algorithm.adv_estimator=grpo \\\n    data.train_files=~\u002Fdata\u002Fgsm8k\u002Ftrain.parquet \\\n    actor_rollout_ref.model.path=Qwen\u002FQwen2.5-7B \\\n    actor_rollout_ref.rollout.n=8 \\\n    actor_rollout_ref.actor.use_kl_loss=True \\\n    trainer.n_gpus_per_node=8\n```\n\n## Core Architecture\n\nverl uses a **HybridFlow** programming model separating control flow from computation:\n\n```\n┌─────────────────────────────────────────────────────────┐\n│ Single-Process Controller (Ray)                         │\n│ - Synthetic Sciencestes: rollout → reward → train → sync        │\n└─────────────────────┬───────────────────────────────────┘\n                      │\n┌─────────────────────▼───────────────────────────────────┐\n│ Multi-Process Workers                                   │\n│ ├── ActorRolloutRefWorker (policy + generation)        │\n│ ├── CriticWorker (value estimation, PPO only)          │\n│ └── RewardManager (model-based or rule-based rewards)  │\n└─────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Workflow 1: Math Reasoning with GRPO\n\nUse this workflow for training reasoning models on math tasks like GSM8K or MATH.\n\n### Prerequisites Checklist\n- [ ] GPU cluster with 8+ GPUs (H100 recommended)\n- [ ] Dataset in parquet format with `prompt` and `reward_model` columns\n- [ ] Base model from HuggingFace Hub\n\n### Step 1: Prepare Dataset\n\n```python\nimport pandas as pd\n\ndata = [\n    {\n        \"prompt\": [{\"role\": \"user\", \"content\": \"What is 15 + 27?\"}],\n        \"reward_model\": {\"ground_truth\": \"42\"}\n    },\n    # ... more examples\n]\ndf = pd.DataFrame(data)\ndf.to_parquet(\"train.parquet\")\n```\n\n### Step 2: Define Reward Function\n\n```python\n# reward_function.py\nimport re\n\ndef compute_reward(responses, ground_truths):\n    rewards = []\n    for response, gt in zip(responses, ground_truths):\n        # Extract answer from response\n        match = re.search(r'\\\\boxed{([^}]+)}', response)\n        if match and match.group(1).strip() == gt.strip():\n            rewards.append(1.0)\n        else:\n            rewards.append(0.0)\n    return rewards\n```\n\n### Step 3: Create Training Config\n\n```yaml\n# config\u002Fgrpo_math.yaml\nalgorithm:\n  adv_estimator: grpo\n  gamma: 1.0\n  lam: 1.0\n\ndata:\n  train_files: \u002Fpath\u002Fto\u002Ftrain.parquet\n  val_files: \u002Fpath\u002Fto\u002Fval.parquet\n  train_batch_size: 256\n  max_prompt_length: 512\n  max_response_length: 2048\n\nactor_rollout_ref:\n  model:\n    path: Qwen\u002FQwen2.5-7B-Instruct\n  actor:\n    use_kl_loss: true\n    kl_loss_coef: 0.001\n    ppo_mini_batch_size: 64\n  rollout:\n    name: vllm\n    n: 8  # samples per prompt\n    temperature: 0.7\n    top_p: 0.95\n\ntrainer:\n  total_epochs: 3\n  n_gpus_per_node: 8\n  save_freq: 100\n```\n\n### Step 4: Launch Training\n\n```bash\npython3 -m verl.trainer.main_ppo \\\n    --config-path config \\\n    --config-name grpo_math \\\n    trainer.experiment_name=grpo_math_qwen7b\n```\n\n### Step 5: Monitor and Validate\n- [ ] Check WandB\u002FTensorBoard for loss curves\n- [ ] Verify reward is increasing over steps\n- [ ] Run evaluation on held-out test set\n\n---\n\n## Workflow 2: PPO with Critic Model\n\nUse this workflow when you need value-based advantage estimation (GAE).\n\n### Key Differences from GRPO\n- Requires separate critic model\n- Uses Generalized Advantage Estimation (GAE)\n- Better for tasks with dense rewards\n\n### Configuration\n\n```yaml\nalgorithm:\n  adv_estimator: gae  # Use GAE instead of GRPO\n  gamma: 0.99\n  lam: 0.95\n\ncritic:\n  model:\n    path: Qwen\u002FQwen2.5-7B-Instruct  # Can be same or different from actor\n  ppo_mini_batch_size: 64\n\nactor_rollout_ref:\n  actor:\n    use_kl_loss: true\n    kl_loss_coef: 0.02\n    clip_ratio: 0.2  # PPO clipping\n```\n\n### Launch with Critic\n\n```bash\npython3 -m verl.trainer.main_ppo \\\n    algorithm.adv_estimator=gae \\\n    critic.model.path=Qwen\u002FQwen2.5-7B-Instruct \\\n    trainer.n_gpus_per_node=8\n```\n\n---\n\n## Workflow 3: Large-Scale Training with Megatron\n\nUse this workflow for models >70B parameters or when you need expert parallelism.\n\n### Prerequisites\n- [ ] Install Megatron-LM bridge: `pip install mbridge`\n- [ ] Convert model to Megatron format\n- [ ] Multi-node cluster with NVLink\u002FInfiniBand\n\n### Configuration for 70B+ Models\n\n```yaml\nactor_rollout_ref:\n  model:\n    path: \u002Fpath\u002Fto\u002Fmegatron\u002Fcheckpoint\n    backend: megatron\n  actor:\n    strategy: megatron\n    tensor_model_parallel_size: 8\n    pipeline_model_parallel_size: 2\n  rollout:\n    name: vllm\n    tensor_parallel_size: 8\n```\n\n### Launch Multi-Node\n\n```bash\n# On head node\nray start --head --port=6379\n\n# On worker nodes\nray start --address='head_ip:6379'\n\n# Launch training\npython3 -m verl.trainer.main_ppo \\\n    trainer.nnodes=4 \\\n    trainer.n_gpus_per_node=8\n```\n\n---\n\n## Configuration Reference\n\n### Algorithm Selection\n\n| Algorithm | `adv_estimator` | Use Case |\n|-----------|-----------------|----------|\n| GRPO | `grpo` | Critic-free, math\u002Freasoning |\n| PPO\u002FGAE | `gae` | Dense rewards, value estimation |\n| REINFORCE++ | `reinforce_plus_plus` | Variance reduction |\n| RLOO | `rloo` | Leave-one-out baseline |\n| ReMax | `remax` | Maximum reward baseline |\n| OPO | `opo` | Optimal policy optimization |\n\n### Key Parameters\n\n```yaml\n# Rollout parameters\nactor_rollout_ref.rollout.n: 8              # Samples per prompt\nactor_rollout_ref.rollout.temperature: 0.7  # Sampling temperature\nactor_rollout_ref.rollout.top_p: 0.95       # Nucleus sampling\n\n# Training parameters\nactor_rollout_ref.actor.lr: 1e-6            # Learning rate\nactor_rollout_ref.actor.ppo_mini_batch_size: 64\nactor_rollout_ref.actor.clip_ratio: 0.2     # PPO clip range\n\n# KL control\nactor_rollout_ref.actor.use_kl_loss: true\nactor_rollout_ref.actor.kl_loss_coef: 0.001\nalgorithm.kl_ctrl.target_kl: 0.1            # For adaptive KL control\n```\n\n---\n\n## Common Issues and Solutions\n\n### Issue: OOM During Rollout\n\n**Symptoms**: CUDA out of memory during generation phase\n\n**Solutions**:\n```yaml\n# Reduce batch size\nactor_rollout_ref.rollout.log_prob_micro_batch_size: 4\n\n# Enable gradient checkpointing\nactor_rollout_ref.model.enable_gradient_checkpointing: true\n\n# Use FSDP2 with CPU offloading\nactor_rollout_ref.actor.strategy: fsdp2\nactor_rollout_ref.actor.fsdp_config.offload_policy: true\n```\n\n### Issue: Training Instability\n\n**Symptoms**: Loss spikes, reward collapse\n\n**Solutions**:\n```yaml\n# Reduce learning rate\nactor_rollout_ref.actor.lr: 5e-7\n\n# Increase KL penalty\nactor_rollout_ref.actor.kl_loss_coef: 0.01\n\n# Enable gradient clipping\nactor_rollout_ref.actor.max_grad_norm: 1.0\n```\n\n### Issue: Slow Weight Sync\n\n**Symptoms**: Long pauses between rollout and training\n\n**Solutions**:\n```bash\n# Use FSDP2 for faster resharding\nactor_rollout_ref.actor.strategy=fsdp2\n\n# Enable async weight transfer\ntrainer.async_weight_update=true\n```\n\n### Issue: vLLM Version Mismatch\n\n**Symptoms**: Import errors or generation failures\n\n**Solution**: Use compatible versions:\n```bash\npip install vllm>=0.8.5,\u003C=0.12.0\n# Avoid vLLM 0.7.x (known bugs)\n```\n\n---\n\n## Advanced Topics\n\n### Multi-Turn Tool Calling\n\nSee [references\u002Fmulti-turn.md](references\u002Fmulti-turn.md) for agentic workflows with tool use.\n\n### Vision-Language Models\n\n```yaml\nactor_rollout_ref:\n  model:\n    path: Qwen\u002FQwen2.5-VL-7B-Instruct\n  rollout:\n    name: vllm\n    enable_vision: true\n```\n\n### LoRA Training\n\n```yaml\nactor_rollout_ref:\n  actor:\n    lora:\n      enabled: true\n      r: 16\n      alpha: 32\n      target_modules: [\"q_proj\", \"v_proj\"]\n```\n\n---\n\n## Resources\n\n- **Documentation**: https:\u002F\u002Fverl.readthedocs.io\u002F\n- **Paper**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2409.19256\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fvolcengine\u002Fverl\n- **Recipes**: https:\u002F\u002Fgithub.com\u002Fverl-project\u002Fverl-recipe (DAPO, GSPO, etc.)\n- **Community**: Slack at verl-project\n\n","# verl: Volcano Engine Reinforcement Learning for LLMs\n\nverl is a flexible, efficient, and production-ready RL training library for large language models from ByteDance's Seed team. It implements the HybridFlow framework (EuroSys 2025) and powers models like Doubao-1.5-pro achieving O1-level performance on math benchmarks.\n\n## When to Use verl\n\n**Choose verl when you need:**\n- Production-ready RL training at scale (tested up to 671B parameters)\n- Flexibility to swap backends (FSDP ↔ Megatron-LM ↔ vLLM ↔ SGLang)\n- Support for multiple RL algorithms (PPO, GRPO, RLOO, REINFORCE++, DAPO)\n- Multi-turn rollout with tool calling for agentic workflows\n- Vision-language model RL training\n\n**Consider alternatives when:**\n- You need Megatron-native training → use **slime** or **miles**\n- You want PyTorch-native abstractions with Monarch → use **torchforge**\n- You only need simple SFT\u002FDPO → use **TRL** or **Axolotl**\n\n## Key Features\n\n- **Training backends**: FSDP, FSDP2, Megatron-LM\n- **Rollout engines**: vLLM, SGLang, HuggingFace Transformers\n- **Algorithms**: PPO, GRPO, DAPO, RLOO, ReMax, REINFORCE++, SPIN, SPPO\n- **Models**: Qwen-3, Llama-3.1, DeepSeek, Gemma-2 (0.5B to 671B)\n- **Advanced**: LoRA RL, sequence parallelism, expert parallelism, multi-turn tools\n\n## Installation\n\n```bash\n# Option 1: pip install\npip install verl[vllm]  # or verl[sglang] for SGLang backend\n\n# Option 2: Docker (recommended for production)\ndocker pull verlai\u002Fverl:vllm011.latest\n\n# Option 3: From source\ngit clone https:\u002F\u002Fgithub.com\u002Fvolcengine\u002Fverl.git\ncd verl && pip install -e .[vllm,math]\n```\n\n## Quick Start: GRPO Training\n\n```bash\npython3 -m verl.trainer.main_ppo \\\n    algorithm.adv_estimator=grpo \\\n    data.train_files=~\u002Fdata\u002Fgsm8k\u002Ftrain.parquet \\\n    actor_rollout_ref.model.path=Qwen\u002FQwen2.5-7B \\\n    actor_rollout_ref.rollout.n=8 \\\n    actor_rollout_ref.actor.use_kl_loss=True \\\n    trainer.n_gpus_per_node=8\n```\n\n## Core Architecture\n\nverl uses a **HybridFlow** programming model separating control flow from computation:\n\n```\n┌─────────────────────────────────────────────────────────┐\n│ Single-Process Controller (Ray)                         │\n│ - Synthetic Sciencestes: rollout → reward → train → sync        │\n└─────────────────────┬───────────────────────────────────┘\n                      │\n┌─────────────────────▼───────────────────────────────────┐\n│ Multi-Process Workers                                   │\n│ ├── ActorRolloutRefWorker (policy + generation)        │\n│ ├── CriticWorker (value estimation, PPO only)          │\n│ └── RewardManager (model-based or rule-based rewards)  │\n└─────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Workflow 1: Math Reasoning with GRPO\n\nUse this workflow for training reasoning models on math tasks like GSM8K or MATH.\n\n### Prerequisites Checklist\n- [ ] GPU cluster with 8+ GPUs (H100 recommended)\n- [ ] Dataset in parquet format with `prompt` and `reward_model` columns\n- [ ] Base model from HuggingFace Hub\n\n### Step 1: Prepare Dataset\n\n```python\nimport pandas as pd\n\ndata = [\n    {\n        \"prompt\": [{\"role\": \"user\", \"content\": \"What is 15 + 27?\"}],\n        \"reward_model\": {\"ground_truth\": \"42\"}\n    },\n    # ... more examples\n]\ndf = pd.DataFrame(data)\ndf.to_parquet(\"train.parquet\")\n```\n\n### Step 2: Define Reward Function\n\n```python\n# reward_function.py\nimport re\n\ndef compute_reward(responses, ground_truths):\n    rewards = []\n    for response, gt in zip(responses, ground_truths):\n        # Extract answer from response\n        match = re.search(r'\\\\boxed{([^}]+)}', response)\n        if match and match.group(1).strip() == gt.strip():\n            rewards.append(1.0)\n        else:\n            rewards.append(0.0)\n    return rewards\n```\n\n### Step 3: Create Training Config\n\n```yaml\n# config\u002Fgrpo_math.yaml\nalgorithm:\n  adv_estimator: grpo\n  gamma: 1.0\n  lam: 1.0\n\ndata:\n  train_files: \u002Fpath\u002Fto\u002Ftrain.parquet\n  val_files: \u002Fpath\u002Fto\u002Fval.parquet\n  train_batch_size: 256\n  max_prompt_length: 512\n  max_response_length: 2048\n\nactor_rollout_ref:\n  model:\n    path: Qwen\u002FQwen2.5-7B-Instruct\n  actor:\n    use_kl_loss: true\n    kl_loss_coef: 0.001\n    ppo_mini_batch_size: 64\n  rollout:\n    name: vllm\n    n: 8  # samples per prompt\n    temperature: 0.7\n    top_p: 0.95\n\ntrainer:\n  total_epochs: 3\n  n_gpus_per_node: 8\n  save_freq: 100\n```\n\n### Step 4: Launch Training\n\n```bash\npython3 -m verl.trainer.main_ppo \\\n    --config-path config \\\n    --config-name grpo_math \\\n    trainer.experiment_name=grpo_math_qwen7b\n```\n\n### Step 5: Monitor and Validate\n- [ ] Check WandB\u002FTensorBoard for loss curves\n- [ ] Verify reward is increasing over steps\n- [ ] Run evaluation on held-out test set\n\n---\n\n## Workflow 2: PPO with Critic Model\n\nUse this workflow when you need value-based advantage estimation (GAE).\n\n### Key Differences from GRPO\n- Requires separate critic model\n- Uses Generalized Advantage Estimation (GAE)\n- Better for tasks with dense rewards\n\n### Configuration\n\n```yaml\nalgorithm:\n  adv_estimator: gae  # Use GAE instead of GRPO\n  gamma: 0.99\n  lam: 0.95\n\ncritic:\n  model:\n    path: Qwen\u002FQwen2.5-7B-Instruct  # Can be same or different from actor\n  ppo_mini_batch_size: 64\n\nactor_rollout_ref:\n  actor:\n    use_kl_loss: true\n    kl_loss_coef: 0.02\n    clip_ratio: 0.2  # PPO clipping\n```\n\n### Launch with Critic\n\n```bash\npython3 -m verl.trainer.main_ppo \\\n    algorithm.adv_estimator=gae \\\n    critic.model.path=Qwen\u002FQwen2.5-7B-Instruct \\\n    trainer.n_gpus_per_node=8\n```\n\n---\n\n## Workflow 3: Large-Scale Training with Megatron\n\nUse this workflow for models >70B parameters or when you need expert parallelism.\n\n### Prerequisites\n- [ ] Install Megatron-LM bridge: `pip install mbridge`\n- [ ] Convert model to Megatron format\n- [ ] Multi-node cluster with NVLink\u002FInfiniBand\n\n### Configuration for 70B+ Models\n\n```yaml\nactor_rollout_ref:\n  model:\n    path: \u002Fpath\u002Fto\u002Fmegatron\u002Fcheckpoint\n    backend: megatron\n  actor:\n    strategy: megatron\n    tensor_model_parallel_size: 8\n    pipeline_model_parallel_size: 2\n  rollout:\n    name: vllm\n    tensor_parallel_size: 8\n```\n\n### Launch Multi-Node\n\n```bash\n# On head node\nray start --head --port=6379\n\n# On worker nodes\nray start --address='head_ip:6379'\n\n# Launch training\npython3 -m verl.trainer.main_ppo \\\n    trainer.nnodes=4 \\\n    trainer.n_gpus_per_node=8\n```\n\n---\n\n## Configuration Reference\n\n### Algorithm Selection\n\n| Algorithm | `adv_estimator` | Use Case |\n|-----------|-----------------|----------|\n| GRPO | `grpo` | Critic-free, math\u002Freasoning |\n| PPO\u002FGAE | `gae` | Dense rewards, value estimation |\n| REINFORCE++ | `reinforce_plus_plus` | Variance reduction |\n| RLOO | `rloo` | Leave-one-out baseline |\n| ReMax | `remax` | Maximum reward baseline |\n| OPO | `opo` | Optimal policy optimization |\n\n### Key Parameters\n\n```yaml\n# Rollout parameters\nactor_rollout_ref.rollout.n: 8              # Samples per prompt\nactor_rollout_ref.rollout.temperature: 0.7  # Sampling temperature\nactor_rollout_ref.rollout.top_p: 0.95       # Nucleus sampling\n\n# Training parameters\nactor_rollout_ref.actor.lr: 1e-6            # Learning rate\nactor_rollout_ref.actor.ppo_mini_batch_size: 64\nactor_rollout_ref.actor.clip_ratio: 0.2     # PPO clip range\n\n# KL control\nactor_rollout_ref.actor.use_kl_loss: true\nactor_rollout_ref.actor.kl_loss_coef: 0.001\nalgorithm.kl_ctrl.target_kl: 0.1            # For adaptive KL control\n```\n\n---\n\n## Common Issues and Solutions\n\n### Issue: OOM During Rollout\n\n**Symptoms**: CUDA out of memory during generation phase\n\n**Solutions**:\n```yaml\n# Reduce batch size\nactor_rollout_ref.rollout.log_prob_micro_batch_size: 4\n\n# Enable gradient checkpointing\nactor_rollout_ref.model.enable_gradient_checkpointing: true\n\n# Use FSDP2 with CPU offloading\nactor_rollout_ref.actor.strategy: fsdp2\nactor_rollout_ref.actor.fsdp_config.offload_policy: true\n```\n\n### Issue: Training Instability\n\n**Symptoms**: Loss spikes, reward collapse\n\n**Solutions**:\n```yaml\n# Reduce learning rate\nactor_rollout_ref.actor.lr: 5e-7\n\n# Increase KL penalty\nactor_rollout_ref.actor.kl_loss_coef: 0.01\n\n# Enable gradient clipping\nactor_rollout_ref.actor.max_grad_norm: 1.0\n```\n\n### Issue: Slow Weight Sync\n\n**Symptoms**: Long pauses between rollout and training\n\n**Solutions**:\n```bash\n# Use FSDP2 for faster resharding\nactor_rollout_ref.actor.strategy=fsdp2\n\n# Enable async weight transfer\ntrainer.async_weight_update=true\n```\n\n### Issue: vLLM Version Mismatch\n\n**Symptoms**: Import errors or generation failures\n\n**Solution**: Use compatible versions:\n```bash\npip install vllm>=0.8.5,\u003C=0.12.0\n# Avoid vLLM 0.7.x (known bugs)\n```\n\n---\n\n## Advanced Topics\n\n### Multi-Turn Tool Calling\n\nSee [references\u002Fmulti-turn.md](references\u002Fmulti-turn.md) for agentic workflows with tool use.\n\n### Vision-Language Models\n\n```yaml\nactor_rollout_ref:\n  model:\n    path: Qwen\u002FQwen2.5-VL-7B-Instruct\n  rollout:\n    name: vllm\n    enable_vision: true\n```\n\n### LoRA Training\n\n```yaml\nactor_rollout_ref:\n  actor:\n    lora:\n      enabled: true\n      r: 16\n      alpha: 32\n      target_modules: [\"q_proj\", \"v_proj\"]\n```\n\n---\n\n## Resources\n\n- **Documentation**: https:\u002F\u002Fverl.readthedocs.io\u002F\n- **Paper**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2409.19256\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fvolcengine\u002Fverl\n- **Recipes**: https:\u002F\u002Fgithub.com\u002Fverl-project\u002Fverl-recipe (DAPO, GSPO, etc.)\n- **Community**: Slack at verl-project\n\n",{"name":5,"tags":44,"author":47,"license":15,"version":48,"category":49,"description":7,"dependencies":50},[45,35,46,34,36,37],"Reinforcement Learning","GRPO","Synthetic Sciences","1.0.0","ml-training",[51,52,53,54,55],"verl>=0.3.0","torch>=2.0.0","ray>=2.41.0","vllm>=0.8.2","transformers>=4.40.0","main","4aa39efd1cdab0b4657ecee16c92a92011a5b10f","openscience\u002Fbackend\u002Fcli\u002Fskills\u002Fml-training\u002Fverl","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub","https:\u002F\u002Fgithub.com\u002Ffadrienne","2026-10-28 00:43:09",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add fadrienne\u002FMyGitHub --skill verl-rl-training",{"tool":68,"command":69},"bunx","bunx skills add fadrienne\u002FMyGitHub --skill verl-rl-training",{"tool":71,"command":72},"pnpm","pnpm dlx skills add fadrienne\u002FMyGitHub --skill verl-rl-training","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fml-training\u002Fverl\u002FSKILL.md",true,[76,82],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fapi-reference.md","REFERENCE","参考文档",6941,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fml-training\u002Fverl\u002Freferences\u002Fapi-reference.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Ftroubleshooting.md",6792,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fml-training\u002Fverl\u002Freferences\u002Ftroubleshooting.md",[87,118,142,176,203,230],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":98,"publishedAt":39},"01M7167B28PK20HP7R7ZED2DY0","statistical-power","Sample size calculation, power analysis, and effect size conversion for scientific studies. Use BEFORE data collection (a priori) to determine required N, or after (post-hoc) to compute achieved power. Covers parametric tests (t-test, ANOVA, chi-square, proportions, correlation, regression), simulation-based power for complex\u002Fclustered\u002Fnested designs, and power curves. Use this skill when someone asks 'how many samples do I need', 'what is my power', 'what effect size can I detect', or any variant. Pairs with \u002Fexperimental-design (choose design first, then compute power) and \u002Fstatistical-analysis (analyze data after collection).","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-power\u002FSKILL.md",[93],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[99,100,101,102,103,104,105,106,23,107,108,109,110,111,112,113,114,115,116,117],"power","statistical power","effect","scipy","regression","choose","design","uv","Bash","collection","analysis","calculation","ANOVA","conversion","analyze","t-test","chi-square","simulation","sample",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":127,"publishedAt":39},"01M71677EBCM8EPCE9BZCK8505","statistical-analysis","Guided statistical analysis with test selection and reporting. Use when you need help choosing appropriate tests for your data, assumption checking, power analysis, and APA-formatted results. Best for academic research reporting, test selection guidance. For implementing specific models programmatically use statsmodels.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-analysis\u002FSKILL.md",[124],{"categoryNo":125,"categoryName":126,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000008","测试与质量",[109,128,99,129,26,130,23,131,132,133,25,134,31,135,136,137,138,139,140,141],"statistical analysis","academic research","selection","you","reporting","data","tests","with","test","research","results","statsmodels","models","help",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":157,"publishedAt":39},"01M71673R93XAHFH81DBNVNG7H","scientific-writing","Core skill for the deep research and writing tool. Write scientific manuscripts in full paragraphs (never bullet points). Use two-stage process with (1) section outlines with key points using research-lookup then (2) convert to flowing prose. IMRAD structure, citations (APA\u002FAMA\u002FVancouver), figures\u002Ftables, reporting guidelines (CONSORT\u002FSTROBE\u002FPRISMA), for research papers and journal submissions.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-writing\u002FSKILL.md",[148,151,152],{"categoryNo":149,"categoryName":150,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[158,159,160,161,162,163,164,165,166,167,107,168,169,170,171,172,173,174,132,175],"writing","scientific","scientific writing","Citations","deep","deep research","never","papers","journal","false","api","prisma","structure","openrouter","Outlines","core skill","read","features",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":186,"publishedAt":39},"01M7166ZPKXBF4EBPHVTJPQBB1","scientific-visualization","Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib\u002Fseaborn\u002Fplotly with publication styles. For quick exploration use seaborn or plotly directly.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-visualization\u002FSKILL.md",[182,185],{"categoryNo":183,"categoryName":184,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},[187,159,188,189,190,191,192,193,194,166,23,195,196,197,198,199,200,201,25,202],"visualization","scientific visualization","error","ready","quick","exploration","meta-skill","Meta","safe","plotly","annotations","formatting","Publication","figures","panel","submission",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":215,"publishedAt":39},"01M7166VXJWQSSC3RQZP60WBGR","research-code","Debug, profile, review, and restructure Python research and analysis code. Use when analysis scripts crash, produce wrong results, run too slowly, or need a correctness review. Covers: reading tracebacks and diagnosing root causes, hypothesis-driven debugging, reviewing code for common statistical\u002Fnumerical errors, profiling data pipelines, improving reproducibility (seeds, environments, determinism), and structuring analysis scripts for sharing. Distinct from \u002Fexploratory-data-analysis (which understands data) and \u002Fstatistical-analysis (which chooses and runs tests) — this skill focuses on the code itself.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fresearch-code\u002FSKILL.md",[209,212],{"categoryNo":210,"categoryName":211,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":213,"categoryName":214,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000030","开发工程师",[216,217,137,218,219,220,221,106,222,23,107,109,223,224,225,226,227,228,174,229],"code","research code","which","memory","data-analysis","errors","debugging","common","review","data pipelines","run","scripts","line","write",{"skillNo":231,"name":232,"nameZh":6,"description":233,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":234,"licenseFileUrl":6,"sourceHtmlUrl":235,"categories":236,"keywords":243,"publishedAt":39},"01M7166CF5HSR7SVZYZFWTDX55","markdown-mermaid-writing","Comprehensive markdown and Mermaid diagram writing skill. Use when creating any scientific document, report, analysis, or visualization. Establishes text-based diagrams as the default documentation standard with full style guides (markdown + mermaid), 24 diagram type references, and 9 document templates.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fmarkdown-mermaid-writing\u002FSKILL.md",[237,240,241,242],{"categoryNo":238,"categoryName":239,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":149,"categoryName":150,"taxonomyType":96,"taxonomyTypeDesc":97},{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},[158,244,245,246,247,248,187,249,250,23,107,109,251,252,253,254,255,256,159,174],"markdown mermaid writing","mermaid","markdown","community","diagrams","project","default","team","guides","text","documentation","references","diagram"]