Skip to content

【内存分配优化、性能优化、Bugfix】2.7.0

Compare
Choose a tag to compare
@jxt1234 jxt1234 released this 04 Sep 08:37
· 84 commits to master since this release
9e3cc72

1. 新特性

  • 新增LayerNorm int8量化算子支持:
  • CUDA 后端 新增 TopKV2 算子支持
  • 新增 DeferAllocator ,支持延迟分配内存,默认在 CPU Backend 中启用,内部模型测试平均降低内存占用 19.13%
  • OpenCL Buffer 模式新增Range/Select/Cast/ArgMax 等算子支持
  • OpenCL支持用户设置platform_id/device_id/platform_num接口,以选择显卡核心,并支持默认优先选用独显(NVIDIA/AMD独显)
  • 优化 OpenCL 后端内存分配逻辑,降低ChatGLM模型的内存占用

2. 性能优化

  • OpenCL优化Mali-GPU计算量大的卷积运算(image/buffer存储混用)。性能提升10%-20%。

  • CPU浮点模型优化Winograd卷积的准入条件、1x1Strassen算法。性能提高3%~18%。

  • CPU量化模型优化WinogradInt8、DepthwiseInt8。性能提高4%~22%。

  • CUDA优化广播Binary算子性能、Blit算子性能。

  • CUDA支持编译CodeGen功能,针对Unary/Raster/Binary算子进行算子在线融合,整体性能提升5%-10%。

3. Bugfix

3.1 关联 Github Issue 解决

  • Tflite FC + Relu 情况下模型转换到 MNN 未正确解析 Relu #2332
  • Onnx 模型中FP16 常量 转换到 MNN 时不支持#2477
  • Onnx 新的 LayerNorm 算子不支持(目前采用效率较低的算子组合实现)#2509
  • Vulkan Image 模式部分情形下计算错误#2433
  • Yolov8 MNN CUDA 推理出错 #2428
  • OpenCL Codegen 部分 case 下出现编译错误 #2523

3.2 其他 Bugfix 或优化

  • 修正 Vulkan Buffer 模式单元测试 convolution3d 出错的问题
  • 修正 ScatterND 算子在 update tensor 长度为空的计算错误问题
  • 修正 Onnx EinSum 算子在部分情况下转换到 MNN 出错的问题
  • 修正 Onnx Split 算子转换问题
  • 支持 Onnx 的 GEMM + Relu 算子的合并