跳至内容

使用分布式vLLM运行DeepSeek R1 671B

本教程将指导您如何在GPUStack集群上配置和运行未量化的DeepSeek R1 671B模型,使用分布式vLLM框架。由于该模型规模极其庞大,通常需要跨多个工作节点进行分布式推理。

GPUStack 能够轻松设置和编排使用 vLLM 的分布式推理,使得运行像 DeepSeek R1 这样的大规模模型只需最少量的人工配置。

先决条件

在开始之前,请确保满足以下要求:

  • 您可以访问足够数量的Linux节点,每个节点都配备了所需的GPU。例如:
GPU 节点数量
H100/H800:8 2
A100/A800-80GB:8 4
A100/A800:8 8
  • 建议使用NVLink或InfiniBand等高速互连技术以获得最佳性能。
  • 模型文件应下载到每个节点的相同路径下。虽然GPUStack支持实时模型下载,但建议预先下载,因为根据网络速度不同,下载过程可能耗时较长。

注意

  • 在本教程中,我们假设配置了4个节点,每个节点配备8块A800-80GB GPU并通过200G InfiniBand互连。
  • A100/A800 GPU不支持DeepSeek R1最初使用的FP8精度。因此,我们使用来自Unsloth的BF16版本。

步骤1:安装GPUStack服务器

在本教程中,我们将使用Docker来安装GPUStack。如果您愿意,也可以选择其他安装方式。

使用以下命令启动GPUStack服务器:

docker run -d --name gpustack \
    --restart=unless-stopped \
    --gpus all \
    --network=host \
    --ipc=host \
    -v gpustack-data:/var/lib/gpustack \
    -v /path/to/your/model:/path/to/your/model \
    -e NCCL_SOCKET_IFNAME=eth2 \
    -e GLOO_SOCKET_IFNAME=eth2 \
    gpustack/gpustack --enable-ray

注意

  • /path/to/your/model 替换为实际路径。
  • NCCL_SOCKET_IFNAMEGLOO_SOCKET_IFNAME设置为用于节点间通信的网络接口。我们以eth2为例。
  • --enable-ray 标志用于启用Ray以支持分布式推理,这是vLLM所需的。

在GPUStack服务器启动并运行后,运行以下命令以获取初始管理员密码和工作节点注册令牌:

docker exec gpustack cat /var/lib/gpustack/initial_admin_password
docker exec gpustack cat /var/lib/gpustack/token

步骤2:安装GPUStack Workers

每个工作节点上,运行以下命令以启动GPUStack工作进程:

docker run -d --name gpustack \
    --restart=unless-stopped \
    --gpus all \
    --network=host \
    --ipc=host \
    -v gpustack-data:/var/lib/gpustack \
    -v /path/to/your/model:/path/to/your/model \
    -e NCCL_SOCKET_IFNAME=eth2 \
    -e GLOO_SOCKET_IFNAME=eth2 \
    gpustack/gpustack \
    --server-url http://your_gpustack_server_ip_or_hostname \
    --token your_gpustack_token \
    --enable-ray

注意

  • 替换相应的占位符路径、IP地址/主机名和令牌。
  • 确保模型路径与服务器匹配,并且在所有工作节点上有效。

步骤3:访问GPUStack用户界面

当服务器和所有工作节点都运行起来后,通过浏览器访问GPUStack用户界面:

http://your_gpustack_server_ip_or_hostname

使用admin用户名和第一步获取的密码登录。导航至Resources页面,确认所有工作节点都处于就绪状态且GPU已列出。

initial-resources

步骤4:部署DeepSeek R1模型

  1. 前往Models页面。
  2. 点击Deploy Model
  3. 选择 Local Path 作为您的数据源。
  4. Name字段中输入名称(例如DeepSeek-R1)。
  5. Model Path指定为每个工作节点上包含DeepSeek R1模型文件的目录。
  6. 确保Backend设置为vLLM
  7. 通过兼容性检查后,点击Save进行部署。

deploy-model

步骤5:监控部署

您可以在Models页面监控部署状态。将鼠标悬停在distributed across workers上可查看GPU和工作节点的使用情况。点击View Logs可查看显示模型加载进度的实时日志。加载模型可能需要几分钟时间。

model-info

模型运行后,重新访问资源选项卡以检查GPU利用率。默认情况下,vLLM会占用90%的GPU内存。您可以在模型配置设置中调整此参数。

resources-loaded

步骤6:通过Playground运行推理

模型部署并运行后,您可以使用GPUStack Playground进行测试。

  1. 导航至 Playground -> Chat
  2. 如果只部署了一个模型,将默认选择该模型。否则,请使用下拉菜单选择DeepSeek-R1
  3. 输入提示词并与模型交互。

playground-chat

你也可以使用Compare选项卡来测试并发推理场景。

playground-compare

您已成功在GPUStack集群上使用分布式vLLM部署并运行DeepSeek R1 671B模型。现在可以在自己的应用程序中探索该模型的性能和功能。

如需进一步帮助,欢迎随时联系GPUStack社区或支持团队。