解释tensorflow基准测试工具的结果

时间:2019-03-20 17:49:49

标签: tensorflow benchmarking tensorflow-lite

Tensorflow几乎没有基准测试工具:

对于.pb model.tflite model

关于.pb基准测试工具的参数,我有几个问题:

  1. num_threads与单线程实验的并行运行次数或张量流所使用的内部线程有关吗?
  2. 在为台式机(而非移动设备)构建工具时,是否可以使用GPU?如果可以,如何确保不使用GPU?

关于结果解释的几个问题:

  1. 结果输出中的count是什么? Timings (microseconds): count=--max_num_runs参数如何相关?

示例:

Run --num_threads=-1 --max_num_runs=1000:
    2019-03-20 14:30:33.253584: I tensorflow/core/util/stat_summarizer.cc:85] Timings (microseconds): count=1000 first=3608 curr=3873 min=3566 max=8009 avg=3766.49 std=202
    2019-03-20 14:30:33.253584: I tensorflow/core/util/stat_summarizer.cc:85] Memory (bytes): count=1000 curr=3301344(all same)
    2019-03-20 14:30:33.253591: I tensorflow/core/util/stat_summarizer.cc:85] 207 nodes observed
    2019-03-20 14:30:33.253597: I tensorflow/core/util/stat_summarizer.cc:85]
    2019-03-20 14:30:33.378352: I tensorflow/tools/benchmark/benchmark_model.cc:636] FLOPs estimate: 116.65M
    2019-03-20 14:30:33.378390: I tensorflow/tools/benchmark/benchmark_model.cc:638] FLOPs/second: 46.30B

Run --num_threads=1 --max_num_runs=1000:
    2019-03-20 14:32:25.591915: I tensorflow/core/util/stat_summarizer.cc:85] Timings (microseconds): count=1000 first=7502 curr=7543 min=7495 max=7716 avg=7607.22 std=34
    2019-03-20 14:32:25.591934: I tensorflow/core/util/stat_summarizer.cc:85] Memory (bytes): count=1000 curr=3301344(all same)
    2019-03-20 14:32:25.591952: I tensorflow/core/util/stat_summarizer.cc:85] 207 nodes observed
    2019-03-20 14:32:25.591970: I tensorflow/core/util/stat_summarizer.cc:85]
    2019-03-20 14:32:25.805970: I tensorflow/tools/benchmark/benchmark_model.cc:636] FLOPs estimate: 116.65M
    2019-03-20 14:32:25.806007: I tensorflow/tools/benchmark/benchmark_model.cc:638] FLOPs/second: 15.46B

Run --num_threads=-1 --max_num_runs=10000:
    2019-03-20 14:38:48.045824: I tensorflow/core/util/stat_summarizer.cc:85] Timings (microseconds): count=3570 first=3961 curr=3899 min=3558 max=6997 avg=3841.2 std=175
    2019-03-20 14:38:48.045829: I tensorflow/core/util/stat_summarizer.cc:85] Memory (bytes): count=3570 curr=3301344(all same)
    2019-03-20 14:38:48.045833: I tensorflow/core/util/stat_summarizer.cc:85] 207 nodes observed
    2019-03-20 14:38:48.045837: I tensorflow/core/util/stat_summarizer.cc:85]
    2019-03-20 14:38:48.169368: I tensorflow/tools/benchmark/benchmark_model.cc:636] FLOPs estimate: 116.65M
    2019-03-20 14:38:48.169412: I tensorflow/tools/benchmark/benchmark_model.cc:638] FLOPs/second: 48.66B

Run --num_threads=1 --max_num_runs=10000:
    2019-03-20 14:35:50.826722: I tensorflow/core/util/stat_summarizer.cc:85] Timings (microseconds): count=1254 first=7496 curr=7518 min=7475 max=7838 avg=7577.23 std=50
    2019-03-20 14:35:50.826735: I tensorflow/core/util/stat_summarizer.cc:85] Memory (bytes): count=1254 curr=3301344(all same)
    2019-03-20 14:35:50.826746: I tensorflow/core/util/stat_summarizer.cc:85] 207 nodes observed
    2019-03-20 14:35:50.826757: I tensorflow/core/util/stat_summarizer.cc:85]
    2019-03-20 14:35:51.053143: I tensorflow/tools/benchmark/benchmark_model.cc:636] FLOPs estimate: 116.65M
    2019-03-20 14:35:51.053180: I tensorflow/tools/benchmark/benchmark_model.cc:638] FLOPs/second: 15.55B

即使用--max_num_runs=10000时,计数为count=3570count=1254是什么意思?

对于.tflite基准测试工具:

--num_threads=1 --num_runs=10000
    Initialized session in 0.682ms
    Running benchmark for at least 1 iterations and at least 0.5 seconds
    count=54 first=23463 curr=8019 min=7911 max=23463 avg=9268.5 std=2995
    Running benchmark for at least 1000 iterations and at least 1 seconds
    count=1000 first=8022 curr=6703 min=6613 max=10333 avg=6766.23 std=337
    Average inference timings in us: Warmup: 9268.5, Init: 682, no stats: 6766.23

no stats: 6766.23是什么意思?

1 个答案:

答案 0 :(得分:3)

深入研究代码后,我发现了以下内容(所有时间均为微秒):

  • count:实际运行次数
  • first:第一次迭代花费的时间
  • curr:上次迭代花费的时间
  • min:一次迭代花费的最短时间
  • max:一次迭代花费的最长时间
  • avg:一次迭代的平均时间
  • std:所有运行时间的标准偏差
  • Warmup:预热运行平均值
  • Init:启动时间(应始终与Initialized session in相同)
  • no stats:名称很差的平均运行时间(与上一行的avg=匹配)
  • num_threads:这用于设置intra_op_parallelism_threadsinter_op_parallelism_threads(更多信息here

相关文件(链接到相应的行)是:

相对使用GPU和不使用GPU,我不太确定。如果您正在使用freeze_graph导出.pb文件,则它将在图中存储每个节点的设备。您可以在导出之前使用设备放置来执行此操作。如果需要更改设置,可以尝试设置环境变量CUDA_VISIBLE_DEVICES=""以确保未使用GPU。