cann-nnal-installer
CANN Toolkit+Kernels+NNAL 安装部署
在昇腾NPU环境中安装CANN完整组件(Toolkit、Kernels、NNAL)到指定路径。
核心原则:安装顺序必须为 Toolkit → Kernels → NNAL,不可颠倒。NNAL依赖Toolkit的环境变量。
调用时机
- 用户要求安装CANN(含toolkit、kernels、nnal)
- 用户需要将CANN安装到自定义路径
- 用户在Docker容器中搭建昇腾开发环境
- 用户需要安装特定版本的CANN(如9.0.0-beta.2)
前置检查
第1步:检查NPU驱动
npu-smi info
预期结果:输出NPU设备信息(芯片型号、显存等)。
异常处理:如果 command not found,需先安装昇腾驱动和固件,参考 ascend-npu-driver-install 技能。
第2步:确认芯片型号
从 npu-smi info 输出中获取芯片型号,用于选择对应的Kernels包:
| 芯片型号 | Kernels包名后缀 |
|---|---|
| 910B / 910B3 | 910b |
| 910 | 910 |
| 310P | 310p |
| 310B | 310b |
第3步:确认系统架构
uname -m
aarch64:ARM架构,选择_linux-aarch64.runx86_64:x86架构,选择_linux-x86_64.run
安装方式一:从官网下载run包安装
第4步:获取CANN安装包
访问昇腾社区下载中心获取安装包:
https://www.hiascend.com/developer/download/community/result?module=cann&cann=<版本号>
需要下载的包(3个):
| 包名 | 格式 | 说明 |
|---|---|---|
Ascend-cann-toolkit_<版本>_linux-<架构>.run |
run包 | 开发工具包(必须先安装) |
Ascend-cann-kernels-<芯片>_<版本>_linux-<架构>.run |
run包 | 算子库(依赖Toolkit) |
Ascend-cann-nnal_<版本>_linux-<架构>.run |
run包 | 加速库(依赖Toolkit环境变量) |
注意:官网下载链接需要登录认证,无法直接 wget。替代方案:
- 浏览器登录后下载,再上传到服务器
- 使用下方的"方式二:从Docker镜像提取"
第5步:安装Toolkit
INSTALL_PATH="<用户指定安装路径>"
chmod +x Ascend-cann-toolkit_*.run
./Ascend-cann-toolkit_*.run --install --install-path="${INSTALL_PATH}"
默认路径:/usr/local/Ascend
自定义路径示例:/home/user/run/cann900beta2
第6步:安装Kernels
chmod +x Ascend-cann-kernels-*.run
./Ascend-cann-kernels-*.run --install --install-path="${INSTALL_PATH}"
第7步:配置Toolkit环境变量(NNAL安装前置条件)
source "${INSTALL_PATH}/ascend-toolkit/set_env.sh"
关键:NNAL安装脚本依赖 ASCEND_TOOLKIT_HOME 等环境变量,必须先source。
第8步:安装NNAL
chmod +x Ascend-cann-nnal_*.run
./Ascend-cann-nnal_*.run --install --install-path="${INSTALL_PATH}"
安装方式二:从Docker镜像提取
当无法直接下载run包时,可从华为官方CANN Docker镜像中提取已安装的CANN文件。
第4步:确认本地镜像
docker images | grep cann
华为官方CANN镜像标签格式:quay.io/ascend/cann:<版本>-<芯片>-<OS>-py<Python版本>
示例:quay.io/ascend/cann:9.0.0-beta.2-910-openeuler24.03-py3.11
如果没有本地镜像,先拉取:
docker pull quay.io/ascend/cann:9.0.0-beta.2-910-openeuler24.03-py3.11
第5步:创建临时容器并提取文件
INSTALL_PATH="<用户指定安装路径>"
CANN_IMAGE="quay.io/ascend/cann:9.0.0-beta.2-910-openeuler24.03-py3.11"
docker create --name cann_temp "${CANN_IMAGE}"
docker cp cann_temp:/usr/local/Ascend/cann-9.0.0-beta.2 "${INSTALL_PATH}/"
docker cp cann_temp:/usr/local/Ascend/nnal "${INSTALL_PATH}/"
docker rm cann_temp
镜像内目录结构:
| 镜像内路径 | 内容 | 目标路径 |
|---|---|---|
/usr/local/Ascend/cann-<版本>/ |
Toolkit + Kernels | ${INSTALL_PATH}/cann-<版本>/ |
/usr/local/Ascend/nnal/ |
NNAL (atb加速库) | ${INSTALL_PATH}/nnal/ |
第6步:修正set_env.sh中的硬编码路径
Docker镜像中的 set_env.sh 包含硬编码路径 /usr/local/Ascend/cann-<版本>,需替换为实际安装路径:
sed -i "s|/usr/local/Ascend/cann-<版本>|${INSTALL_PATH}/cann-<版本>|g" \
"${INSTALL_PATH}/cann-<版本>/set_env.sh"
同时检查其他脚本中的硬编码路径:
grep -rl '/usr/local/Ascend/cann-<版本>' "${INSTALL_PATH}/" --include='*.sh' | \
xargs sed -i "s|/usr/local/Ascend/cann-<版本>|${INSTALL_PATH}/cann-<版本>|g"
环境变量配置
第9步:加载环境变量
source "${INSTALL_PATH}/cann-<版本>/set_env.sh"
source "${INSTALL_PATH}/nnal/atb/set_env.sh"
持久化配置(写入Shell配置文件):
cat >> ~/.bashrc << EOF
source ${INSTALL_PATH}/cann-<版本>/set_env.sh
source ${INSTALL_PATH}/nnal/atb/set_env.sh
EOF
环境变量说明
| 变量名 | 来源 | 说明 |
|---|---|---|
ASCEND_TOOLKIT_HOME |
toolkit set_env.sh | Toolkit安装根路径 |
ASCEND_HOME_PATH |
toolkit set_env.sh | 同ASCEND_TOOLKIT_HOME |
ASCEND_OPP_PATH |
toolkit set_env.sh | OPP算子路径 |
ATB_HOME_PATH |
nnal atb set_env.sh | ATB加速库路径 |
LD_LIBRARY_PATH |
两个set_env.sh | 动态库搜索路径 |
PYTHONPATH |
toolkit set_env.sh | Python模块搜索路径 |
安装验证
第10步:验证安装完整性
source "${INSTALL_PATH}/cann-<版本>/set_env.sh"
source "${INSTALL_PATH}/nnal/atb/set_env.sh"
echo "=== Toolkit Version ==="
cat "${INSTALL_PATH}/cann-<版本>/<架构>-linux/ascend_toolkit_install.info" | grep version
echo "=== Kernels Version ==="
cat "${INSTALL_PATH}/cann-<版本>/<架构>-linux/ascend_ops_install.info" | grep version
echo "=== NNAL Version ==="
cat "${INSTALL_PATH}/nnal/atb/latest/version.info"
echo "=== Key Binaries ==="
which bisheng && echo "bisheng OK"
which atc && echo "atc OK"
echo "=== Environment Variables ==="
echo "ASCEND_TOOLKIT_HOME=${ASCEND_TOOLKIT_HOME}"
echo "ATB_HOME_PATH=${ATB_HOME_PATH}"
echo "=== NPU Status ==="
npu-smi info | head -5
验证检查清单
- Toolkit版本信息正确
- Kernels(ops)版本信息正确
- NNAL(atb)版本信息正确
-
bisheng命令可用 -
atc命令可用 -
ASCEND_TOOLKIT_HOME指向正确路径 -
ATB_HOME_PATH指向正确路径 -
npu-smi info正常输出设备信息
安装验证报告格式
CANN INSTALLATION REPORT
========================
Install Path: <安装路径>
Toolkit: <版本号>
Kernels: <版本号>
NNAL: <版本号>
Architecture: <aarch64/x86_64>
Chip: <芯片型号>
VERDICT: SUCCESS / PARTIAL / FAILED
CHECKS:
[1] Toolkit installed: PASS / FAIL
[2] Kernels installed: PASS / FAIL
[3] NNAL installed: PASS / FAIL
[4] Environment vars: PASS / FAIL
[5] bisheng available: PASS / FAIL
[6] atc available: PASS / FAIL
[7] NPU accessible: PASS / FAIL
ISSUES: <count>
[CRITICAL] <finding>
[WARNING] <finding>
常见问题
1. run包安装时报权限不足
原因:安装目录权限不够。
解决方案:
chmod 755 <安装路径的父目录>
2. NNAL安装失败,提示找不到Toolkit环境变量
原因:未先source Toolkit的set_env.sh。
解决方案:
source "${INSTALL_PATH}/ascend-toolkit/set_env.sh"
# 或(Docker镜像提取方式)
source "${INSTALL_PATH}/cann-<版本>/set_env.sh"
3. Docker镜像提取后bisheng/atc命令找不到
原因:set_env.sh中路径未修正。
解决方案:执行第6步的sed命令替换硬编码路径。
4. 官网下载链接无法直接wget
原因:昇腾社区下载链接需要登录认证,OBS存储的URL带有签名和过期时间。
解决方案:使用"方式二:从Docker镜像提取"。
5. Kernels包名与芯片型号不匹配
原因:910B芯片应选择 910b 后缀的kernels包,不是 910。
解决方案:根据第2步确认的芯片型号选择正确的kernels包。
注意事项
- 安装顺序:必须 Toolkit → Kernels → NNAL,不可颠倒
- 环境变量:NNAL安装前必须先source Toolkit的set_env.sh
- 路径一致性:三个组件必须安装到同一路径下
- 版本匹配:Toolkit、Kernels、NNAL版本必须一致
- 驱动兼容:CANN版本必须与宿主机NPU驱动版本兼容
参考链接
More from ascend/agent-skills
ascendc-operator-dev
AscendC算子端到端开发编排器。当用户需要开发新算子、实现自定义算子、或完成从需求到测试的完整流程时使用。关键词:算子开发、operator development、端到端、完整流程、工作流编排、新建算子。
55ascendc-operator-doc-gen
为AscendC算子生成PyTorch风格的接口文档(README.md)。触发场景:编译调试通过后需要生成接口文档,或用户提到"生成算子文档"、"创建README"、"文档化算子"、"帮我写文档"(算子上下文)、"算子文档"时使用。
54ascendc-operator-design
完成AscendC算子设计 - 帮助用户完成算子的架构设计、接口定义和性能规划。当用户提到算子设计、算子开发、tiling策略、内存规划、AscendC kernel设计、两级tiling、核间切分、核内切分时,使用此skill。
54ascendc-operator-precision-eval
AscendC算子精度评估。对已编译安装的算子生成全面的精度测试用例集(≥30例),运行并生成精度验证报告。关键词:精度测试、precision evaluation、精度报告、accuracy、误差分析。执行完成后 MUST 在当前对话中展示总览、失败摘要与关键发现,不得仅附报告路径。
53ascendc-operator-testcase-gen
完成AscendC算子验证用例生成 - 帮助用户完成testcase设计。当用户提到用例设计、泛化用例生成、算子标杆、UT用例、精度用例、性能用例时,使用此skill。
53ascendc-operator-project-init
初始化 AscendC 算子工程并创建可编译的算子骨架。触发场景:(1) 用户要求创建新算子;(2) 关键词:ascendc算子、新建算子、算子目录、算子初始化;(3) 需要基于 ascend-kernel 模板快速落地。本 skill 不只建目录,还输出“可继续开发”的标准文件与检查清单。
53