大家好!這里是迪小莫學AI,今天的文章是“”大型語言模型部署實戰:多機多卡DeepSeek-R1配置指南“”
前言
隨著大型語言模型的快速發展,如何高效部署這些模型成為技術團隊面臨的重要挑戰。本文將分享基于DeepSeek-R1模型的多機多卡部署實踐經驗,幫助讀者了解如何優化GPU資源利用,提高模型推理性能。
模型部署架構
硬件資源配置
為了達到最佳性能,我們采用了"每兩臺機器部署一個模型"的方案。實際測試表明,使用2臺配備8張H100的機器,或2臺配備8張H800的機器,性能表現相似,都能達到約20 token/s的總體吞吐量。
性能數據參考
單組模型(2臺機器)在不同輸入長度下的性能表現:
提示長度 | 最大令牌數 | 首令牌時間(秒) | 每秒令牌數 | 總時間(秒) | 總令牌數 |
---|---|---|---|---|---|
7 | 8192 | 0.37 | 25.40 | 91.46 | 2323 |
8007 | 8192 | 11.14 | 19.98 | 94.24 | 1883 |
118007 | 8192 | 159.58 | 5.35 | 664.18 | 3551 |
并發性能表現:
并發請求 | 提示長度 | 最大令牌數 | 首令牌時間(秒) | 每秒令牌數 | 總時間(秒) | 總令牌數 |
---|---|---|---|---|---|---|
1 | 7 | 8192 | 0.36 | 24.34 | 73.71 | 1794 |
8 | 7 | 8192 | 0.97 | 18.71 | 79.86 | 11979 |
16 | 7 | 8192 | 2.76 | 15.69 | 117.17 | 29496 |
32 | 7 | 8192 | 2.38 | 7.97 | 211.15 | 54220 |
模型信息
DeepSeek-R1相比于DeepSeek-V3,體量相同但數據經過優化,效果有明顯提升。這些模型的開源倉庫可通過搜索"deepseek-ai/deepseek-v3"找到。
例如魔搭社區和抱臉社區
https://modelscope.cn/models/deepseek-ai/DeepSeek-R1/files
SG-Lang多機多卡部署
設備支持與性能優化
-
硬件兼容性:H系列顯卡支持FP8,而A100不支持。使用A100需要將FP8轉換為BF16,模型大小會從642GB增加到超過1.3TB,因此需要至少4個A100節點。
-
關鍵優化參數:
--enable-dp-attention
:優化重復的KV緩存和內存使用,適合高并發場景--enable-torch-compile
:延遲優化,提升3-4 token/s的速度--grammar-backend xgrammar
:實現快速結構化輸出--allow-auto-truncate
:允許超長內容自動截斷
-
內存管理:
在顯存緊張時,可使用--mem-fraction-static 0.75
參數降低靜態內存分配比例
Docker部署指令模板
以下是多節點部署的Docker命令模板:
# 第一個節點
docker run -itd \--name llm_node1 \--gpus all \--shm-size 32g \--network=host \-v /本地模型路徑:/容器模型路徑 \--ipc=host \sglang容器鏡像 \python3 -m sglang.launch_server \--model-path /容器模型路徑/DeepSeek-R1 \--tp 16 \--dist-init-addr 主節點IP:端口 \--nnodes 2 \--node-rank 0 \--trust-remote-code \--host 0.0.0.0 \--port 服務端口 \--allow-auto-truncate# 第二個節點
docker run -itd \--name llm_node2 \--gpus all \--shm-size 32g \--network=host \-v /本地模型路徑:/容器模型路徑 \--ipc=host \sglang容器鏡像 \python3 -m sglang.launch_server \--model-path /容器模型路徑/DeepSeek-R1 \--tp 16 \--dist-init-addr 主節點IP:端口 \--nnodes 2 \--node-rank 1 \--trust-remote-code \--host 0.0.0.0 \--port 服務端口 \--allow-auto-truncate
高級優化配置
針對性能要求更高的場景,可以添加以下優化參數:
python3 -m sglang.launch_server --model-path /path/to/DeepSeek-R1 --tp 16 \--dist-init-addr 主節點IP:端口 \--nnodes 2 --node-rank 0 \--trust-remote-code \--host 0.0.0.0 --port 服務端口 \--max-running-requests 1024 \--enable-torch-compile \--enable-flashinfer-mla \--schedule-conservativeness 0.01
推測解碼優化
使用Next-N推測解碼可大幅提升性能:
--speculative-algorithm NEXTN \
--speculative-draft /path/to/DeepSeek-R1-NextN \
--speculative-num-steps 3 \
--speculative-eagle-topk 1 \
--speculative-num-draft-tokens 4
實測性能對比:
優化方式 | 并發請求 | 首令牌時間(秒) | 每秒令牌數 |
---|---|---|---|
基礎配置 | 1 | 2.13 | 18.28 |
基礎配置 | 8 | 4.21 | 11.86 |
推測解碼 | 1 | 0.38 | 30.44 |
推測解碼 | 8 | 0.65 | 13.69 |
網絡優化
對于使用InfiniBand網絡的集群,可添加以下環境變量優化NCCL通信:
-e NCCL_DEBUG="INFO" \
-e "NCCL_SOCKET_IFNAME=網卡名稱" \
-e NCCL_IB_HCA=mlx5_0,mlx5_1,mlx5_2,mlx5_3 \
-e NCCL_P2P_LEVEL=NVL \
-e NCCL_IB_GID_INDEX=0 \
-e NCCL_IB_CUDA_SUPPORT=1 \
-e NCCL_NET_GDR_LEVEL=2
其他推理架構對比
vLLM
vLLM是另一個常用的推理框架,支持多機部署。詳細信息可搜索"vLLM Distributed Serving"。
ktransformers
支持在24G顯存的設備上運行DeepSeek-R1/V3模型。預處理速度最高可達286 tokens/s,推理生成速度最高能達到14 tokens/s。
優點:
- 性能較高,追求CPU性能極限
- 適合單用戶場景
缺點:
- 拓展性弱
- 無法支持高并發
- 需要新一代CPU
Unsloth
支持純CPU、CPU+GPU混合或純GPU模式,支持企業級并發,雙卡A100可實現百人并發,每人14tokens/s,可與ollama和vllm集成。
常見問題與解決方案
進程終止問題
在某些部署環境中,可能遇到進程無法正常終止的問題。可通過修改sglang的utils.py文件中的kill_process_tree函數解決:
def kill_process_tree(parent_pid, include_parent: bool = True, skip_pid: int = None):"""Kill the process and all its child processes."""if parent_pid is None:parent_pid = os.getpid()include_parent = Falsetry:itself = psutil.Process(parent_pid)except psutil.NoSuchProcess:returnchildren = itself.children(recursive=True)for child in children:if child.pid == skip_pid:continuetry:child.kill()except psutil.NoSuchProcess:passif include_parent:if parent_pid == os.getpid():sys.exit(0)else:try:itself.kill()itself.send_signal(signal.SIGQUIT)except psutil.NoSuchProcess:pass
添加看門狗超時
為防止進程卡死,可添加watchdog參數:
--watchdog-timeout 3600 # 單位為秒,表示1小時
鏡像與模型管理
鏡像遷移
在無網絡環境下遷移Docker鏡像:
# 導出鏡像
docker save -o llm_image.tar 鏡像名稱:標簽# 導入鏡像
docker load < llm_image.tar
模型遷移
使用rsync高效傳輸模型:
rsync -avP 源路徑/DeepSeek-R1/ 目標路徑/DeepSeek-R1/
總結
大型語言模型的部署是一項復雜的系統工程,需要考慮硬件資源、網絡環境、軟件棧等多方面因素。通過本文介紹的方法,可以在多機多卡環境中高效部署DeepSeek-R1等大模型,實現較高的推理性能和并發處理能力。
隨著硬件和軟件技術的不斷進步,大模型部署方案也將持續演進。建議讀者保持關注社區最新動態,不斷優化自己的部署策略。