当前位置: 首页 > news >正文

如何快速搭建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),仅供参考

http://www.cnnetsun.cn/news/4294687.html

相关文章:

  • 交易类项目-flink
  • 如何快速找到高质量公开数据集:awesome-public-datasets 完整使用指南
  • 蓝桥杯单片机频率计设计:测频法与测周法融合及自动量程切换实战
  • 第四范式前端笔试复盘:从JS到算法,原理型选手的筛选
  • markitdown:两条命令把 PPT 转成 AI 能直接读的 Markdown
  • 大扭矩电机驱动IC怎么选?以RMC2082为例讲透选型逻辑
  • 提示工程完整指南:4个核心技巧10分钟写出稳定提示词
  • OpenCode选型指南:本地终端AI编程助手能否替代商业订阅
  • 基于复合词与动态超图的音乐生成:解决长序列结构化创作难题
  • 阅文前端笔试题拆解:从CSS布局到异步编程的实战指南
  • Hoppscotch 实时通信测试指南:3 步完成 WebSocket 与 SSE 接口联调
  • 前端笔试怎么备考?以格力真题为例拆解考点与答题策略
  • 嵌入式C++开发实战:从环境搭建到智能小车系统构建
  • 如何快速打造你的智能饮食规划助手:一份面向新手的完整指南
  • 深度拆解网易雷火游戏研发笔试:从C++到综合架构设计全解析
  • MinerU:3 条命令把 PDF 和 Office 文档解析成 Markdown/JSON
  • 什么是claude-obsidian?开源AI第二大脑完全入门指南
  • Godot 3D 模型材质切换指南:3 步实现完整换装与状态替换
  • 2019前端校招笔试全解析:JavaScript/ES6与工程化考点拆解
  • 从机器人税看AI自动化:开发者如何守住人类决策边界
  • 基于ROS 2 Jazzy的端到端机械臂抓取系统实战:从选型到调试全解析
  • 欢聚时代2018校招前端A卷深度解析:从JS基础到工程化实战
  • 数据中心延期与能源瓶颈:AI开发者如何应对算力不确定性
  • 蓝桥杯国赛Java真题解析:从算法思维到工程实践的深度破局
  • 蓝桥杯嵌入式国赛DHT11驱动实战:STM32单总线通信与避坑指南
  • 网易游戏客户端笔试核心考点:C++、算法与网络同步解析
  • 浩鲸科技数据开发笔试C卷解析:SQL、Hive与数仓建模核心考点
  • Hermes Agent 多智能体协作指南:如何组一支能交付的队
  • 从蓝桥杯算式问题看全排列算法:next_permutation与DFS深度解析
  • ROS通信核心:roscpp实现Topic与Service的C++编程实战