Verl
强化学习的两个流程:
-
加载模型(无需修改)(verl使用ray进行模型的调度) init_workers(初始化策略模型、参考模型、价值模型、奖励模型)
-
训练过程 get_data_batch(无需修改)
generate_sequences(normal-rl和agent-rl): normal-rl:单轮交互(prompt→model→response) agent-rl:多轮交互(prompt→model→response→env(tool call, code exec, etc)→model→response→…)
reward(通过奖励函数控制,一般无需修改)
log_probs(计算策略模型和参考模型输出token概率,一般无需修改)
values(目前主流的计算法基本上都在舍弃价值模型,一般也无需修改)
adv(各算法之间的差异主要体现在adv的计算方式,此处需要针对不同的算法进行修改)
compute_loss(normal-rl和agent-rl): normal-rl:无需和环境交互,response中token全部由模型生成,均参与损失计算 agent-rl:需要获取观测结果,观测结果部分不是模型生成,计算损失时需要对其进行mask
update actor(无需修改)
环境安装
- docker
docker create --runtime=nvidia --gpus all --net=host --shm-size="10g" --cap-add=SYS_ADMIN -v YOUR_DIR:/workspace/verl --name verl verlai/verl:vllm011.latest
docker start verl
docker exec -it verl bash
docker run -d \
--runtime=nvidia \
--gpus all \
--net=host \
--shm-size="10g" \
--cap-add=SYS_ADMIN \
-v verl_space:/workspace/verl \
--name verl \
verlai/verl:vllm011.latest
docker ps | grep verl
docker logs verl
docker exec -it verl /bin/bash - conda
conda create -n verl python==3.12
conda activate verl
bash scripts/install_vllm_sglang_mcore.sh
git clone https://github.com/volcengine/verl.git
cd verl
pip install --no-deps -e .