DeepSeek-V3/R1是一個擁有超過600億參數(shù)的專家混合(MoE)模型,且其模型權(quán)重已開源。在本教程中將展示如何使用 SGLang 框架,在一臺 “ebmgn8v” 實例上搭建 DeepSeek-V3/R1模型的推理服務(wù)。
一、核心工具介紹
1、NVIDIA GPU驅(qū)動:用于驅(qū)動 NVIDIA GPU 本文中以 Driver 版本 550.127.08 為例進行說明。阿里云提供豐富的GPU云服務(wù)器實例,配備業(yè)界超強算力的GPU計算卡,結(jié)合高性能CPU平臺,單實例可提供高達5PFLOPS的混合精度計算性能。阿里云官網(wǎng):點擊訪問。
2、SGLang:這是一個專為大規(guī)模語言模型(LLM)和視覺語言模型(VLM)設(shè)計的高效服務(wù)框架,它結(jié)合了結(jié)構(gòu)化編程語言與優(yōu)化后的后端推理引擎,能夠加速復雜 LLM 工作負載。本教程使用的是 SGLang v0.4.2.post1 版本。
二、準備環(huán)境
1、創(chuàng)建GPU實例并安裝驅(qū)動
首先,需要創(chuàng)建一個合適的 GPU 實例,并確保已正確安裝 NVIDIA 驅(qū)動。以下是關(guān)鍵參數(shù)的說明:
- 實例規(guī)格:推薦選擇阿里云 “ecs.ebmgn8v.48xlarge”(配置為 1024 GiB 內(nèi)存、8 個 96 GB 顯存的 GPU 和 192 vCPU);
- 鏡像:請選擇公共鏡像,本教程以 Alibaba Cloud Linux 3.2104 LTS 64 位版本為例;
- GPU 驅(qū)動:在創(chuàng)建 GPU 實例時,建議選擇自動安裝 GPU 驅(qū)動(版本 550 及以上),這樣可以避免手動安裝的麻煩。
2、數(shù)據(jù)盤和IP配置
DeepSeek 模型體積龐大,其中 DeepSeek-R1 和 DeepSeek-V3 模型文件分別為 1.3 TiB。因此,建議為存儲模型文件購買一個 2 TiB 以上的獨立數(shù)據(jù)盤,并將其掛載到 “/mnt” 目錄。
- 系統(tǒng)盤:推薦配置 200 GiB 或以上;
- 數(shù)據(jù)盤:建議購買容量為 2 TiB 或以上的數(shù)據(jù)盤,并確保其掛載到 “/mnt” 目錄;
- 公網(wǎng)IP:選中分配公網(wǎng)IPv4地址,帶寬計費方式選擇按使用流量,建議帶寬峰值選擇100 Mbps,以加快模型下載速度;
- 安全組:開放22端口。
3、安裝Docker和NVIDIA容器工具包
在實例中安裝 Docker 和 NVIDIA 容器工具包,以便后續(xù)運行 DeepSeek 模型。
(1)Alibaba Cloud Linux/CentOS
#配置生產(chǎn)存儲庫 curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \ sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo #安裝 NVIDIA Container Toolkit 軟件包 sudo yum install -y nvidia-container-toolkit #重啟docker sudo systemctl restart docker 檢查 Docker 是否啟動 sudo systemctl status docker """
(2)Ubuntu/Debian
#配置生產(chǎn)存儲庫 curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list #從存儲庫更新軟件包列表 sudo apt-get update #安裝 NVIDIA Container Toolkit 軟件包 sudo apt-get install -y nvidia-container-toolkit #重啟docker sudo systemctl restart docker
查看Docker是否已啟動:
sudo systemctl status docker
如下圖回顯所示,表示Docker已啟動:
4、掛載數(shù)據(jù)盤(如適用)
如果在購買實例時未選擇添加數(shù)據(jù)盤,需要手動購買并掛載數(shù)據(jù)盤。
三、部署和運行DeepSeek模型
1、拉取推理鏡像
執(zhí)行以下命令拉取 DeepSeek 模型的推理 Docker 鏡像:
sudo docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207
2、下載DeepSeek模型文件
訪問阿里云魔搭社區(qū)(Modelscope)下載模型文件,并確保有足夠的存儲空間。以下腳本以 DeepSeek-V3 為例:
# 定義要下載的模型名稱。MODEL_NAME需要訪問Modelscope選擇模型,在模型詳情頁獲取名稱,腳本以DeepSeek-V3為例 MODEL_NAME="DeepSeek-V3" # 設(shè)置本地存儲路徑。確保該路徑有足夠的空間來存放模型文件(建議預留模型大小的1.5倍空間),此處以/mnt/V3為例 LOCAL_SAVE_PATH="/mnt/V3" # 如果/mnt/V3目錄不存在,則創(chuàng)建它 sudo mkdir -p ${LOCAL_SAVE_PATH} # 確保當前用戶對該目錄有寫權(quán)限,根據(jù)實際情況調(diào)整權(quán)限 sudo chmod ugo+rw ${LOCAL_SAVE_PATH} # 啟動下載,下載完成后自動銷毀 sudo docker run -d -t --network=host --rm --name download \ -v ${LOCAL_SAVE_PATH}:/data \ egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207 \ /bin/bash -c "git-lfs clone https://www.modelscope.cn/models/deepseek-ai/${MODEL_NAME}.git /data"
3、監(jiān)控下載進度
使用以下命令監(jiān)控模型下載的實時進度:
sudo docker logs -f download
等待下載完成后,可以通過按下 “Ctrl+C” 退出監(jiān)控日志,這并不會中斷容器的下載任務(wù)。
4、啟動模型推理服務(wù)
配置模型推理服務(wù)的運行參數(shù)并啟動 Docker 容器。以下腳本假設(shè)使用的是 8 個 GPU(根據(jù)實際 GPU 數(shù)量進行調(diào)整):
# 定義要下載的模型名稱。MODEL_NAME需要訪問Modelscope選擇模型,在模型詳情頁獲取名稱,腳本以DeepSeek-V3為例 MODEL_NAME="DeepSeek-V3" # 設(shè)置本地存儲路徑。確保該路徑有足夠的空間來存放模型文件,此處以/mnt/V3為例 LOCAL_SAVE_PATH="/mnt/V3" # 定義服務(wù)運行時監(jiān)聽的端口號。可以根據(jù)實際需求進行調(diào)整,默認使用30000端口 PORT="30000" # 定義使用的GPU數(shù)量。這取決于實例上可用的GPU數(shù)量,可以通過nvidia-smi -L命令查詢 # 這里假設(shè)使用8個GPU TENSOR_PARALLEL_SIZE="8" # 確保當前用戶對該目錄有讀寫權(quán)限,根據(jù)實際情況調(diào)整權(quán)限 sudo chmod ugo+rw ${LOCAL_SAVE_PATH} # 啟動Docker容器并運行服務(wù) sudo docker run -d -t --network=host --gpus all \ --privileged \ --ipc=host \ --cap-add=SYS_PTRACE \ --name ${MODEL_NAME} \ --ulimit memlock=-1 \ --ulimit stack=67108864 \ -v ${LOCAL_SAVE_PATH}:/data \ egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207 \ /bin/bash -c "python3 -m sglang.launch_server \ --port ${PORT} \ --model-path /data \ --mem-fraction-static 0.8 \ --tp ${TENSOR_PARALLEL_SIZE} \ --trust-remote-code"
5、檢查服務(wù)狀態(tài)
可以通過以下命令查看服務(wù)是否正常啟動:
sudo docker logs ${MODEL_NAME}
如果看到類似以下的日志輸出,說明服務(wù)已成功啟動并在端口 30000 上監(jiān)聽:
INFO: Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)
四、推理測試與驗證
最后,可以通過以下命令發(fā)送推理請求,驗證模型的工作狀態(tài):
curl http://localhost:30000/generate \ -H "Content-Type: application/json" \ -d '{ "text": "deepseek中有幾個e?", "sampling_params": { "max_new_tokens": 3000, "temperature": 0 } }'
-
廣告合作
-
QQ群號:4114653