Highlights

  • 全新的 Imperative Runtime,通过重写动态执行引擎,将过去几个版本中动态图的限制打破,解决了一系列资源释放问题,并大幅提升了动态自由度,让使用 GPU 计算就像 NumPy 一样方便自如;在提高自由度的同时,配合更强的动静转换功能,让增强能力的动态训练代码仍然可以静态化训练,方便高效;提供了更强的 trace 能力,每次仍然运行 python 代码,让 trace 的启用更加顺畅透明;实现了更可靠的 dump 功能,提供验证功能,确保没有多余的分支逻辑被误记录到序列化格式中,让用户可以低成本的兼得动态训练与静态推理的好处。 midout 代码裁剪功能,让用户可以全自动的针对自己网络使用的算子进行代码裁剪,免除手工配置就能最小化推理时的代码体积,极大的提升端侧推理效率。
  • 一系列推理性能和功能优化。具体的推理优化包括代码编译速度优化、Winograd 算法优化提速、A7 / A55 / A53 等 ARM小核心GEMM的性能优化、NCHW44 下 8x8x16 channel-wise Conv和8x8x16 direct Conv 的性能优化、NCHW44 下 First Conv 的性能优化、修正了 Atlas H2D 拷贝时的问题、恢复对 CUDA9 的支持、添加了NCHW44下Winograd F(7,3) 实现、添加 cpuinfo 进行 CPU 架构的判断,让用户无需提前指定CPU架构、对框架代码进行了更细粒度的裁剪设计,配合midout功能,可以大幅度降低 binary size、Cmake 重构优化、修复了 shuffleShuffleRemovePass 在特定输入时的 segfault 问题。
  • 更多国产硬件支持:支持主流国产芯片和ROCm的接入,方便在国产 NPU 芯片上进行推理工作。
  • MLIR 的接入:接入了 MLIR 做为静态图 JIT fusing 引擎,对于连续的访存算子进行融合加速;利用 MLIR 做为工具,提高框架代码的可维护性。
  • 全新设计的 API,更加 Pythonic,控制更加清晰可靠。
  • 对 Windows / Mac 提供了原生支持,同时发布Linux / Windows / Mac 的 PYPI 安装包。
  • 尝鲜体验通道 pip3 install megengine==1.0.0rc1 -f https://megengine.org.cn/whl/mge.html -i https://pypi.douban.com/simple/

Improvements

  • 通过添加cuda pinned memory内存池减少cudaHostAlloc调用次数降低host端的开销提升性能。
  • 进一步优化A7/A53/A55等小核上int8和int8x8x16的性能。
  • 添加Winograd F(7,3),在一些网络有10%-30%性能提升(目前由于精度问题默认关闭)。
  • 优化单stream下cuda device 内存分配器性能。

Bug Fixes

  • 修复megengine 交叉编译。
  • 修复conv NCHW88在fastrun搜索winograd算法未正确设置format导致的问题。
  • 修复部分arm kernel内存越界问题。
  • 修复cpuinfo在uclibc下的编译问题。
  • 修复部分后端对于一些特殊的shape未优化导致选到naive算法的问题(通过optpass中将nchwxx → dimshuffle + nchw)。
  • 修复寒武纪编译问题。
  • 修复由于x86 im2col算法不支持非对称量化导致模型无法dump的问题。
  • 修复fastrun写cache时由于snprintf使用不对导致崩溃的问题。
  • 修复某些testcase在某些平台(EV300)爆栈导致无法执行的问题。
  • 修复相同group组相同名字的多机opr频繁注册导致的冲突。

项目简介

MegEngine 是一个快速、可拓展、易于使用且支持自动求导的深度学习框架

🚀 Github 镜像仓库 🚀

源项目地址

https://github.com/MegEngine/MegEngine

发行版本 37

MegEngine v1.13.1

全部发行版

贡献者 39

全部贡献者

开发语言

  • C++ 79.8 %
  • Cuda 13.8 %
  • Python 4.9 %
  • C 0.9 %
  • CMake 0.5 %