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

CANN/GE动态输入Python构图示例

样例使用指导

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

1、功能描述

本样例使用动态输入算子进行构图,旨在帮助构图开发者快速理解动态输入的定义和使用

2、目录结构

python/ ├── src/ | └── make_concatv2_graph.py // sample文件 ├── CMakeLists.txt // 编译脚本 ├── README.md // README文件 ├── run_sample.sh // 执行脚本

3、使用方法

3.1、准备cann包

  • 通过安装指导 环境准备正确安装toolkitops
  • 设置环境变量 (假设包安装在/usr/local/Ascend/)
source /usr/local/Ascend/cann/set_env.sh

3.2、编译和执行

  • 注:和 C/C++构图对比,Python构图需要额外添加 LD_LIBRARY_PATH 和 PYTHONPATH(参考sample中的配置方式)
bash run_sample.sh -t sample_and_run_python

该命令会:

  1. 自动生成ES接口
  2. 编译sample程序
  3. 生成dump图并运行该图

执行成功后会看到:

[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示
输出文件说明

执行成功后会在当前目录生成以下文件:

  • ge_onnx_*.pbtxt- 图结构的protobuf文本格式,可用netron查看

3.3、日志打印

可执行程序执行过程中如果需要日志打印来辅助定位,可以在bash run_sample.sh -t sample_and_run_python之前设置如下环境变量来让日志打印到屏幕

export ASCEND_SLOG_PRINT_TO_STDOUT=1 #日志打印到屏幕 export ASCEND_GLOBAL_LOG_LEVEL=0 #日志级别为debug级别

3.4、图编译流程中DUMP图

可执行程序执行过程中,如果需要DUMP图来辅助定位图编译流程,可以在bash run_sample.sh -t sample_and_run_python 之前设置如下环境变量来DUMP图到执行路径下

export DUMP_GE_GRAPH=2

4、核心概念介绍

4.1、构图步骤如下:

  • 创建图构建器(用于提供构图所需的上下文、工作空间及构建相关方法)
  • 添加起始节点(起始节点指无输入依赖的节点,通常包括图的输入(如 Data 节点)和权重常量(如 Const 节点))
  • 添加中间节点(中间节点为具有输入依赖的计算节点,通常由用户构图逻辑生成,并通过已有节点作为输入连接)
  • 设置图输出(明确图的输出节点,作为计算结果的终点)

4.2、动态输入

概念说明:动态输入是指某些算子的输入个数不固定;例如 ConcatV2 算子,该算子为动态多输入算子

ConcatV2 算子的原型如下所示,ES 构图生成的API是ConcatV2(),支持在 Python 中使用

REG_OP(ConcatV2) .DYNAMIC_INPUT(x, TensorType({BasicType(), DT_BOOL, DT_STRING})) .INPUT(concat_dim, TensorType::IndexNumberType()) .OUTPUT(y, TensorType({BasicType(), DT_BOOL, DT_STRING})) .ATTR(N, Int, 1) .OP_END_FACTORY_REG(ConcatV2)

其对应的函数原型为:

  • 函数名:ConcatV2
  • 参数:共 3 个,依次为 x, concat_dim, N
  • 返回值:输出 y

Python API中:

ConcatV2(x: List[Union[TensorHolder, TensorLike]], concat_dim: Union[TensorHolder, TensorLike], *, N: int =1) -> TensorHolder:

注: 1.使用TensorLike类型表达输入,以支持实参可以直接传递数值的情况

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/795902/

相关文章:

  • 别再乱改VMware NAT网段了!桥接 vs NAT,你的开发/测试环境到底该选哪个?
  • 2026年冷库安装电话:专业团队快速响应,打造一站式冷链解决方案 - 品牌2025
  • 【信息系统项目管理师-论文真题】2025上半年(第二批)论文详解(包括解题思路和写作要点)
  • SITS2026不是标准,是生存协议:3类AI应用CI/CD架构对比(含A/B测试、RAG、Agent工作流)
  • 【信息科学与工程学】计算机科学与自动化——第三十一篇 半导体晶圆制造01
  • SQLite 写入锁表报错 database is locked 怎么排查解决
  • STK Target Sequence实战:不写一行代码,30分钟搞定卫星初始轨道参数优化
  • 高点摄像山火烟雾检测数据集(并按照低、中详细标注烟雾浓度)。主要针对初期山火,任何野火检测系统的最重要目标是在火势扩大之前及时检测到火灾
  • NoFences:免费开源桌面分区工具,5分钟打造高效整洁工作空间
  • 终极D2DX指南:让经典暗黑破坏神2在现代电脑上焕发新生
  • 从仿真到流片:手把手教你搞定BJT温度传感器中的A、B值计算与校准
  • 告别同义词替换!我实测了3款降AI工具,英文论文稳过Turnitin检测
  • 保姆级教程:在Ubuntu 20.04上从零编译运行ORB-SLAM3(含Pangolin报错解决)
  • Vue2和Vue3创建应用对比
  • 5分钟掌握Typora插件:从文件管理小白到高效写作达人的3步法
  • ARM Cortex-R7 MPCore处理器架构与实时系统设计
  • Ascend C SetUserTag API
  • csp信奥赛C++高频考点专项训练之字符串 --【字符串排序】:宇宙总统
  • CANN ops-nn分组动态块量化算子
  • 构建 AI Agent 应用商店的构想
  • 现在不看就错过:SITS 2026唯一未公开的“AI原生”性能定义标准(IEEE P3197草案第4.2版核心条款首发解读)
  • 50 个常用 Qt 开源库 的详细解析
  • 别再默认 `all_gather` 不可导:PyTorch 2.11 把 differentiable collectives 补上之后,真正危险的是你还在按旧直觉写 loss
  • QGC界面启动避坑指南:解决QML导入路径、上下文属性注册的常见问题
  • CVE - 2024 - YIKES 安全事件:依赖项感染致恶意软件分发,加密货币蠕虫意外“救场”
  • 123项复合专利+8000+乡镇网点+8年长质保:2026空气能头部品牌实力榜单 - 匠言榜单
  • 5分钟掌握B站缓存视频转换:m4s转MP4的完整教程
  • 应对海外检测算法:英文初稿AI率飙到80%怎么救?3款工具实测攻略
  • CANN/asc-devkit Where条件选择API
  • FanControl深度解析:5步打造Windows系统完美静音散热方案