开工第一篇,部署满血deepseek r1的避坑指南
原标题:部署满血DeepSeek R1的避坑指南-vLLM 0.7.1
文章来源:智猩猩GenAI
内容字数:11240字
vLLM部署DeepSeek R1避坑指南:快速上手指南
本文总结了曹宇兄在知乎上分享的vLLM部署DeepSeek R1的经验,旨在帮助读者更轻松地完成部署,避免常见的错误。
1. 准备工作 (Step 0): 权重和环境准备
由于模型权重文件巨大,直接下载容易超时或造成网络拥塞。建议先从Hugging Face或使用代理下载权重到本地。本文示例为8xH20 (x2)的双机多卡部署,TP size为8,PP size为2,需要两台网络互通、共享存储(NAS或OSS)的机器。
2. Ray集群设置 (Step 1): 解决Autoscaler报错
官方文档对Ray集群设置的描述较为简略,实际操作中容易遇到Autoscaler报错,例如:
(autoscaler+1m19s)Error:No availablenode types can fulfill resource request {‘node:33.18.26.153′:0.001,’GPU’:1.0}…
这是因为vLLM使用自定义资源’node:IP地址’:0.001,表示优先使用driver节点,而多网卡机器可能导致IP地址识别错误。解决方法:
- 解法1:设置VLLM_HOST_IP环境变量 在每个节点启动Ray前,设置VLLM_HOST_IP为本机的实际IP地址。
- 解法2:魔改Ray启动逻辑 修改Ray启动脚本,使用函数获取实际IP地址,并将其用于自定义资源配置。文中提供了修改后的`start_ray_cluster`函数示例,包含了获取实际IP地址、自定义资源配置等细节,并解决了可能出现的端口冲突问题。
文中还介绍了在K8s环境下使用Ray的一些技巧,例如利用环境变量获取rank和master_addr等信息。
3. 其他小问题 (Step 2): OpenCV和Pynvml版本问题
部署过程中可能遇到以下两个问题:
- OpenCV版本冲突: 出现`AttributeError: module ‘cv2.dnn’ has no attribute ‘DictValue’`错误,解决方案是安装特定版本的OpenCV:`pip install opencv-python-headless==4.5.4.58`。
- Pynvml版本问题:出现`TypeError: a bytes-like object is required,not ‘str’`错误,解决方案是升级Pynvml:`pip install pynvml -U`。
4. 模型运行 (Step 3): 启动vLLM服务
这一步相对简单,使用以下命令启动vLLM服务:
vllmserve /your/path/to_checkpoint_deepseek-r1/ --tensor-parallel-size 8 --pipeline-parallel-size 2 --trust-remote-code --host 0.0.0.0
利用Pipeline Parallel,即使没有InfiniBand网络,也可以尝试增加sequence length和batch size。文中还提供了一个使用OpenAI API客户端测试模型的示例,展示了如何通过vLLM服务获取模型的推理结果,并给出了监控指标的示例。
总而言之,本文提供了vLLM部署DeepSeek R1的详细步骤和常见问题解决方案,希望能帮助读者顺利完成部署。
联系作者
文章来源:智猩猩GenAI
作者微信:
作者简介:智猩猩旗下账号,专注于生成式人工智能,主要分享技术文章、论文成果与产品信息。