news 2026/8/29 22:45:08

如何快速搭建ops-nn开发环境:Docker、CANNLab与本地部署3种方式完整实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何快速搭建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 是面向昇腾的一站式云开发平台,适合没有昇腾设备的开发者,免安装、免配置,打开浏览器即可开发。

操作步骤:

  1. 在 ops-nn 项目页面单击CANNLab按钮,使用已认证的华为云账号登录(未注册请按提示注册认证);
  2. 按页面提示创建 NPU 环境并配置规格,启动后单击连接 > WebIDE进入开发环境;
  3. 项目源码已预置在/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-linuxaarch64-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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 22:44:51

交易类项目-flink

一、先看整体链路 一笔交易相关事件&#xff0c;可能经过类似这样的链路&#xff1a; 行情源 / 交易柜台 / 订单系统 / 账户系统|vKafka|vFlink清洗、关联、聚合、风控|---------------------------------| | | |Redis Doris Iceberg…

作者头像 李华
网站建设 2026/8/29 22:39:09

蓝桥杯单片机频率计设计:测频法与测周法融合及自动量程切换实战

1. 项目缘起与核心需求&#xff1a;为什么蓝桥杯单片机赛题偏爱频率计&#xff1f;如果你参加过蓝桥杯电子类单片机组&#xff08;省赛或国赛&#xff09;的竞赛&#xff0c;或者仔细研究过历年的真题&#xff0c;你会发现一个高频出现的“老朋友”——频率计。从早期的51单片机…

作者头像 李华
网站建设 2026/8/29 22:38:33

第四范式前端笔试复盘:从JS到算法,原理型选手的筛选

1. 这套笔试到底在考什么&#xff1a;题型分布与考察逻辑 2020年秋招那阵子&#xff0c;我收到第四范式的笔试链接时&#xff0c;第一反应是&#xff1a;一家做AI平台的公司&#xff0c;前端笔试会不会剑走偏锋&#xff0c;比如考一堆机器学习概念或者算法推导&#xff1f;真点…

作者头像 李华
网站建设 2026/8/29 22:38:22

markitdown:两条命令把 PPT 转成 AI 能直接读的 Markdown

markitdown&#xff1a;两条命令把 PPT 转成 AI 能直接读的 Markdown 【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown markitdown 是一个开源的 Python…

作者头像 李华
网站建设 2026/8/29 22:38:21

大扭矩电机驱动IC怎么选?以RMC2082为例讲透选型逻辑

上周有人拿着RMC2082这款电机来问我配什么驱动IC&#xff0c;我第一反应是&#xff1a;先看规格书。对方面不改色&#xff1a;“规格书没在手边&#xff0c;你就告诉我买哪种&#xff0c;别啰嗦。”我当场乐了——你不孤独&#xff0c;我几乎每个月都能遇到几个这样问的。 驱动…

作者头像 李华