v2.0.0-beta
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)