跳到主要内容基于 Atlas 300I Duo 96G 推理卡使用 MindIE 与 WebUI 部署 32B 大语言模型 | 极客日志PythonAI算法
基于 Atlas 300I Duo 96G 推理卡使用 MindIE 与 WebUI 部署 32B 大语言模型
介绍在 Kylin V10 系统下,利用 96G 显存的 Atlas 300I Duo 推理卡,通过安装 NPU 驱动、配置 Docker 环境及 MindIE 服务,成功部署并运行 DeepSeek-R1-Distill-Qwen-32B 大语言模型。流程涵盖驱动固件安装、镜像拉取、容器创建、模型权重下载与配置修改,最终结合 Open-WebUI 实现本地化对话服务。
星星泡饭24 浏览 一、Atlas 300I Duo 推理卡相关安装步骤
由于显存瓶颈,48G 的 Atlas 300I Duo 推理卡无法运行 DeepSeek-R1-Distill-Qwen-32B 大语言模型,此处使用 96G 版本。32B 模型除对显存有要求外,对服务器内存也有要求,加载过程需较大内存,本例服务器内存为 128GB。

1.1 服务器系统与内核说明
| 服务器 | 系统版本 | 内核版本 | 内存条内存 |
|---|
| S5000C | Kylin V10 | 4.19.90-89.11.v2401.ky10.aarch64 | 128GB |
注意:服务器安装好系统后先不要执行 yum update -y 更新,否则内核版本会从 4.19.90-89.11 升级到 4.19.90-89.21,导致 Atlas 300I Duo 推理卡的驱动包安装失败。
1.2 系统环境说明
本服务器 IP 地址:192.168.2.71
登录用户:root
新开一个 terminal,执行以下命令确认是否有探到 Atlas 300I Duo 推理卡:
lspci | grep Huawei
如有卡,回显信息是:
0000:01:00.0 Processing accelerators: Huawei Technologies Co., Ltd. Device d500 (rev 23)
uname -a
回显信息是:
Linux localhost.localdomain 4.19.90-89.11.v2401.ky10.aarch64 #1 SMP Thu Apr 25 18:20:10 CST 2024 aarch64 aarch64 aarch64 GNU/Linux
cat /etc/*release
回显信息是:
Kylin Linux Advanced Server release V10 (Halberd)
DISTRIB_ID=Kylin
DISTRIB_RELEASE=V10
DISTRIB_CODENAME=Halberd
...
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Halberd)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)"
ANSI_COLOR="0;31"
############################################################################################
1.3 准备安装驱动固件
1.3.1 新增 HwHiAiUser 用户
groupadd HwHiAiUser
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
1.3.2 准备驱动与固件文件并安装
到网站 https://www.hiascend.com/hardware/firmware-drivers/community?product=2&model=17&cann=8.0.0.beta1&driver=Ascend+HDK+24.1.0 下载以下文件:
- Ascend-hdk-310p-npu-driver_24.1.0.1_linux-aarch64.run
- Ascend-hdk-310p-npu-firmware_7.5.0.5.220.run
将下载好的安装文件放到 /root/work 目录下:
参考《Atlas 中心推理卡 24.1.0 NPU 驱动和固件安装指南》文档'2 物理机安装与卸载'章节中介绍的方法安装驱动与固件。因为 Atlas 300I Duo 推理卡是新采购回来的卡,本次安装为首次安装场景,需先安装驱动再安装固件。
./Ascend-hdk-310p-npu-driver_24.1.0.1_linux-aarch64.run --check ./Ascend-hdk-310p-npu-driver_24.1.0.1_linux-aarch64.run --full
安装成功回显信息是:Driver package installed successfully! The new version takes effect immediately.
./Ascend-hdk-310p-npu-firmware_7.5.0.5.220.run --check ./Ascend-hdk-310p-npu-firmware_7.5.0.5.220.run --full
安装成功回显信息是:Firmware package installed successfully. Reboot now or after driver installation for the installation/upgrade to take effect.
执行 reboot 命令重启。如果驱动固件安装正确,执行 npu-smi info 命令探到信息如下:
############################################################################################
二、安装 Docker
Kylin V10 并没有自带 docker 命令,需自行安装。
2.1 查看内核版本
回显信息是:
Linux localhost.localdomain 4.19.90-89.11.v2401.ky10.aarch64 #1 SMP Thu Apr 25 18:20:10 CST 2024 aarch64 aarch64 aarch64 GNU/Linux
2.2 查看内核参数
回显信息是:
Linux version 4.19.90-89.11.v2401.ky10.aarch64 ([email protected]) (gcc version 7.3.0 (GCC)) #1 SMP Thu Apr 25 18:20:10 CST 2024
2.3 查看系统和内核的详细信息
回显信息是:
Static hostname: localhost.localdomain
Icon name: computer-server
Chassis: server
Machine ID: 889689ba3a9f48c4985c1519c2d8f553
Boot ID: 24cf07b36d6d4db69befaca323c4be93
Operating System: Kylin Linux Advanced Server V10 (Halberd)
Kernel: Linux 4.19.90-89.11.v2401.ky10.aarch64
Architecture: arm64
2.4 将下载好安装文件,放到/root/work 目录下,解压安装包
cd /root/work
tar -zxvf docker-27.2.0.tgz
2.5 移动 Docker 文件
mv /root/work/docker/* /usr/bin/
2.6 修改 docker.service
vim /usr/lib/systemd/system/docker.service
新增以下内容:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
2.7 修改 daemon.json 文件
mkdir -p /etc/docker
vim /etc/docker/daemon.json
2.8 运行守护进程,启动 Docker
2.9 docker 其他命令介绍
############################################################################################
三、安装与部署
3.1 拉取镜像
3.1.1. docker login -u cn-south-1@HST3UBLG0X38GM0FMAGK swr.cn-south-1.myhuaweicloud.com
3.1.2. 密码 [REDACTED]
3.1.3. docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts
拉取镜像完毕以后:执行 docker images
回显信息是:
3.2 新建容器
docker run -it -d --net=host --shm-size=1g \
--privileged \
--name sakway \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
-v /root/work:/root/work:rw \
-v /path-to-weights:/path-to-weights:ro \
swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts bash
3.3 查询正在运行的 docker
3.4 进容器:
docker exec -it sakway bash
3.5 下载权重模型:
3.5.1 确保进 docker 以后:
3.5.2 安装 modelscope 命令:
pip install modelscope --index-url https://mirrors.huaweicloud.com/repository/pypi/simple/
3.5.3 下载权重:
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B
mv /root/.cache/modelscope/hub/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B /root/work/
将权重文件放在 /root/work/ 目录以后,把 x 权限去掉,给添加 config.json 文件赋 750 权限:
cd /root/work/
chmod 750 /root/work/DeepSeek-R1-Distill-Qwen-32B/config.json
vim /root/work/DeepSeek-R1-Distill-Qwen-32B/config.json
将 "torch_dtype": "bfloat16", 修改为 "torch_dtype": "float16"。
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
有九处要修改,在 /usr/local/Ascend/mindie/latest/mindie-service/conf/ 目录下有修改以后的 config.json 与原始的 config.json_org,具体修改项可对比。
{"Version":"1.1.0","LogConfig":{"logLevel":"Info","logFileSize":20,"logFileNum":20,"logPath":"logs/mindservice.log"},"ServerConfig":{"ipAddress":"192.168.2.71","managementIpAddress":"127.0.0.2","port":1040,"managementPort":1041,"metricsPort":1042,"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]],"tokenizerProcessNumber":8,"multiNodesInferEnabled":false,"multiNodesInferPort":1120,"interNodeTLSEnabled":true,"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":2560,"maxInputTokenLen":2048,"truncation":false,"ModelConfig":[{"modelInstanceType":"Standard","modelName":"DeepSeek-R1-Distill-Qwen-32B","modelWeightPath":"/root/work/DeepSeek-R1-Distill-Qwen-32B","worldSize":2,"cpuMemSize":5,"npuMemSize":-1,"backendType":"atb","trustRemoteCode":false}]},"ScheduleConfig":{"templateType":"Standard","templateName":"Standard_LLM","cacheBlockSize":128,"maxPrefillBatchSize":50,"maxPrefillTokens":8192,"prefillTimeMsPerReq":150,"prefillPolicyType":0,"decodeTimeMsPerReq":50,"decodePolicyType":0,"maxBatchSize":200,"maxIterTimes":512,"maxPreemptCount":0,"supportSelectBatch":false,"maxQueueDelayMicroseconds":5000}}}
############################################################################################
四、跑服务化 (有个加载模型的过程需要点时间)
cd /usr/local/Ascend/mindie/latest/mindie-service/bin && ./mindieservice_daemon
成功标志:Daemon start success!
4.1 命令行推理方式
新开一个 terminal(问问题,可以不进 docker)
curl 192.168.2.71:1040/generate -d '{
"prompt": "请输出 100 个生僻字?",
"max_tokens": 32,
"stream": false,
"do_sample": true,
"repetition_penalty": 1.00,
"temperature": 0.01,
"top_p": 0.001,
"top_k": 1,
"model": "qwen"
}'
############################################################################################
五、MindIE+WebUI 方式
安装 webUI:
新开一个 terminal,进 docker:
docker exec -it sakway bash
这里 open-webui 的安装,大概需要十来分钟。
安装成功后,到跑服务化的界面按 Ctrl+C 停止服务化进程(mindieservice_daemon):
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
将 "ipAddress" : "127.0.0.1", 修改为实际 IP 地址 "ipAddress" : "192.168.2.71", 如果已经是 "ipAddress" : "192.168.2.71" 则不需要再修改。
成功标志:有一个大的 OPEN WEBUI 的 LOGO。
docker exec -it sakway bash
cd /usr/local/Ascend/mindie/latest/mindie-service/bin && ./mindieservice_daemon
成功标志:Daemon start success!
首次需要创建管理员账户:
名称:sakway
电子邮箱:[email protected]
密码:ABC123
点击创建管理员账户,此时会提示注册成功,已登录。
点击确认,开始使用。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online