開工第一篇,部署滿血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
作者微信:
作者簡介:智猩猩旗下賬號,專注于生成式人工智能,主要分享技術文章、論文成果與產品信息。