昇騰 910B 物理機使用Galaxy鏡像部署DeepSeek指南(單機版)
更新時間 2025-05-12 15:06:33
最近更新時間: 2025-05-12 15:06:33
分享文章
在人工智能飛速發展的大背景下,算力是關鍵支撐。為了實時提供靈活且強大的計算資源調配能力,昇騰 910B 物理機以強勁的硬件性能為基礎,搭配 DeepSeek 先進的算法框架,三者結合,將為 AI 研究與應用開拓更廣闊的創新空間。本部署指南適配華為昇騰 910B NPU硬件平臺,集成MindIE的2.0.T6版本推理引擎,能顯著優化端到端推理性能。
一、環境準備
1.1 軟硬件要求
組件類型 規格要求 數量
計算節點 華為Atlas 800T A2訓練服務器 1臺
NPU加速卡 昇騰910B-32 (單卡算力320TFLOPS) ≥4卡
本地存儲 NVMe SSD ≥5.8TB (2*2.9T) 2塊
內存 DDR4 ≥512GB -
管理節點 CTyunOS-23.01.2@GalaxyMaster-NPU24.1.rc2.1鏡像
1.2 存儲配置
1.2.1 磁盤分區方案
將節點的nvme1n1和nvme0n1兩塊NVME盤分別掛載在/mnt/nvme1n1和/mnt/nvme0n1上。
#!/bin/bash
# 設備列表
devices=("/dev/nvme0n1" "/dev/nvme1n1")
mount_points=("/mnt/nvme0n1" "/mnt/nvme1n1")
fs_type="xfs"
# 確保 root 權限
if [[ $EUID -ne 0 ]]; then
echo "請使用 root 運行此腳本!"
exit 1
fi
for i in "${!devices[@]}"; do
device="${devices[$i]}"
mount_point="${mount_points[$i]}"
# 創建掛載目錄
mkdir -p "$mount_point"
# 獲取設備的文件系統類型
current_fs=$(blkid -s TYPE -o value "$device")
if [[ -z "$current_fs" ]]; then
echo "設備 $device 沒有文件系統,正在格式化為 $fs_type..."
mkfs.xfs -f "$device"
else
echo "$device 已格式化為 $current_fs,跳過格式化"
fi
# 確保設備未被掛載后再嘗試掛載
umount "$device" 2>/dev/null
mount -t "$fs_type" "$device" "$mount_point"
if [[ $? -ne 0 ]]; then
echo "錯誤:無法掛載 $device 到 $mount_point,請檢查設備或文件系統!"
exit 1
fi
echo "$device 已成功掛載到 $mount_point"
# 獲取 UUID 并更新 /etc/fstab,避免重復添加
uuid=$(blkid -s UUID -o value "$device")
if ! grep -q "$uuid" /etc/fstab; then
echo "UUID=$uuid $mount_point $fs_type defaults 0 0" >> /etc/fstab
echo "$device (UUID=$uuid) 已添加到 /etc/fstab"
else
echo "$device 已存在于 /etc/fstab,無需添加"
fi
done
echo "所有磁盤已成功掛載并配置為開機自動掛載!"
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 4.2G 1 loop
sda 8:0 0 446.6G 0 disk
├─sda1 8:1 0 122M 0 part
├─sda2 8:2 0 976.6M 0 part /boot/efi
├─sda3 8:3 0 1.9G 0 part /boot
└─sda4 8:4 0 443.6G 0 part
├─system-lv_swap 253:0 0 16G 0 lvm [SWAP]
└─system-lv_root 253:1 0 427.6G 0 lvm /
nvme1n1 259:0 0 2.9T 0 disk
└─nvme1n1p1 259:4 0 2.9T 0 part /mnt/nvme1n1
nvme0n1 259:1 0 2.9T 0 disk
└─nvme0n1p1 259:3 0 2.9T 0 part /mnt/nvme0n1
注意/mnt/nvme0n1:部署MindIE容器、啟動服務及運行日志
/mnt/nvme1n1:存儲模型文件和mindie容器鏡像(需確保750權限)
1.3 軟件部署
1.3.1 獲取部署包
cd /mnt/nvme0n1
wget //jiangsu-10.zos.daliqc.cn/galaxy/deployment/deepseek-hw-1node-v20250331.tar
tar xvf deepseek-hw-1node-v20250331.tar
1.3.2 更新MindIE鏡像
mkdir -p /mnt/nvme1n1/apptainer
cd /mnt/nvme1n1/apptainer
wget //jiangsu-10.zos.daliqc.cn/galaxy/apptainer/mindie/mindie_2.0.T6.B023-800I-A2-py3.11-openeuler24.03-lts-aarch64.sif
cd /mnt/nvme0n1/deepseek
ln -s /mnt/nvme1n1/apptainer/mindie_2.0.T6.B023-800I-A2-py3.11-openeuler24.03-lts-aarch64.sif .
注意華為 MindIE 容器升級? **T6** 版本,能夠優化推理執行性能,顯著提升整體系統表現。
1.4 模型準備
將模型文件下載并保存在每個節點的/mnt/nvme1n1/model/ 目錄下,這里以量化版DeepSeek-R1模型舉例:
$ ll /mnt/nvme1n1/model/DeepSeek-R1-Distill-Llama-70B
total 137809304
-rwxr-x--- 1 root root 879 Mar 6 13:42 config.json
-rwxr-x--- 1 root root 181 Mar 6 13:42 generation_config.json
-rwxr-x--- 1 root root 1064 Mar 6 13:42 LICENSE
-rwxr-x--- 1 root root 8946552810 Mar 6 13:42 model-00001-of-000017.safetensors
...
-rwxr-x--- 1 root root 60337 Mar 6 13:42 model.safetensors.index.json
-rwxr-x--- 1 root root 18985 Mar 6 13:42 README.md
-rwxr-x--- 1 root root 3061 Mar 6 13:42 tokenizer_config.json
-rwxr-x--- 1 root root 9084480 Mar 6 13:42 tokenizer.json
二、服務管理
2.1 服務配置
2.1.1 核心參數設置
根據具體使用的模型,修改run.sh 中的內容:
export MODEL_DIR=/mnt/nvme1n1/model/DeepSeek-R1-Distill-Llama-70B
export MINDIE_IMG=mindie_2.0.T6.B023-800I-A2-py3.11-openeuler24.03-lts-aarch64.sif
其中:
- MODEL_DIR 為模型本地盤中的具體路徑
- MINDIE_IMG為使用的mindie容器
設定服務啟動主節點,修改config.json的內容:
...
"ServerConfig" :
{
"ipAddress" : "192.168.0.3",
"managementIpAddress" : "192.168.0.3",
...
將這里192.168.0.3 改為本機IP地址。
2.2 DeepSeek服務啟動
僅需如下3條命令,即可啟動服務(根據模型大小,啟動服務需等待5-30分鐘不等)
cd /mnt/nvme0n1/deepseek
sh run.sh
INFO: instance started successfully
查看log_ds目錄下的out文件,當出現如下信息時,表示服務啟動成功:
tail -f log_ds/webui_2025-03-20_16-09-26.out
Daemon start success!
2.3 查看DeepSeek狀態
# 查看容器實例作業運行信息命令
apptainer instance list
2.4 DeepSeek服務停止
# 停止DeepSeek服務命令
apptainer instance stop app-mindie
三、運維驗證
檢查項 驗證命令 預期結果
NPU設備狀態 watch -n 1 npu-smi info 顯示所有NPU狀態為OK
容器運行狀態 apptainer instance list app-mindie狀態為running
服務端口監聽 ` netstat -tunlp|grep xxx` xxx端口處于LISTEN狀態