Как разработчики могут извлечь выгоду из оптимизации TensorFlow от Intel

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


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

TensorFlow поднялся в известность по той же самой причине — абстракция.

Теперь с его новейшей библиотекой TensorFlow Graphics он направлен на решение ключевых задач компьютерного зрения путем включения знаний из графики в изображения, что в свою очередь приводит к созданию надежных архитектур нейронных сетей.

TensorFlow-это широко используемая структура машинного обучения в области глубокого обучения, требующая эффективного использования вычислительных ресурсов.

В то время как предпринимаются усилия, чтобы сделать глубокое обучение более доступным через такие платформы, как TensorFlow, такие компании, как Intel®, настраивают TensorFlow для извлечения высокой производительности.

Структура TensorFlow была оптимизирована 1 с использованием библиотеки Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN) primitives, популярной библиотеки производительности для приложений глубокого обучения.

TensorFlow следует парадигме потока данных для вычислений, и это хорошая модель для выполнения параллелизма.

TensorFlow разработан, чтобы быть гибким, масштабируемым и развертываемым. Например, новые разработчики могут получить быстрый старт, поскольку эта структура скрывает все сложные распределенные тренировки, и разработчикам не нужно понимать API низкого уровня.

Как Ключ Является Аппаратным Для Глубокого Обучения Вывода

Вывод о глубоком обучении может быть сделан с помощью двух различных стратегий, каждая из которых имеет различные измерения производительности и рекомендации. Первый - это максимальная пропускная способность (MxT) и направлен на обработку как можно большего количества изображений в секунду, проходящих в пакетах размером > 1. Для обеспечения максимальной пропускной способности наилучшая производительность достигается за счет использования всех физических ядер в одном сокете.

Вывод в реальном времени (RTI) - это совершенно другой режим, в котором мы обычно хотим обработать одно изображение как можно быстрее. Здесь цель состоит в том, чтобы избежать штрафов от чрезмерного запуска потока и оркестрации между параллельными процессами. Стратегия состоит в том, чтобы ограничить и выполнить быстро. Следующие наиболее известные методы (BKMs) отличаются там, где это отмечено с помощью MxT RTI.

Как Intel® Влияет На Производительность

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

Чтобы объяснить преимущества, которые Intel® приносит в таблицу, давайте возьмем пример 2 классификации документов .

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

Любая типичная задача классификации документов будет содержать следующие шаги:

  • Бинарный классификатор: обозначить данное изображение как документ или не документ
  • Мультиклассовый классификатор: метка изображения, классифицированного как документ, на передний, задний или развернутый
  • OCR: этот модуль получает изображение и превращает его в текст
  • Аутентификация изображения: Этот модуль ищет соответствие между изображением, доступным в документе, и изображением реального человека, доступным в базе данных
  • Аутентификация текста: этот модуль ищет соответствие между текстом, доступным в документе, и данными реального лица, доступными в базе данных

Бинарный и Многоклассовый классификаторы, используемые в экспериментах настоящей работы, были реализованы с использованием Keras* high-level API, доступного на TensorFlow.

Так, на процессоре, когда использовался дистрибутив Intel® для Python* вместе с оптимизацией Intel® для TensorFlow, около 70% до 80% улучшения наблюдалось только при установке оптимизации Intel® для TensorFlow.

Это делается путем установки количества потоков для параллельного выполнения операций Inter и Intra в TensorFlow и Keras.

Чтобы сделать это, установите intra_op_parallelism_threads и OMP_NUM_THREADS равным числу физических ядер; и установите inter_op_parallelism_threads равным числу сокетов, тогда как, KMP_BLOCKTIME равен нулю;

Процессор Intel® Xeon® Platinum CPU 8153 имеет 32 физических ядра и 2 сокета, поэтому значение intra_op_parallelism_threads равно 32, а inter_op_parallelism_threads равно 2, как показано в приведенном ниже фрагменте кода:

import tensorflow as tf

from tensorflow.keras import backend as K

K.set_session(

tf.Session(config=tf.ConfigProto(intra_op_parallelism_threads=32, inter_op_parallelism_threads=2)))

Параметры времени выполнения сильно влияют на производительность TensorFlow. Понимание их поможет получить наилучшую производительность из оптимизации Intel® TensorFlow.

  • intra_ / inter_op_parallelism_threads
  • Структура данных

Рекомендуемые настройки (RTI)? intra_op_parallelism = #физические ядра

Рекомендуемые настройки ? inter_op_parallelism = 2

tf_cnn_benchmarks usage (shell)

python tf_cnn_benchmarks.py --num_intra_threads=cores --num_inter_threads=2

intra_op_parallelism_threads и inter_op_parallelism_threads-это переменные времени выполнения, определенные в TensorFlow. ConfigProto. ConfigProto используется для настройки при создании сеанса.

Эти две переменные управляют количеством используемых ядер.

Этот параметр среды выполнения управляет параллелизмом внутри операции. Например, если умножение или уменьшение матрицы предназначено для выполнения в нескольких потоках, эта переменная должна быть установлена. TensorFlow будет планировать задачи в пуле потоков, который содержит потоки intra_op_parallelism_threads.

Эти оптимизации могут привести к повышению производительности на порядок. Например, измерения показывают до 70x более высокую производительность для обучения и до 85x более высокую производительность для вывода на процессоре Intel® Xeon Phi™ 7250.

The comparison was taken using a default environment with libraries from official pip channel (baseline) and an Intel® optimized environment where Intel® Distribution for Python* and Intel® Optimization for TensorFlow* were installed. 

intel TensorFlow
Источник: Intel

Результаты показывают, что при обучении двоичного классификатора изображений было достигнуто ускорение 3.1 X, а при обучении многоклассового классификатора изображений-ускорение 3.6 x.

Для еще большей производительности размер пакета был увеличен в оптимизированной среде. Увеличение размера партии позволило повысить производительность, но привело к снижению точности на обоих классификаторах.

Снижение точности валидации на бинарном классификаторе составило от 98% до 85%, а на многоклассовом-от 95% до 44%.

Мы также можем воспользоваться большим объемом памяти, доступным на масштабируемых процессорах Intel® Xeon®, и увеличить размер пакета для обработки большего количества изображений одновременно с вычислением градиентов нейронной сети. Увеличение размера пакета может уменьшить время выполнения для обучения на процессорах, но это также может повлиять на точность тестирования, поэтому этот шаг должен быть предпринят тщательно, чтобы решить, стоит ли увеличение времени выполнения потери точности.

Вывод

Платформа машинного обучения TensorFlow имеет всестороннюю, гибкую экосистему инструментов, библиотек и ресурсов сообщества, которая позволяет исследователям продвигать современное состояние в ML, а разработчикам легко создавать и развертывать приложения с поддержкой ML.

Теперь, с выпуском TensorFlow 2.0, больше внимания уделяется производительности разработчиков, простоте и простоте использования. Существует несколько изменений в TensorFlow 2.0, чтобы сделать пользователей TensorFlow более продуктивными. TensorFlow 2.0 удаляет избыточные API , делает API более последовательными ( унифицированные RNNs, унифицированные оптимизаторы) и улучшает интеграцию со средой выполнения Python с помощью быстрого выполнения.

Оптимизация TensorFlow означает, что приложения для глубокого обучения, построенные с использованием этой широко доступной и широко применяемой платформы, теперь могут работать намного быстрее на процессорах Intel® для повышения гибкости, доступности и масштабирования.

Процессор Intel® Xeon Phi, например, предназначен для масштабирования в почти линейном режиме между ядрами и узлами, чтобы значительно сократить время для обучения моделей машинного обучения.

Сотрудничество между Intel® и Google по оптимизации TensorFlow является частью продолжающихся усилий, направленных на то, чтобы сделать ИИ более доступным для разработчиков и исследователей данных, а также чтобы позволить приложениям ИИ работать везде, где они необходимы на любом устройстве—от края до облака. Intel® считает, что это является ключом к созданию следующего поколения алгоритмов и моделей искусственного интеллекта для решения наиболее актуальных проблем в бизнесе, науке, технике, медицине и обществе.


Источник: analyticsindiamag.com

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