HighLight
- MegEngine Lite 是模型直达SDK的解决方案,充分发挥 MegEngine 的高效,多平台的推理能力,为用户提供简洁、易用的 C++、C、python 多种模型推理接口,同时 MegEngine Lite 也可以接入其他的推理框架,便于业务集成。
- 尝鲜体验通道如下,请参考使用指南
python3 -m pip install megengine==1.6.0rc1 -f https://megengine.org.cn/whl/mge.html
Known Issue
由于对fastrun fp16 的特殊 case 加了一些判断,AMP 整体性能有10%左右的下降。
Bug Fixes
Python API
- 解决 LSQ 量化算子初始化格式错误问题。
- 当自定义求导 Function 的 forward 输入为非 Tensor 参数时,修改报错信息更可读。
- 原报错信息:RuntimeError: can not find op_trait by GenericPyOp .
- 现报错信息:TypeError: op GenericPyOp expect type Tensor as inputs, got int actually
- 修复 module 通过 setattr 自动命名时,对同一个实例多次设置到相同属性会误报错误信息的问题。
- 修复 is_single_machine 可能导致自定义 launcher 报错的检查逻辑。
- 修复报错信息 ,输出 device 逻辑名称和物理名称的完整信息,以便于 debug 因为 device 不一致的计算问题。
- 原报错信息:RuntimeError: ambiguous device: cpu0:0 vs cpu0:0 .
- 现报错信息:RuntimeError: ambiguous device: CompNode("cpu0:0" from "xpux:0") vs CompNode("cpu0:0" from "cpux:0") .
通用组件
- 修复从 vs code terminal 无法构建 macos 的 wheel 包的问题。
- 统一lb_memory在环境变量、python 、C++ 里的单位为MB,解决 int 类型参数较大时溢出的问题。
- 将 span dist too large 从 warning 降级成 deug log,避免展示一堆无用的 warning。
- 修复开启 DTR 时由于重算链过长导致递归栈溢出的问题。
- 修复 fp16 midout 编译失败的问题。
- 修复 python fastrun 错误,确保读取cache的正确性
CUDA
- 修复 cutlass 链接时候 crash。
- 修复设置了环境变量 CUDA_CACHE_PATH 但仍然报相关警告信息的问题。
- 缩短 cutlass 文件名以修复在 windows 上的编译错误。
- 修复 cutlass cmake 编译依赖。
第三方硬件
- 增加第三方的 loader 读模型失败后报错功能,避免返回 null ptr 导致后续程序崩溃。
发版流程
- 修复图手术中 replace opr 错误导致输出名字被改动的问题。
周边工具
- 修复 windows 编译准备脚本。
- 在 hub 缓存的模型中加入 MegEngine 版本信息,以解决当 MegEngine 版本更新之后,若有 breaking change,而用户的 ~/.cache/megengine/hub 中还是老代码,则可能在使用 megengine.hub.load 时因 API 版本不同出现兼容性问题。
- 修复静态内存分析的工具中统计 GPU 静态内存分配信息的错误。
New Features
Python API
- interpolate 支持 nearest 和 bilinear 模式
- 增加 conv_transpose2d 的量化 module 。
- 增加 cumsum 算子,行为和 pytorch 一致。和 MegDL 差别如下。
- axis 必须指定,而不是不指定就偷偷帮你 flatten
- 没有暴露 exclusive 和 reverse 这两个参数
- 增加 Reduce OPR 对空 Tensor 支持。具体行为如下。
- sum: => 0
- mean: => nan
- prod: => 1
- min: 报异常
- max: 报异常
- sum_sqr: 报异常
混合精度训练
- 修改添加 weight_scaler/bias_scaler 的方式,从需要手动在模型内添加改为通过接口 get_scaled_model 实现自动添加。
CUDA
- 添加 tensorcore fp16 matmul 算法。
通用组件
- 新增加环境变量 MGB_REGISTER_SEGV_HANDLER (默认关闭)。该环境变量打开时,MegEngine 只打印自己的堆栈, 而默认不注册 SEGV signal。