OpenRLHF icon indicating copy to clipboard operation
OpenRLHF copied to clipboard

RuntimeError: Request failed with status code 500: No available agent to submit job, please try again later..

Open songmzhang opened this issue 1 year ago • 5 comments

使用ray进行ppo的时候,在creating a file package for local directory(会卡1分钟左右)之后,会报错No available agent to submit job, please try again later..,如下图所示。请问这是什么原因?

我确认了下,openrlhf目录下只有总计1M的代码文件,应该和这个目录无关。

image

脚本如下:

set -x

work_dir=my_work_dir
code_dir=$work_dir/OpenRLHF
export PYTHONPATH=$code_dir:$PYTHONPATH

data_path=$work_dir/data/ultrafeedback_binarized/
model_path=$work_dir/checkpoint/sft/qwen2_5_1_5b_base_ultrachat200k_bsz128_lr2e-5
reward_model_path=$work_dir/checkpoint/reward_model/qwen2_5_1_5b_on_ultrafeedback_bsz128_lr2e-5

task=ppo_ray
batch_size=128
actor_lr=5e-7
critic_lr=9e-6

task_config=qwen2_5_1_5b_on_ultrafeedback_bsz${batch_size}_actorlr${actor_lr}_criticlr${critic_lr}
# task_config=qwen2_5_1_5b_on_ultrafeedback_after_ultrachat200k_bsz${batch_size}_lr${lr}
output_dir=$work_dir/checkpoint/$task/$task_config
if [[ ! -d $output_dir ]]; then
    mkdir -p $output_dir
fi

# launch the master node of ray in container
ray start --head --node-ip-address 0.0.0.0 --num-gpus 8 \

ray job submit -v --address="http://127.0.0.1:8265" \
   --runtime-env-json='{"working_dir": "my_work_dir/rlhf/OpenRLHF/openrlhf"}' \
   -- python3 -m $code_dir/openrlhf/cli/train_ppo_ray.py \
   --ref_num_nodes 1 \
   --ref_num_gpus_per_node 2 \
   --reward_num_nodes 1 \
   --reward_num_gpus_per_node 2 \
   --critic_num_nodes 1 \
   --critic_num_gpus_per_node 2 \
   --actor_num_nodes 1 \
   --actor_num_gpus_per_node 2 \
   --vllm_num_engines 2 \
   --vllm_tensor_parallel_size 2 \
   --colocate_critic_reward \
   --colocate_actor_ref \
   --pretrain $model_path \
   --reward_pretrain $reward_model_path \
   --prompt_data $data_path \
   --prompt_split train_prefs \
   --input_key messages \
   --apply_chat_template \
   --prompt_max_len 1024 \
   --generate_max_len 1024 \
   --train_batch_size $batch_size \
   --micro_train_batch_size 2 \
   --rollout_batch_size 1024 \
   --micro_rollout_batch_size 4 \
   --actor_learning_rate $actor_lr \
   --critic_learning_rate $critic_lr \
   --init_kl_coef 0.01 \
   --normalize_reward \
   --warmup_ratio 0.1 \
   --save_path $output_dir \
   --save_steps -1 \
   --logging_steps 1 \
   --eval_steps -1 \
   --zero_stage 2 \
   --max_epochs 1 \
   --flash_attn \
   --bf16 \
   --gradient_checkpointing 2>&1 | tee -a $output_dir/train.log

ray启动后的状态信息如下: image

songmzhang avatar Dec 05 '24 06:12 songmzhang

同样的问题,请问您解决了吗 Same problem

sastpg avatar Dec 11 '24 07:12 sastpg

同样的问题,请问您解决了吗 Same problem

我用torchrun启动可以正常运行,ray job submit的方式还是不行

songmzhang avatar Dec 11 '24 07:12 songmzhang

我也遇到了同样的问题,最后发现是端口被占用了。根据官方文档中的端口配置,在ray start时手动修改dashboard-agent-listen-portportray-client-server-portdashboard-port可以解决问题(注意ray job submit的时候要把端口改成对应的dashboard-port)。

zhuyaoyu avatar Feb 05 '25 15:02 zhuyaoyu

我也遇到了同样的问题,最后发现是端口被占用了。根据官方文档中的端口配置,在ray start时手动修改dashboard-agent-listen-portportray-client-server-portdashboard-port可以解决问题(注意ray job submit的时候要把端口改成对应的dashboard-port)。

可以分享一下命令吗

ZydHaha avatar Mar 05 '25 09:03 ZydHaha

我也遇到了同样的问题,当时的情况是服务器上有2张空余的卡,所以我在启动ray的指令是: CUDA_VISIBLE_DEVICES=3,4 ray start --head --port=6380 --node-ip-address=127.0.0.1 --num-gpus=2 --dashboard-host=0.0.0.0 --dashboard-port=8260 在操作系统层面,Ray 只能看到 GPU 3 和 4;又通过 --num-gpus=2: 在 Ray 自己的配置层面,它也只知道自己有 2 个 GPU。但问题出在 Ray 的调度机制上——Ray 的头节点本身需要占用一些资源来运行它的内部服务(如调度器和代理)。所以,当 Ray 启动后,它的调度器发现自己拥有的全部 2 个 GPU 已经被头节点占用了,没有多余的资源可以分配给新的任务。 最终我的解决方案是删除ray start指令中的CUDA_VISIBLE_DEVICES--num-gpus=2,这个报错消失了 所以我的建议是可以试试删除--num-gpus=8

HappynessI avatar Sep 12 '25 01:09 HappynessI