LoginSignup
1
1

More than 5 years have passed since last update.

TFLite Model Benchmark Toolを使う

Last updated at Posted at 2019-02-08

TFLite Model Benchmark Toolは、TensorFlow Lite形式のモデル(.tfliteモデル)のベンチマークを取ることができるツールです。各オペレーション毎にかかる時間を測定することもできます。on desktopでの実行方法をメモしておきます。.tfliteモデルがすでに手元にある前提です。

Bazelのインストール

TFLite Model Benchmark Toolを使用するにはBazelというビルドツールが必要です。公式のインストール手順に従って以下のコードを実行するとすぐにインストールできました。

brew tap bazelbuild/tap
brew tap-pin bazelbuild/tap
brew install bazelbuild/tap/bazel

Benchmark Toolをビルドして動かす

まずTensorFlowのリポジトリをクローンしてきます。

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

Benchmark Toolのチュートリアル通りに、バイナリファイルをビルドします。この時--copt=-DTFLITE_PROFILING_ENABLEDというオプションをつけてビルドすることで、オペレーション毎の実行速度を計測することができます。

bazel build -c opt \
  --copt=-DTFLITE_PROFILING_ENABLED \
  tensorflow/lite/tools/benchmark:benchmark_model

あとは自分で用意した.tfliteモデルを指定してBenchmark Toolを動かすだけです。

bazel-bin/tensorflow/lite/tools/benchmark/benchmark_model \
  --graph=mobilenet_quant_v1_224.tflite \
  --num_threads=4

そうすると、以下のように各オペレーション毎の実行速度が表示されるかと思います。

============================== Run Order ==============================
                 [node type]      [start]     [first]    [avg ms]        [%]      [cdf%]      [mem KB]  [times called]  [Name]
                     CONV_2D        0.000       4.269       4.269     0.107%      0.107%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_0/Relu6]
           DEPTHWISE_CONV_2D        4.270       2.150       2.150     0.054%      0.161%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_1_depthwise/Relu6]
                     CONV_2D        6.421       6.107       6.107     0.153%      0.314%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_1_pointwise/Relu6]
           DEPTHWISE_CONV_2D       12.528       1.366       1.366     0.034%      0.348%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_2_depthwise/Relu6]
                     CONV_2D       13.895       4.195       4.195     0.105%      0.454%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_2_pointwise/Relu6]
           DEPTHWISE_CONV_2D       18.091       1.260       1.260     0.032%      0.485%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_3_depthwise/Relu6]
                     CONV_2D       19.352       6.652       6.652     0.167%      0.652%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_3_pointwise/Relu6]
           DEPTHWISE_CONV_2D       26.005       0.698       0.698     0.018%      0.670%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_4_depthwise/Relu6]
                     CONV_2D       26.703       3.344       3.344     0.084%      0.754%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_4_pointwise/Relu6]
           DEPTHWISE_CONV_2D       30.047       0.646       0.646     0.016%      0.770%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_5_depthwise/Relu6]
                     CONV_2D       30.694       5.800       5.800     0.145%      0.915%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_5_pointwise/Relu6]
           DEPTHWISE_CONV_2D       36.495       0.331       0.331     0.008%      0.924%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_6_depthwise/Relu6]
                     CONV_2D       36.826       2.838       2.838     0.071%      0.995%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_6_pointwise/Relu6]
           DEPTHWISE_CONV_2D       39.665       0.439       0.439     0.011%      1.006%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_7_depthwise/Relu6]
                     CONV_2D       40.105       5.293       5.293     0.133%      1.139%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_7_pointwise/Relu6]
           DEPTHWISE_CONV_2D       45.399       0.352       0.352     0.009%      1.147%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_8_depthwise/Relu6]
                     CONV_2D       45.752       5.322       5.322     0.133%      1.281%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_8_pointwise/Relu6]
           DEPTHWISE_CONV_2D       51.075       0.357       0.357     0.009%      1.290%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_9_depthwise/Relu6]
                     CONV_2D       51.432       5.693       5.693     0.143%      1.433%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_9_pointwise/Relu6]
           DEPTHWISE_CONV_2D       57.126       0.366       0.366     0.009%      1.442%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_10_depthwise/Relu6]
                     CONV_2D       57.493       5.472       5.472     0.137%      1.579%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_10_pointwise/Relu6]
           DEPTHWISE_CONV_2D       62.966       0.364       0.364     0.009%      1.588%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_11_depthwise/Relu6]
                     CONV_2D       63.330       5.404       5.404     0.136%      1.724%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_11_pointwise/Relu6]
           DEPTHWISE_CONV_2D       68.735       0.155       0.155     0.004%      1.728%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_12_depthwise/Relu6]
                     CONV_2D       68.891       2.970       2.970     0.074%      1.802%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_12_pointwise/Relu6]
           DEPTHWISE_CONV_2D       71.862       0.206       0.206     0.005%      1.807%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_13_depthwise/Relu6]
                     CONV_2D       72.069       5.888       5.888     0.148%      1.955%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_13_pointwise/Relu6]
             AVERAGE_POOL_2D       77.958       0.036       0.036     0.001%      1.956%         0.000          0   [MobilenetV1/Logits/AvgPool_1a/AvgPool]
                     CONV_2D       77.994       1.445       1.445     0.036%      1.992%         0.000          0   [MobilenetV1/Logits/Conv2d_1c_1x1/BiasAdd]
                     RESHAPE       79.440       0.002       0.002     0.000%      1.992%         0.000          0   [MobilenetV1/Predictions/Reshape]
                     SOFTMAX       79.443       0.029       0.029     0.001%      1.993%         0.000          0   [MobilenetV1/Predictions/Softmax]

============================== Top by Computation Time ==============================
                 [node type]      [start]     [first]    [avg ms]        [%]      [cdf%]      [mem KB]  [times called]  [Name]
                     CONV_2D       19.352       6.652       6.652     0.167%      0.167%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_3_pointwise/Relu6]
                     CONV_2D        6.421       6.107       6.107     0.153%      0.320%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_1_pointwise/Relu6]
                     CONV_2D       72.069       5.888       5.888     0.148%      0.468%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_13_pointwise/Relu6]
                     CONV_2D       30.694       5.800       5.800     0.145%      0.613%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_5_pointwise/Relu6]
                     CONV_2D       51.432       5.693       5.693     0.143%      0.756%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_9_pointwise/Relu6]
                     CONV_2D       57.493       5.472       5.472     0.137%      0.893%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_10_pointwise/Relu6]
                     CONV_2D       63.330       5.404       5.404     0.136%      1.029%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_11_pointwise/Relu6]
                     CONV_2D       45.752       5.322       5.322     0.133%      1.162%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_8_pointwise/Relu6]
                     CONV_2D       40.105       5.293       5.293     0.133%      1.295%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_7_pointwise/Relu6]
                     CONV_2D        0.000       4.269       4.269     0.107%      1.402%         0.000          0   [MobilenetV1/MobilenetV1/Conv2d_0/Relu6]

Number of nodes executed: 31
============================== Summary by node type ==============================
                 [Node type]      [count]     [avg ms]      [avg %]     [cdf %]   [mem KB]  [times called]
                     CONV_2D           15        1.406      89.270%     89.270%      0.000          0
           DEPTHWISE_CONV_2D           13        0.169      10.730%    100.000%      0.000          0
                     SOFTMAX            1        0.000       0.000%    100.000%      0.000          0
                     RESHAPE            1        0.000       0.000%    100.000%      0.000          0
             AVERAGE_POOL_2D            1        0.000       0.000%    100.000%      0.000          0

Timings (microseconds): count=50 first=79449 curr=81350 min=77385 max=88213 avg=79732 std=1929
Memory (bytes): count=0
31 nodes observed


Average inference timings in us: Warmup: 83235, Init: 38467, no stats: 79760.9

各項目の意味も何となくですがわかりますね。
Enjoy TFLite!!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1