Skip to content

v2.0.0-beta

Compare
Choose a tag to compare
@Superjomn Superjomn released this 18 Aug 12:39
· 4153 commits to develop since this release

Release Note

Paddle-mobile 正式升级为 Paddle Lite ,重点加强了多平台多硬件的支持能力,提升了模型覆盖,并且对ARM CPU等硬件上的性能进行了重点优化。
核心能力已统一到Lite新架构上,后续的优化和升级也都会在新架构下进行。

原Paddle-mobile架构下的实现在 Mali GPU、Adreno GPU等诸多硬件场景下的表现已很出色,并有广泛应用。作为过渡,原架构下的主体代码暂在 mobile/ 目录中保留,后续一段时间会继续维护,并完成全部迁移。

苹果设备GPU的 metal 实现和前端 web 的模块目前相对独立,会继续在 metal/web/ 目录下开发和维护。

本版本重点功能升级如下:

  • 架构重大升级,通过添加 Machine IR, Type system, 轻量级 Operator 和 Kernel 等,增加了通用多平台和多硬件支持,多 precision 和 data layout 混合调度执行,动态优化,轻量级部署等重要特性

  • 完善了Java API,与 C++ API 一一对应

  • 新增 NaiveBuffer 模型存储格式,移动端部署与 protobuf 解耦,使预测库尺寸更小。

  • 通过X2Paddle 支持 Caffe 和 TensorFlow 模型的预测,目前官方验证 6 种模型转化支持,相关信息可参考 使用 X2Paddle 转换模型

  • 新增对华为海思 NPU 的深度支持,成为首个支持华为NPU在线编译的框架,已验证 MobileNet V1模型

  • 支持FPGA (ZU3、ZU5、ZU9),已验证 ResNet50 模型

  • Mali GPU 和 Adreno GPU,支持 OpenCL 和 ARM CPU Kernel混合调度,已验证如下模型:

    • MobileNetV1
    • MobileNetV2
    • ResNet50
  • ARM CPU ,增加官方模型覆盖,新增下列模型支持验证

    • OCR-attention model
    • vgg16
    • EfficientNet
    • mNasNet
    • UNet
    • ShuffleNet V1.1
    • ResNet18
    • MobileNet_SSD
    • mobileNet_YoloV3
    • mtcnn
  • ARM CPU 的 Int8 量化预测,支持 PaddleSlim 量化训练,精度相对离线量化更佳,新增以下模型支持验证

    • MobileNetV1
    • MobileNetV2
    • ResNet50
  • 更多相关模型(包含GoogleNet SqueezeNet等)及对应性能数据见 benchmark

  • 新增各类硬件 Kernel 70种,详细列表如下

    • nearest_interp: (arm/float)
    • fill_constant: (arm/float)
    • depthwise_conv2d: (opencl/float)
    • sigmoid: (arm/float)
    • argmax: (arm/float)
    • calib_once: (arm/int8,fpga/fp16)
    • layout: (fpga/any)
    • while: (arm/float)
    • crop: (arm/float)
    • shape: (arm/float)
    • fusion_elementwise_max_activation: (arm/float)
    • slice: (arm/float)
    • increment: (arm/float)
    • io_copy: (fpga/any,opencl/any)
    • io_copy_once: (fpga/any,opencl/any)
    • sequence_expand: (arm/float)
    • less_than: (arm/float)
    • gru_unit: (arm/float)
    • axpy: (arm/float)
    • write_to_array: (arm/float)
    • conv2d_transpose: (arm/float)
    • scale: (fpga/fp16)
    • fusion_elementwise_mul_activation: (arm/float)
    • log: (arm/float)
    • bilinear_interp: (arm/float)
    • decode_oxes: (arm/float)
    • yolo_box: (arm/float)
    • beam_search_decode: (arm/float)
    • negative: (arm/float)
    • relu: (opencl/float,fpga/fp16,npu/float)
    • elementwise_add: (opencl/float,fpga/fp16)
    • box_coder: (arm/float)
    • multiclass_nms: (arm/float)
    • fusion_elementwise_add_activation: (arm/float,opencl/float,fpga/fp16)
    • elementwise_max: (arm/float)
    • graph_op: (npu/float)
    • norm: (arm/float)
    • logical_xor: (arm/float)
    • top_k: (arm/float)
    • elementwise_mul: (arm/float)
    • power: (arm/float)
    • sequence_pool: (arm/float)
    • lrn: (arm/float)
    • leaky_relu: (arm/float)
    • is_empty: (arm/float)
    • fc: (opencl/float,fpga/fp16,npu/float)
    • im2sequence: (arm/float)
    • pool2d: (opencl/float,fpga/fp16,npu/float)
    • mul: (opencl/float, npu/float)
    • pad2d: (arm/float)
    • read_from_array: (arm/float)
    • beam_search: (arm/float)
    • lod_reset: (arm/float)
    • gru: (arm/float)
    • prelu: (arm/float)
    • layout_once: (fpga/any)
    • swish: (arm/float)
    • lookup_table: (arm/float)
    • relu_clipped: (arm/float)
    • tanh: (arm/float)
    • sequence_softmax: (arm/float)
    • calib: (fpga/fp16)
    • cast: (arm/float)
    • density_prior_box: (arm/float)
    • softmax: (fpga/fp16, npu/float)
    • shuffle_channel: (arm/float)
    • logical_and: (arm/float)
    • prior_box: (arm/float)
    • reduce_max: (arm/float)
    • conv2d: (opencl/float,fpga/fp16, npu/float)