MegCC 新版本来啦!新增 Benchmark 等工具,性能大幅提升! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
pro/about
MegEngineBot

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

  •  
  •   MegEngineBot 2023 年 2 月 7 日 1184 次点击
    这是一个创建于 1174 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最新版 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 MgEngineer,荣誉证书、定制礼品享不停。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     943 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 19:03 PVG 03:03 LAX 12:03 JFK 15:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86