返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

手把手教你如何集群部署大模型

[复制链接]
链载Ai 显示全部楼层 发表于 3 小时前 |阅读模式 打印 上一主题 下一主题

对于大参数模型(比如70B+)的部署,要么使用多卡单机,要么使用集群。对于集群部署业界常用的方案是借用分布式计算框架Ray实现。本文我们就是用Ray + vLLM来部署一个DeepSeek-R1-Distill-Llama-70B大模型。

1、环境介绍

1)硬件

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;font-size: 16px;font-style: normal;font-variant-ligatures: no-common-ligatures;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">
服务器卡数数量(台)CPU(核)内存系统版本
NVIDIA H100 80GB
2卡
2
16/台
256G/台
Ubuntu 22.04.5 LTS


2)软件

软件版本备注
CUDA
12.2

MLNX_OFED
24.10-0.7.0.0
IB驱动
NCCL
2.21.5
GPU多卡通信
vllm
0.7.2
LLM推理引擎
ray
2.42.0
分布式计算框架


2、环境准备

1)安装显卡驱动

sudoaptinstallnvidia-driver-535

2)安装cuda12.2

wgethttps://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.runsudoshcuda_12.2.0_535.54.03_linux.run

3、模型下载(魔塔社区)

# 安装ModelScopesudo pip3 install modelscope
# 下载模型sudomkdir-p /data/models/sudo modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Llama-70B --local_dir /models/DeepSeek-R1-Distill-Llama-70B

4、安装vllm、Ray以及依赖库

sudopip3installvllmray[default]openaitransformerstqdm

5、启动Ray集群

1)其中一台机器作为主节点,执行:

nohupraystart--block--head--port6379&>/var/log/ray.log&

2)另外一台机器作为从节点,执行:

nohupraystart--block--address='<masterIP>:6379'&>/var/log/ray.log&

3)查看集群状态

raystatus

出现类似日志说明集群正常:

======== Autoscaler status: 2025-04-19 09:05:15.452837 ========Node status---------------------------------------------------------------Active:1 node_10a69f12ecacc9109f72036acbdc3e51731af85034af1f5169f20e601 node_9df61c9a75c08d76958a6aa4f0a7685e4cde76923f9e2309a4907f45
Pending:(no pending nodes)Recent failures:(no failures)

6、使用vLLM启动模型

两台机器都执行:

# 在集群head节点上执行nohupbash -c 'NCCL_NVLS_ENABLE=0vllm serve /models/DeepSeek-R1-Distill-Llama-70B --enable-reasoning --reasoning-parser deepseek_r1 --trust-remote-code --tensor-parallel-size4 --port=8080--served-model-name DeepSeek-R1 --gpu-memory-utilization0.95--max-model-len32768--max-num-batched-tokens32768--quantization fp8' &> /var/log/vllm_deepseek_r1.log &

参数说明:

  • NCCL_NVLS_ENABLE=0: 禁用NVIDIA集合通信库(NCCL)的NVLS功能。NVLS是NVIDIA Library Services的缩写,禁用它可以解决某些集群环境中的通信问题。

  • --enable-reasoning: 启用vLLM的推理功能,允许模型执行更复杂的推理任务,如分步骤解决问题。

  • --reasoning-parser deepseek_r1: 指定使用DeepSeek-R1模型特定的推理结果解析器。该解析器负责处理模型输出中的推理步骤和中间结果。

  • --trust-remote-code: 允许加载和执行模型中包含的自定义代码。这对于使用自定义模块的模型(如DeepSeek)很重要,但需要确保模型来源可信。

  • --tensor-parallel-size 4: 设置张量并行度为4,意味着模型将被分割到4个GPU上运行。这种拆分方式使得超大模型能够在多个GPU上高效运行,每个GPU仅存储并计算模型的一部分。

  • --gpu-memory-utilization 0.95: 设置GPU内存使用率上限为95%。

  • --max-model-len 32768: 设置模型能处理的最大序列长度(token数)为32,768。这是一个非常大的上下文窗口,允许处理极长的输入文本。

  • --max-num-batched-tokens 32768: 设置单个批次中允许的最大token数量,这里也设置为32,768。这影响服务处理多个并发请求的能力,更大的值允许更多并发,但需要更多内存。

  • --quantization fp8: 使用FP8(8位浮点)量化技术来减少模型内存需求。FP8是NVIDIA近期支持的高效量化格式,可以在保持较好性能的同时显著减少内存占用(相比FP16或FP32)。

7、测试大模型是否正常访问

curlhttp://127.0.0.1:8080/v1/chat/completions\-H"Content-Type:application/json"\-d'{"model":"DeepSeek-R1","messages":[{"role":"user","content":"你是谁?"}],"max_tokens":1024}'

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ