本指南首先簡要介紹了DeepSeek的背景,隨后詳述單機條件下針對DeepSeek-R1-Distill-Qwen-7B模型在昇騰910b物理機上的私有化部署過程,最后介紹通過鏡像快速部署DeepSeek模型的方法。
一、DeepSeek簡介
DeepSeek是由中國頂尖AI團隊深度求索(DeepSeek Inc.)自主研發的通用大語言模型體系。DeepSeek系列涵蓋從7B到超千億參數的完整模型矩陣,在數學推理、代碼生成、多輪對話等核心能力上達到國際領先水平。目前已衍生出DeepSeek-V2、DeepSeek-V3、DeepSeek-R1等多個版本,廣泛應用于智能客服、教育輔助、金融分析等垂直領域。
2025年1月20日發布的DeepSeek-R1 ,在數學、代碼、自然語言推理等任務上,性能比肩 OpenAI o1 正式版。
DeepSeek-R1模型參數量為671B,通過 DeepSeek-R1 的輸出,蒸餾了 6 個參數量較小的模型(1.5B、7B、8B、14B、32B、70B),其中 32B 和 70B 模型在多項能力上實現了對標 OpenAI o1-mini 的效果。
二、物理機私有化部署DeepSeek(單機)
2.1 環境準備
2.1.1 開通物理機資源
依次選擇昇騰910b物理機所在資源池、可用區、規格、鏡像(Ubuntu22.04@ascend-910b),下單等待物理機成功開通。
可選規格(推薦):建議客戶根據實際需求選擇。
| 服務器類型 | 規格名 | 資源池 | CPU | 內存(GB) | GPU |
|---|---|---|---|---|---|
| 910b液冷 | physical.lcas910b.2xlarge11 | 上海15(彈性裸金屬)杭州7 (彈性裸金屬)武漢41(彈性裸金屬)蕪湖4 (彈性裸金屬)西南1 (彈性裸金屬)華北2 (彈性裸金屬) | 4路48核 | 1536 | 8*昇騰910B |
| 910b風冷 | physical.acas910b.2xlarge11 | 華北2 (標準裸金屬)華南2 (標準裸金屬)西南2 (標準裸金屬)中衛5 (標準裸金屬)沈陽8 (彈性裸金屬) | 4路48核 | 1536 | 8*昇騰910B |
2.1.2 基礎環境配置
a. 磁盤配置
1、查看存儲設備
root@DS-test1:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 57.4M 1 loop /snap/core20/1408
loop1 7:1 0 71.8M 1 loop /snap/lxd/22927
loop2 7:2 0 38.7M 1 loop /snap/snapd/15541
sda 8:0 0 446.6G 0 disk
├─sda1 8:1 0 128M 0 part
├─sda2 8:2 0 1G 0 part /boot/efi
├─sda3 8:3 0 2G 0 part /boot
└─sda4 8:4 0 443.5G 0 part
├─system-lv_root 253:0 0 60G 0 lvm /
└─system-lv_swap 253:1 0 16G 0 lvm
nvme1n1 259:0 0 2.9T 0 disk
nvme0n1 259:1 0 2.9T 0 disk
2、操作硬盤分區及格式化
parted /dev/nvme0n1 mklabel gpt
parted /dev/nvme0n1 mkpart primary xfs 0% 100%
mkfs.xfs /dev/nvme0n1p1
3、查看所有塊設備
root@DS-test1:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 57.4M 1 loop /snap/core20/1408
loop1 7:1 0 71.8M 1 loop /snap/lxd/22927
loop2 7:2 0 38.7M 1 loop /snap/snapd/15541
sda 8:0 0 446.6G 0 disk
├─sda1 8:1 0 128M 0 part
├─sda2 8:2 0 1G 0 part /boot/efi
├─sda3 8:3 0 2G 0 part /boot
└─sda4 8:4 0 443.5G 0 part
├─system-lv_root 253:0 0 60G 0 lvm /
└─system-lv_swap 253:1 0 16G 0 lvm
nvme1n1 259:0 0 2.9T 0 disk
nvme0n1 259:1 0 2.9T 0 disk
└─nvme0n1p1 259:3 0 2.9T 0 part
4、查詢塊設備信息
root@DS-test1:~# blkid
/dev/mapper/system-lv_swap: UUID="c2b6a9db-89ec-44c4-b8ac-ea3f49175aa7" TYPE="swap"
/dev/mapper/system-lv_root: UUID="6e83337a-8e14-4762-92fa-7cbd7ada5926" BLOCK_SIZE="4096" TYPE="xfs"
/dev/sda4: UUID="CRoYWT-Xmfh-tMo5-ifXC-40iK-G7QK-252qaX" TYPE="LVM2_member" PARTLABEL="primary" PARTUUID="05cd83d8-1f43-4e27-987d-2e811729b4f1"
/dev/sda2: UUID="314E-E423" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="primary" PARTUUID="0fec8054-9776-45eb-8b9d-af4fb5efb99e"
/dev/sda3: UUID="11307e46-7908-420a-8011-560e0217f5d5" BLOCK_SIZE="4096" TYPE="ext2" PARTLABEL="primary" PARTUUID="faf7f9ad-579e-4c5e-97b2-52dd7c50dc91"
/dev/loop1: TYPE="squashfs"
/dev/nvme0n1p1: UUID="535068a6-54e7-467e-bd9c-dc78d84d82e2" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="b7b9c51c-cdac-448a-a786-518433859cde"
/dev/loop2: TYPE="squashfs"
/dev/loop0: TYPE="squashfs"
/dev/nvme1n1: PTUUID="eadd3741-c9ba-423a-9762-852320d1b10b" PTTYPE="gpt"
/dev/sda1: PARTLABEL="primary" PARTUUID="aeb549ce-888b-42db-8da0-f17dbf9c619d"
5、掛載硬盤
root@DS-test1:~# mkdir -p /mnt/nvme01
root@DS-test1:~# mount -t xfs /dev/nvme0n1p1 /mnt/nvme01
6、配置開機自動掛載(加一行有關nvme01的配置)
echo "UUID=$(blkid -s UUID -o value /dev/nvme0n1p1) /mnt/nvme01 xfs defaults 0 0" >> /etc/fstab
b. 獲取模型資源及專用容器鏡像
國內源:ModelScope(DeepSeek-R1-Distill-Qwen-7B),鏈接:
國際源:HuggingFace(deepseek-ai/DeepSeek-R1-Distill-Qwen-7B),鏈接://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B/tree/main
下載模型main分支下所有文件至 /mnt/nvme01/model/DeepSeek-R1-Distill-Qwen-7B路徑下。
獲取專用容器鏡像(1.0.0-800I-A2-py311-openeuler24.03-lts):
訪問昇騰鏡像倉庫,鏈接://www.hiascend.com/developer/ascendhub。需要登陸華為賬號并向華為申請權限,權限申請通過后選擇”mindie“->選擇“鏡像版本”->點擊立即下載以獲取docker login指令、密碼和docker pull指令。
docker login -u cn-south-1@{{XXX賬號}} swr.cn-south-1.myhuaweicloud.com
密碼:**********************************************************
docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-800I-A2-py311-openeuler24.03-lts
c. 基礎軟件依賴庫安裝
昇騰910b npu信息驗證:npu-smi info
關閉TLS加密(逐卡操作):for i in {0..7}; do hccn_tool -i $i -tls -s enable 0 ; done
TLS加密配置檢驗,需要保證每臺機器TLS配置一致,默認最好每臺TLS處于關閉狀態:for i in {0..7}; do hccn_tool -i $i -tls -g ; done |grep switch
系統組件更新:apt update && apt install -y git docker.io
Python環境配置:pip install tqdm torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 numpy==1.26.4
克隆modelzoo倉庫:mkdir /opt/npu && cd /opt/npu && git clone
2.2 服務化部署與推理
2.2.1 容器鏡像加載
單機部署DeepSeek-R1-Distill-Qwen-7B模型至少需要1臺Atlas 800I A2服務器,華為多機推理不支持量化模型。由于使用的是root用戶鏡像(從Ascend Hub上取得的),并且可以使用特權容器,因此使用以下命令啟動推理容器:
docker run -it -d --net=host --shm-size=1g \
--name DeepSeek-R1-7B \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
-v /mnt/nvme01/model/DeepSeek-R1-Distill-Qwen-7B:/mnt/nvme01/model/DeepSeek-R1-Distill-Qwen-7B:ro \
swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-800I-A2-py311-openeuler24.03-lts bash
2.2.2 服務化推理
a. 配置文件修改
docker exec -it DeepSeek-R1-7B vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
更改配置文件關鍵參數:
{
...
"ServerConfig" :
{
...
"port" : 1040, #自定義
"managementPort" : 1041, #自定義
"metricsPort" : 1042, #自定義
...
"httpsEnabled" : false,
...
},
"BackendConfig": {
...
"npuDeviceIds" : [[0,1]],# 此處使用兩張npu卡
...
"ModelDeployConfig":
{
"truncation" : false,
"ModelConfig" : [
{
...
"modelName" : "qwen",
"modelWeightPath" : "/mnt/nvme01/model/DeepSeek-R1-Distill-Qwen-7B",# 更改此處模型權重路徑
"worldSize" : 2,
...
}
]
},
}
}
b. 啟動推理服務
cd /usr/local/Ascend/mindie/latest/mindie-service/bin
./mindieservice_daemon (前臺啟動,需保持兩個config.json所在目錄內外屬組一致為root,執行權限一致不高于640)
c. 服務驗證
新建窗口執行推理測試--VLLM接口:
curl 127.0.0.1:1040/generate -d '{
"prompt": "What is deep learning?",
"max_tokens": 32,
"stream": false,
"do_sample":true,
"repetition_penalty": 1.00,
"temperature": 0.01,
"top_p": 0.001,
"top_k": 1,
"model": "qwen"
}'
2.3 Web可視化部署
2.3.1 安裝Open-WebUI
創建獨立Python3.11環境(安裝Open-WebUI要求python3.11版本):
apt install python3.11 && python3.11 -m venv /opt/webui-env
激活虛擬環境(退出虛擬環境命令為deactivate):source /opt/webui-env/bin/activate
在虛擬環境中可使用pip形式安裝:pip install open-webui
啟動Open-WebUI服務:open-webui serve
Open-WebUI默認使用8080端口,如果機器8080端口默認是封了的,需要使用nginx做代理,將8080端口服務代理到其他可用端口,如8081。
2.3.2 Nginx反向代理
a. 安裝Nginx
apt install -y nginx
在/etc/nginx/conf.d/目錄下創建文件openwebui.conf,在文件openwebui.conf中添加以下內容:
# HTTPS server for 你的域名 #填入你的域名
server {
listen 8081;
#server_name 你的域名;#填入你的域名
# SSL 配置
#ssl_certificate /etc/nginx/certs/cert.pem; #證書
#ssl_certificate_key /etc/nginx/certs/key.pem; #證書密鑰
# WebSocket support
location /ws/ {
proxy_pass //127.0.0.1:8080/ws/; # 根據實際 WebSocket 服務路徑調整
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 其他 SSL 配置(例如 TLS 強化配置)
#ssl_protocols TLSv1.2 TLSv1.3;
#ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
# 默認 location 配置
location / {
proxy_pass //127.0.0.1:8080; #填入你的openwebui的容器名+端口號
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
nginx啟動會默認使用80端口,可將/etc/nginx/nginx.conf文件里的include /etc/nginx/sites-enabled/*注釋掉:
b. 啟動Nginx
systemctl start nginx
2.3.3 DeepSeek容器內配置
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
這里將端口設置為1040。因為接下來open-webui將使用OpenAI API調用DeepSeek模型服務,因此"openAiSupport"字段需將“vllm”修改為任意其他字段,如 "vll"。
2.3.4 Open-WebUI界面配置指引
訪問Open-WebUI服務頁面 //<公網IP>:8081
創建賬號,
在“設置--管理員設置--外部連接”中設置OpenAI API,
- API端點://localhost:1040/v1 (注:這里設置的“1040”是前面DeepSeek模型部署時config.json文件內設置的端口。)
- 模型標識:qwen(需與config.json中modelName一致) (注:模型 ID可以不用添加,留空表示包含來自該端口的所有模型,一般DeepSeek的量化模型都是“qwen”。)
Tips:使用OpenAI API時可以選擇將Ollama API關閉。
2.3.5 Open-WebUI服務啟動
a. 選擇設置的模型ID對應的模型,例如:qwen。
b. 完成設置后,就可以愉快地使用DeepSeek模型服務開啟對話了。
三、物理機快速部署DeepSeek
DeepSeek鏡像集成了適配昇騰NPU的DeepSeek-R1模型,用戶可通過DeepSeek鏡像創建昇騰物理機快速部署DeepSeek。
3.1 創建昇騰物理機
3.1.1 進入創建物理機頁面
a. 點擊天翼云門戶首頁的“控制中心”,輸入登錄的用戶名和密碼,進入控制中心頁面。
b. 單擊“產品服務列表>物理機服務”,進入主機列表頁。
c. 單擊“創建物理機”,進入物理機創建頁。
3.1.2 基礎配置
a. 根據業務需求配置“計費模式”、“地域”、“可用區”、“實例名稱”、“主機名稱”等。
b. 選擇昇騰物理機規格。此處選擇"GPU型"、規格名稱為“physical.acas910b.2xlarge11”(本文以physical.acas910b.2xlarge11 規格為例)。
c. 選擇鏡像:鏡像類型為“公共鏡像”,選擇CTyunOS類鏡像,鏡像名為“CTyunOS-23.01.2@deepseek-r1-7b 64位“。
d. 磁盤配置:設置本地磁盤Raid類型,系統盤設置為“RAID1”,數據盤設置為“NORAID”,本規格不支持添加云盤,創建其他規格的物理機可根據需要添加云盤。
3.1.3 網絡配置及高級配置
a. 網絡配置,包括“虛擬私有云”、“網卡”,同時配備“彈性IP”用于下載和訪問模型。
b. 高級配置,默認用戶為root,設置root用戶密碼并確認密碼。
3.1.4 確認配置并支付
檢查上述配置,設置“購買數量”,“企業項目”,“確認《天翼云物理機服務協議》”。
3.2 使用DeepSeek模型
3.2.1 本地調用api服務使用DeepSeek模型
“CTyunOS-23.01.2@deepseek-r1-7b 64位“鏡像部署了 deepseek-r1:7b模型,可通過api方式直接調用模型服務,獲取所需內容。
執行命令(通過修改prompt輸入用戶問題):
curl 127.0.0.1:1040/generate -d '{
"prompt": "give me one life advices?",
"max_tokens": 2000,
"stream": false,
"do_sample":true,
"repetition_penalty": 1.00,
"temperature": 0.01,
"top_p": 0.001,
"top_k": 1,
"model": "qwen"
}'
得到的response如下:
3.2.2 通過web可視化界面使用DeepSeek模型
通過“CTyunOS-23.01.2@deepseek-r1-7b 64位”鏡像創建的物理機,可參考“2.3節 Web可視化部署”部署web界面,并通過web可視化界面使用DeepSeek模型進行交互。
四、 服務安全配置
為確保模型服務的安全性,建議遵循以下安全配置原則:
4.1 設置訪問控制
本指南OpenWebUI使用的端口為8081。
通過配置安全組或ufw/iptables設置IP白名單,對于必須開放的端口(如OpenWebUI的8081端口),通過防火墻規則限制訪問來源IP:
# ufw 限制8081端口訪問來源ip
sudo ufw allow from <IP地址> to any port 8081
sudo ufw deny 8081/tcp # 禁用其他ip訪問8081端口
sudo ufw reload
# iptables 限制8081端口訪問來源ip
sudo iptables -A INPUT -p tcp --dport 8081 -s <IP地址> -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8081 -j DROP # 禁用其他ip訪問8081端口
如需禁用所有公網ip訪問OpenWebUI的8081端口,可配置安全組或使用ufw或iptables關閉非必要端口:
# ufw 關閉8081端口
sudo ufw deny 8081/tcp
sudo ufw reload
# iptables 關閉8081端口
sudo iptables -A INPUT -p tcp --dport 8081 -j DROP
4.2 身份驗證與權限管理
在OpenWebUI中關閉允許用戶注冊功能(參考“2.3節 Web可視化部署”),并定期審計用戶列表。
返回DeepSeek專題導航。