对于大参数模型(比如70B+)的部署,要么使用多卡单机,要么使用集群。对于集群部署业界常用的方案是借用分布式计算框架Ray实现。本文我们就是用Ray + vLLM来部署一个DeepSeek-R1-Distill-Llama-70B大模型。
1、环境介绍
1)硬件
2)软件
| 软件 | 版本 | 备注 |
|---|---|---|
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_9df61c9a75c08d76958a6aa4f0a7685e4cde76923f9e2309a4907f45Pending:(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 (https://www.lianzai.com/) | Powered by Discuz! X3.5 |