Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Полупустые логи формата .json #416

Open
ismukhin opened this issue Oct 13, 2023 · 4 comments
Open

Полупустые логи формата .json #416

ismukhin opened this issue Oct 13, 2023 · 4 comments
Assignees

Comments

@ismukhin
Copy link
Contributor

@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 (остальные не смотрел, но, вероятно, будет тоже самое)

@n-berezina-nn n-berezina-nn self-assigned this Oct 13, 2023
@n-berezina-nn
Copy link
Collaborator

@ismukhin изначально смысл этих логов в том, чтобы заменить парсинг stdout для получения метрик производительности на вычитывание их из файла в объект. Формат файла совпадает с аналогичным форматов для c++ ланчеров. Остальные параметры в отчете получаются напрямую из конфигурации, вероятность ошибки при добавлении их в отчет гораздо меньше, чем при распарсивании текста.
Можно внести эти параметры в json report для python и c++ ланчеров, и тогда можно будет отказаться от csv отчета вовсе.

@valentina-kustikova
Copy link
Contributor

@ismukhin изначально смысл этих логов в том, чтобы заменить парсинг stdout для получения метрик производительности на вычитывание их из файла в объект. Формат файла совпадает с аналогичным форматов для c++ ланчеров. Остальные параметры в отчете получаются напрямую из конфигурации, вероятность ошибки при добавлении их в отчет гораздо меньше, чем при распарсивании текста. Можно внести эти параметры в json report для python и c++ ланчеров, и тогда можно будет отказаться от csv отчета вовсе.

@n-berezina-nn, дело в том, что в эти логи ничего, кроме метрик производительности не записывается, даже название модели, поэтому это выглядит очень странно и подозрительно.

@n-berezina-nn
Copy link
Collaborator

n-berezina-nn commented Oct 19, 2023

эти логи изначально призваны сделать получение результата более стабильным, нежели парсинг stdout, особенно в случае добавления новых метрик, как это произошло летом.
Формат вдохновлен аналогичными логами от openvino benchmark app и отчетами от остальных наших c++ ланчеров.
если его менять, то менять везде.
это только перфоманс метрики, а не характеристики всего запуска

@valentina-kustikova
Copy link
Contributor

эти логи изначально призваны сделать получение результата более стабильным, нежели парсинг stdout, особенно в случае добавления новых метрик, как это произошло летом. Формат вдохновлен аналогичными логами от openvino benchmark app и отчетами от остальных наших c++ ланчеров. если его менять, то менять везде. это только перфоманс метрики, а не характеристики всего запуска

Согласно, что это гораздо лучше, чем парсинг stdout, но не понятно, зачем создавать пустые теги в этом отчете? По смыслу они должны давать полную информацию про тестовый запуск.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants