6. 编译TFLite模型
本章以 lite-model_mobilebert_int8_1.tflite
模型为例, 介绍如何编译迁移一个TFLite模型至 BM1684X 平台运行。
本章需要安装tpu_mlir。
6.1. 安装tpu_mlir
进入Docker容器,并执行以下命令安装tpu_mlir:
$ pip install tpu_mlir[tensorflow]
# or
$ pip install tpu_mlir-*-py3-none-any.whl[tensorflow]
6.2. 准备工作目录
请从Github的 Assets 处下载 tpu-mlir-resource.tar
并解压,解压后将文件夹重命名为 tpu_mlir_resource
:
$ tar -xvf tpu-mlir-resource.tar
$ mv regression/ tpu-mlir-resource/
建立 mobilebert_tf
目录, 注意是与tpu-mlir同级目录; 并把测试图片文件放入
mobilebert_tf
目录中。
操作如下:
1$ mkdir mobilebert_tf && cd mobilebert_tf
2$ wget -O lite-model_mobilebert_int8_1.tflite https://storage.googleapis.com/tfhub-lite-models/iree/lite-model/mobilebert/int8/1.tflite
3$ cp -rf tpu_mlir_resource/npz_input/squad_data.npz .
4$ mkdir workspace && cd workspace
6.3. TFLite转MLIR
模型转换命令如下:
$ model_transform \
--model_name mobilebert_tf \
--mlir mobilebert_tf.mlir \
--model_def ../lite-model_mobilebert_int8_1.tflite \
--test_input ../squad_data.npz \
--test_result mobilebert_tf_top_outputs.npz \
--input_shapes [[1,384],[1,384],[1,384]] \
--channel_format none
转成mlir文件后, 会生成一个 mobilebert_tf_in_f32.npz
文件, 该文件是模型的输入文件。
6.4. MLIR转INT8模型
该模型是tflite int8模型, 可以按如下参数转成模型:
$ model_deploy \
--mlir mobilebert_tf.mlir \
--quantize INT8 \
--processor bm1684x \
--test_input mobilebert_tf_in_f32.npz \
--test_reference mobilebert_tf_top_outputs.npz \
--model mobilebert_tf_bm1684x_int8.bmodel
编译完成后, 会生成名为 mobilebert_tf_bm1684x_int8.bmodel
的文件。