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

CANN/ge GE Python Graph API

Graph

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

产品支持情况

产品是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

模块导入

from ge.graph import Graph

功能说明

Graph 类是 GE Python 接口的核心图操作类,用于管理计算图的构建、查询和修改。主要提供以下能力:

  • 图生命周期管理:创建、销毁计算图,支持图的序列化与反序列化。
  • 节点查询:获取图中所有节点或直接节点,按名称查找节点。
  • 属性管理:获取和设置图级别的自定义属性。
  • 边操作:添加/删除数据边和控制边,构建节点间的数据依赖和控制依赖关系。
  • 子图管理:添加、查询、删除子图,支持层级化的图结构。
  • 序列化与持久化:将图导出为文件(dump_to_file)或字符串(dump_to_stream),支持保存和加载 AIR 格式模型。

函数原型

__init__

def __init__(self, name: Optional[str] = "graph") -> None

创建一个 Graph 对象。

name(属性)

@property def name(self) -> str

获取图名称。

get_all_nodes

def get_all_nodes(self) -> List[Node]

获取图中所有节点,包括子图中的节点。

get_direct_nodes

def get_direct_nodes(self) -> List[Node]

获取当前图的直接节点,不包含子图中的节点。

get_attr

def get_attr(self, key: str) -> Any

获取图的指定属性值。

set_attr

def set_attr(self, key: str, value: Any) -> None

设置图的指定属性。

dump_to_file

def dump_to_file(self, format: DumpFormat = DumpFormat.kReadable, suffix: str = "") -> None

将图导出到文件。

dump_to_stream

def dump_to_stream(self, format: DumpFormat = DumpFormat.kReadable) -> str

将图导出为字符串。

save_to_air

def save_to_air(self, file_path: str) -> None

将图保存为 AIR 格式文件。

load_from_air

def load_from_air(self, file_path: str) -> None

从 AIR 格式文件加载图。

remove_node

def remove_node(self, node: Node) -> None

从图中移除指定节点。

remove_edge

def remove_edge(self, src_node: Node, src_port_index: int, dst_node: Node, dst_port_index: int) -> None

移除指定的边。

add_data_edge

def add_data_edge(self, src_node: Node, src_port_index: int, dst_node: Node, dst_port_index: int) -> None

添加数据边。

add_control_edge

def add_control_edge(self, src_node: Node, dst_node: Node) -> None

添加控制边。

find_node_by_name

def find_node_by_name(self, name: str) -> Node

根据节点名称查找节点。

get_all_subgraphs

def get_all_subgraphs(self) -> List[Graph]

获取图中所有子图。

get_subgraph

def get_subgraph(self, name: str) -> Optional[Graph]

根据名称获取指定子图。

add_subgraph

def add_subgraph(self, subgraph: Graph) -> None

向图中添加子图。

remove_subgraph

def remove_subgraph(self, name: str) -> None

根据名称移除子图。

参数说明

__init__

参数名类型是否必选默认值说明
nameOptional[str]"graph"图名称,必须为字符串类型。

name

无参数(只读属性)。

get_all_nodes

无参数。

get_direct_nodes

无参数。

get_attr

参数名类型是否必选默认值说明
keystr-属性名称,必须为字符串类型。

set_attr

参数名类型是否必选默认值说明
keystr-属性名称,必须为字符串类型。
valueAny-属性值,支持多种数据类型。

dump_to_file

参数名类型是否必选默认值说明
formatDumpFormatDumpFormat.kReadable导出文件的格式,取值范围为:DumpFormat.kOnnx、DumpFormat.kTxt、DumpFormat.kReadable。
suffixstr""文件名后缀,追加在生成的文件名末尾。例如 suffix 为 "xxxx" 时,文件名格式为ge_<format>_00000_<graph_name>_0_xxxx.<ext>

DumpFormat 枚举值说明:

枚举值数值说明
DumpFormat.kOnnx0ONNX 文本格式(pbtxt),仅包含图结构,不包含权重数据或其他属性。
DumpFormat.kTxt1文本格式。
DumpFormat.kReadable2可读格式(默认)。

dump_to_stream

参数名类型是否必选默认值说明
formatDumpFormatDumpFormat.kReadable导出字符串的格式,取值范围为:DumpFormat.kOnnx、DumpFormat.kTxt、DumpFormat.kReadable。

save_to_air

参数名类型是否必选默认值说明
file_pathstr-AIR 文件的保存路径,必须为字符串类型。

load_from_air

参数名类型是否必选默认值说明
file_pathstr-AIR 文件的加载路径,必须为字符串类型。

remove_node

参数名类型是否必选默认值说明
nodeNode-待移除的节点对象,必须为 Node 类型。

remove_edge

参数名类型是否必选默认值说明
src_nodeNode-边的源节点,必须为 Node 类型。
src_port_indexint-源节点的输出端口索引。移除控制边时,应设置为 -1。
dst_nodeNode-边的目标节点,必须为 Node 类型。
dst_port_indexint-目标节点的输入端口索引。移除控制边时,应设置为 -1。

add_data_edge

参数名类型是否必选默认值说明
src_nodeNode-数据边的源节点,必须为 Node 类型。
src_port_indexint-源节点的输出端口索引,必须为整数。
dst_nodeNode-数据边的目标节点,必须为 Node 类型。
dst_port_indexint-目标节点的输入端口索引,必须为整数。

add_control_edge

参数名类型是否必选默认值说明
src_nodeNode-控制边的源节点,必须为 Node 类型。
dst_nodeNode-控制边的目标节点,必须为 Node 类型。

find_node_by_name

参数名类型是否必选默认值说明
namestr-节点名称,必须为字符串类型。

get_all_subgraphs

无参数。

get_subgraph

参数名类型是否必选默认值说明
namestr-子图名称,必须为字符串类型。

add_subgraph

参数名类型是否必选默认值说明
subgraphGraph-待添加的子图对象,必须为 Graph 类型。

remove_subgraph

参数名类型是否必选默认值说明
namestr-待移除的子图名称,必须为字符串类型。

返回值说明

方法返回类型说明
__init__None无返回值。创建成功则返回 Graph 对象;创建失败则抛出异常。
namestr返回图名称字符串。
get_all_nodesList[Node]返回图中所有节点列表(包含子图中的节点)。若图为空则返回空列表。
get_direct_nodesList[Node]返回当前图的直接节点列表(不包含子图中的节点)。若图为空则返回空列表。
get_attrAny返回指定属性名称对应的属性值。
set_attrNone无返回值。设置失败则抛出异常。
dump_to_fileNone无返回值。导出失败则抛出异常。
dump_to_streamstr返回图的字符串表示。
save_to_airNone无返回值。保存失败则抛出异常。
load_from_airNone无返回值。加载失败则抛出异常。
remove_nodeNone无返回值。移除失败则抛出异常。
remove_edgeNone无返回值。移除失败则抛出异常。
add_data_edgeNone无返回值。添加失败则抛出异常。
add_control_edgeNone无返回值。添加失败则抛出异常。
find_node_by_nameNode返回找到的节点对象。未找到则抛出异常。
get_all_subgraphsList[Graph]返回所有子图列表。若没有子图则返回空列表。
get_subgraphOptional[Graph]返回指定名称的子图对象。若未找到则返回 None。
add_subgraphNone无返回值。添加失败则抛出异常。
remove_subgraphNone无返回值。移除失败则抛出异常。

约束说明

  • 所有权模型:Graph 对象存在两种所有权状态。默认情况下由 Python 侧管理 C++ 资源的生命周期。当 Graph 作为子图参数传递给算子(如 If、While、Case)时,所有权会自动转移至 C++ 侧,以避免双重释放问题。
  • 禁止拷贝:Graph 类不支持拷贝操作(浅拷贝和深拷贝均不支持),调用copydeepcopy将抛出 RuntimeError。
  • 子图名称唯一性:调用add_subgraph添加子图时,子图名称在父图中必须唯一。若名称已存在,操作将失败并抛出异常。
  • 边的端口索引:调用remove_edge移除控制边时,src_port_indexdst_port_index均应设置为 -1。移除数据边时,端口索引必须与实际连接的端口一致。
  • dump_to_file 输出限制:使用 DumpFormat.kOnnx 格式导出时,pbtxt 文件仅包含图结构信息,不包含权重数据或其他属性。
  • 类型校验:所有方法的参数均进行类型校验,类型不匹配时将抛出 TypeError;操作失败时将抛出 RuntimeError。
  • 节点查找find_node_by_name在未找到指定名称的节点时会抛出 RuntimeError,而非返回 None。使用前需确认节点确实存在。

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

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

http://www.gsyq.cn/news/1632105.html

相关文章:

  • 自动驾驶笔记:为什么说2026年是激光雷达普及的关键年?
  • Laravel Vonage Notification Channel完全指南:如何在5分钟内实现短信通知功能
  • Dify实战指南:从零构建生产级AI应用与Agentic工作流
  • Cosmos-Transfer1-DiffusionRenderer部署指南:从本地环境到生产系统的完整流程
  • 三相异步电机SVPWM-DTC控制技术解析与实践
  • JupyterHub部署Docker监控与日志管理:实时追踪用户活动和系统性能
  • 西工大软院大一英语演讲:nwpu-cram技巧与范例
  • InVesalius与DICOM标准:医疗影像数据处理的最佳实践与兼容性指南
  • SQL CASE语句用法详解:SQL Ultimate Course条件逻辑处理
  • 10个入门级Arduino项目:LittleArduinoProjects带你从0到1学电子
  • FPDF入门教程:5分钟创建你的第一个PHP PDF文档
  • nginx-auth-ldap安全加固:SSL配置与证书验证的正确姿势
  • 电气工程与电机驱动核心技术解析
  • Windmill React UI响应式设计指南:适配所有设备的界面开发技巧
  • GitHub API在Gloom中的应用:如何高效集成第三方API服务
  • Primer设计系统新手教程:从零开始构建GitHub风格界面
  • LoadingLayout完全指南:从入门到精通的Android UI组件教程
  • PLC控制伺服画圆:工业自动化中的精准轨迹控制
  • OpenRadioss二次开发指南:如何通过Python接口扩展求解器功能
  • Instatic多因素认证:TOTP与安全密钥配置指南
  • 对抗性攻击技术解析:MNIST挑战中的PGD攻击实现原理
  • SQL数据定义语言(DDL)详解:SQL Ultimate Course核心技能
  • AWS Account Factory故障排除手册:常见问题与解决方案大全
  • Xournal++ 终极指南:如何用免费开源软件实现完美手写笔记与PDF批注体验
  • 丘脑中央核(CM)是意识生成的核心锚点!
  • 无需配置!gh-markdown-preview让本地Markdown预览变得如此简单
  • 解决Laravel Vonage Notification Channel常见问题:调试与错误处理指南
  • GPT-4o与GPT-4模型版本辨析及合规调用指南
  • 视频画质终极提升指南:用Video2X免费实现4K超分辨率
  • CANN/asc-devkit SetGradOutput卷积反向梯度设置