V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MegEngineBot
V2EX  ›  推广

MegCC 新版本来啦!新增 Benchmark 等工具,性能大幅提升!

  •  
  •   MegEngineBot · 2023-02-07 10:03:20 +08:00 · 647 次点击
    这是一个创建于 692 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最新版 MegCC 新鲜出炉,新工具,新体验,本次版本针对用户使用体验以及模型推理性能进行全面提升,主要的提升包括:

    1. 新增 Benchmark 工具, 用于用于快速 Benchmark 常用模型的推理性能并可视化;
    2. 新增 Kernel C 代码导出工具,方便用户定制化获取算子 Kernel , 方便迁移与复用;
    3. 优化 NN Kernel 性能, 保持推理 SDK 性能先进;
    4. 支持第三方 NPU loader ,方便 NPU 相关应用迁移。 下面展开介绍下最新版 MegCC 的新功能以及新特点:

    一、MegCC Benchmark

    新版 MegCC 支持了基础的 Benchmark 模块用于测试各类模型的推理性能,获取推理时各个 Kernel 的性能数据,分析模型性能瓶颈。

    1. 目前 Benchmark 支持的模型有:effecientnetb0 、resnet18 、resnet50 、vgg11 、vgg16 、shufflenetv2 、mobilenetv2 ,模型主要的格式为 ONNX 格式,通过 MgeConvert 转换为 MegEngine 的格式作为 MegCC 对 ONNX 格式的间接支持,有关 MgeCovnert 的更多内容请参考:https://github.com/MegEngine/mgeconvert
    2. 新增的 Benchmark 可以支持模型中各个 Kernel 的性能数据的获取,Bechmark 新增了 Kernel 性能可视化的功能,用于模型性能瓶颈分析; 1.png
    3. Benchmark 支持了模型推理数据可视化的功能,用于纵览不同设备上的模型推理性能。 2.png

    二、MegCC Kernel 导出工具 - Kernel_exporter

    MegCC 新增了 Kernel C 代码导出的工具 Kernel_exporter ,用户可以通过设置所需 Kenrel 的属性,导出所需 Kernel 的 C 代码,便于进一步的移植与复用。

    1. Kernel 导出工具目前有两种用法,一种是使用默认参数导出 Kernel ,一种是用户交互式给定部分关键参数导出定制化的 Kernel 。
    • 默认参数用法:
    ./kernel_exporter --arch <arch_type> --kernel <kernel_type> --use_default_attr
    
    • 交互式用法:
    ./kernel_exporter --arch <arch_type> --kernel <kernel_type>
    

    arch_type 和 kernel_type 的具体参数,可以通过 --help 查看, 目前支持的 Kernel 包括:

    ArgSortKernel           ArgmaxKernel                BatchMatmulKernel       CVTransposeKernel
    ConcatKernel            ConvBackDataKernel          ConvKernel              CvtColorKernel
    ElemwiseKernel          ElemwiseMultiKernel         FlipKernel              IndexingMultiAxisKernel
    IndexingOneHotKernel    MatrixInvKernel             MatrixMulKernel         PoolingKernel
    PowCKernel              ReduceKernel                RelayoutKernel          ResizeKernel
    RoiCopyKernel           RotateKernel                TopK                    TypeCvtKernel
    WarpAffineKernel        WarpPerspectiveKernel
    
    1. 导出的 Kernel C 代码会在工具使用的当前目录下面。

    三、性能优化

    a. 在初版的基础上,MegCC 对现有的 Kernel 进行了一系列优化,主要包括:

    1. 支持编译时多个 elemwise fuse 的功能,fuse 后的 elemwise 性能更优;
    2. 支持 General Instrinsic MAX 、MIN 的 Kernel 实现,有效提升有大量 MAX MIN 算子模型的推理性能;
    3. 使用汇编优化 arm64 的 sigmoid ,降低 sigmoid 对模型推理性能的束缚;
    4. 新增 conv3x3 winograd 优化,大大提升了推理时 3x3 卷积的计算性能;
    5. 新增了部分 Kernel 启发式选择算子的功能,用于保证有多个 Kernel 可用时,选择到合适的 Kernel 。

    b. 优化后的模型性能: 上图中部分模型 MegCC 略微慢于 MegEngine 的原因是: MegEngine 有完善的算法搜索逻辑,部分场景选出来的算法优于 MegCC , 后续版本的 MegCC 会补齐这部分工作。

    MegCC 新版本主要对推理基础功能进行完善优化,提供 Benchmark,Kernel_exporter 等周边工具,方便用户获取推理性能以及推理模型中的 Kenrel 代码,持续优化 Kernel 性能,感兴趣的小伙伴赶快来试用啦!

    附:

    更多 MegEngine 信息获取,您可以:查看文档、和 GitHub 项目。欢迎参与 MegEngine 社区贡献,成为 Awesome MegEngineer,荣誉证书、定制礼品享不停。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1077 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:32 · PVG 03:32 · LAX 11:32 · JFK 14:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.