Skip to content

Releases: PaddlePaddle/Paddle-Lite

v2.0.0-beta

18 Aug 12:39
Compare
Choose a tag to compare

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)

PaddleMobile 1.5.0

02 Jul 10:28
d409d63
Compare
Choose a tag to compare

ARM CPU:
- 增加 64 位 gemm_int8 量化实现
- 增加 conv_relu、nearestinterp、leakyrelu、density_prior_box 等 op

Android GPU:
- 实现 Winograd 卷积实现,3 x 3 卷积在计算量较大时,性能提升2倍—30倍不等
- 增加 conv_relu、scale、reshape2、transpose2、split、relu6 等 GPU op
- cl_kernel文件编译,不同op动态添加宏控制

Metal:
- 支持WinoGrad算法。
- 添加内存复用算法,材质占用的内存体积可减少一半。
- 支持MPS及非MPS混排。
- 增强框架安全性(添加通用异常处理逻辑、添加多线程保护)。
- 新增OP,支持ShuffleNet。

Web 网页版:
- 建立Web版Paddle框架,支持MobileNet、Yolo等网络。
- 基于WebGL提供完整的GPGPU功能。

发布 Lite 新架构,整体加强 Paddle 预测库底层硬件的多硬件混合调度, 硬件开发扩展能力,设计要点如下

  • 引入 Type system,强化多硬件、量化方法、data layout 的混合调度能力
  • 硬件细节隔离,通过不同编译开关,对支持的任何硬件可以自由插拔
  • 引入 MIR(Machine IR) 的概念,强化带执行环境下的优化支持
  • 优化期和执行期严格隔离,保证预测时轻量和高效率

本次发布支持如下硬件:

  • android ARM v7, v8; 内部测试包括 mobilenet-v1, movilenet-v2, resnet50, inception-v4 等模型
  • armlinux 支持 ARM V8,支持如上4个模型
  • opencl; 测试 mobilenetv1
  • ARM v7, v8; Int8 量化预测; 测试 mobilenet-v1

用户文档参考 lite 文档

开发者文档参考: 开发者文档

性能参数参考:Benchmark

代码 tag 位于:lite-v0.1

预编译的预测库:

PaddleMobile 1.4.0

16 Apr 13:33
8505700
Compare
Choose a tag to compare

Release Notes

ARM CPU

  • 1、新增kernel为3x3的滑窗直接卷积实现,在channel数较少时会比winograd和gemm效率更高
  • 2、新增winograd armv8的实现,在IOS以及v8的硬件上能取得更高的预测性能,以及算子融合时支持winograd ,保证算子融合后的效率更高
  • 3、新增了while、sequence_expand、sequence_pool、sequence_softmax、gru_unit、beam_search和beam_search_decode等19个算子,并做了大量的优化工作,支持NLP/OCR等attention-based端到端模型的预测
  • 4、完成矩阵运算库sgemm和sgemv的重构和效率优化,在大部分模型上能获得10%~100%以上的性能加速
  • 5、完成kernel为3x3的depthwise convolution的重构和优化,相比之前版本支持任意的padding、性能更优且计算结果更可靠
  • 6、完成kernel为5x5的depthwise convolution armv8版本的实现,NAS模型的预测效率提升30%以上
  • 7、完成col2im的neon优化,提升反卷积conv2d_transpose的效率
  • 8、新增基于图优化的精简内存复用策略,大部分模型能降低近50%的内存占用。ARM CPU已自动开启,FPGA和GPU暂不支持

ARM GPU

  • 1、完成kernel为1x1的卷积优化,MobileNet v1在高通Adreno GPU上平均预测性能提升35%

ARM CPU

  • Paddle-mobile has reconstructed and enhanced efficiency of the matrix operation library sgemm and sgemv, which gives rise to performance boost of 10%~100% on most models.
  • 19 new operators are provided in this version such as while, sequence_expand, sequence_pool, sequence_softmax, gru_unit, beam_search, and beam_search_decode. Apart from that, there has also been a large amount of optimization, and the support attention-based end-to-end Model prediction.
  • arm v8 of winograd implementation: higher inference performance on v8 hardware on IOS; winograd support for operator fusion to ensure higher efficiency after operator fusion.
  • Direct convolution for kernel with a 3x3 sliding window, which will be more efficient than winograd and gemm on the condition that the number of channels is small.
  • Reconstructed and optimized depthwise convolution with the kernel size 3x3: in contrast to previous versions, it supports arbitrary padding, and attains better performance and returns more reliable calculation results.
  • Depthwise convolution with the kernel size 5x5 on armv8: the NAS model prediction speeds up by more than 30%.
  • Complete the efficiency optimization of the deconvolution conv2d_transpose.
  • Consolidated with memory reuse strategy based on graph optimization. When the strategy is applied, most models can reduce memory usage by nearly 50%. It is automatically turned on for the ARM CPU (not compatible with FPGA and GPU).

ARM GPU

  • Paddle-mobile completes the convolution optimization for the kernel with size 1x1, and MobileNet v1 has an average inference performance improvement of 35% on Qualcomm Adreno GPUs.

v1.1.1

02 Nov 13:19
9b00363
Compare
Choose a tag to compare
  1. 支持Mali GPU
  2. 支持Andreno GPU
  3. 支持ZU5、ZU9等FPGA开发板

v1.1.0

31 Oct 15:19
317b558
Compare
Choose a tag to compare
v1.1.0 Pre-release
Pre-release
  1. 支持Mali GPU
  2. 支持Andreno GPU
  3. 支持ZU5、ZU9等FPGA开发板

v1.0.0

10 Oct 03:20
f9a2286
Compare
Choose a tag to compare
  1. 支持ios gpu预测
  2. 支持树莓派等arm-linux运行
  3. arm cpu性能大幅提升

v0.9.0

03 Jul 12:24
257aecd
Compare
Choose a tag to compare
  1. arm cpu支持,网络结构:googlenet、mobilenet、mobilenet+ssd、squeezenet、resnet50、yolo
  2. mali gpu支持 by arm团队