【vLLM 学习】Rlhf Colocate
💡
原文中文,约4500字,阅读约需11分钟。
📝
内容提要
本文介绍了如何在同一GPU上协同部署vLLM工作进程与训练执行器,适用于类RLHF应用。通过设置环境变量和使用CUDA-IPC传递张量,实现多个进程间的高效通信。
🎯
关键要点
- 介绍如何在同一GPU上协同部署vLLM工作进程与训练执行器,适用于类RLHF应用。
- 通过设置环境变量VLLM_RAY_PER_WORKER_GPUS和VLLM_RAY_BUNDLE_INDICES,使用Ray控制vLLM工作进程的部署位置。
- 使用CUDA-IPC传递张量,因为在同一GPU上存在多个进程时NCCL无法正常工作。
- 每个工作进程将使用0.4个GPU,以便在同一GPU上调度两个实例。
- 创建vLLM实例时,确保目标GPU上没有GPU活动,以避免干扰vLLM内存分析。
- 训练执行器可能只拥有部分权重,需要从所有执行器进行all-gather操作获取完整权重。
- 检查部署情况,确保训练执行器与推理引擎部署在同一GPU上。
- 收集所有训练执行器的IPC句柄,并更新推理引擎的权重。
- 验证推理引擎的权重是否已更新。
❓
延伸问答
如何在同一GPU上部署vLLM工作进程与训练执行器?
通过设置环境变量VLLM_RAY_PER_WORKER_GPUS和VLLM_RAY_BUNDLE_INDICES,使用Ray控制vLLM工作进程的部署位置。
为什么在同一GPU上使用CUDA-IPC传递张量?
因为在同一GPU上存在多个进程时,NCCL无法正常工作,因此需要使用CUDA-IPC进行高效通信。
每个工作进程使用多少GPU资源?
每个工作进程将使用0.4个GPU,以便在同一GPU上调度两个实例。
如何确保训练执行器与推理引擎部署在同一GPU上?
检查部署情况,确保前两个训练执行器与第一个推理引擎部署在同一GPU上,最后两个训练执行器与第二个推理引擎部署在同一GPU上。
在创建vLLM实例时需要注意什么?
确保目标GPU上没有GPU活动,以避免干扰vLLM内存分析。
如何更新推理引擎的权重?
收集所有训练执行器的IPC句柄,并通过collective_rpc方法更新推理引擎的权重。
➡️