文档

什么是Deepytorch Inference(推理加速)

更新时间:

Deepytorch Inference是阿里云自研的AI推理加速器,专注于为Torch模型提供高性能的推理加速。通过对模型的计算图进行切割、执行层融合以及高性能OP的实现,大幅度提升PyTorch的推理性能。本文介绍Deepytorch Inference在推理加速方面的概念、优势及模型支持情况。

Deepytorch Inference介绍

Deepytorch Inference作为阿里云自研的AI加速器,提供了推理加速能力。针对PyTorch框架下的深度学习模型,在无需指定精度和输入尺寸的情况下,通过即时编译技术对该模型进行推理优化,从而实现高效、快速的推理加速效果。

Deepytorch Inference的架构图如下所示:

image

架构层

说明

框架层

  • Pytorch Framework:即PyTorch框架组件,用于接入客户的模型。

  • Pytorch Custom Ops:其他第三方PyTorch算子,该算子不会被优化,而是保留在框架层中。

Deepytorch Inference推理加速

Deepytorch Inference组件

  • Torchscript Graph Optimization PipeLines:Torchscript上的图形优化工具以及算子融合技术。

  • Environment Manager:用于控制Deepytorch Inference的执行功能和优化等级。

  • Deepytorch Engine:核心执行Engine。包括一些关键组件,例如Build Helper Ops、Operation Parser、Shape Tracker、Accuracy Checker以及Engine Rebuilder等。

算子层

  • High Perference Kernel Libs: 高性能算子库,用于提供高性能功能。

  • Custom Plugins:其他功能性的算子实现。

产品优势

  • 推理性能显著提升

    Deepytorch Inference通过编译加速的方式减少模型推理的延迟,从而提高模型的实时性和响应速度。能显著提升模型的推理加速性能。

    例如,不同模型下的推理性能对比如下:

    说明

    下列数据以A10单卡机器下的推理性能数据为例,相比模型默认的原配置推理功能,使用Deepytorch Inference进行模型推理优化,其推理性能显著提升。

    model

    input-size

    deepytorch inference (ms)

    pytorch float (ms)

    Inference speed increase

    source

    Resnet50

    1 x 3 x 224 x 224

    0.47

    2.92

    84%

    torchvision

    Mobilenet-v2-100

    1 x 3 x 224 x 224

    0.24

    2.01

    88%

    torchvision

    SRGAN-X4

    1 x 3 x 272 x 480

    23.07

    132.00

    83%

    SRGAN

    YOLO-V3

    1 x 3 x 640 x 640

    3.87

    15.70

    75%

    yolov3

    Bert-base-uncased

    1 x 128, 1 x 128

    0.94

    3.76

    75%

    transformers

    Bert-large-uncased

    1 x 128, 1 x 128

    1.33

    7.11

    81%

    transformers

    GPT2

    1 x 128

    1.49

    3.82

    71%

    transformers

  • 易用性好

    Deepytorch Inference无需您指定精度和输入尺寸,通过即时编译的方式,提供较好的易用性,代码侵入量较少,从而降低代码复杂度和维护成本。

模型支持情况

目前支持在部分模型上进行Deepytorch Inference(推理加速)优化,模型支持情况如下:

支持推理加速的模型

场景

支持的模型名称

视觉场景

  • alexnet

  • dcgan

  • mnasnet1_0

  • mobilenet_v2

  • mobilenet_v3_large

  • pytorch_stargan

  • resnet18

  • resnet50

  • resnext50_32x4d

  • shufflenet_v2_x1_0

  • squeezenet1_1

  • timm_efficientnet

  • timm_nfnet

  • timm_regnet

  • timm_resnest

  • timm_vision_transformer

  • timm_vovnet

  • vgg16

  • SRGAN-X4

  • YOLO-V3

NLP场景

  • BERT_pytorch

  • attention_is_all_you_need_pytorch

  • GPT2

  • bert-base-uncased

  • bert-large-uncased

不支持推理加速的模型

  • 由于Weight demodulation会根据输入动态生成weight,因此不支持例如StyleGan2模型中的Weight demodulation操作。

  • 不支持存在动态设置属性(Attribute)的模型。例如torchvision.models.detection中的fasterrcnn_resnet50_fpn模型,此类模型在执行torch.jit.freeze时会出现错误。

  • 不支持例如demucs模型中的conv1d算子。

相关文档