如何快速搭建ops-nn开发环境:Docker、CANNLab与本地部署3种方式完整实战
如何快速搭建ops-nn开发环境:Docker、CANNLab与本地部署3种方式完整实战
【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn
ops-nn 是 CANN 提供的神经网络类计算算子库,涵盖 matmul、activation、conv、norm 等数百个算子,是实现模型在昇腾 NPU 上加速计算的核心组件。本文以"零踩坑"为目标,带你用CANNLab 云环境、Docker 镜像、本地手动安装3 种方式快速搭建 ops-nn 算子开发环境,并跑通第一个算子样例。无论你是否拥有昇腾设备,都能在对号入座后 10 分钟内进入开发状态。
先认识 ops-nn:算子库架构与硬件架构
在动手部署前,先花 1 分钟搞清楚 ops-nn 在整个 CANN 软件栈中的位置:它是算子库中提供神经网络高阶算子的仓库,与 ops-cv、ops-transformer 等并列,统一构建在 ops-math 与 opbase 基础层之上。
而这些算子最终运行在昇腾 NPU 的 AI Core(Cube 矩阵计算单元、Vector 向量计算单元、Scalar 标量单元)之上。理解这张硬件架构图,有助于你后续读懂 Tiling、性能调优等概念:
搭建前的 3 个前置知识(避免 90% 的报错)
| 关键概念 | 说明 | 避坑提示 |
|---|---|---|
| 编译态 vs 运行态 | 只编译算子 → 装 CANN toolkit 包即可;要编译运行 → 需要驱动 + toolkit + ops 包 | 有 NPU 设备请一定装全运行态依赖 |
| 版本配套 | ops-nn 源码随 CANN 版本发布,源码分支必须与 CANN 版本配套 | 使用 master 分支存在版本不匹配风险,请选配套 tag |
| soc_version 参数 | 编译时--soc需传芯片版本 | Atlas A2 系列传ascend910b;Atlas A3 系列传ascend910_93;950 系列传ascend950 |
三种环境搭建方式的适用场景对照如下(依据官方环境部署文档):
| 安装方式 | 特点 | 适用人群 |
|---|---|---|
| CANNLab | 一站式云平台,无需手动安装,默认装最新版 CANN | 没有昇腾设备的开发者 |
| Docker | 镜像预集成 CANN 与依赖,当前适用于 Atlas A2/A3 系列,OS 支持 ubuntu22.04、openeuler24.03 | 有昇腾设备、想快速搭环境的开发者 |
| 手动安装 | 灵活度最高,可体验最新 master 能力 | 有昇腾设备、想手动装 CANN 包的开发者 |
方式一:CANNLab 云环境——5 分钟起步(推荐新手)
CANNLab 是面向昇腾的一站式云开发平台,适合没有昇腾设备的开发者,免安装、免配置,打开浏览器即可开发。
操作步骤:
- 在 ops-nn 项目页面单击CANNLab按钮,使用已认证的华为云账号登录(未注册请按提示注册认证);
- 按页面提示创建 NPU 环境并配置规格,启动后单击连接 > WebIDE进入开发环境;
- 项目源码已预置在
/mnt/workspace/gitCode目录,直接进入目标分支即可开始编译,无需再 clone 源码。
💡 CANNLab 默认安装最新版 CANN 包;注意源码与 CANN 版本配套关系。
方式二:Docker 镜像部署——有昇腾设备的快速选择
Docker 镜像已预集成 CANN 软件包与 ops-nn 编译依赖,是有本地 NPU 设备场景下最快的部署方式。
第一步:安装 NPU 驱动并用 npu-smi 验证
npu-smi info若能正常显示 NPU 设备信息,说明驱动已就绪,可跳过本步;否则按官方指引选择"在线安装(Yum)",依次完成配置用户属组、安装依赖配源、安装 NPU 驱动三个环节。
第二步:拉取带 -devel 后缀的算子开发镜像
docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.1.0-beta.1-910b-ubuntu22.04-py3.12-devel镜像标签格式为<CANN版本>-<芯片系列>-<操作系统>-<Python版本>-devel,带-devel后缀的才是算子开发镜像(内含编译依赖)。镜像较大,下载请耐心等候。
第三步:挂载 NPU 设备参数启动容器
docker run --name cann_container --device /dev/davinci0 --device /dev/davinci_manager \ --device /dev/devmm_svm --device /dev/hisi_hdc \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \ -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -it swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.1.0-beta.1-910b-ubuntu22.04-py3.12-devel bash关键参数说明:
| 参数 | 作用 |
|---|---|
--device /dev/davinci0 | 将宿主机第 0 张 NPU 卡映射进容器,多卡场景按npu-smi info输出的设备号增减 |
-v .../driver/lib64/... | 挂载宿主机 NPU 驱动库,缺它容器内无法识别设备 |
-v /usr/local/bin/npu-smi:... | 让容器内也能用npu-smi查询设备状态 |
方式三:本地手动安装——灵活度最高的完整部署
适合想体验手动安装 CANN 包、或体验最新 master 分支能力的开发者。
步骤 1:安装 CANN 软件包。按产品系列、CPU 架构、操作系统下载对应安装包(可选手动安装稳定版本,或 Weekly 版本体验最新能力),按页面指引完成驱动与 toolkit、ops 包安装。
步骤 2:下载配套源码。${tag_version}替换为与 CANN 版本配套的分支标签,例如 9.0.0:
git clone -b 9.0.0 https://gitcode.com/cann/ops-nn.git步骤 3:一键安装编译依赖。项目提供了依赖安装脚本,覆盖 python、gcc、cmake、make、patch 等基础依赖:
bash install_deps.sh pip3 install -r requirements.txt依赖版本要求速查:python >= 3.7.0(建议 <= 3.10)、gcc >= 7.3.0、cmake >= 3.16.0,pigz 可选(装了打包更快)。
环境验证:3 条命令确认部署成功
三种方式装完后,统一执行以下验证清单:
# ① 检查 NPU 设备(运行态) npu-smi info # ② 加载 CANN 环境变量(默认路径安装) source /usr/local/Ascend/cann/set_env.sh # ③ 查看 CANN toolkit / ops 版本信息 cat /usr/local/Ascend/cann/x86_64-linux/ascend_toolkit_install.info⚠️ 第 ③ 步中的架构名(如
x86_64-linux、aarch64-linux)可用uname -m查询;CANNLab 场景路径为/home/developer/Ascend/...。三步全部正常,环境即部署成功。
部署成功后的下一步:跑通 AddExample 算子
项目自带加法算子样例examples/add_example,是验证环境、体验算子开发闭环的最佳入口。执行单算子编译(时间短,适合快速验证):
bash build.sh --pkg --soc=ascend910b --ops=add_example -j16看到Self-extractable archive "cann-ops-nn-custom_linux-*.run" successfully created.即编译成功,随后安装 run 包、追加算子库路径到LD_LIBRARY_PATH,再运行样例:
./build_out/cann-ops-nn-*linux*.run bash build.sh --run_example add_example eager cust --vendor_name=custom预期输出类似result[0] is: 2.000000的加法结果,标志着你的 ops-nn 开发环境已完整可用 🎉
常见问题速查(FAQ)
| 问题 | 原因与解决 |
|---|---|
编译提示找不到ASCEND_HOME_PATH | 未加载环境变量,执行source .../cann/set_env.sh |
容器内npu-smi无设备信息 | 启动容器时漏挂--device或驱动库路径,检查挂载参数 |
| 源码与 CANN 版本不匹配 | 按 release 说明选择配套 tag 分支,避免直接使用 master |
| 仅编译算子却装了一堆驱动 | 编译态只需 toolkit 包,驱动可省 |
写在最后
至此,你已掌握 CANNLab、Docker、本地部署三种 ops-nn 环境搭建方式。下一步可沿官方文档深入:环境部署细节参考docs/zh/install/quick_install.md,源码构建全量算子库参考docs/zh/install/compile.md,零基础完整流程见docs/QUICKSTART.md,目录结构说明见docs/zh/install/dir_structure.md。环境就绪后,不妨修改 AddExample 的 Kernel 把加法改成乘法,正式开启你的昇腾算子开发之旅!
【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
