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

CANN/ge Python Pass环境变量配置

ASCEND_GE_PY_PASS_PATH

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

产品支持情况

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

功能说明

ASCEND_GE_PY_PASS_PATH是 GE(Graph Engine)Python Pass 系统的路径发现环境变量,用于告诉 GE 引擎去哪些路径加载用户编写的 Python 融合 Pass 插件。

该环境变量控制的是一个完整的"发现-注册-执行"链路:

  1. GE 编译阶段启动 Pass 加载流程时,C++ 侧检查ASCEND_GE_PY_PASS_PATH是否已设置且非空。
  2. 若已设置,GE 通过 C++/Python bridge 将该环境变量同步到 Python 侧。
  3. Python 侧按路径扫描并加载用户编写的 Pass 模块。
  4. 模块加载过程中,用户通过@register_fusion_pass@register_decompose_pass等装饰器将 Pass 注册到 Python 注册表。
  5. 注册信息回传到 C++ 侧的 PassRegistry,在后续编译阶段由 GE Pass 调度框架统一执行。

当前阶段,ASCEND_GE_PY_PASS_PATH是 Python Pass 发现的主路径(而非兜底机制),后续版本将补充entry_points(group="ge.passes.plugins")自动发现机制。

取值格式

ASCEND_GE_PY_PASS_PATH=<path1>[:<path2>[:...]]
  • 多个路径之间以冒号(:)分隔。
  • 每个路径可以是.py文件或目录。
  • 路径建议使用绝对路径。

路径类型说明

路径类型扫描行为
单个.py文件直接作为 Python 模块加载
目录遍历其中不以_开头的.py文件作为模块加载;包含__init__.py的子目录作为 Python 包导入

设置环境变量

# 指向单个 Python 文件 export ASCEND_GE_PY_PASS_PATH=/path/to/my_pass.py # 指向目录(目录下所有 .py 文件和 Python 包都会被扫描) export ASCEND_GE_PY_PASS_PATH=/path/to/pass_dir/ # 支持多个路径,以冒号分隔 export ASCEND_GE_PY_PASS_PATH=/path/to/pass1.py:/path/to/pass_dir2/

使用示例

Python Pass 开发步骤请参考 Python 融合 Pass 开发指南。 完整样例请参考 examples/fusion_pass 目录,涵盖FusionBasePassPatternFusionPassDecomposePass等 Pass 的开发示例。

扫描规则详解

目录扫描规则

当路径指向目录时,bootstrap模块按以下规则扫描:

  1. 目录下以_开头的文件和子目录将被跳过。
  2. 非下划线开头的.py文件作为独立模块加载。
  3. 包含__init__.py的子目录作为 Python 包通过importlib.import_module()导入。
  4. 目录下的子目录按名称排序后依次扫描。

模块命名

每个通过文件路径加载的模块会被赋予一个内部名称,格式为_ge_py_pass_{stem}_{hash},不会与用户模块名称冲突。同一个文件路径不会被重复加载。

约束说明

  • 必须在 GE 初始化之前设置该环境变量。GE 在编译阶段首次加载 Pass 时读取该变量,运行过程中动态修改环境变量不会生效。
  • 路径指向的.py文件必须包含合法的 Python 代码,且应使用@register_fusion_pass@register_decompose_pass装饰器注册至少一个 Pass。未注册任何 Pass 的模块会被加载但不会产生效果。
  • 路径指向的目录必须存在,否则会在 Pass 加载阶段抛出FileNotFoundError
  • 文件路径必须以.py为后缀,否则会抛出ValueError
  • 环境变量值为空或不设置时,GE 将跳过 Python Pass 加载流程,不影响 C++ 自定义 Pass 的正常加载。
  • 同一个文件路径只会被加载一次,重复出现在多个路径段中不会导致重复注册。

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

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

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

相关文章:

  • 10个入门级Arduino项目:LittleArduinoProjects带你从0到1学电子
  • 如何快速上手Offix:从零开始构建离线优先的GraphQL应用
  • GFile vs 传统文件传输:为什么WebRTC是未来的选择
  • 对抗性攻击评估框架:run_attack.py脚本工作原理详解
  • Mongood:Fluent Design风格的MongoDB GUI,让数据库管理更优雅
  • 紫队演练框架PTEF:红蓝队协作提升威胁检测能力的实战教程 [特殊字符]
  • CANN/ge DataFlow简介
  • Xous图形服务器GAM:为嵌入式设备构建现代化UI框架
  • cookies-next完整指南:如何在Next.js应用中轻松管理Cookie
  • 为什么Flutter_thrio是Flutter混合开发的最佳选择?10大核心优势解析
  • Crossplane与CI/CD集成:实现自动化NGINX配置验证和部署的完整指南
  • HookLib²与Zydis disassembler集成:高性能指令解析的秘密
  • 10个Dev Proxy实用技巧:提升API弹性测试效率
  • new-component快速入门:5分钟掌握React组件脚手架工具
  • ReScript genType 在 CI/CD 中的集成:自动化类型生成与验证流程
  • MNIST数据集对抗性样本生成:pgd_attack.py源码解析
  • Frozen高级应用:如何在嵌入式系统中实现JSON配置文件的读写
  • 知网维普双重检测不用愁,paperxie 分层改写搞定论文重复与 AIGC 疑似率
  • 为什么选择cookies-next?Next.js Cookie管理库的10大优势解析
  • 5分钟快速上手:在Mac上轻松查看PDM数据库设计文件
  • Flask-profiler配置详解:从SQLite到MongoDB的存储方案选择
  • Pwn2Own2018漏洞深度剖析:3个核心漏洞如何突破macOS安全防线
  • python-inject源码解析:Injector类的设计与实现原理
  • NCSN与传统生成模型对比:为什么它能在MNIST/CelebA/CIFAR-10上表现卓越?
  • 企业微信扫码登录集成指南与实战
  • Crossplane部署最佳实践:企业级NGINX配置管理方案
  • KlakSpout实战:10个创意项目案例展示跨应用视频流应用
  • 警惕AI模型虚假信息:GPT-5.5并不存在的技术事实核查
  • GPT-4 Turbo如何重塑科研教学工作流:128k上下文与多模态协同实践
  • CSS Paint Polyfill vs 原生Houdini:性能对比与迁移策略