Skip to main content

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 .