Как стать автором
Обновить

ONNX Runtime, OpenVINO и TVM: обзор инструментов для ускорения ML-моделей

Время на прочтение7 мин
Количество просмотров9.1K
Всего голосов 41: ↑41 и ↓0+41
Комментарии11

Комментарии 11

жалко что перевод, а то очень интересны некоторые аспекты?

  1. насколько отклоняются результаты onnx на основном фреймворке в обоих случаях?

  2. есть ли сравнение для jit моделей?

  3. собственно если нужно качество моделей и скорость стоит ли смотреть в эту сторону? конкретнее для больших задач классификации на основе resnet для распознавания.

где можно побольше почитать по теме?

Сама по себе конвертация в onnx почти lossless( там есть некоторая разница в наборе операций и их представлении с TF/TFLite ). Года 3-4 назад, когда сталкивался, на чём-то вроде MobileNetV2 погрешность если и была, то на уровне точности fp32

а квантизация как влияет?

Точность ожидаемо проседает, но точнее не скажу - я не MLщик

Квантизация не особо сильно ухудшает качество модели (иногда в районе 1-го % или даже меньше). Но, всегда нужно держать под рукой тестовый датасет, чтобы можно было бы проверить - "а на сколько качество ухудшилось, и достаточно ли его теперь".

  1. Зависит от модели, но по опыту практически нет изменений в точности (если рассматривать просто конвертацию).

  2. Jit не особо много скорости привносит (в зависимости от модели пока встречал прирост в среднем в 1.5 по скорости).

  3. Для resnet вполне можно смотреть в эту сторону. Плюс, если есть время и свой датасет - то можно рассмотреть пост-квантизацию, прунинг модели (они могут привнести очень большой прирост в скорости, но не слишком просесть по качеству).

Тема сама по себе не особо описанная, так как постоянно развивается. Поэтому тут только либо экспериментировать, либо надеяться на подобные статьи)

Если кому интересно, то с 18 года разрабатываю фреймворк для запуска обученных нейронных сетей на CPU:

https://github.com/ermig1979/Synet

Он ориентирован в основном на однопоточную производительность и оптимизирован под основные процессорные расширения (SSE, AVX, AVX-512, AMX, NEON) (по этому направлению опережает OpenVINO). Он поддерживает конвертацию из формата ONNX и OpenVINO. А также динамическую квантизацию моделей.

Спасибо за работу и что поделились ссылкой!
Будет интересно опробовать и протестировать)

Так бы и сказали, что не можем сделать нормальный GPU. Обучать тоже на CPU советуют?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий