Python Pass[v1]
【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge
功能描述
本目录提供pattern_base_pass/3_fuse_matmul_add_pass_with_pattern_matcher_config的纯 Python版本示例,逻辑与 C++FuseMatMulAndAddPass一致。
- 在构造函数中启用:
PatternMatcherConfigBuilder().enable_const_value_match()PatternMatcherConfigBuilder().enable_ir_attr_match()
Patterns定义MatMul(x, y, transpose_x1=False, transpose_x2=False) + Add(Const)拓扑。Replacement定义GEMM(x, y, Const, alpha=1, beta=1)。- 注册阶段为
PassStage.BEFORE_INFER_SHAPE。
前置条件
- 已 source CANN 环境(
source ${ASCEND_PATH}/set_env.sh) - 临时要求:run 包编译时使用的 Python 版本,需要与执行 sample 的 Python 版本保持一致
- 环境变量设置请参考 C++ 版本 README 的程序编译
- 可导入 GE Python 包(含
ge.passes与 pass 加载链路)
run 包已包含 GE Python 运行时所需的ge_pywheel,本节不需要再单独安装ge_py-*.whl。
使用方式
- 通过环境变量让 GE 在编译期加载该 Python pass(在
3_fuse_matmul_add_pass_with_pattern_matcher_config/python目录下时):
export ASCEND_GE_PY_PASS_PATH=$PWD/python/src/python_fuse_matmul_add_pass.py复用 C++ pass 样例 程序运行 中的模型生成、ATC 离线编译或在线推理步骤。
说明:
- 该 sample 不是独立执行脚本,直接运行
python python/src/python_fuse_matmul_add_pass.py不会触发 pass 执行 - 预期输出会在 GE 编译流程真正加载该 Python pass 后打印
预期日志
在匹配与替换发生时,日志中会出现类似输出:
Define pattern for MatmulAddFusionPass in matcher config sample Define replacement for MatmulAddFusionPass in matcher config sample对于es_forward_2.py与es_forward_3.py这类故意构造的未命中场景,通常仅看到 pattern 定义日志而不会进入 replacement。
【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考