Appearance
KunLun G5680 V2 单节点部署 DeepSeek-70B
文档概述
本文档详细描述了在华为昇腾910B NPU环境上部署DeepSeek-70B大语言模型的完整流程,涵盖环境准备、驱动安装、容器部署及服务配置。
系统要求
硬件环境
- NPU设备: 华为昇腾910B处理器(至少8个NPU设备)
- 内存: 推荐500GB+共享内存
- 存储: 充足的空间存放模型文件
软件环境
- 操作系统: openEuler 24.03 LTS (aarch64)
- 容器平台: Docker + Docker Compose
部署步骤
1. 基础环境准备
sh
# 更新系统包
dnf update -y
# 安装基础依赖
dnf install -y wget curl git python3 python3-pip2. NPU驱动安装
2.1 安装NPU驱动
sh
chmod +x Ascend-hdk-910b-npu-driver_25.2.0_linux-aarch64.run
./Ascend-hdk-910b-npu-driver_25.2.0_linux-aarch64.run --full2.2 安装NPU固件
sh
chmod +x Ascend-hdk-910b-npu-firmware_7.7.0.6.236.run
./Ascend-hdk-910b-npu-firmware_7.7.0.6.236.run2.3 安装Docker运行时
sh
chmod +x Ascend-docker-runtime_6.0.0_linux-aarch64.run
./Ascend-docker-runtime_6.0.0_linux-aarch64.run3. Docker环境部署
3.1 安装Docker & Docker Compose
sh
# 安装Docker
dnf install -y docker docker-compose
# 启动Docker服务
systemctl start docker
systemctl enable docker
# 验证安装
docker --version
docker-compose --version3.2 拉取MindIE镜像
sh
docker pull --platform=arm64 swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.1.RC2-800I-A2-py311-openeuler24.03-lts4. 模型准备
4.1 创建模型目录
sh
mkdir -p /model/DeepSeek4.2 上传模型文件
将下载的DeepSeek-70B模型文件上传至 /model/DeepSeek 目录
5. 容器部署
5.1 启动MindIE容器
sh
docker run -it -d --privileged \
--name=deepseek70B \
--net=host \
--shm-size 500g \
--restart=always \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
-v /usr/local/sbin:/usr/local/sbin \
-v /etc/hccn.conf:/etc/hccn.conf \
-v /model/DeepSeek:/model \
swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.1.RC2-800I-A2-py311-openeuler24.03-lts bash6. 容器内配置
6.1 进入容器
sh
docker exec -it deepseek70B bash6.2 配置MindIE服务
编辑配置文件 /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json:
json
{
"Version": "1.0.0",
"ServerConfig": {
"ipAddress": "1.10.255.10",
"managementIpAddress": "1.10.255.10",
"port": 1025,
"managementPort": 1026,
"metricsPort": 1027,
"allowAllZeroIpListening": false,
"maxLinkNum": 1000,
"httpsEnabled": false,
"fullTextEnabled": false,
"inferMode": "standard",
"interCommTLSEnabled": true,
"interCommPort": 1121,
"openAiSupport": "vllm",
"tokenTimeout": 600,
"e2eTimeout": 600,
"distDPServerEnabled": false
},
"BackendConfig": {
"backendName": "mindieservice_llm_engine",
"modelInstanceNumber": 1,
"npuDeviceIds": [[0,1,2,3,4,5,6,7]],
"tokenizerProcessNumber": 8,
"multiNodesInferEnabled": false,
"ModelDeployConfig": {
"maxSeqLen": 32768,
"maxInputTokenLen": 32768,
"truncation": false,
"ModelConfig": [
{
"modelInstanceType": "Standard",
"modelName": "deepseek70B",
"modelWeightPath": "/model",
"worldSize": 8,
"cpuMemSize": 5,
"npuMemSize": -1,
"backendType": "atb",
"trustRemoteCode": false,
"async_scheduler_wait_time": 120,
"kv_trans_timeout": 10,
"kv_link_timeout": 1080
}
]
},
"ScheduleConfig": {
"templateType": "Standard",
"templateName": "Standard_LLM",
"cacheBlockSize": 128,
"maxPrefillBatchSize": 50,
"maxPrefillTokens": 32768,
"prefillTimeMsPerReq": 150,
"prefillPolicyType": 0,
"decodeTimeMsPerReq": 50,
"decodePolicyType": 0,
"maxBatchSize": 200,
"maxIterTimes": 32768,
"maxPreemptCount": 0,
"supportSelectBatch": false,
"maxQueueDelayMicroseconds": 5000
}
}
}6.3 配置环境变量
在容器内创建环境变量配置脚本 /root/setenv.sh:
sh
#!/bin/bash
# MindIE 服务环境变量配置
# 日志配置:将MindIE日志输出到标准输出,方便在Docker中查看
export MINDIE_LOG_TO_STDOUT=1
# 内存管理优化:启用PyTorch NPU内存的可扩展段分配,避免内存碎片
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
# ATB工作空间内存分配优化:使用高效分配策略和全局内存分配
export ATB_WORKSPACE_MEM_ALLOC_ALG_TYPE=3
export ATB_WORKSPACE_MEM_ALLOC_GLOBAL=1
# 并行计算优化:限制OpenMP线程数为1,避免CPU核间竞争
export OMP_NUM_THREADS=1
# NPU内存配置:设置NPU内存使用上限为96%,预留4%给系统
export NPU_MEMORY_FRACTION=0.96
# 数值计算优化:禁用INF/NaN检查模式,提升计算性能
export INF_NAN_MODE_ENABLE=0
# 分布式通信优化:允许HCCL非确定性执行,提升通信性能
export HCCL_DETERMINISTIC=false
# 启用ATB与HCCL协同工作,优化多NPU间模型并行通信
export ATB_LLM_HCCL_ENABLE=1
echo "环境变量配置完成"使环境变量生效:
sh
chmod +x /root/setenv.sh
source /root/setenv.sh7. 启动服务
7.1 启动MindIE服务
sh
cd /usr/local/Ascend/mindie/latest/mindie-service/bin
./mindieservice_daemon7.2 验证服务状态
sh
# 检查服务进程
ps aux | grep mindieservice
# 检查NPU状态
npu-smi info性能优化建议
内存优化
- 根据实际NPU内存大小调整
NPU_MEMORY_FRACTION参数 - 监控内存使用情况,避免OOM错误
计算优化
- 根据模型大小和批次大小调整
maxBatchSize和maxPrefillBatchSize - 适当调整
cacheBlockSize以优化KV缓存
网络优化
- 确保容器网络配置正确,避免网络瓶颈
- 在多节点部署时优化HCCL通信
故障排查
常见问题
- NPU设备无法识别sh
# 检查NPU设备 ls /dev/davinci* # 检查驱动状态 npu-smi info - 内存不足
- 调整
--shm-size参数 - 优化
NPU_MEMORY_FRACTION设置
- 调整
- 服务启动失败
- 检查配置文件语法
- 查看日志文件
/usr/local/Ascend/mindie/latest/mindie-service/logs
日志查看
sh
# 查看MindIE服务日志
tail -f /usr/local/Ascend/mindie/latest/mindie-service/logs/mindieservice.log监控与维护
系统监控
sh
# 监控NPU使用情况
npu-smi
# 监控容器资源使用
docker stats deepseek70B服务维护
- 定期检查服务状态
- 监控系统日志和性能指标
- 根据负载情况调整资源配置
注意: 本配置针对8个NPU设备的场景,实际部署时请根据硬件配置调整相关参数。

