一、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 更新,否则内核版本升级可能导致 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
DISTRIB_DESCRIPTION="Kylin V10"
...
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 准备驱动与固件文件并安装
前往华为昇腾官网下载 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 目录下:
cd /root/work
chmod +x *
参考官方文档《Atlas 中心推理卡 24.1.0 NPU 驱动和固件安装指南》中'物理机安装与卸载'章节介绍的方法安装驱动与固件。因 Atlas 300I Duo 为新采购卡,首次安装需先安装驱动再安装固件。
安装 driver:
./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.
安装 firmware:
./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 查看内核版本
uname -a
2.2 查看内核参数
cat /proc/version
2.3 查看系统和内核的详细信息
hostnamectl
总结:需要下载 aarch64 的官方 Docker 离线安装包,下载地址为华为云镜像源。
2.4 解压安装包
将下载好的 docker-27.2.0.tgz 放到 /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
新增以下内容(注意替换 insecure-registries 中的实际地址):
{
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": [
"http://172.31.192.88:81",
"http://111.51.123.456:2222"
]
}
2.8 运行守护进程,启动 Docker
dockerd
2.9 Docker 其他命令介绍
- 启动:
systemctl start docker - 查看状态:
systemctl status docker - 设置开机自启动:
systemctl enable docker
reboot 重启设备,并完成以下操作。
三、安装与部署
3.1 拉取镜像
在华为开发者联盟 AscendHub 页面找到 1.0.0-300I-Duo-py311-openeuler24.03-lts 镜像进行下载。
docker login -u <username> swr.cn-south-1.myhuaweicloud.com
# 输入密码
拉取镜像:
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
docker ps -a
3.4 进入容器
docker exec -it sakway bash
3.5 下载权重模型
3.5.1 确保进 Docker 以后
cd /root/work/
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
将权重移动到 /root/work/ 目录:
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
修改 config.json 中的 torch_dtype:
vim /root/work/DeepSeek-R1-Distill-Qwen-32B/config.json
将 "torch_dtype": "bfloat16", 修改为 "torch_dtype": "float16",。
修改 MindIE 配置文件:
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
四、跑服务化 (有个加载模型的过程需要点时间)
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"
}'
大概 3 秒回答问题。
五、MindIE+WebUI 方式
关闭防火墙(在 docker 外执行):
systemctl stop firewalld
安装 webUI: 新开一个 terminal,进 docker:
docker exec -it sakway bash
cd /root/work/
pip install open-webui --index-url https://mirrors.huaweicloud.com/repository/pypi/simple/
这里 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 服务:
open-webui serve
成功标志:有一个大的 OPEN WEBUI 的 LOGO。
新开一个 terminal,进 docker:
docker exec -it sakway bash
跑服务化 (有个加载模型的过程需要点时间):
cd /usr/local/Ascend/mindie/latest/mindie-service/bin && ./mindieservice_daemon
成功标志:
Daemon start success!
在 web 浏览器中访问:
http://192.168.2.71:8080
点击开始使用。
首次需要创建管理员账户: 名称:sakway 电子邮箱: 密码:
点击创建管理员账户,此时会提示注册成功,已登录。 点击确认,开始使用。
点击右上角带颜色的圆圈图标(选择管理员面板)。
点击上面那一排右边的设置。
点击左侧的外部链接。
将 "管理 OpenAI API 连接" 修改为实际的 IP。
https://api.openai.com/v1 修改为 http://192.168.2.71:1040/v1。
点击该行最右边的 "设置",点击刷新,在弹出的 "编辑连接" 页面中点击保存。
新开一个浏览器在 web 上访问 http://192.168.2.71:8080 开启对话。 该局域网内的其他的 PC 用户也可以在浏览器打开 http://192.168.2.71:8080 开启新对话。
以上大语言模型顺利跑成功。


