Skip to content

[BUG] Trinity-RFT v0.6.0在单卡colocate模式卡在Ray资源调度 #602

Description

@wuzhenqing

Bug Description

Please provide a detailed description of the issue you encountered.
我在单张NVIDIA A100 80GB上使用Trinity-RFT v0.6.0运行GSM8K GRPO样例,配置为mode: colocate,但任务会卡在初始化阶段,始终没有rollout数据或训练step。

Environment Information

  • Operating System: Ubuntu 22.04
  • Python Version: 3.12.13
  • GPU: 1 * NVIDIA A100-80G
  • CUDA Version: 13.0
  • Installation Method: pypi
  • Trinity-RFT Version: 0.6.0
  • TRL 1.6.0
  • Model:Qwen2.5-1.5B-Instruct

Steps to Reproduce

当前配置文件为

project: "Trinity-RFT-gsm8k"
name: "qwen2.5-1.5B-gsm8k"
checkpoint_root_dir: /vepfs-mlp2/c20250501/240806010/Learn/checkpoints
mode: colocate
algorithm:
  algorithm_type: grpo
  repeat_times: 8
  optimizer:
    lr: 1e-5
model:
  model_path: /vepfs-mlp2/c20250501/240806010/models/Qwen/Qwen2.5-1.5B-Instruct
  max_response_tokens: 1024
  max_model_len: 2048
cluster:
  node_num: 1
  gpu_per_node: 1
buffer:
  total_epochs: 1
  batch_size: 64
  explorer_input:
    taskset:
      name: gsm8k
      storage_type: file
      path: /vepfs-mlp2/c20250501/240806010/datasets/gsm8k
      subset_name: 'main'
      split: 'train'
      format:
        prompt_key: 'question'
        response_key: 'answer'
      rollout_args:
        temperature: 1.0
    eval_tasksets:
    - name: gsm8k-eval
      storage_type: file
      path: /vepfs-mlp2/c20250501/240806010/datasets/gsm8k
      subset_name: 'main'
      split: 'test'
      format:
        prompt_key: 'question'
        response_key: 'answer'
    default_workflow_type: 'math_workflow'
  trainer_input:
    experience_buffer:
      name: gsm8k_buffer
      storage_type: queue
      path: 'sqlite:///gsm8k.db'
explorer:
  eval_interval: 50
  runner_per_model: 8
  rollout_model:
    engine_num: 1
    tensor_parallel_size: 1
    enable_prefix_caching: false
    enforce_eager: true
    dtype: bfloat16
    seed: 42
synchronizer:
  sync_method: 'memory'
  sync_interval: 1
  sync_timeout: 1200
trainer:
  trainer_type: 'verl'
  save_interval: 100
  grad_clip: 1.0
  use_dynamic_bsz: true
  max_token_len_per_gpu: 16384
  ulysses_sequence_parallel_size: 1
# stages:  # Uncomment to add a SFT warmup stage before RFT
#   - stage_name: sft_warmup
#     mode: train
#     algorithm:
#       algorithm_type: sft
#     buffer:
#       train_batch_size: 128
#       total_steps: 10
#       trainer_input:
#         experience_buffer:
#           name: sft_warmup_dataset
#           storage_type: file
#           path: ${oc.env:TRINITY_SFT_DATASET_PATH}
#           format:
#             prompt_type: messages
#             messages_key: 'messages'
#   - stage_name: rft  # leave empty to use the original configs for RFT

Expected Behavior

期望可以在单卡完成样例的训练

Actual Behavior

Trainer已显示Trainer is ready,但Ray一直存在等待中的GPU请求,经验队列始终为0,未创建rollout进程,也没有训练指标或checkpoint。

Total Usage:
  0.3333/1.0 GPU (0.3333 used of 1.0 reserved in placement groups)

Pending Demands:
  {'CPU': 1.0, 'GPU': 1.0} * 1 (PACK): 1+ pending placement groups

初步对比发现,v0.5.0的colocate路径会将rollout actor设为num_gpus=0并通过CUDA_VISIBLE_DEVICES=0与Trainer共享GPU;而v0.6.0的Allocator看起来会为rollout额外创建GPU:1的placement group,导致单卡上永久等待。请问这是v0.6.0的已知回归吗?单卡colocate模式是否有推荐的修复方案?

Log Information

If applicable, include any relevant log output here.

Are You Willing to Fix This Issue?

  • Yes, I am willing to fix this issue!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions