Coder Social home page Coder Social logo

itlab-vision / dl-benchmark Goto Github PK

View Code? Open in Web Editor NEW
24.0 11.0 39.0 143.72 MB

Deep Learning Inference benchmark. Supports OpenVINO™ toolkit, Caffe, TensorFlow, TensorFlow Lite, ONNX Runtime, OpenCV DNN, MXNet, PyTorch, Apache TVM, ncnn, etc.

Home Page: http://hpc-education.unn.ru/dli

License: Apache License 2.0

Python 11.04% HTML 86.75% Dockerfile 0.19% Shell 0.29% CMake 0.25% C++ 1.43% Groovy 0.04%
inference inference-benchmark dli benchmark-framework openvino deep-learning mxnet onnx-runtime tflite pytorch

dl-benchmark's Introduction

ITLab Vision Group

Build Status Coverage Status Documentation

This project is developed at Nizhny Novgorod State University (CMC faculty, ITLab laboratory) and supported by the Itseez company.

Project maintainers:

Project developers:

Build and Run instructions

Build:

    $ mkdir photofilters
    $ cd photofilters
    $ git clone https://github.com/UNN-VMK-Software/itlab-vision.git
    $ mkdir build
    $ cd build
    $ cmake ../itlab-vision/photoeffects/
    $ make
    $ cd ./bin

Tests execution:

    $ ./photoeffects_test

Samples execution:

    $ ./antique_sample testdata/antique_test.png testdata/antique_texture_test.png 0.7
    $ ./edgeBlur_sample testdata/edgeBlur_test.png
    $ ./filmGrain_sample testdata/filmGrain_test.png 7
    $ ./matte_sample testdata/matte_test.png 25 25
    $ ./vignette_sample testdata/antique_test.png
    $ ./boostColor_sample testdata/boostColor_test.png 0.2
    $ ./fadeColor_sample testdata/fadeColor_test.png
    $ ./glow_sample testdata/glow_test.png 25 0.8
    $ ./sepia_sample testdata/antique_test.png
    $ ./tint_sample testdata/antique_test.png
    $ ./warmify_sample testdata/antique_test.png

dl-benchmark's People

Contributors

a-sidorova avatar alexander-khvatov avatar alibekovmurad5202 avatar andrey-chh avatar fenixfly avatar igorkonovalovaleks avatar ilya-naumov avatar ismukhin avatar ivan-vikhrev avatar jkamelin avatar juliakamelina avatar just-sparta avatar kirillyashin avatar m1ntm1nd avatar makarov-aa avatar maslovaz avatar n-berezina-nn avatar nberezina avatar nikolayvolzhanskiy avatar pavelkumbrasev avatar pplastova avatar rodimkov avatar roma-roma97 avatar sergeyborss avatar sesorov avatar spartanezka avatar suchkovvn avatar valentina-kustikova avatar vladislav-denisov avatar zmaslova avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dl-benchmark's Issues

Некорректное создание общей таблицы производительности для всех фреймворков

При создании общей таблицы производительности для всех фреймворков следующие проблемы:

  • Для фреймворка MXNet на каждый батч создается отдельный столбик (из-за того, что размер пачки участвует в описании эксперимента, а не задается через свой отдельный параметр в конфиге бенчмарка).
  • Для библиотеки TensorFlow в параметрах различный тензор размера пачки, из-за чего строки эксперимента для одной модели не объединяются, а эксперимент с пачкой [1,224,224,3] уезжает к строкам OpenVINO .

Директория gui

  1. Переместить директорию gui из корня в директорию src.
  2. Переименовать директорию gui в config_maker.

src/benchmark/processes.py spliting into package

the file src/benchmark/processes.py is overloaded with fucntionality, especially considering addition of openvino python and c++ benchmark launchers.
Our suggestion is to split this file to separate files and handle them as package.
we can have a 'frameworks' package containing sub-folders for openvino, tensorflow, intel caffe processes, and in near future - onnxruntime.
A factory/registry pattern will be used to create needed objects.
Such approach will simplify code maintenance and addition of new launchers.

We can handle the refactoring as well.

Реализация вывода для TF lite падает для некоторых моделей из OMZ на пачке, больше 1

Обнаружила проблему в реализации вывода TF lite. Проблема состоит в следующем.

  1. Загружаю некоторые tflite-модели из OMZ, а именно модели группы mobilenet-*. Я не конвертирую модели из формата pb в tflite, использую те, что загружены. Проблема не воспроизводится для модели inception_resnet_v2.tflite.

  2. Запускаю вывод с использованием имеющейся реализации на пачке изображений размера 1. Вывод успешно отрабатывает. Код, который запускаю лежит по ссылке. Это принесенный код + я дописала вывод результатов инференса.

  3. Запускаю те же модели на пачке размера 3. Вывод падает с идентичной ошибкой (приведена ниже).

    tensorflow/lite/kernels/reshape.cc:85 num_input_elements != num_output_elements (3003 != 1001)Node number 29 (RESHAPE) failed to prepare.Failed to apply the default TensorFlow Lite delegate indexed at 0.
    

    При запуске использую следующие командные строки (предыдущий запуск отличается только размером пачки):

    python inference_tensorflowlite.py --model mobilenet_v1_1.0_224.tflite --input data/ --batch_size 3 --task classification --output_names output --labels labels/image_net_synset_first_class_base.txt --mean [123.675,116.28,103.53] --input_scale [58.395,57.12,57.375]
    
    python inference_tensorflowlite.py --model mobilenet_v2_1.0_224.tflite --input data/ --batch_size 3 --task classification --output_names output --labels labels/image_net_synset_first_class_base.txt --mean [123.675,116.28,103.53] --input_scale [58.395,57.12,57.375]
    
    python inference_tensorflowlite.py --model mobilenet_v2_1.4_224.tflite --input data/ --batch_size 3 --task classification --output_names output --labels labels/image_net_synset_first_class_base.txt --mean [123.675,116.28,103.53] --input_scale [58.395,57.12,57.375]

Аналогичная проблема у меня наблюдается на моделях EfficientNet-*, загруженных из TF hub.

Также попробовала конвертировать inception_v3_2016_08_28_frozen.pb из OMZ имеющимся конвертером (командная строка ниже), запуск на пачке, превышающей 1, приводит к той же ошибке.

python tflite_converter.py --model-path googlenet-v3/inception_v3_2016_08_28_frozen.pb --source-framework tf

Подскажите, пожалуйста, чем вызвана эта проблема?

Спасибо!

Конфигурационные файлы удаленного запуска бэнчмарка

@TheG1uy, переместите, пожалуйста, конфигурационные файлы удаленного запуска бэнчмарка remote_config_template.xml и пример его заполнения remote_config.xml в директорию configs. Файл с актуальной информацией о машинах и данных авторизации надо поместить на Google Drive в директорию, куда Александр переместил другие конфигурации, не надо их хранить в открытом репозитории.

Изменения в реализации вывода (code cleanings)

Во всех реализациях инференса надо поправить 2 момента:

  1. В функции main() сделать логирование трассы через log.error(traceback.format_exc()).
  2. Имеет смысл аргументы-флаги сделать не параметрами, которые принимают значения True и False, а нормальными флагами через параметр action в функции add_argument. В результате могут потребоваться изменения при формировании командных строк запуска инференса из inference_benchmark.py.

Перенести реализацию get_performance_metrics из наследников в базовый класс ProcessHandler

Реализация метода get_performance_metrics дублируется во всех классах-наследниках ProcessHandler (находится в файле src/benchmark/frameworks/processes.py), кроме OnnxRuntimeProcess. Имеет смысл пробросить эту общую реализацию в базовый класс, а в OnnxRuntimeProcess этот метод переопределить.

Демо-приложения для системы DLI

Необходимо реализовать демонстрационные скрипты для системы DLI Benchmark на примере PR.

  • Демо-приложение OpenVINO_DLDT для Linux с использованием host-машины
  • Демо-приложение OpenVINO_DLDT для Linux с использованием Docker
  • Демо-приложение OpenVINO_DLDT для Windows с использованием host-машины
  • Демо-приложение OpenVINO_DLDT для Windows с использованием Docker
  • Демо-приложение TensorFlow для Linux с использованием host-машины
  • Демо-приложение TensorFlow для Linux с использованием Docker
  • Демо-приложение TensorFlow для Windows с использованием host-машины
  • Демо-приложение TensorFlow для Windows с использованием Docker
  • Демо-приложение TensorFlow lite для Linux с использованием host-машины
  • Демо-приложение TensorFlow lite для Linux с использованием Docker
  • Демо-приложение TensorFlow lite для Windows с использованием host-машины
  • Демо-приложение TensorFlow lite для Windows с использованием Docker
  • Демо-приложение Caffe для Linux с использованием host-машины
  • Демо-приложение Caffe для Linux с использованием Docker
  • Демо-приложение Caffe для Windows с использованием host-машины
  • Демо-приложение Caffe для Windows с использованием Docker
  • Демо-приложение OpenCV для Linux с использованием host-машины
  • Демо-приложение OpenCV для Linux с использованием Docker
  • Демо-приложение OpenCV для Windows с использованием host-машины
  • Демо-приложение OpenCV для Windows с использованием Docker
  • Демо-приложение ONNX Runtime для Linux с использованием host-машины
  • Демо-приложение ONNX Runtime для Linux с использованием Docker
  • Демо-приложение ONNX Runtime для Windows с использованием host-машины
  • Демо-приложение ONNX Runtime для Windows с использованием Docker
  • Демо-приложение MXNet для Linux с использованием host-машины
  • Демо-приложение MXNet для Linux с использованием Docker
  • Демо-приложение MXNet для Windows с использованием host-машины
  • Демо-приложение MXNet для Windows с использованием Docker
  • Демо-приложение PyTorch для Linux с использованием host-машины
  • Демо-приложение PyTorch для Linux с использованием Docker
  • Демо-приложение PyTorch для Windows с использованием host-машины
  • Демо-приложение PyTorch для Windows с использованием Docker

Использование benchmark_app из состава OpenVINO

В данный момент dl_benchmark измеряет производительность OpenVINO через внутренние скрипты (inference_async_mode.py и т.д.), при этом в состав OpenVINO включён специальный инструмент benchmark_app для C++ и Python.
Его использование для замеров даёт следующие преимущества:

  1. Не нужно адаптировать код к изменениям в OpenVINO API.
  2. Легко задействовать новые возможности (например performance hints)
  3. Большое количество различных опций и метрик

Мы предлагаем добавить в dl_benchmark поддержку benchmark_app (для Python и С++) и готовы это реализовать. Старый функционал будет сохранен.

Failed Smoke tests

После мержа PR падают новые Smoke tests с ошибкой:
[ ERROR ] 'AsyncOpenVINOProcess' object has no attribute '_my_executor'

Logs

@nberezina

inference_benchmark.py script always returs code 0

We have noticed that inference_benchmark.py script always returns error code 0.
Is it intended behavior?
This approach can complicate troubleshooting when integrate this tool to CI.

Our suggestion is to modify code to return 1 if exception happened during inference and print a proper traceback.

We can handle the implementation as well.

problems with detection models

Проблема заключается в следующем:

  1. модель detr-resnet50 выдает ошибку на тестовом изображении (где изображены компьютер, мышь, клавиатура):
(openvino-venv) PS C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\src\inference> python .\inference_sync_mode.py -m ..\..\open_model_zoo\public\detr-resnet50\FP32\detr-resnet50.xml -w ..\..\open_model_zoo\public\detr-resnet50\FP32\detr-resnet50.bin -i ..\..\coco1.jpg -t detection
[ INFO ] Inference Engine initialization
[ INFO ] Loading model files:
         ..\..\open_model_zoo\public\detr-resnet50\FP32\detr-resnet50.xml
         ..\..\open_model_zoo\public\detr-resnet50\FP32\detr-resnet50.bin
[ INFO ] Shape for input layer input: 1x3x800x1137
[ INFO ] Prepare input data
[ INFO ] Create executable network
[ INFO ] Starting inference (1 iterations) on CPU
ERROR! : invalid index to scalar variable.
  1. модель yolo-v4-tf выдает отрицательные значения окаймляющих прямоугольников и в конце выдает ошибку:
[ INFO ] Inference Engine initialization
[ INFO ] Loading model files:
         ..\..\open_model_zoo\public\yolo-v4-tf\FP32\yolo-v4-tf.xml
         ..\..\open_model_zoo\public\yolo-v4-tf\FP32\yolo-v4-tf.bin
[ INFO ] Shape for input layer Func/StatefulPartitionedCall/input/_0:0: 1x608x608x3
[ INFO ] Prepare input data
[ INFO ] Create executable network
[ INFO ] Starting inference (1 iterations) on CPU
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-680, -5551)
[ INFO ] Bottom right: (-2053, -4092)
[ INFO ] Bounding boxes for image 0 for object 1
[ INFO ] Top left: (-642, -6705)
[ INFO ] Bottom right: (-2252, -4626)
[ INFO ] Bounding boxes for image 0 for object 1
[ INFO ] Top left: (-620, -8023)
[ INFO ] Bottom right: (-2518, -4884)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-597, -8462)
[ INFO ] Bottom right: (-3137, -5240)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-585, -8322)
[ INFO ] Bottom right: (-3384, -5328)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-644, -8560)
[ INFO ] Bottom right: (-2738, -5025)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-732, -8355)
[ INFO ] Bottom right: (-2621, -4641)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-781, -8350)
[ INFO ] Bottom right: (-2005, -4456)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-769, -8009)
[ INFO ] Bottom right: (-1647, -4277)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-782, -8150)
[ INFO ] Bottom right: (-1312, -4214)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-765, -8033)
[ INFO ] Bottom right: (-1234, -4298)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-774, -7875)
[ INFO ] Bottom right: (-1220, -4222)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-772, -7701)
[ INFO ] Bottom right: (-1295, -4161)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-793, -7837)
[ INFO ] Bottom right: (-1368, -4031)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-767, -7980)
[ INFO ] Bottom right: (-1224, -3877)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-733, -7708)
[ INFO ] Bottom right: (-1528, -3924)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-730, -7396)
[ INFO ] Bottom right: (-2027, -4367)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-745, -7180)
[ INFO ] Bottom right: (-2622, -5203)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-739, -6894)
[ INFO ] Bottom right: (-3067, -5733)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-735, -6525)
[ INFO ] Bottom right: (-3351, -5910)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-715, -6819)
[ INFO ] Bottom right: (-3197, -5806)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-697, -7709)
[ INFO ] Bottom right: (-2912, -5807)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-659, -7713)
[ INFO ] Bottom right: (-3103, -5785)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-666, -7339)
[ INFO ] Bottom right: (-2931, -5441)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-734, -7343)
[ INFO ] Bottom right: (-2841, -5287)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-727, -6707)
[ INFO ] Bottom right: (-3433, -5921)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-683, -5781)
[ INFO ] Bottom right: (-4617, -6702)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-668, -6954)
[ INFO ] Bottom right: (-3207, -5577)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-684, -8097)
[ INFO ] Bottom right: (-1572, -4067)
[ INFO ] Bounding boxes for image 0 for object 0
[ INFO ] Top left: (-678, -7791)
[ INFO ] Bottom right: (-1320, -3818)
ERROR! : list index out of range
  1. модели efficientdet-d0/1-tf не конвертируются:
(openvino-venv) PS C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\src\inference> omz_converter --name efficientdet-d0-tf --download_dir ..\..\open_model_zoo\
========== Running pre-convert script for efficientdet-d0-tf
Pre-convert command: C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\openvino-venv\Scripts\python.exe -- C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\openvino-venv\Lib\site-packages\openvino\model_zoo\models\public\efficientdet-d0-tf\pre-convert.py -- ..\..\open_model_zoo\public\efficientdet-d0-tf ..\..\open_model_zoo\public\efficientdet-d0-tf

2022-11-07 14:03:14.596251: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
2022-11-07 14:03:14.596917: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your 
machine.
Traceback (most recent call last):
  File "C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\open_model_zoo\public\efficientdet-d0-tf\model\model_inspect.py", line 29, in <module>
    import inference
  File "C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\open_model_zoo\public\efficientdet-d0-tf\model\inference.py", line 26, in <module>
    import dataloader
  File "C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\open_model_zoo\public\efficientdet-d0-tf\model\dataloader.py", line 19, in <module>
    import utils
  File "C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\open_model_zoo\public\efficientdet-d0-tf\model\utils.py", line 204, in <module>
    class TpuBatchNormalization(tf.keras.layers.BatchNormalization):
  File "C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\openvino-venv\lib\site-packages\tensorflow\python\util\lazy_loader.py", line 58, in __getattr__
    module = self._load()
  File "C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\openvino-venv\lib\site-packages\tensorflow\python\util\lazy_loader.py", line 41, in _load
    module = importlib.import_module(self.__name__)
  File "C:\Users\Ivashka\.pyenv\pyenv-win\versions\3.9.12\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'keras.api'
Traceback (most recent call last):
  File "C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\openvino-venv\Lib\site-packages\openvino\model_zoo\models\public\efficientdet-d0-tf\pre-convert.py", line 43, in <module>
    main()
  File "C:\Users\Ivashka\Desktop\Studying\BIG_DATA_and_ML\DL_Benchmark\dl-benchmark\openvino-venv\Lib\site-packages\openvino\model_zoo\models\public\efficientdet-d0-tf\pre-convert.py", line 34, in main
    subprocess.run([sys.executable, '--',
  File "C:\Users\Ivashka\.pyenv\pyenv-win\versions\3.9.12\lib\subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['C:\\Users\\Ivashka\\Desktop\\Studying\\BIG_DATA_and_ML\\DL_Benchmark\\dl-benchmark\\openvino-venv\\Scripts\\python.exe', '--', '..\\..\\open_model_zoo\\public\\efficientdet-d0-tf\\model\\model_inspect.py', '--runmode=saved_model', '--model_name=efficientdet-d0', '--ckpt_path=..\\..\\open_model_zoo\\public\\efficientdet-d0-tf\\efficientdet-d0', '--saved_model_dir=..\\..\\open_model_zoo\\public\\efficientdet-d0-tf\\efficientdet-d0_saved_model']' returned non-zero exit status 1.

FAILED:
efficientdet-d0-tf

Версии библиотек в файле lib.txt
lib.txt

Создать Wiki для проекта

@nberezina, @zmaslova, @a-sidorova, добрый день! Набросала структуру wiki для проекта, некоторые страницы заполнила информацией на основании того, что у нас есть в директории docs и в основном readme. Посмотрите, пожалуйста, то, что получилось. Несколько комментариев:

  1. Мануал для нашего проекта на русском (сценарий с OpenVINO) ожидаем в ближайшее время, поэтому переведу и залью позднее.
  2. Инструкцию по сборке перенесу из основного readme тоже немного позднее.
  3. Также по готовности приведу в соответствие состояние репозитория, удалив файлы из папки docs, почистив основной readme. Также возможно переведу какие-то readme.

Объединение функций обработки выхода модели

@roma-roma97, @TheG1uy (@FenixFly, @KchnKchn), в скриптах inference_sync_mode.py и inference_async_mode.py есть функции обработки выхода нейросетевых моделей в зависимости от задачи. Можно ли эти функции вынести в отдельный модуль (очень похоже, что код идентичен и не зависит от режима запуска)? Если можно, то надо это сделать, поскольку сейчас у нас похоже присутствует дублирование кода.

Доработка вывода с использованием MXNet

  1. Включение поддержки символьных вычислений сделать через флаг скрипта вывода
  2. В параметр input_shape не передавать размер пачки, вместо размера пачки всегда использовать 1 (по аналогии с OpenVINO), чтобы потом сгенерировать правильную таблицу
  3. Поддержка асинхронного вывода без ожидания завершения каждого очередного запроса на вывод
  4. Разработка демо-приложений
  5. Поддержка неклассификационных моделей (нужна версия 1.9.*)
  6. Dockerfile для запуска массовых экспериментов
  7. Поддержка int8-моделей (нужна версия 1.9.*)
  8. Обновление GUI-приложения для формирования конфига MXNet

Реорганизовать директорию results

Надо сделать так, чтобы папка с результатами содержала html-таблицы с опубликованными на сайте результатами, чтобы мы не искали в почте последний нужный вариант. Поэтому предлагают реорганизовать директорию results и сделать следующую структуру:
results
|-->validation (текущее содержимое папки results)
|-->benchmarking (html-таблицы с указанием в именах даты публикации и версии OpenVINO)

Proposal to use omz_converter instead of src/model_converter/model_converter.py

We suggest to use omz_converter directly.

  1. Current model_converter.py doesn't have support of composite models (for example https://docs.openvino.ai/latest/omz_models_model_wavernn.html)
  2. Failures in model_converter.py are not processed corretly, hard to investigate what's wrong
  3. Not necessary to convert to static batch with MO, batch size can be changed with reshape (https://docs.openvino.ai/2022.2/openvino_docs_OV_UG_ShapeInference.html), and benchmark_app from OpenVINO already can deal with it

Field delimeter in csv reports

We have been able to collect performance data using dl_benchmark tool, but we have noticed one major inconvinience about csv-reports.
Fields are separated by ';' and it can't be changed. In excel default separator is ',' (at least for english version) and when user tries to open csv file with excel, the layout is messed up, especially if data contains comma sign.
Also, code analysis showed that csv files are written string-by-string which is extremely hard to maintain and keep consistent

We have several proposals to solve this situation

  • leave format as is, but change file extension to .txt in order to use data importer in excel and set needed delimeter manually (cheap)
  • replace ';' to ',' in current implementation (more expensive, but undesirable since its hard to maintain)
  • create csv handler which will handle csv files using python buit-in csv module and have configurable delimeter (expencive but healthy way)

We'd like to discuss these options, and we can handle the implementation of choosen alternative.

Конфигурационные файлы к разным компонентам

@KchnKchn, необходимо вынести все шаблоны конфигурационных файлов (лежащие в src/benchmark, src/converter и других местах) в отдельную директорию configs в папке src. Для каждого конфигурационного файла надо хранить шаблон, содержащий только теги, и пример заполнения. Конфигурации, содержащие специфичную для нас информацию (пути, машины, параметры доступа и прочее), надо хранить у себя локально и в закрытом виде, доступном только участникам проекта.

Запуск моделей MobileNet-v3-* через TensorFlow

@n-berezina-nn, @maslovaz, нужна ваша помощь. Запускаю модели MobileNet-v3-large и MobileNet-v3-small из OMZ через TensorFlow, модели предварительно конвертирую с помощью omz_converter. Командная строка запуска ниже. В результате получаю Error parsing message with type 'tensorflow.GraphDef'. Подскажите, пожалуйста, в чем может быть проблема? Спасибо!

python inference_tensorflow.py --model mobilenet-v3-small-1.0-224-tf/mobilenet_v3_small_224_1.0_float.savedmodel/saved_model.pb --input data/ --batch_size 3 --input_shape 224 224 3 --task classification --number_top 5 --mean 127.5 127.5 127.5 --input_scale 127.5 --labels labels/image_net_synset_first_class_base.txt

Use returncode instead of grep error in logs

В акьюраси модуле не проверяется returncode, вместо этого идёт поиск слова error в логах.
В github actions кажется поменяли серваки, на которых запускаются наши смок тесты, и теперь в логах есть стандартный принт от tensorflow:

"2022-11-03 05:59:10.464614: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.8.14/x64/lib/python3.8/site-packages/cv2/../../lib64:/opt/hostedtoolcache/Python/3.8.14/x64/lib", '2022-11-03 05:59:10.464653: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.

Это нормальное поведение tensorflow на машинах, где нет nvidia gpu. Но smoke tests теперь падают, и CI красный.

Предлагаем использовать returncode в акьюраси модуле, по аналогии с тем, как это уже сделано в инференсе. PR скоро откроем.

Smoke test proposal

Привет. Оказывается, в рамках рефакторинга, была внесена бага - если в конфиге был InferenceFramework TF, то запуск inference_benchmark.py падал с ошибкой (если запускать модель через inference_tensorflow.py - всё ок)
Бага пофикшена, PR сегодня пришлём.
Есть предложение добавить smoke test в ваш публичный репозиторий. Это будет быстрый скрипт на коротком конфиге, который просто проверяет, что inference_benchmark не падает на конфиге с разными InferenceFramework и моделями из разных фреймворков. Такой smoke test позволит избегать в дальнейшем подобных проблем.
Если против-оставим такой тест у себя в приватном репозитории.

cc @vladimir-dudnik

Проблемы с заданием количества потоков для TFLite

В TFLite предполагается возможно задать количество потоков (-nthreads). Сейчас возникают ошибки, и если задать этот параметр и через конфиг бенчмарка, и если запускать inference_tensorflow.py (разные ошибки). @maslovaz, посмотрите пожалуйста.

Couldn't build the Image

Host: Ubuntu18.04
OpenVINO: 2020 LTS version
When building with docker as mentioned, it brakes when building dependencies.

Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-l_y1pacb/grpcio/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-6trk24u_-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-l_y1pacb/grpcio/ Error on or near line 92; exiting with status 1 The command '/bin/sh -c ./install_prerequisites.sh' returned a non-zero code: 1
What is the tested OpenVINO version? so I could reproduce the system

Refactoring according linters guides

Conduct a surface fix of existing code style problems.

Sample task list:

  • one linter with a certain set of parameters should be left
    
  • change class names, variables names for more clear
    
  • other linters warnings should be fixed or ignored (config file)
    

Solution:
#269

Добавление общего времени выполнения всех запросов на вывод

@n-berezina-nn, @maslovaz, при подготовке статьи мы с @FenixFly поняли, что нам не хватает еще одного показателя производительности - общего времени выполнения всех запросов на вывод. Он имеет смысл с точки зрения сравнения производительности фреймворков, которые имеют возможности асинхронного исполнения. Таким образом, можно будет включать в сравнение и throughput-режим OpenVINO + матричные операции в MXNet выполняются асинхронно, поэтому для него тоже имеет смысл поддержку вывода без ожидания завершения операций прямого прохода. Как вы думаете?

@FenixFly

Тестирование руководства по сборке и запуску системы

@FenixFly, в процессе тестирования руководства по сборке и запуску системы наряду с мануалкой (она перемещена на соответствующую страницу Wiki) надо протестировать описание сборки (раздел How to build на основной вики-странице), а также Deployment и Startup Guides. При тестировании сборки надо проверить корректность всех команд для каждого фреймворка.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.