dl-benchmark
dl-benchmark copied to clipboard
Полупустые логи формата .json
@n-berezina-nn, добрый день! После запуска бенчмарка выбрасываются полупустые логи.
Командная строка: python3 ./inference_benchmark.py -c ../config.xml -r result_onnx.csv
Конфиг:
<Tests>
<Test>
<Model>
<Task>classification</Task>
<Name>alexnet</Name>
<Precision>FP32</Precision>
<SourceFramework>ONNX Runtime Python</SourceFramework>
<ModelPath>/home/vanya/projects/dl-benchmark/bvlcalexnet-12.onnx</ModelPath>
<WeightsPath>/home/vanya/projects/dl-benchmark/src/inference/alexnet/quantized_int8_alexnet-0000.params</WeightsPath>
</Model>
<Dataset>
<Name>apple</Name>
<Path>/home/vanya/projects/dl-benchmark/img/apple.JPEG</Path>
</Dataset>
<FrameworkIndependent>
<InferenceFramework>ONNX Runtime Python</InferenceFramework>
<BatchSize>1</BatchSize>
<Device>CPU</Device>
<IterationCount>1</IterationCount>
<TestTimeLimit>3</TestTimeLimit>
</FrameworkIndependent>
<FrameworkDependent>
<ExecutionProviders>Default</ExecutionProviders>
<InterThreadCount>3</InterThreadCount>
<InputName>data_0</InputName>
<Layout></Layout>
<ExecutionMode></ExecutionMode>
<InputScale>[0.229,0.224,0.225]</InputScale>
<ThreadCount>3</ThreadCount>
<InferenceRequestsCount>3</InferenceRequestsCount>
<InputShape>[1,3,224,224]</InputShape>
<Mean>[0.485,0.456,0.406]</Mean>
<ChannelSwap></ChannelSwap>
</FrameworkDependent>
</Test>
</Tests>
Логи:
{
"cmd_options": {
"d": null,
"dtype": null,
"i": null,
"m": null,
"nireq": null,
"nthreads": null,
"save_report": "true",
"shape": null,
"t": null
},
"configurations_setup": {
"batch_size": 1,
"duration": null,
"iterations_num": 1,
"precision": null,
"target_device": "CPU",
"tensors_num": null,
"threads_num": null
},
"execution_results": {
"execution_time": 0.034,
"first_inference_time": 0.03384,
"iterations_num": 1,
"latency_avg": 0.03384,
"latency_std": 0.0,
"latency_max": 0.03384,
"latency_median": 0.03384,
"latency_min": 0.03384,
"read_network_time": null,
"throughput": 29.547,
"batch_throughput": 29.547
},
"framework_info": {
"backend": null,
"device": null,
"name": "OnnxRuntime",
"version": "1.16.0"
}
}
Нет довольно много информации (например, не записывается имя модели, формат весов, размеры тензора и параметры командной строки при запуске скрипта инференса). Та же самая ситуация при запуске MXNet (остальные не смотрел, но, вероятно, будет тоже самое)
@ismukhin изначально смысл этих логов в том, чтобы заменить парсинг stdout для получения метрик производительности на вычитывание их из файла в объект. Формат файла совпадает с аналогичным форматов для c++ ланчеров. Остальные параметры в отчете получаются напрямую из конфигурации, вероятность ошибки при добавлении их в отчет гораздо меньше, чем при распарсивании текста. Можно внести эти параметры в json report для python и c++ ланчеров, и тогда можно будет отказаться от csv отчета вовсе.
@ismukhin изначально смысл этих логов в том, чтобы заменить парсинг stdout для получения метрик производительности на вычитывание их из файла в объект. Формат файла совпадает с аналогичным форматов для c++ ланчеров. Остальные параметры в отчете получаются напрямую из конфигурации, вероятность ошибки при добавлении их в отчет гораздо меньше, чем при распарсивании текста. Можно внести эти параметры в json report для python и c++ ланчеров, и тогда можно будет отказаться от csv отчета вовсе.
@n-berezina-nn, дело в том, что в эти логи ничего, кроме метрик производительности не записывается, даже название модели, поэтому это выглядит очень странно и подозрительно.
эти логи изначально призваны сделать получение результата более стабильным, нежели парсинг stdout, особенно в случае добавления новых метрик, как это произошло летом. Формат вдохновлен аналогичными логами от openvino benchmark app и отчетами от остальных наших c++ ланчеров. если его менять, то менять везде. это только перфоманс метрики, а не характеристики всего запуска
эти логи изначально призваны сделать получение результата более стабильным, нежели парсинг stdout, особенно в случае добавления новых метрик, как это произошло летом. Формат вдохновлен аналогичными логами от openvino benchmark app и отчетами от остальных наших c++ ланчеров. если его менять, то менять везде. это только перфоманс метрики, а не характеристики всего запуска
Согласно, что это гораздо лучше, чем парсинг stdout, но не понятно, зачем создавать пустые теги в этом отчете? По смыслу они должны давать полную информацию про тестовый запуск.