Lite架构在预测过程中表现出来的高性能得益于其丰富的优化组件,其中包括量化、子图融合、混合调度、Kernel优选等等策略。为了使优化过程更加方便易用,我们提供了Model Optimize Tool来自动完成优化步骤,输出一个轻量的、最优的可执行模型。具体使用方法介绍如下:

准备model_optimize_tool

可以选择下载或者手动编译model_optimize_tool模型优化工具。

下载model_optimize_tool

Paddle-Lite Release官网下载最新版本的model_optimize_tool

model_optimize_tool

注意:运行前需解压model_optimize_tool并添加可执行权限

gunzip ./model_optimize_tool.gz
chmod +x model_optimize_tool

编译model_optimize_tool

1、参照 编译安装 进行环境配置和编译

2、进入docker中PaddleLite根目录,git checkout [release-version-tag]切换到release分支

3、执行如下命令编译model_optimize_tool

./lite/tools/build.sh build_optimize_tool 

4、编译完成,优化工具在Paddle-Lite/build.model_optimize_tool/lite/api/model_optimize_tool

使用方法

1、准备需要优化的fluid模型

fluid模型有两种形式,combined形式(权重保存为一个param文件)和非combined形式(权重保存为一个一个单独的文件),model_optimize_tool支持对这两种形式的fluid模型进行直接优化。

2、使用model_optimize_tool对模型进行优化(需要在 x86 PC 端执行)

./model_optimize_tool \
    --model_dir=<model_param_dir> \
    --model_file=<model_path> \
    --param_file=<param_path> \
    --optimize_out_type=(protobuf|naive_buffer) \
    --optimize_out=<output_optimize_model_dir> \
    --valid_targets=(arm|opencl|x86) \
    --prefer_int8_kernel=(true|false) \
    --record_tailoring_info =(true|false)
选项 说明
–model_dir 待优化的fluid模型(非combined形式)的路径,其中包括网络结构文件和一个一个单独保存的权重文件。
–model_file 待优化的fluid模型(combined形式)的网络结构路径。
–param_file 待优化的fluid模型(combined形式)的权重文件路径。
–optimize_out_type 输出模型类型,目前支持两种类型:protobuf和naive_buffer,其中naive_buffer是一种更轻量级的序列化/反序列化实现。若您需要在mobile端执行模型预测,请将此选项设置为naive_buffer。默认为protobuf。
–optimize_out 优化模型的输出路径。
–valid_targets 指定模型可执行的backend,目前可支持x86、arm、opencl,您可以同时指定多个backend(以空格分隔),Model Optimize Tool将会自动选择最佳方式。默认为arm。
–prefer_int8_kernel 若待优化模型为int8量化模型(如量化训练得到的量化模型),则设置该选项为true以使用int8内核函数进行推理加速,默认为false。
–record_tailoring_info 当使用根据模型裁剪库文件功能时,则设置该选项为true,以记录优化后模型含有的kernel和OP信息,默认为false。
  • 如果待优化的fluid模型是非combined形式,请设置--model_dir,忽略--model_file--param_file
  • 如果待优化的fluid模型是combined形式,请设置--model_file--param_file,忽略--model_dir
  • 优化后的模型包括__model__.nb和param.nb文件。