【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方法更新推理引擎的权重。

🏷️

标签

➡️

继续阅读