Release Note

模型、算子及多硬件、多框架支持

  • 加强多框架支持(通过 X2Paddle)
    • 新增onnx 模型支持
    • 扩展tensorlfow模型支持
    • 扩展caffe模型支持
  • 官方测试过的模型及框架支持如下
模型 paddle fluid caffe tensorflow onnx
mobilenetv1 Y Y Y
mobilenetv2 Y Y Y Y
resnet18 Y Y Y
resnet50 Y Y Y Y
mnasnet Y Y Y
efficientnet Y Y Y Y
squeezenetv1.1 Y Y Y
shufflenet Y Y Y
mobilenet_ssd Y Y Y
mobilenet_yolov3 Y Y
inceptionv4 Y
mtcnn Y Y Y
facedetection Y Y
unet Y Y Y
ocr_attention Y
vgg16 Y
  • IN8模型,增加支持Resnet50-INT8

  • ARM CPU 新增验证模型 5 个

    • 新增支持 Faster RCNN 模型
    • 新增支持 FaceDetection 模型
    • 新增支持 SSD_ShufflenetV2_FPN 模型
    • 新增支持 SSD_MobilenetV3_FPN 模型
    • 新增支持Yolov3_Int8模型
  • 华为NPU新增验证模型3个

    • 新增MobileNet V2, ShuffleNet V2和Unet模型的支持
    • 新增pad2d Op支持
  • 验证支持 树莓派 3B和RK3399开发板

  • 新增算子 36 个,以更好地支持更广模型及多种框架

    • affine_channel
    • anchor_generator
    • assign
    • assign_value
    • box_clip
    • elementwise_div
    • equal
    • expand
    • fake_quantize_range_abs_max
    • fill_constant_batch_size_like
    • flatten
    • flatten2
    • floor
    • fusion_elementwise_div_activation
    • generate_proposals
    • greater_equal
    • greater_than
    • hard_sigmoid
    • less_equal
    • logical_not
    • logical_or
    • matmul
    • mean
    • notequal
    • range
    • reduce_mean
    • relu6
    • roi_align
    • sequence_expand_as
    • squeeze
    • squeeze2
    • stack
    • uniform_random
    • unsqueeze
    • unsqueeze2

基础功能

  • model_optimize_tool 改成在 host 上执行——现在无需在 ARM (手机)上执行,直接在编译机上执行便可;功能和命令行参数不变

  • 新增支持 INT8 模型以 INT8 格式存储和载入,显著降低 APP 中模型体积

    优化前 optimize tool保存为INT8 格式后
    MobileNetV1_quant 17M 5.3M
    MobileNetV2_quant 15M 5.1M
    ResNet50_quant 100M 27M
  • 新增内存优化能力

    • 原理:在模型预测期间,Op的输出Tenso若在生存期上没有重叠,可复用一块内存,从而可以降低模型预测期间的整体内存占用。
    • 效果:batch 为1 的情况下对模型的的内存占用测试如下
    模型 内存复用效果(memory/original)
    Mobilentev1 78%
    Mobilenetv2 67%
    Resnet50 82%
    Mobilenetv1_int8 82%
    Mobillenet_SSD 71%
  • 新增版本信息输出功能

    • 增加接口
      • C++ API在PaddlePredictor中增加std::string GetVersion()接口用于返回当前lib使用的代码版本。
      • Java API在PaddlePredictor中增加public String getVersion()接口用于返回当前lib使用的代码版本。
      • 详细信息可以参考 C++ API 文档Java API文档
    • 返回值说明
      • 若编译当前lib的代码有相关tag,则返回tag
      • 若编译当前lib的代码没有相关tag,则返回branch(commitid)

编译

  • 新增tiny_publish 编译模式下输出 Android C++ 动态链接库
    • 编译时选择--arm_os=android可编译出Android C++动态链接库文件
    • 动态链接库位置(以armv8为例): Paddle-Lit/build.lite.android.armv8.gcc/inference_lite_lib.android.armv8/cxx/lib
    • 动态链接库文件:
      • libpaddle_light_api_shared.so : 只包含包含light_api接口
      • libpaddle_full_api_shared.so : 包含所有功能, light_api接口和full_api接口
    • 编译说明:
      • tiny_publish只编译出 libpaddle_light_api_shared.so 文件
      • full_publish编译出 libpaddle_light_api_shared.so和libpaddle_full_api_shared.so
  • 支持编译发布 FPGA 预测包
  • 修复ARM Linux编译问题,新增Ubuntu Host端交叉编译和开发板本地编译,具体参见源码编译指南

文档

DEMO

  • Paddle-Lite-Demo仓库: https://github.com/PaddlePaddle/Paddle-Lite-Demo
  • 新增ios/Android mobilenetv1-ssd 检测demo
  • Android新增支持NPU的、基于Light API的图像分类demo,并提供预编译的、支持NPU和CPU的Light API jni库

Bugfix

  • 修复 model_optimize_tool 优化 attention 模型出错及优化后不能运行的问题
  • 修复 clang编译bug
  • 修复PriorBox op中存在的bug
  • 修复编译脚本,取消默认编译单测
  • 修改kernel的相关冗余代码及计算bug

附件

with_extrabuild_extra 后缀的表示全量算子(一百多个,体积稍大),否则表示核心库,只包含核心模型所需算子,部署体积更小。

android

ios

model_optimize_tool

FPGA armlinux

项目简介

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 %