2.5.0
alibaba/MNN2.5.0Apr 27, 2023by github-actions[bot]
AI Summary
MNN 2.5.0 adds extensive new OpenCV operators, Tflite int8 quantization support, CUDA bf16 support, and significant performance optimizations using Intel subgroup extensions.
Key Highlights
- MNN OpenCV新增算子: erode、convertMaps、remap、adaptiveThreshold、bilateralFilter、solve、normalize、split、merge、addWeight
- Tflite int8量化模型转换到MNN支持
- ARM CPU支持GELU-bf16
- CUDA新增算子: GridSampler、Multi-Input Convolution、Multi-Input Deconvolution
- CUDA多卡推理支持设置device_id
- 支持Deconvolution-int8
- runSession函数加锁避免多线程调用出错
- 支持非拓扑序ONNX模型转换
- 支持ONNX多版本Softmax转换
- Intel subgroup扩展优化Winograd算子(ResNet18优于OpenVINO)
- CUDA Argmax/Softmax/MatMul性能优化(ChatGLM在A10显卡优于Pytorch 2.0)
- GELU-bf16实现后性能提升
New Features
- OpenCV算子(erode/convertMaps/remap/adaptiveThreshold/bilateralFilter/solve/normalize/split/merge/addWeight)
- Tflite int8量化转换
- ARM GELU-bf16
- CUDA算子(GridSampler/Multi-Input Conv/Deconv)
- CUDA多卡device_id设置
- Deconvolution-int8
- 非拓扑序ONNX支持
- ONNX多版本Softmax支持
- Intel subgroup优化
- CUDA性能优化
Full Release Notes
# 1. 新特性 - MNN OpenCV新增算子: - erode - convertMaps - remap - adaptiveThreshold - bilateralFilter - solve (MNN numpy新增solve) - normalize - split - merge - addWeight - 支持Tflite int8量化模型转换到MNN模型; - ARM CPU支持GELU-bf16 - CUDA 新增算子: - GridSampler - Multi-Input Convolution - Multi-Input Deconvolution - CUDA针对多卡推理,支持用户设置运行device_id - 支持Deconvolution-int8 - runSession/runSessionWithCallBack函数加锁,避免多线程调用出错 - 支持非拓扑序ONNX模型转换 - 支持ONNX多版本Softmax转换 # 2. 重构/优化 - 优化内存分配与回收时机,新增Session - 简化ONNX Slice算子模型转换 - Cuda性能优化 - Argmax针对dim size较大的情况性能优化 - Softmax在channel较大时性能优化 - MatMul算子预重排逻辑优化 - 优化后ChatGLM模型在A10显卡上性能优于Pytorch 2.0 - OpenCL优化,resnet测试优于OpenVINO - 使用intel subgroup扩展优化winogard算子,调整数据排布格式与准入条件 - 根据输入尺寸调整conv2d算子的数据排布格式,使用intel subgroup扩展优化 - 优化后ResNet18模型在intel UHD Graphics 630显卡上性能优于OpenVINO - GELU-bf16实现后性能提升 # 3. Bugfix ## 3.1 关联 Github Issue 解决 - 修复CPURaster 的 singleConvert 部分情况出错 [issue-2264](https://github.com/alibaba/MNN/issues/2264) - 修复atan2计算错误的问题 - 修复ONNX dynamic shape转换出错的问题 [issue-2276](https://github.com/alibaba/MNN/issues/2276) - 修复i8mm时Im2col出错的问题 - 修复CPUConvolutionDepthwise错误的问题 [issue-2291](https://github.com/alibaba/MNN/issues/2291) - 修复CUDA int8编译失败的问题 [issue-2321](https://github.com/alibaba/MNN/issues/2321) - 修复Onnx Loop 算子的 M 和 cond 为optional 时,转换失败的问题 [issue-2267](https://github.com/alibaba/MNN/issues/2267) - 修复Raster中fastblit 中turnPackRegion 部分情况下出错的问题 [issue-2337](https://github.com/alibaba/MNN/issues/2337) ## 3.2 其他 Bugfix - 修复 onnx 子图中 identity 被优化导致 输出数和原始子图不一致的问题 - 修复 Onnx sequense 相关算子转换问题 - 修复 TensorArrayConcat 计算 newAxis = 1 时的问题(此时为 stack) - 修复 TensorArray 计算 eleSize 时,axis < 0 时计算出错的问题 - 修复低精度计算或者 GPU 无法运行 mnn 训练模型的问题