v2.7-beta

框架升级

  • 升级执行期模型数据结构,显著提升移动端预测初始化速度,同时也降低了模型存储体积

  • 移动端模型存储格式从自建格式 NaiveBuffer 修改为 flatbuffers

  • 执行期内存消耗最高降低60%

    • 优化内存消耗过大算子(#3949
    • 删除内存中冗余ProgramDesc结构(#3976#3984
    • Tensor内存改为动态按需分配(#3948
    • 优化内存复用方法(#4246)
  • 移动端模型体积裁剪

    • opt工具删除模型中的冗余信息(#4042#4052
    • opt转化前采用动态离线量化方法,模型权重压缩为Int8或者Int16,模型体积可以至少减少50%,提升量化模型加载的速度#4308
  • 增强精度 profile 工具,可以通过环境变量控制是否将每层 op 的 output tensor 结果写入到手机目录文件中,方便精度调试 PR4255

  • MobileConfig::SetArmL3CacheSize :补充四种设置ARM CPU 下 L3 Cache 初始内存大小的方法 (#4402)

enum class L3CacheSetMethod {
  kDeviceL3Cache = 0, // Use the system L3 Cache size, best performance.
  kDeviceL2Cache = 1, // Use the system L2 Cache size, trade off performance
                      // with less memory consumption.
  kAbsolute = 2,      // Use the external setting.
};
struct MobileConfig {
  // ...
  // danger area
  void
  SetArmL3CacheSize(L3CacheSetMethod method = L3CacheSetMethod::kDeviceL3Cache,
                    int absolute_val) {}
  // ...
};
  • 支持gcn模型:#4444
  • 支持车牌识别OCR模型: #4205

文档更新

性能增强

  • 在V7架构上,针对a53 arch 增加6x8gemm优化,提高模型在低端机的性能
  • 优化prior box/boxcoder 实现,提高检测模型的性能PR4107
  • 添加pass,对于出度为1的reshape op启用memory optimize,在减少内存使用的同时提高性能PR4073
  • 添加FP32 的conv+conv融合实现,提高模型性能
  • 框架优化:将InferShape方法优化为InferShapeWithCache,降低InferShape执行次数,提高运行速度 (#4416#4294
  • 在框架上,优化内存,提高模型速度,减少APP中大帧出现的概率

硬件模型支持

  • 新增比特大陆BM1684(FP32)支持,支持模型同BM1682
  • 支持gcn模型:#4444
  • 支持车牌识别OCR模型: #4205

Bug fix

  • 修复v7-clang 下不对称padding的conv_3x3s1_dw的计算精度, PR4373
  • OpenCL tensor 内存分配:修复 OpenCL 模型在开启内存优化后多次 Run 计算结果有误问题 PR4410
  • OpenCL OP:修复 dropout, depthwise_conv2d_3x3 (dilation > 1), concat (axis 不等于 1), 分组 conv3x3 在骁龙 625 上结果错误问题 PR4253 PR4281 PR4241 PR4236
  • Pass:修复 OpenCL 模型转换时类型推导错误的问题 PR4425
  • 修复x86平台初始化过程线程不安全问题 #4014
  • 修复动态离线量化模型进行conv+conv融合的错误#4292

项目简介

Multi-platform high performance deep learning inference engine (『飞桨』多平台高性能深度学习预测引擎)

发行版本 20

v2.7-beta

全部发行版

贡献者 87

全部贡献者

开发语言

  • C++ 82.3 %
  • Swift 4.1 %
  • CMake 3.0 %
  • Metal 2.6 %
  • C 2.3 %