昇腾社区首页
中文
注册
开发者
下载

什么是GE图引擎

什么是GE图引擎

图引擎(Graph Engine,简称GE)是昇腾平台计算图编译和运行的控制中心,提供了图构建、图编译优化及图执行控制等功能。借助GE图引擎能力,PyTorch、TensorFlow、MindSpore、PaddlePaddle等主流AI框架的算法模型可以统一转换为使用Ascend IR(Ascend Intermediate Representation)表示的计算图(Ascend Graph),并通过GE的图编译加速技术,显著提升计算图在昇腾硬件上的执行效率。此外,GE还提供统一的图开发接口,支持自定义图结构,帮助用户基于昇腾硬件快速部署神经网络业务。

图1 GE逻辑架构图

GE图编译加速技术

当前主流的深度学习框架提供了Eager(Eager Execution,即时执行)模式和图模式的运行方式。Eager模式的特点是每个计算操作下发后立即执行,而图模式则是将所有计算操作构造成一张图,以图的形式下发执行。相较于单个计算操作依次下发的方式,图模式具备图的全局视角,能够更有效地简化和优化计算图操作,从而获得更优执行性能。

GE作为专门面向图模式的AI编译器,通过计算图优化、多流并行、内存复用和模型下沉等丰富的图编译加速技术,可有效减少Host与Device调度交互,减少模型内存占用,提升整图执行性能,加速模型在昇腾执行效率。关于GE关键技术的详细介绍,开发者可访问如下链接获取:

GE的开放能力

  • 面向上层AI框架对接和业务部署场景:GE提供了统一的图开发接口,支持对接上层基于图的开放框架,目前已适配PyTorch(TorchAir图模式)、TensorFlow、MindSpore、PaddlePaddle等主流AI框架;同时支持自定义图结构,帮助用户在昇腾硬件上高效部署神经网络业务。
  • 面向AI模型整图编译和运行优化场景:GE开放了图编译优化和图执行能力,支持自定义图融合等功能,使能用户定制高性能图解决方案。

GE使用入口

GE面向不同的用户场景,提供了不同的对接方案,便于用户更加便捷地使用GE图引擎能力。

表1 GE图引擎使用入口

使用入口

GE提供的对接方案

参考文档

onnx/pb等模型图模式执行

GE提供ATC命令行工具或者C++语言的Parser接口,支持将PyTorch和TensorFlow等框架导出的模型(*.onnx/*.pb/*.air格式)转换为适配AI处理器的离线模型(*.om格式),并基于图模式执行。

在PyTorch等AI框架内使用GE图模式

对于PyTorch、TensorFlow、MindSpore、PaddlePaddle等主流AI框架,目前已支持接入GE,用户仅需对训练代码进行少量的迁移适配即可使用GE图引擎能力,从而在AI处理器加速执行训练或在线推理任务。

PyTorch框架接入GE

TensorFlow框架接入GE

MindSpore框架接入GE

飞桨(PaddlePaddle)框架接入GE

对于其他三方框架,GE提供了统一的C++图引擎接口支持用户自行完成适配动作。

使用图引擎接口全新构建Graph

使用图引擎接口全新构建网络

GE提供了统一的C++图引擎接口支持用户自定义图结构,并在AI处理器基于图引擎执行。

GE提供了一套函数风格的极简构图API,可以使用更少的代码量来构图,提升构图易用性的同时兼顾了一定的防呆能力

ES构图

  • PyTorch框架接入GE
    PyTorch网络支持通过Ascend Extension for PyTorch的TorchAir组件接入GE图引擎。TorchAir(Torch Ascend Intermediate Representation)是Ascend Extension for PyTorch(torch_npu)中支持图模式能力的扩展库,对接PyTorch的Dynamo特性,可将PyTorch的FX(Functionalization)图转换为Ascend IR(Intermediate Representation)表达的计算图,再通过GE进行计算图的编译优化等操作,下发到昇腾硬件执行。
    图2 昇腾平台PyTorch图模式软件架构

    TorchAir提供的昇腾编译后端能够作为参数传入PyTorch的torch.compile接口中,从而使能图模式执行,示例如下:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    # 先导入torch_npu,再导入torchair
    import torch
    import torch_npu
    import torchair
    
    # 定义模型Model
    class Model(torch.nn.Module):
        def __init__(self):
            super().__init__()
        def forward(self, x, y):
            return torch.add(x, y)
    
    # 实例化模型model
    model = Model()
    
    # 从TorchAir获取NPU提供的默认backend
    config = torchair.CompilerConfig()
    npu_backend = torchair.get_npu_backend(compiler_config=config)
    
    # 使用TorchAir的backend调用compile接口编译模型
    opt_model = torch.compile(model, backend=npu_backend)
    
    # 执行编译后的model
    x = torch.randn(2, 2)
    y = torch.randn(2, 2)
    opt_model(x, y)
    

    具体使用方法为:

    1. 将原始PyTorch网络迁移到昇腾平台,详细迁移过程请参见《PyTorch 训练模型迁移调优指南》
    2. 通过TorchAir使能图模型进行推理,详细配置方法具体请参见《PyTorch图模式使用指南(TorchAir)》
  • TensorFlow框架接入GE

    TensorFlow 1.15网络为图模式执行方式,支持通过TF Adapter接入GE图引擎,将前端TensorFlow模型转换为Ascend IR表达的计算图,再通过GE进行计算图的编译优化等操作,下发到昇腾硬件执行。TensorFlow 2.6.5网络的默认执行方式为Eager模式(即单算子模式),即每个计算操作下发后立即执行并返回。TensorFlow 2.6.5提供了tf.function装饰器,用于将python函数中调用的TF2运算封装成graph执行,获取性能收益。当前针对TensorFlow 2.6.5,昇腾平台仅支持tf.function修饰的函数算子在昇腾硬件加速执行,即仅支持图模式执行。

    图3 昇腾平台TensorFlow图模式软件架构

    将原始TensorFlow 1.15网络迁移到昇腾平台执行的详细使用方法请参见《TensorFlow 1.15模型迁移指南》

    将原始TensorFlow 2.6.5网络迁移到昇腾平台执行的详细使用方法请参见《TensorFlow 2.6.5模型迁移指南》

  • MindSpore框架接入GE

    MindSpore网络原生支持GE图引擎,用户可以直接基于MindSpore框架使用GE图引擎能力,详细使用方法请参见https://www.mindspore.cn/

  • 飞桨(PaddlePaddle)框架接入GE

    详细使用方法请参见《PaddlePaddle教程文档》