上一篇在 Windows 下完成了 OPi AI Studio 的基础配置,但遇到了影响使用的报错。因此这次切到 Ubuntu 22.04 + Linux 5.15,重新整理一套可复现的部署流程。
一、目标环境与下载准备
310P NPU 驱动包当前适配的推荐系统为 Ubuntu 22.04,内核版本为 Linux 5.15。
Ubuntu 镜像(ubuntu-22.04.5-desktop-amd64.iso)可从以下地址下载:
- https://mirrors.ustc.edu.cn/ubuntu-releases/22.04.5/ubuntu-22.04.5-desktop-amd64.iso
- https://mirrors.huaweicloud.com/ubuntu-releases/22.04.5/ubuntu-22.04.5-desktop-amd64.iso
二、切换并固定 Linux 5.15 内核
1) 检查当前内核
uname -r

2) 安装 5.15.0-126 内核与头文件
sudo apt update
sudo apt install -y linux-image-5.15.0-126-generic linux-modules-extra-5.15.0-126-generic
sudo apt install -y linux-headers-5.15.0-126 linux-headers-5.15.0-126-generic


3) 修改 GRUB 默认启动项
先安装编辑器:
sudo apt install -y vim

编辑 GRUB:
sudo vim /etc/default/grub
将 GRUB_DEFAULT 指向 5.15 内核项:
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-126-generic"
如果推理期间 NPU 利用率和显存占用有明显变化,说明任务已正确落到设备侧。加载进度跑到 100% 后,通常就会继续进入模型推理阶段:

更新并重启:
sudo update-grub
sudo reboot

重启后再次确认:
uname -r
预期输出:5.15.0-126-generic

4) 可选:USB4/雷电 4 机器禁用 thunderbolt 模块
如果主机使用 USB4 或雷电 4 口,连接 OPi AI Studio 启动时可能出现 PCIe 相关错误,可追加以下配置:
sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=thunderbolt"
sudo update-grub
sudo reboot
三、检查硬件识别
系统启动后等待片刻,执行:
lspci
若能看到 ASMedia 相关信息和 OPi AI Studio PCIe 设备,则链路正常。

注意:和 Windows 场景相同,建议先给 OPi AI Studio 上电并连接,再启动电脑;反过来可能导致设备识别异常。
四、安装基础依赖
sudo apt update
sudo apt install -y dkms net-tools gcc make cmake git pigz pciutils vim dos2unix unrar

五、安装 310P NPU 驱动与固件
1) 安装驱动
驱动包:Ascend-hdk-310p-npu-driver_24.1.t29_linux-x86-64-opiaistudo-20250212.run
下载地址:https://pan.baidu.com/s/1b1hkpebtRXxawnoKQSV—Q?pwd=2m6f
赋予执行权限:
chmod +x Ascend-hdk-310p-npu-driver_24.1.t29_linux-x86-64-opiaistudo-20250212.run

安装(将 test 替换为实际普通用户名/组名):
sudo ./Ascend-hdk-310p-npu-driver_24.1.t29_linux-x86-64-opiaistudo-20250212.run \
--full --install-username=test --install-usergroup=test --install-for-all

重启并验证:
sudo reboot
npu-smi info

2) 安装固件
固件包:Ascend-hdk-310p-npu-firmware_7.6.t7.0.b052-opiaistudio-20250311.run
chmod +x Ascend-hdk-310p-npu-firmware_7.6.t7.0.b052-opiaistudio-20250311.run
sudo ./Ascend-hdk-310p-npu-firmware_7.6.t7.0.b052-opiaistudio-20250311.run --full
六、安装 Docker 与 MindIE 镜像
1) 安装 Docker
sudo apt install -y docker.io

切换 root:
sudo -i
2) 拉取 MindIE 镜像
docker pull --platform=amd64 swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:3.0.0-300I-Duo-py311-openeuler24.03-lts





查看本地镜像列表:
docker images

3) 编写并执行容器启动脚本
vim start_docker.sh
新建 start_docker.sh:
输入以下内容
IMAGE_ID=$1
NAME=${2:-mindie}
if [ -z "$IMAGE_ID" ]; then
echo "usage: $0 <IMAGE_ID> [CONTAINER_NAME]"
exit 1
fi
docker run --name "$NAME" -it -d --net=host --shm-size=500g \
--privileged=true \
-w /usr/local/Ascend \
--device=/dev/davinci_manager \
--device=/dev/hist_hdc \
--device=/dev/devmm_svm \
--entrypoint=bash \
-v /models:/models \
-v /data:/data \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/dcmt:/usr/local/dcmt \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/sbin:/usr/local/sbin \
-v /home:/home \
-v /tmp:/tmp \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
-e http_proxy=$http_proxy \
-e https_proxy=$https_proxy \
-e "PATH=/usr/local/python3.11.10/bin:$PATH" \
"$IMAGE_ID"

赋予权限并启动:
chmod +x start_docker.sh
./start_docker.sh IMAGE_ID CONTAINER_NAME


七、下载模型(DeepSeek-R1-Distill-Qwen-14B)
安装 git-lfs:
sudo apt install -y git-lfs

切换至/models目录:
cd /models
模型地址:https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B
国内网络建议使用镜像:
git clone --depth=1 https://modelers.cn/XLRJ/DeepSeek-R1-Distill-Qwen-14B


下载过程较长,可在模型目录观察大小变化:
du -sh

当然也可以通过watch命令持续监控:
watch -n 1 du -sh

八、模型配置、推理验证与服务启动
下面把后续实操整理成一条更顺的链路:先把模型配置和权限处理好,再做一次本地推理验证,最后启动 MindIE 服务并用 curl 复核接口。
1) 模型配置调整(float16)
进入模型目录:
cd /models/DeepSeek-R1-Distill-Qwen-14B/
编辑配置文件:
vim config.json
确认或修改 torch_dtype 为:
"torch_dtype": "float16"

建议执行一次快速校验,确保 JSON 结构未被破坏:
python3 -m json.tool config.json >/dev/null && echo "config.json is valid"

2) 调整模型权限与所有者
在模型目录执行:
sudo chmod 640 config.json
cd ..
sudo chown -R root:root /models/DeepSeek-R1-Distill-Qwen-14B/
校验权限:
ls -l /models/DeepSeek-R1-Distill-Qwen-14B/config.json
ls -ld /models/DeepSeek-R1-Distill-Qwen-14B
目标是保证配置文件权限收敛、目录所有者统一,减少容器内运行时的权限歧义。
3) 进入容器并执行一次本地推理
启动并进入容器(NAME 为你自定义的容器名):
docker start NAME
docker exec -it NAME bash

进入工作目录:
cd atb-models/
先执行环境变量配置:
export MINDIE_LOG_TO_STDOUT=1
再执行推理命令:
torchrun --nproc_per_node 1 --master_port 20037 -m examples.run_pa --model_path /models/DeepSeek-R1-Distill-Qwen-14B/ --max_output_length 256
另开一个终端观察 NPU 使用情况:
watch -n 0.2 npu-smi info

如果推理期间 NPU 利用率和显存占用有明显变化,说明任务已正确落到设备侧。加载进度跑到 100% 后,通常就会继续进入模型推理阶段:

Tips: 注意!如果不进行环境变量配置,执行推理命令时将会加载至100%后直接异常退出:

4) 启动 mindie-service(服务化)
在容器内进入目录:
cd ../mindie/latest/mindie-service/
编辑配置:
vim conf/config.json
将关键字段改为单卡 HTTP 场景:
"httpsEnabled": false,
"npuDeviceIds": [[0]],
"worldSize": 1,
"modelWeightPath": "/models/DeepSeek-R1-Distill-Qwen-14B/"



启动服务:
./mindieservice_daemon
报错:
./mindieservice_daemon: error while loading shared libraries: libtorch_cpu.so: cannot open shared object file: No such file or directory

这类报错通常说明运行时环境变量还没补齐。先尝试激活下面这些环境:
# 配置CANN环境,默认安装在/usr/local目录下
source /usr/local/Ascend/ascend-tookit/set_env.sh
# 配置加速库环境
source /usr/local/Ascend/nnal/atb/set_env.sh
# 配置模型仓环境变量
source /usr/local/Ascend/atb-models/set_env.sh
source /usr/local/Ascend/mindie/atb/set_env.sh
再次启动后,若看到 Daemon start success!,说明服务已经正常拉起:

可能出现运存不足时,尝试增加交换分区:
sudo fallocate -l 64G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

在运行结束时可以关闭交换分区:
sudo swapoff /swapfile
sudo rm /swapfile
5) 使用 curl 验证 HTTP 接口
MindIE 服务启动后,可以直接用 curl 调用 generate 接口做快速验证:
curl -w "\ntime_total=%{time_total}\n" \
-H "Accept: application/json" \
-H "Content-type: application/json" \
-X POST -d '{"inputs":"Who are you?","stream":false}' \
http://127.0.0.1:1025/generate
示例结果如下:




完成了最终接口部署的验证,至此整个 OPi AI Studio 在 Ubuntu 环境下的部署流程就算是完整走通了。
接下来将在此基础之上,进一步调试上下文长度、并发性能等参数,并且换上精度更高的模型进行调试,以实现更快、质量更高的推理能力,尽可能地释放OPi AI Studio的潜力。
同时,在这个基础上通过调用本地模型接口的方式,部署ChatBot,并且开始养龙虾(OpenClaw / Hermes Agent)!