Оптимизация TensorFlow на современных архитектурах Intel |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-10-09 11:26 TensorFlow — современная платформа глубокого обучения и машинного обучения, дающая возможность извлекать максимальную производительность из оборудования Intel. Эта статья познакомит сообщество разработчиков искусственного интеллекта (ИИ) с методиками оптимизации TensorFlow для платформ на базе процессоров Intel Xeon и Intel Xeon Phi. Эти методики были созданы в результате тесного сотрудничества между специалистами корпораций Intel и Google. Представители обеих корпораций объявили об этом сотрудничестве на первой конференции Intel AI Day в прошлом году.
Мы описываем различные проблемы производительности, с которыми мы столкнулись в процессе оптимизации, и принятые нами решения. Также указан уровень повышения производительности для образца распространенных моделей нейросетей. Принятые методики оптимизации дают возможность повысить производительность на несколько порядков. Например, наши измерения зафиксировали повышение производительности в 70 раз для обучения и в 85 раз для влияния на процессорах Intel Xeon Phi 7250 (KNL). Платформы на базе процессоров Intel Xeon E5 v4 (BDW) и Intel Xeon Phi 7250 стали основной нового поколения решений корпорации Intel. В частности, следует ожидать повышения производительности процессоров Intel Xeon (Skylake) и Xeon Phi (Knights Mill), которые будут выпущены позднее в этом году. При оптимизации производительности моделей глубинного обучения на современных ЦП возникает ряд проблем, достаточно близких к проблемам оптимизации других ресурсоемких приложений в области высокопроизводительных вычислений.
В корпорации Intel для решения этих задач разработали ряд оптимизированных примитивов глубинного обучения, которые можно использовать в разных платформах глубинного обучения для эффективной реализации общих готовых компонентов. Эти готовые компоненты, помимо умножения матриц и свертки, поддерживают следующие возможности.
Дополнительные сведения об оптимизированных примитивах библиотеки Intel Math Kernel Library для глубоких нейросетей (Intel MKL-DNN) см. в этой статье. В TensorFlow реализованы оптимизированные версии операций, использующие примитивы Intel MKL-DNN во всех возможных случаях. Это необходимо, чтобы воспользоваться масштабированием производительности на платформах с архитектурой Intel. Кроме того, реализованы и другие методики оптимизации. В частности, по соображениям производительности в Intel MKL используется формат, отличный от формата по умолчанию в TensorFlow. При этом потребовалось свести к минимуму издержки при преобразовании из одного формата в другой. Также нужно было позаботиться о том, чтобы пользователям TensorFlow не пришлось переделывать существующие модели нейросетей, чтобы воспользоваться оптимизированными алгоритмами. Оптимизация графов Мы реализовали ряд методов оптимизации графов.
Эти меры оптимизации позволяют добиться более высокой производительности без увеличения нагрузки на программистов TensorFlow. Для оптимизации производительности первостепенное значение имеет оптимизация формата данных. Собственный формат TensorFlow зачастую не является наиболее эффективным для обработки определенных операций на ЦП. В таких случаях мы вставляем преобразование данных из формата TensorFlow во внутренний формат, выполняем операцию на ЦП, затем преобразуем данные обратно в формат TensorFlow. Такие преобразования приводят к издержкам производительности, их следует избегать. При оптимизации формата данных определяются подграфы, которые можно целиком выполнить с помощью операций, оптимизированных для Intel MKL, а преобразование формата в пределах подграфов исключено. Автоматически вставляемые узлы преобразования занимаются преобразованием формата данных на границах подграфов. Еще один полезный способ оптимизации — проход слияния, автоматически объединяющий операции, которые можно эффективно выполнить в рамках одной операции Intel MKL. Прочие алгоритмы оптимизации Мы также настроили ряд компонентов платформы TensorFlow, чтобы добиться наивысшей производительности ЦП для разных моделей глубинного обучения. На основе существующего распределителя пула в TensorFlow мы создали наш собственный распределитель. Он действует таким образом, что TensorFlow и Intel MKL вместе используют одни и те же пулы памяти (с помощью функциональности imalloc в Intel MKL), а память не возвращается операционной системе слишком рано. Это позволяет избежать снижения производительности при «промахе» мимо страниц памяти и при очистке страниц памяти. Кроме того, мы тщательно настроили библиотеки управления многопоточной работой (pthreads в TensorFlow и OpenMP в Intel MKL) таким образом, чтобы они могли работать вместе и не боролись друг с другом за ресурсы ЦП.Эксперименты и оценка производительности Примененные меры оптимизации позволили резко повысить производительность на платформах с процессорами Intel Xeon и Intel Xeon Phi. Для демонстрации прироста производительности мы описываем наши наиболее известные методы, а также показатели производительности при базовых и при оптимизированных настройках для трех распространенных тестов ConvNet.Следующие параметры важны для производительности процессоров Intel Xeon (Broadwell) и Intel Xeon Phi (Knights Landing). Мы рекомендуем настраивать их в соответствии с вашей конкретной моделью нейросети и используемой платформой. Мы тщательно настроили эти параметры, чтобы добиться наилучших результатов для тестов convnet на процессорах Intel Xeon и Intel Xeon Phi.
Пример настроек для процессора Intel Xeon (семейство Broadwell, 2 физических процессора, 22 ядра) Пример настроек для процессора Intel Xeon Phi (семейство Knights Landing, 68 ядер) Результаты производительности на процессоре Intel Xeon (семейство Broadwell, 2 физических процессора, 22 ядра) Результаты производительности на процессоре Intel Xeon Phi (семейство Knights Landing, 68 ядер) Результаты производительности для различных размеров пакетов на процессорах Intel Xeon (Broadwell) и Intel Xeon Phi (Knights Landing) — обучение Установка TensorFlow с оптимизациями ЦП Можно либо установить уже готовые двоичные пакеты с помощью pip или conda согласно инструкциям в статье Доступен оптимизированный для Intel пакет wheel TensorFlow, либо самостоятельно собрать пакеты из исходного кода по приведенным ниже инструкциям.
Конфигурация системы
Что это означает для ИИ Оптимизация TensorFlow означает, что решения глубинного обучения, построенные на основе этой широко доступной и широко распространенной платформы, теперь гораздо быстрее работают на процессорах Intel; повышаются гибкость, доступность и масштаб таких решений. Производительность процессоров Intel Xeon Phi, к примеру, масштабируется почти линейно при добавлении ядер и узлов, что позволяет резко снизить время обучения для моделей машинного обучения. Наращивание производительности TensorFlow одновременно с повышением производительности процессоров Intel даст возможность обрабатывать более крупные и сложные нагрузки ИИ.Сотрудничество между корпорациями Intel и Google для оптимизации TensorFlow организовано в ходе непрерывной деятельности, направленной на повышение доступности ИИ для разработчиков и исследователей данных, для реализации возможности запуска приложений ИИ там, где они нужны, на любых устройствах и в любой среде, от пользовательских устройств до облаков. Специалисты Intel считают, что более высокая доступность ИИ является важнейшим фактором для создания моделей и алгоритмов ИИ нового поколения, способных решить наиболее актуальные проблемы бизнеса, науки, техники, медицины и общества. В ходе сотрудничества уже удалось резко повысить производительность на платформах с процессорами Intel Xeon и Intel Xeon Phi. Код с улучшенными алгоритмами доступен в репозитории TensorFlow корпорации Google в GitHub. Мы просим разработчиков из сообщества ИИ попробовать эти меры оптимизации и поделиться своими отзывами. Источник: habrahabr.ru Комментарии: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||