关于人工智能:MegCC-新版本来啦新增-Benchmark-等工具性能大幅提升有奖征文活动同步启动

41次阅读

共计 2009 个字符,预计需要花费 6 分钟才能阅读完成。

最新版 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 性能可视化的性能,用于模型性能瓶颈剖析;
  3. Benchmark 反对了模型推理数据可视化的性能,用于纵览不同设施上的模型推理性能。

    二、MegCC Kernel 导出工具 – Kernel_exporter

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

  4. Kernel 导出工具目前有两种用法,一种是应用默认参数导出 Kernel,一种是用户交互式给定局部要害参数导出定制化的 Kernel。
  5. 默认参数用法:

    ./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 优化,大大晋升了推理时 3×3 卷积的计算性能;
  5. 新增了局部 Kernel 启发式抉择算子的性能,用于保障有多个 Kernel 可用时,抉择到适合的 Kernel。

b. 优化后的模型性能:

上图中局部模型 MegCC 稍微慢于 MegEngine 的起因是: MegEngine 有欠缺的算法搜寻逻辑,局部场景选出来的算法优于 MegCC,后续版本的 MegCC 会补齐这部分工作。

MegCC 新版本次要对推理根底性能进行欠缺优化,提供 Benchmark,Kernel_exporter 等周边工具,不便用户获取推理性能以及推理模型中的 Kenrel 代码,继续优化 Kernel 性能,感兴趣的小伙伴赶快来试用啦!

附:

更多 MegEngine 信息获取,您能够:查看文档、和 GitHub 我的项目,或退出 MegEngine 用户交换 QQ 群:1029741705。欢送参加 MegEngine 社区奉献,成为 Awesome MegEngineer,荣誉证书、定制礼品享不停。

正文完
 0