文件最后提交记录最后更新时间
feat: 支持 GE Python 离线图编译执行接口 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !1699 merge develop into develop feat: 支持 GE Python 离线图编译执行接口 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: 20260326评审通过 # Pull Request ## 描述 本次提交新增 GE Python 离线图编译执行能力,围绕离线模型构建、保存、样例使用、文档说明和基础单测进行了补充。 主要修改如下: - 新增 ge.offline_compile 模块,提供离线图编译相关 Python 接口: - aclgrph_build_initialize - aclgrph_build_finalize - aclgrph_build_model - aclgrph_save_model - aclgrph_bundle_build_model - aclgrph_bundle_save_model - 新增 ModelBufferGraphWithOptions 辅助类型,用于承接单模型和 Bundle 模型的离线编译流程。 - 新增底层离线编译 wrapper: - C++ wrapper:api/python/ge/ge_api_c_wrapper/c_offline_compile.cc - Python ctypes wrapper:api/python/ge/ge/_capi/pyoffline_compile_wrapper.py - 新增离线图编译样例 examples/offline_compile_run/python: - 样例目录按 single_model/bundle_model/ 拆分,覆盖单模型离线编译与执行流程, Bundle 多图离线编译与子模型执行流程 - 更新 docs/ge_python 相关文档和设计说明,补充 offline_compile 模块的用途、结构和示例。 - 新增 Python 单测 tests/ge/ut/ge/graph/pyge_tests/offline_compile_test.py ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 暂无。 ## 如何测试 在已安装 CANN toolkit/ops 且配置 pyACL 的环境中执行样例: ```bash cd examples/offline_compile_run/python bash run_sample.sh --soc-version Ascend910B1 -t sample_and_run_python bash run_sample.sh --soc-version Ascend910B1 -t sample_and_run_bundle_python ``` ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 See merge request: cann/ge!16991 个月前
docs: 修正 example README 中 quick_install 链接路径 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !2423 merge master into develop docs: 修正 example README 中 quick_install 链接路径 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: # Pull Request ## 描述 本次 PR 修正 examples/es/operator_overload_async/python/README.md 中安装指导链接的相对路径。 README 位于 examples/es/operator_overload_async/python/ 目录下,原文使用 ../../../docs/quick_install.md 无法正确跳转到仓库根目录下的 docs/quick_install.md。 本次将链接统一修正为 ../../../../docs/quick_install.md,确保读者可以从样例文档直接打开安装指导。 ## 变更类型 - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 1. 打开 examples/es/operator_overload_async/python/README.md。 2. 检查“3.1、准备cann包”中的两个“安装指导”链接,确认相对路径均为 ../../../../docs/quick_install.md。 3. 在 Markdown 预览中验证链接可正确跳转到仓库根目录下的 docs/quick_install.md。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次变更仅涉及文档链接修正,不涉及功能代码逻辑。 See merge request: cann/ge!24231 个月前
feat: 支持 GE Python 离线图编译执行接口 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !1699 merge develop into develop feat: 支持 GE Python 离线图编译执行接口 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: 20260326评审通过 # Pull Request ## 描述 本次提交新增 GE Python 离线图编译执行能力,围绕离线模型构建、保存、样例使用、文档说明和基础单测进行了补充。 主要修改如下: - 新增 ge.offline_compile 模块,提供离线图编译相关 Python 接口: - aclgrph_build_initialize - aclgrph_build_finalize - aclgrph_build_model - aclgrph_save_model - aclgrph_bundle_build_model - aclgrph_bundle_save_model - 新增 ModelBufferGraphWithOptions 辅助类型,用于承接单模型和 Bundle 模型的离线编译流程。 - 新增底层离线编译 wrapper: - C++ wrapper:api/python/ge/ge_api_c_wrapper/c_offline_compile.cc - Python ctypes wrapper:api/python/ge/ge/_capi/pyoffline_compile_wrapper.py - 新增离线图编译样例 examples/offline_compile_run/python: - 样例目录按 single_model/bundle_model/ 拆分,覆盖单模型离线编译与执行流程, Bundle 多图离线编译与子模型执行流程 - 更新 docs/ge_python 相关文档和设计说明,补充 offline_compile 模块的用途、结构和示例。 - 新增 Python 单测 tests/ge/ut/ge/graph/pyge_tests/offline_compile_test.py ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 暂无。 ## 如何测试 在已安装 CANN toolkit/ops 且配置 pyACL 的环境中执行样例: ```bash cd examples/offline_compile_run/python bash run_sample.sh --soc-version Ascend910B1 -t sample_and_run_python bash run_sample.sh --soc-version Ascend910B1 -t sample_and_run_bundle_python ``` ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 See merge request: cann/ge!16991 个月前
README.md

样例使用指导

1、功能描述

本样例演示离线图编译执行的流程,关于编译图为离线模型更多信息,请参考 生成离线模型

2、目录结构

python/
├── src/
|   ├── single_model/               // 单模型样例
|   |   ├── build_add_model.py      // 离线编译 Add 图,生成 add_sample.om
|   |   └── run_add_model.py        // 加载 add_sample.om 并推理
|   ├── bundle_model/               // Bundle 模型样例
|   |   ├── build_bundle_model.py   // 将 Add/Mul 多图打成一包,生成 bundle_sample.om
|   |   └── run_bundle_model.py     // 加载 bundle_sample.om,依次执行各子模型
|   └── common.py                   // 公共逻辑
├── README.md                       // README 文件
├── run_sample.sh                   // 执行脚本

3、使用方法

3.1、准备cann包

  • 本样例需要同时安装两套 CANN:最新开发包用于图编译,官网正式发布包提供 pyACL 模块用于图执行。本文中的“编译”和“执行”均特指图编译和图执行,不指 GE 工程源码编译。
  • 安装请参考:
    • 最新开发包,用于图编译,提供本样例依赖的最新 GE/Python 能力。安装请参考 环境准备 中“方式三:手动安装软件包 > 场景1:体验master版本能力或基于master版本进行开发”,安装最新版本的 toolkitops
    • 官网正式发布的 CANN toolkitops 包,用于图执行,提供 pyACL。安装请参考 环境准备 中“方式三:手动安装软件包 > 场景2:体验已发布版本能力或基于已发布版本进行开发”,安装官网正式发布版本的软件包
  • 设置环境变量 (假设最新开发包安装在/usr/local/Ascend/,官网正式发布包安装在/usr/local/Ascend-release/)
source /usr/local/Ascend/cann/set_env.sh
export PYTHONPATH="$PYTHONPATH:/usr/local/Ascend-release/cann/python/site-packages"

3.2、图编译和图执行

执行单模型样例:

bash run_sample.sh -t sample_and_run_python

该命令会:

  1. 构建 Add 图,离线编译并生成 add_sample.om
  2. 通过 pyACL 加载并执行该离线模型

执行 bundle 样例:

bash run_sample.sh -t sample_and_run_bundle_python

该命令会:

  1. Add 图与 Mul 图打成 Bundle,离线编译并生成 bundle_sample.om
  2. 通过 pyACL 加载 Bundle,并分别执行两个子模型

离线编译在无卡场景下如需指定目标芯片版本,可增加 --soc-version

bash run_sample.sh --soc-version Ascend910B1 -t sample_and_run_python
bash run_sample.sh --soc-version Ascend910B1 -t sample_and_run_bundle_python

也可以拆分为“只做图编译”和“只做图执行”两个阶段:

bash run_sample.sh -t build_model
bash run_sample.sh -t run_infer

bash run_sample.sh -t build_bundle_model
bash run_sample.sh -t run_bundle_infer

执行成功后会看到:

[Success] sample 执行成功

输出文件说明

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

  • add_sample.om - 单模型离线文件
  • bundle_sample.om - Bundle 离线模型文件

3.3、日志打印

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

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

4、核心流程介绍

4.1、单模型离线编译执行

  • 使用 build_initialize 初始化编译环境
  • 构建 Graph 并通过 build_model 生成离线模型
  • 使用 save_model 保存 om 文件
  • 通过 acl.mdl.load_from_fileacl.mdl.execute 执行离线模型

4.2、Bundle 离线编译执行

  • 使用 GraphWithOptions 组织多个 Graph
  • 通过 bundle_build_model 一次性构建 Bundle 模型
  • 使用 bundle_save_model 保存 bundle_sample.om
  • 通过 acl.mdl.bundle_load_from_file 加载 Bundle,并逐个执行子模型