Обмен технологиями | Говоря о TensorRT

искусственный интеллект задняя часть Интернет вещей

Tensor — это библиотека C++, которая обеспечивает высокопроизводительный логический вывод на графических процессорах NVIDIA (GPU). Он предназначен для совместной работы с обучающими средами, такими как TesensorFlow, Caffe, Pytorch и MXNet, и предназначен для быстрого и эффективного вывода сети на графических процессорах.

Некоторые существующие обучающие фреймворки (такие как TensorFlow) уже интегрируют TensorRT, поэтому его можно использовать для ускорения логического вывода в фреймворке. В качестве альтернативы TensorRT можно использовать как библиотеку в пользовательских приложениях, она включает парсеры для импорта существующих моделей из Caffe, ONNX или TensorFlow, а также для программного построения моделей (C++ или Python API).

1. Преимущества TensorRTПосле обучения нейронной сети TensorRT может сжимать, оптимизировать и развертывать сеть во время выполнения без накладных расходов на инфраструктуру. TensorRT улучшает задержку, пропускную способность и эффективность сети за счет объединения слоев, оптимизации выбора ядра и выполнения нормализации и преобразования в оптимальный матричный математический метод в соответствии с заданной точностью.

Для вывода глубокого обучения есть 5 ключевых факторов, используемых для измерения программного обеспечения:

  • пропускная способность
  • эффективный
  • Отложенный
  • точность
  • использование памяти

TensorRT решает эти проблемы, сочетая высокоуровневый API, который абстрагируется от конкретных деталей оборудования, и реализацию оптимизированного вывода для высокой пропускной способности, низкой задержки и малого объема памяти устройства.

2. Где TensorRT подходит дляКак правило, рабочий процесс разработки и развертывания модели глубокого обучения делится на 3 этапа:

Первый этап — обучение модели [как правило, на этом этапе никакая модель не будет обучаться с использованием TensorRT] Второй этап – разработка развернутого решения Третий этап — развертывание с использованием разработанного решения [то есть развертывание с использованием решения на этапе 2].

Этап 1: Обучение На этапе обучения вы обычно сначала определяете проблемы, которые необходимо решить, вход и выход сети и функцию потерь сети, а затем проектируете структуру сети.Следующим шагом является организация и расширение обучающих данных. , данные проверки и данные испытаний в соответствии с вашими потребностями. В процессе обучения модели мы обычно определяем, нужно ли нам изменять функцию потерь сети, гиперпараметры обучения и улучшение набора данных, наблюдая за всем процессом обучения модели. Наконец, мы будем использовать данные проверки для оценки производительности обученной модели. Важно отметить, что на этом этапе никакие модели, как правило, не будут обучаться с помощью TensorRT.

Этап 2. Разработка решения для развертывания На этом этапе мы создадим и проверим решение для развертывания с помощью обученной модели, которая разделена на следующие этапы:

1. В первую очередь необходимо рассмотреть, как работает нейронная сеть в системе, и спроектировать адаптивное решение в соответствии с приоритетами в требованиях. С другой стороны, из-за разнообразия различных систем нам необходимо учитывать множество аспектов при разработке и реализации структуры развертывания. [Например, это одна сеть или несколько сетей, какие шаги постобработки необходимы и т. д.]

2. Когда решение разработано, мы можем использовать TensorRT для создания механизма логического вывода на основе сохраненной сетевой модели. Поскольку во время обучения модели могут быть выбраны разные фреймворки, нам нужно использовать соответствующий парсер для преобразования сохраненной модели в формат TensorRT в соответствии с форматом разных фреймворков. Конкретный рабочий процесс показан на следующем рисунке.file

3. После того, как модель будет успешно проанализирована, нам нужно рассмотреть параметры оптимизации — размер пакета, размер рабочей области, смешанную точность и границы динамической формы, эти параметры выбираются и указываются как часть шага сборки TensorRT, где вы будете основываться на сеть строит оптимизированный механизм вывода.

4. После использования TensorRT для создания механизма вывода нам нужно проверить, может ли он воспроизвести результаты оценки производительности исходной модели. Если мы выберем FP32 или FP16, то это будет очень близко к исходному результату. Если выбрано значение INT8, оно будет иметь некоторые отклонения от исходного результата.

5. Сохраните механизм вывода — называемый файлом плана в сериализованном формате.

Этап 3. Развертывание решения Библиотека TensorRT будет связана с приложением развертывания и будет вызываться, когда приложению потребуется результат логического вывода. Чтобы инициализировать механизм вывода, приложение сначала десериализуется в механизм вывода из файла плана. С другой стороны, TensorRT обычно используется асинхронно, поэтому при поступлении входных данных программа вызывает функцию постановки в очередь с входным буфером и буфером, куда TensorRT помещает результат.

3. Как работает TensorRT?Чтобы оптимизировать вывод модели, TensorRT выполнит оптимизацию [включая оптимизацию для конкретной платформы] в соответствии с определением сети и создаст механизм вывода. Этот процесс называется фазой сборки, и особенно на встраиваемых платформах он может занимать много времени, поэтому обычное приложение создает механизм только один раз, а затем сериализует его в файл плоскости для последующего использования. [Примечание: сгенерированный файл плоскости нельзя переносить между платформами или версиями TensorRT. Кроме того, поскольку файл плоскости представляет собой модель, в которой явно указан графический процессор, если мы хотим использовать другой графический процессор для запуска файла плоскости, мы должны повторно указать графический процессор.]

На этапе сборки выполняются следующие оптимизации графа слоев:

  • Удалите неиспользуемый выходной слой
  • Устранить операцию, эквивалентную отсутствию операции
  • Слияние свертки, смещения и ReLU

Агрегированные операции с достаточно похожими параметрами и одним и тем же исходным тензором [например, свертка 1x1] Объедините объединенные слои, направив выходной слой в правильное конечное место назначения.

4. Какие функции предоставляет TensorRT?Информационная ссылка:docs.NVIDIA.com/deep учитесь в…

  • End -

Благодаря быстрому развитию технологий Amu Lab будет идти в ногу с темпами развития технологий и продолжать рекомендовать всем новейшие технологии и оборудование в индустрии робототехники. Наблюдение за тем, как студенты, прошедшие обучение у нас, делают рывки в технологиях, является величайшей ценностью нашего обучения. Если вы работаете в индустрии роботов, обратите внимание на нашу публичную учетную запись, мы продолжим публиковать самую ценную информацию и технологии в индустрии роботов. Amu Lab стремится к обучению и интеллектуальному оборудованию передовых ИТ-технологий, делая исследования и разработки роботов более эффективными!