skills/cann-nnal-installer/SKILL.md
昇腾NPU CANN Toolkit+Kernels+NNAL安装部署技能。支持从官网下载run包安装和从Docker镜像提取两种方式,覆盖驱动检查、包下载、安装、环境变量配置与验证全流程。当用户需要安装CANN全套组件或指定版本CANN到自定义路径时调用。
npx skillsauth add Ascend/agent-skills cann-nnal-installerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
在昇腾NPU环境中安装CANN完整组件(Toolkit、Kernels、NNAL)到指定路径。
核心原则:安装顺序必须为 Toolkit → Kernels → NNAL,不可颠倒。NNAL依赖Toolkit的环境变量。
npu-smi info
预期结果:输出NPU设备信息(芯片型号、显存等)。
异常处理:如果 command not found,需先安装昇腾驱动和固件,参考 ascend-npu-driver-install 技能。
从 npu-smi info 输出中获取芯片型号,用于选择对应的Kernels包:
| 芯片型号 | Kernels包名后缀 |
|---------|----------------|
| 910B / 910B3 | 910b |
| 910 | 910 |
| 310P | 310p |
| 310B | 310b |
uname -m
aarch64:ARM架构,选择 _linux-aarch64.runx86_64:x86架构,选择 _linux-x86_64.run访问昇腾社区下载中心获取安装包:
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。替代方案:
INSTALL_PATH="<用户指定安装路径>"
chmod +x Ascend-cann-toolkit_*.run
./Ascend-cann-toolkit_*.run --install --install-path="${INSTALL_PATH}"
默认路径:/usr/local/Ascend
自定义路径示例:/home/user/run/cann900beta2
chmod +x Ascend-cann-kernels-*.run
./Ascend-cann-kernels-*.run --install --install-path="${INSTALL_PATH}"
source "${INSTALL_PATH}/ascend-toolkit/set_env.sh"
关键:NNAL安装脚本依赖 ASCEND_TOOLKIT_HOME 等环境变量,必须先source。
chmod +x Ascend-cann-nnal_*.run
./Ascend-cann-nnal_*.run --install --install-path="${INSTALL_PATH}"
当无法直接下载run包时,可从华为官方CANN Docker镜像中提取已安装的CANN文件。
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
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/ |
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"
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模块搜索路径 |
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
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>
原因:安装目录权限不够。
解决方案:
chmod 755 <安装路径的父目录>
原因:未先source Toolkit的set_env.sh。
解决方案:
source "${INSTALL_PATH}/ascend-toolkit/set_env.sh"
# 或(Docker镜像提取方式)
source "${INSTALL_PATH}/cann-<版本>/set_env.sh"
原因:set_env.sh中路径未修正。
解决方案:执行第6步的sed命令替换硬编码路径。
原因:昇腾社区下载链接需要登录认证,OBS存储的URL带有签名和过期时间。
解决方案:使用"方式二:从Docker镜像提取"。
原因:910B芯片应选择 910b 后缀的kernels包,不是 910。
解决方案:根据第2步确认的芯片型号选择正确的kernels包。
testing
Kubernetes 集群健康检查与安全修复 — 诊断问题,用户确认后执行修复
development
编译 ATB (Ascend Transformer Boost) 测试框架。当用户需要编译 ATB 测试框架、 运行 CSV 测试、或构建 atb_test_framework 时调用。支持全量编译(含第三方依赖克隆与源替换) 和增量编译两种模式。需在 Docker 容器内配合 CANN 环境执行。
databases
ATB OPS→ACLNN 迁移标准化工作流主模板。整合前置学习、设计文档生成、CSV用例设计、 实际迁移、编译验证、测试验证全流程,提供明确的阶段 Gates 和用户确认机制。
tools
昇腾 NPU NNAL(ATB 加速库)安装技能。依赖 cann-operator-env-config 提供 Toolkit+Kernels 环境,本技能仅负责 NNAL 包的安装、环境变量配置与验证。