平台介绍
Atlas800训练服务器(型号:9000)
- CPU: 4 × HUAWEI Kunpeng 920 5250 (2.6GHz, 48 cores)
- NPU: 8 × Ascend 910B3 64GB
- 架构:Arm
- 系统: CtyunOS 2.0.1
安装驱动
下载驱动,上传服务器,安装驱动
chmod +x Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run
./Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run --full --install-for-all执行 npu-smi info,查看没有有信息输出,有代表驱动安装完成
(base) [root@host-sysf6h ~]# npu-smi info
+------------------------------------------------------------------------------------------------+
| npu-smi 24.1.rc3 Version: 24.1.rc3 |
+---------------------------+---------------+----------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page)|
| Chip | Bus-Id | AICore(%) Memory-Usage(MB) HBM-Usage(MB) |
+===========================+===============+====================================================+
| 0 910B3 | OK | 92.2 37 0 / 0 |
| 0 | 0000:C1:00.0 | 0 0 / 0 3370 / 65536 |
+===========================+===============+====================================================+
| 1 910B3 | OK | 93.9 37 0 / 0 |
| 0 | 0000:C2:00.0 | 0 0 / 0 3370 / 65536 |
+===========================+===============+====================================================+
| 2 910B3 | OK | 88.1 37 0 / 0 |
| 0 | 0000:81:00.0 | 0 0 / 0 3370 / 65536 |
+===========================+===============+====================================================+
| 3 910B3 | OK | 92.3 37 0 / 0 |
| 0 | 0000:82:00.0 | 0 0 / 0 3370 / 65536 |
+===========================+===============+====================================================+
| 4 910B3 | OK | 91.5 42 0 / 0 |
| 0 | 0000:01:00.0 | 0 0 / 0 3370 / 65536 |
+===========================+===============+====================================================+
| 5 910B3 | OK | 94.5 41 0 / 0 |
| 0 | 0000:02:00.0 | 0 0 / 0 3370 / 65536 |
+===========================+===============+====================================================+
| 6 910B3 | OK | 97.2 41 0 / 0 |
| 0 | 0000:41:00.0 | 0 0 / 0 3370 / 65536 |
+===========================+===============+====================================================+
| 7 910B3 | OK | 86.8 40 0 / 0 |
| 0 | 0000:42:00.0 | 0 0 / 0 3370 / 65536 |
+===========================+===============+====================================================+CANN Toolkit 和CANN 算子
wget wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%208.0.RC3.20/Atlas-A3-cann-kernels_8.0.RC3.20_linux-aarch64.run
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%208.0.RC3.20/Ascend-cann-toolkit_8.0.RC3.20_linux-aarch64.run安装 Toolkit,按提示操作:
sudo sed -i 's/user=true/user=false/' ~/.pip/pip.conf
sudo chmod +x Ascend-cann-toolkit_8.0.RC3.20_linux-aarch64.run && sudo ./Ascend-cann-toolkit_8.0.RC3.20_linux-aarch64.run --install --install-for-all安装 Kernel,按提示操作:
sudo chmod +x Atlas-A3-cann-kernels_8.0.RC3.20_linux-aarch64.run && sudo ./Atlas-A3-cann-kernels_8.0.RC3.20_linux-aarch64.run --install --install-for-all配置环境变量:
sudo echo "source /usr/local/Ascend/ascend-toolkit/set_env.sh" >> /etc/profile
source /usr/local/Ascend/ascend-toolkit/set_env.sh下载docker,拉取MindIE容器镜像
下载安装docker
yum install -y docker
docker info # 查看是否安装成功去华为申请MindIE容器镜像拉取链接
# 这里只是示例,镜像需要去华为申请
docker pull mindie:1.0.0-800I-A2-py311-openeuler24.03-lts下载模型
这里可以通过各种方法下载DeepSeek R1 模型,我使用的huggingface-cli
huggingface-cli download --resume-download DeepSeek-R1-Distill-Llama-70B --local-dir /data2/DeepSeek-R1-Distill-Llama-70B量化模型部署
# 先提前创建好量化后的模型存放位置,这里/data2/mindie/DeepSeek-R1是量化前的源模型路径,/data1/deepseek-R1-bf16是量化后的模型路径,具体请看命令
docker run -it -d --net=host --shm-size=1g \
--privileged \
--name mindie \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
-v /data2/mindie/DeepSeek-R1-Distill-Llama-70B:/DeepSeek-R1-Distill-Llama-70B:rw \
-v /data1/DeepSeek-R1-Distill-Llama-70B-bf16:/DeepSeek-R1-Distill-Llama-70B-bf16:rw \
mindie:py311-ubuntu22.04-arm64 bash
docker exec -it mindie bash量化权重生成
- 生成量化权重依赖msModelSlim工具,安装方式见此README
- 量化权重统一使用${ATB_SPEED_HOME_PATH}/examples/convert/model_slim/quantifier.py脚本生成,以下提供Llama模型量化权重生成快速启动命令
W8A8量化权重请使用以下指令生成
- 注意该量化方式仅支持在Atlas 800I A2服务器上运行
cd ~
git clone https://gitee.com/ascend/msit.git
cd msit/msmodelslim
bash install.sh
# 设置CANN包的环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# 关闭虚拟内存
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False
# 进入atb-models目录
cd ${ATB_SPEED_HOME_PATH}
sed -i '167s/m3/m4/' examples/models/llama3/generate_quant_weight.sh
# DeepSeek-R1-Distill-Llama-70B量化 bf16,有回退层,antioutlier使用m4算法配置,使用min-max量化方式,校准数据集使用50条BoolQ数据,在NPU上进行运算
bash examples/models/llama3/generate_quant_weight.sh -src /DeepSeek-R1-Distill-Llama-70B -dst /DeepSeek-R1-Distill-Llama-70B-bf16 -type llama3.1_70b_instruct_bf16_w8a8使用MindIE容器部署推理
docker run -it -d --net=host --shm-size=1g \
--privileged \
--name mindie \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
-v /data1/DeepSeek-R1-Distill-Llama-70B-bf16:/DeepSeek-R1-Distill-Llama-70B-bf16:rw \
mindie:py311-ubuntu22.04-arm64 bashdocker exec -it mindie bash
cd /usr/local/Ascend/mindie/latest/mindie-service/bin
./mindieservice\_daemon对话测试
进入llm_model路径
cd $ATB_SPEED_HOME_PATH执行对话测试
torchrun --nproc_per_node 8 \
--master_port 20037 \
-m examples.run_pa \
--model_path /DeepSeek-R1-Distill-Llama-70B-bf16 \
--input_texts '你是什么模型' \
--max_output_length 20 \性能测试
进入ModelTest路径
cd $ATB_SPEED_HOME_PATH/tests/modeltest/运行测试脚本
具体执行batch=1, 输入长度256, 输出长度256用例的2卡并行性能测试命令为:
bash run.sh pa_bf16 performance [[256,256]] 1 deepseekv2 /DeepSeek-R1-Distill-Llama-70B-bf16 8服务化推理
- 打开配置文件
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json- 更改配置文件
root@host-sysf6h:/# cat /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
{
"Version" : "1.0.0",
"LogConfig" :
{
"logLevel" : "Info",
"logFileSize" : 20,
"logFileNum" : 20,
"logPath" : "logs/mindie-server.log"
},
"ServerConfig" :
{
"ipAddress" : "172.28.119.4",
"managementIpAddress" : "127.0.0.2",
"port" : 1025,
"managementPort" : 1026,
"metricsPort" : 1027,
"allowAllZeroIpListening" : false,
"maxLinkNum" : 1000,
"httpsEnabled" : false,
"fullTextEnabled" : false,
"tlsCaPath" : "security/ca/",
"tlsCaFile" : ["ca.pem"],
"tlsCert" : "security/certs/server.pem",
"tlsPk" : "security/keys/server.key.pem",
"tlsPkPwd" : "security/pass/key_pwd.txt",
"tlsCrlPath" : "security/certs/",
"tlsCrlFiles" : ["server_crl.pem"],
"managementTlsCaFile" : ["management_ca.pem"],
"managementTlsCert" : "security/certs/management/server.pem",
"managementTlsPk" : "security/keys/management/server.key.pem",
"managementTlsPkPwd" : "security/pass/management/key_pwd.txt",
"managementTlsCrlPath" : "security/management/certs/",
"managementTlsCrlFiles" : ["server_crl.pem"],
"kmcKsfMaster" : "tools/pmt/master/ksfa",
"kmcKsfStandby" : "tools/pmt/standby/ksfb",
"inferMode" : "standard",
"interCommTLSEnabled" : true,
"interCommPort" : 1121,
"interCommTlsCaPath" : "security/grpc/ca/",
"interCommTlsCaFiles" : ["ca.pem"],
"interCommTlsCert" : "security/grpc/certs/server.pem",
"interCommPk" : "security/grpc/keys/server.key.pem",
"interCommPkPwd" : "security/grpc/pass/key_pwd.txt",
"interCommTlsCrlPath" : "security/grpc/certs/",
"interCommTlsCrlFiles" : ["server_crl.pem"],
"openAiSupport" : "vllm"
},
"BackendConfig" : {
"backendName" : "mindieservice_llm_engine",
"modelInstanceNumber" : 1,
"npuDeviceIds" : [[0,1,2,3,4,5,6,7]],
"tokenizerProcessNumber" : 8,
"multiNodesInferEnabled" : false,
"multiNodesInferPort" : 1120,
"interNodeTLSEnabled" : false,
"interNodeTlsCaPath" : "security/grpc/ca/",
"interNodeTlsCaFiles" : ["ca.pem"],
"interNodeTlsCert" : "security/grpc/certs/server.pem",
"interNodeTlsPk" : "security/grpc/keys/server.key.pem",
"interNodeTlsPkPwd" : "security/grpc/pass/mindie_server_key_pwd.txt",
"interNodeTlsCrlPath" : "security/grpc/certs/",
"interNodeTlsCrlFiles" : ["server_crl.pem"],
"interNodeKmcKsfMaster" : "tools/pmt/master/ksfa",
"interNodeKmcKsfStandby" : "tools/pmt/standby/ksfb",
"ModelDeployConfig" :
{
"maxSeqLen" : 131072,
"maxInputTokenLen" : 131072,
"truncation" : false,
"ModelConfig" : [
{
"modelInstanceType" : "Standard",
"modelName" : "llama",
"modelWeightPath" : "/DeepSeek-R1-Distill-Llama-70B-bf16",
"worldSize" : 8,
"cpuMemSize" : 10,
"npuMemSize" : -1,
"backendType" : "atb",
"trustRemoteCode" : false
}
]
},
"ScheduleConfig" :
{
"templateType" : "Standard",
"templateName" : "Standard_LLM",
"cacheBlockSize" : 128,
"maxPrefillBatchSize" : 50,
"maxPrefillTokens" : 131072,
"prefillTimeMsPerReq" : 150,
"prefillPolicyType" : 0,
"decodeTimeMsPerReq" : 50,
"decodePolicyType" : 0,
"maxBatchSize" : 200,
"maxIterTimes" : 131072,
"maxPreemptCount" : 0,
"supportSelectBatch" : false,
"maxQueueDelayMicroseconds" : 5000
}
}
}- 拉起服务化
cd /usr/local/Ascend/mindie/latest/mindie-service/bin
./mindieservice_daemoncurl 172.28.119.4:1025/generate -d '{
"prompt": "是先有鸡还是先有蛋?",
"max_tokens": 128000,
"stream": false,
"do_sample":true,
"repetition_penalty": 1.00,
"temperature": 0.01,
"top_p": 0.001,
"top_k": 1,
"model": "llama"
}'curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{
"model": "llama",
"messages": [{
"role": "user",
"content": "是先有鸡还是先有蛋?"
}],
"stream": false
}' http://172.28.119.4:1025/v1/chat/completions推理服务化docker
docker run -it -d --net=host --shm-size=1g \
--privileged \
--name mindie \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
-v /data1/DeepSeek-R1-Distill-Llama-70B-bf16:/DeepSeek-R1-Distill-Llama-70B-bf16:ro \
-v /opt/oneapi/mindie/config.json:/usr/local/Ascend/mindie/latest/mindie-service/conf/config.json:rw \
--workdir /usr/local/Ascend/mindie/latest/mindie-service/bin \
mindie:py311-ubuntu22.04-arm64 bash# 开一个screen窗口用来管理docker
screen -S docker
docker exec -it mindie bash
cd /usr/local/Ascend/mindie/latest/mindie-service/bin
./mindieservice\_daemon使用oneapi管理key
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /opt/oneapi/data:/data justsong/one-api其他
max_split_size_mb:<value>,大于设定值的内存块在使用过程中不会进行切分,这有助于减少内存碎片。此选项主要应用于当模型由于oom(内存不足)而中断并显示存在大量非活动的拆分内存块场景的优化。<value>默认值为无限大,单位MB,即所有大小的内存块都可以拆分,最小设置值大于20MB。export PYTORCH_NPU_ALLOC_CONF=max_split_size_mb:2048,garbage_collection_threshold:0.9ref: 模型库-ModelZoo-昇腾社区

3 条评论
RuntimeError: call aclnnIsFinite failed, detail:EZ9999: Inner Error!
TraceBack (most recent call last): AclOpKernelInit failed opType IsFiniteAiCore ADD_TO_LAUNCHER_LIST_AICORE failed.EZ9999: [PID: 3239121] 2025-07-19-08:55:59.546.125 Parse dynamic kernel config fail.
请问大佬这是为什么啊
您好想问一下那如果是训练服务器里面的300i duo的卡要不要安装驱动呢
如果用npu-smi info 没有显示,就要装驱动和固件