昇腾910B4上安装新版本CANN的正确流程

准备用vLLM-Ascend部署一下Qwen 3.6,其实也有其他朋友介绍了基本的流程:https://blog.csdn.net/weixin_45724433/article/details/160470026

但是我注意到,当前vLLM-Ascend的稳定版(0.18.0)要求的CANN版本是8.5.1,见下面页面:https://docs.vllm.ai/projects/ascend/en/v0.18.0/installation.html 中的表格:

Software Supported version Note
Ascend HDK Refer to the documentation CANN 8.3.RC1 Required for CANN
CANN == 8.5.1 Required for vllm-ascend and torch-npu
torch-npu == 2.9.0 Required for vllm-ascend, No need to install manually, it will be auto installed in below steps
torch == 2.9.0 Required for torch-npu and vllm
NNAL == 8.5.1 Required for libatb.so, enables advanced tensor operations

但是目前我使用的这个系统上没有安装该版本的CANN。刚好用这个机会总结一下具体CANN版本的安装流程。我之前都是基于Conda安装的CANN版本:https://blog.csdn.net/qysh123/article/details/159352996 这次想试试用其他方式(Yum或者Runfile)安装到系统中(而非Conda环境中)。这时候问题来了:

在Ascend的线上页面中:https://ascend.github.io/docs/sources/ascend/quick_install.html

没发现有8.5.1版本的CANN安装方法(不得不说这些文档做得还是不行,各种信息缺失)。例如在上面这个页面中选择8.5.0------Atlas A2系列产品(这种命名方式也是醉了)------AArch64------openEuler,选择在线安装(Yum),可以看到以下流程:

1. 配置用户属组

复制代码
groupadd HwHiAiUser
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash

2. 安装依赖

复制代码
sudo yum makecache
sudo yum install -y gcc python3 python3-pip kernel-headers-$(uname -r) kernel-devel-$(uname -r)

3. 安装NPU驱动

复制代码
sudo curl https://repo.oepkgs.net/ascend/cann/ascend.repo -o /etc/yum.repos.d/ascend.repo && yum makecache 
sudo yum install -y Ascend910B-driver-25.5.0

4. 安装Toolkit

复制代码
sudo yum install -y Ascend-cann-toolkit-8.5.0
sudo yum install -y Ascend-cann-910b-ops-8.5.0

5. 安装后验证

复制代码
# 配置环境变量(如下命令以root用户为例,请以实际安装路径为准)
source /usr/local/Ascend/ascend-toolkit/set_env.sh

python3 -c "import acl;print(acl.get_soc_name())"

那我们自然而然的认为,如果想装8.5.1,是不是把第4步中的版本号换一下就行了:

bash 复制代码
sudo yum install -y Ascend-cann-toolkit-8.5.1

结果竟然报错了:

bash 复制代码
Last metadata expiration check: 0:08:57 ago on Sun 10 May 2026 09:30:44 PM CST.
No match for argument: Ascend-cann-toolkit-8.5.1
Error: Unable to find a match: Ascend-cann-toolkit-8.5.1

这个嘛,也太让人无语了,敢情不能通过这种方式安装小版本号的CANN?很多朋友都说版本号之类的一定要对应,例如:https://hwcomputing.csdn.net/69da751c0a2f6a37c59ee280.html

所以就得想想其他办法来安装CANN了。很多朋友都建议通过昇腾软件官方下载的方式来安装:

https://zhuanlan.zhihu.com/p/1982117912870401438

https://blog.51cto.com/u_13859040/14440908

但是这些文章中提到的版本都比较老了。这里我更新一下:

通过这个链接我们可以看到:https://www.hiascend.com/hardware/firmware-drivers/community?product=4&model=32&cann=8.5.1

当CANN的版本是8.5.1的时候,对应的Ascend HDK版本是25.5.2或25.5.1(这种对应关系都没有一个官方页面?需要通过网页来猜?英伟达至少CUDA和什么驱动的版本对应关系是有文档的。)

运行:

bash 复制代码
cat /usr/local/Ascend/version.info

可以看到输出是:

version=25.5.0

说明在这个服务器上我得首先升级Ascend HDK的版本,和上面类似,如果直接yum是安装不了的:

bash 复制代码
sudo yum install -y Ascend910B-driver-25.5.2
Last metadata expiration check: 0:16:24 ago on Sun 10 May 2026 09:30:44 PM CST.
No match for argument: Ascend910B-driver-25.5.2
Error: Unable to find a match: Ascend910B-driver-25.5.2

所以首先还是通过上面的下载页面下载:

https://www.hiascend.com/hardware/firmware-drivers/community?product=4&model=32&cann=8.5.1&driver=Ascend+HDK+25.5.2

我下载了两个Runfile文件:

"Ascend-hdk-910b-npu-driver_25.5.2_linux-aarch64.run" 和 "Ascend-hdk-910b-npu-firmware_7.8.0.7.220.run"

那接下来就是更新驱动和固件了:

bash 复制代码
chmod +x ./Ascend-hdk-910b-npu-driver_25.5.2_linux-aarch64.run

./Ascend-hdk-910b-npu-driver_25.5.2_linux-aarch64.run --full --install-for-all

chmod +x ./Ascend-hdk-910b-npu-firmware_7.8.0.7.220.run

./Ascend-hdk-910b-npu-firmware_7.8.0.7.220.run --full

(问了一下大模型,说是安装顺序是"按照昇腾官方的首次安装顺序(先驱动后固件)")

然后再重启服务器:

bash 复制代码
reboot

重启之后,我们在这个页面中下载CANN 8.5.1对应版本的文件:

https://www.hiascend.com/developer/download/community/result?from=firmware&product=4&model=32&cann=8.5.1

再吐槽一点:

这个页面中:https://ascend.github.io/docs/sources/ascend/quick_install.html,如果我们选择:8.5.0------Atlas A2系列产品------AArch64------openEuler------离线安装(Runfile),可以看到如下说明:

1. 配置用户属组

复制代码
groupadd HwHiAiUser
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash

2. 安装依赖

复制代码
sudo yum makecache
sudo yum install -y gcc python3 python3-pip kernel-headers-$(uname -r) kernel-devel-$(uname -r)

3. 安装CANN(驱动+Toolkit)

复制代码
#Ascend-cann为驱动、Toolkit合一包
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%208.5.T63/Ascend-cann_8.5.0_linux-aarch64.run
bash ./Ascend-cann_8.5.0_linux-aarch64.run --install

wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%208.5.T63/Ascend-cann-910b-ops_8.5.0_linux-aarch64.run
bash ./Ascend-cann-910b-ops_8.5.0_linux-aarch64.run --install

4. 安装后验证

复制代码
# 配置环境变量(如下命令以root用户为例,请以实际安装路径为准)
source /usr/local/Ascend/ascend-toolkit/set_env.sh

python3 -c "import acl;print(acl.get_soc_name())"

在第3步中我们可以看到注释里说"Ascend-cann为驱动、Toolkit合一包",但是在这个页面:https://www.hiascend.com/developer/download/community/result?from=firmware&product=4&model=32&cann=8.5.1

根本就搜不到类似的文件名"Ascend-cann_8.5.1_linux-aarch64.run",我想问一下,这些东西做到统一很难吗??

言归正传,我下载了"Ascend-cann-toolkit_8.5.1_linux-aarch64.run"、"Ascend-cann-910b-ops_8.5.1_linux-aarch64.run"以及"Ascend-cann-nnal_8.5.1_linux-aarch64.run",依次运行:

bash 复制代码
chmod +x ./Ascend-cann-toolkit_8.5.1_linux-aarch64.run
./Ascend-cann-toolkit_8.5.1_linux-aarch64.run --install --install-path=/usr/local/Ascend

chmod +x ./Ascend-cann-910b-ops_8.5.1_linux-aarch64.run
./Ascend-cann-910b-ops_8.5.1_linux-aarch64.run --install --install-path=/usr/local/Ascend

chmod +x ./Ascend-cann-nnal_8.5.1_linux-aarch64.run
./Ascend-cann-nnal_8.5.1_linux-aarch64.run --install --install-path=/usr/local/Ascend

指定安装位置的原因是,我发现:如果不指定安装位置,会默认安装到Anaconda的某一个环境中,即便这个环境已经deactivate了(这个bug实在让人匪夷所思)。

另外,安装nnal的时候也遇到了问题,但是我现在并不能确定是否完全解决了。后面有机会再慢慢测试总结(另外,官方的在线说明https://ascend.github.io/docs/sources/ascend/quick_install.html中是不需要安装NNAL的)。

如果都能正常运行,接下来设置一下永久环境变量:

bash 复制代码
cat >> /root/.bashrc << 'EOF'
# Ascend environment
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/nnal/nnal/set_env.sh
EOF

然后刷新一下配置:

bash 复制代码
source /root/.bashrc

这时候官方的例子就能正常运行了:

bash 复制代码
python3 -c "import acl;print(acl.get_soc_name())"

再重新开一个Session,可以得到类似下面结果:

bash 复制代码
cat /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux/ascend_toolkit_install.info

package_name=Ascend-cann-toolkit
version=8.5.1
innerversion=V100R001C25SPC002B220
compatible_version=[V100R001C15],[V100R001C18],[V100R001C19],[V100R001C20],[V100R001C21],[V100R001C23]
arch=aarch64
os=linux
path=/usr/local/Ascend/cann-8.5.1

(base) [root@localhost ~]# python3 -c "import acl;print(acl.get_soc_name())"
Ascend910B4

就基本上说明没问题了。今天先简单总结这么多。

相关推荐
m0_702036531 小时前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
沪漂阿龙1 小时前
AI大模型面试题:线性回归是什么?最小二乘法、平方误差、正规方程、Ridge、Lasso 一文讲透
人工智能·机器学习·线性回归·最小二乘法
Lyon198505281 小时前
《文字定律》让AI体验,汉字逻辑与字母逻辑的差异——ChatGPT
人工智能·ai·chatgpt·ai写作
2401_846339561 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
2601_957780842 小时前
Claude 4.6 对阵 GPT-5.4:2026 开发者大模型 API 选型深度解析
人工智能·python·gpt·ai·claude
2601_957780842 小时前
GPT-5.5 深度解析:2026年4月OpenAI旗舰模型的技术跨越与商业决策指南
大数据·人工智能·python·gpt·openai
zhaoyong2222 小时前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
zhangfeng11333 小时前
利用WorkBuddy 国产小龙虾 制作视频 1 Remotion 方案 2 备选:moviepy 方案渲染视频
人工智能
2501_901006473 小时前
C#怎么实现配置热更新 C#如何在运行时动态刷新配置文件不需要重启程序【技巧】
jvm·数据库·python