Руководство для инженеров IBM по началу работы с TensorFlow

искусственный интеллект TensorFlow Программа перевода самородков

Руководство инженера IBM по началу работы с TensorFlow

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

Тензор может преобразовывать сложныеnРазмерный вектор и суперформа представлены какnразмерный массив. У тензора есть два свойства: тип данных и форма.

О TensorFlow

TensorFlow — это среда глубокого обучения с открытым исходным кодом, выпущенная в конце 2015 года под лицензией Apache 2.0. С тех пор он стал одним из самых распространенных фреймворков глубокого обучения в мире (по количеству основанных на нем проектов на Github).

TensorFlow является производным от Google DistBelief, системы глубокого обучения, разработанной и принадлежащей команде проекта Google Brain. Google разработал его с нуля для распределенной обработки и оптимально работает на специальной специализированной интегральной схеме (ASIC), также обычно называемой блоком тензорной обработки (TPU) в центрах обработки данных продуктов Google. Этот дизайн позволяет разрабатывать эффективные приложения для глубокого обучения.

Фреймворк может работать на процессоре, графическом процессоре или TPU и может использоваться на сервере, настольном компьютере или мобильном устройстве. Разработчики могут развертывать TensorFlow в разных операционных системах и платформах, как локально, так и в облаке. Многие разработчики утверждают, что TensorFlow лучше поддерживает распределенную обработку и имеет больше преимуществ в коммерческих приложениях, чем аналогичные фреймворки глубокого обучения (такие как Torch и Theano, которые также поддерживают методы аппаратного ускорения и широко используются академическими кругами) Высокая гибкость и производительность.

Нейронные сети глубокого обучения обычно состоят из нескольких слоев. Они используют многомерные массивы для передачи данных или выполнения операций между слоями. Тензор «течет» между слоями нейронной сети. Отсюда и название TensorFlow.

Основным языком программирования, используемым TensorFlow, является Python. заC++, язык Java® и Go предоставляют интерфейсы прикладного программирования (API), которые можно использовать, но стабильность которых не гарантируется, а также многиеC#, Haskell, Julia, Rust, Ruby, Scala, R и даже сторонние привязки, разработанные PHP. Google недавно выпустил оптимизированную для мобильных устройств библиотеку TensorFlow-Lite, позволяющую приложениям TensorFlow работать на Android.

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

Преимущества ТензорФлоу

TensorFlow предоставляет разработчикам множество преимуществ:

  • Вычислительная модель потокового графа. TensorFlow использует графы потоков данных, называемые ориентированными графами, для представления вычислительных моделей. Это позволяет разработчикам легко и напрямую использовать собственные инструменты, чтобы видеть, что происходит между слоями нейронной сети, и интерактивно настраивать параметры и конфигурации для улучшения структуры своей нейронной сети.
  • Простой и удобный API. Разработчики Python могут либо использовать собственные низкоуровневые API-интерфейсы TensorFlow, либо базовые API-интерфейсы для разработки своих собственных моделей, либо использовать высокоуровневые библиотеки API для создания встроенных моделей. TensorFlow имеет множество встроенных библиотек и библиотек сообщества, а также может выступать в качестве высокоуровневого API поверх высокоуровневых сред глубокого обучения, таких как Keras.
  • Гибкая архитектура. Одним из основных преимуществ использования TensorFlow является его модульная, расширяемая и гибкая структура. Разработчики могут легко преобразовывать модели между процессорами CPU, GPU или TPU с помощью всего нескольких изменений кода. Хотя изначально он был разработан для крупномасштабного распределенного обучения и логических выводов, разработчики также могут использовать TensorFlow для экспериментов с другими моделями машинного обучения и системной оптимизации существующих моделей.
  • Распределенная обработка. Google разработал TensorFlow с нуля для работы на специализированных ASIC TPU. Кроме того, TensorFlow может работать на различных графических ядрах NVIDIA. Разработчики могут воспользоваться преимуществами архитектуры ЦП X64 на базе Intel Xeon и Xeon Phi или архитектуры ЦП на базе ARM64. TensorFlow может работать как распределенный процесс в многоархитектурных и многоядерных системах, а также может передавать процессы с интенсивными вычислениями в качестве производственных задач. Разработчики могут создавать кластеры TensorFlow. И распределите эти графы вычислительных потоков по этим кластерам для обучения. Тензоры могут выполнять распределенное обучение синхронно или асинхронно как внутри, так и между потоковыми графами, а также могут совместно использовать общие данные в памяти между сетевыми вычислительными узлами.
  • оперативная производительность. Производительность часто является спорной темой, но большинство разработчиков понимают, что любая среда глубокого обучения полагается на базовое оборудование для оптимальной работы и достижения высокой производительности при низком энергопотреблении. В общем, любой фреймворк должен быть оптимально оптимизирован для своей родной платформы разработки. TensorFlow хорошо работает на TPU Google, но еще лучше, он достигает высокой производительности на различных платформах, от серверов и настольных компьютеров до встроенных систем и мобильных устройств. Фреймворк также поддерживает удивительное количество языков программирования. Хотя другая платформа иногда может превосходить TensorFlow, работающую в собственной среде (например, IBM Watson®, работающая на платформах IBM), она по-прежнему остается любимой разработчиками, поскольку проекты искусственного интеллекта охватывают разные платформы и языки программирования. все из которых должны производить последовательные результаты.

Приложение TensorFlow

В этом разделе будут представлены приложения, в которых TensorFlow выделяется. Очевидно, что, поскольку Google использует свою проприетарную версию TensorFlow для разработки приложений для текстового и речевого поиска, языкового перевода и поиска изображений, основные сильные стороны TensorFlow заключаются в классификации и выводах. Например, Google использует RankBrain (система ранжирования результатов поиска Google) в TensorFlow.

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

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

Какие платформы поддерживают TensorFlow?

TensorFlow поддерживается на любой платформе, поддерживающей среду разработки Python. Однако для подключения к поддерживаемому графическому процессору TensorFlow необходимо полагаться на другое программное обеспечение, такое как набор инструментов NVIDIA CUDA и cuDNN. Готовые двоичные файлы Python (выпущенные в настоящее время) для TensorFlow (версия 1.3) доступны для операционных систем, перечисленных в таблице ниже.

支持 TensorFlow 的操作系统

Уведомление:Для получения поддержки ускорения GPU в Ubuntu или Windows требуется CUDA Toolkit 8.0 и cuDNN 6 или выше, а также карта GPU, совместимая с этой версией набора инструментов и CUDA Computer Capability 3.0 или выше. Ускорение графического процессора больше не поддерживается в TensorFlow, начиная с версии 1.2 в macOS.

Для получения подробной информации см.Установить ТензорФлоу.

Собрать TensorFlow из исходников

Официальное использование Bazel для сборки TensorFlow в Ubuntu и macOS. Сборка с помощью Bazel для Windows или CMake для Windows в Windows все еще является экспериментальной, см.Собрать TensorFlow из исходников.

IBM использовала кабели NVIDIA NVLink для подключения двух процессоров POWER8 и четырех графических процессоров NVIDIA Tesla P100 к высокопроизводительной вычислительной системе S822LC, чтобы сделать PowerAI пригодным для глубокого обучения. Разработчики могут создавать TensorFlow на IBM Power Systems под управлением OpenPOWER Linux. Для получения дополнительной информации вы можете просмотретьГлубокое изучение OpenPOWER: создание TensorFlow в OpenPOWER Linux.

Также доступны многие сборщики, поддерживаемые сообществом или поставщиком.

Как TensorFlow использует аппаратное ускорение?

Чтобы поддерживать использование TensorFlow в более широком диапазоне процессорных и непроцессорных архитектур, Google предоставляет поставщикам новый абстрактный интерфейс для реализации нового аппаратного бэкэнда для ускоренной линейной алгебры (XLA) — предметно-ориентированного компилятора для алгебраических вычислений, который может использоваться для оптимизации вычислений TensorFlow.

CPU

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

Архитектуры HPC, ориентированные на ЦП Intel, такие как серии Intel Xeon и Xeon Phi, обеспечивают ускорение вычислений линейной алгебры за счет использования библиотеки ядра Intel Math для реализации примитивов глубокой нейронной сети. Intel также предоставляет готовые дистрибутивы, оптимизированные для Python, с оптимизированными библиотеками линейной алгебры.

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

GPU

TensorFlow поддерживает определенные графические процессоры NVIDIA, совместимые с соответствующей версией набора инструментов CUDA и отвечающие соответствующим стандартам производительности. Несмотря на некоторые попытки сообщества запустить TensorFlow на графических процессорах, совместимых с OpenCL 1.2 (таких как AMD), поддержка OpenCL все еще является запланированным проектом.

TPU

По данным Google, потоковые графы на основе TPU работают в 15-30 раз лучше, чем на CPU или GPU, и очень энергоэффективны. Google разработал TPU как внешний ускоритель, который подключается к разъему жесткого диска Serial ATA и подключается к хосту через интерфейс PCI Express Gen3 x16, обеспечивая высокую пропускную способность.

Google TPU — это матричные процессоры, а не векторные процессоры, а нейронные сети не требуют высокоточной математики, а используют массивно-параллельные целочисленные операции низкой точности. Неудивительно, что структура матричного процессора (MXU) имеет 65 536 8-битных множителей и пропускает данные через пульсирующие колебания структуры массива, как кровь через сердце.

Этот дизайн представляет собой структуру сложного набора инструкций (CISC), которая, хотя и является однопоточной, позволяет одной высокоуровневой инструкции запускать несколько низкоуровневых операций в MXU, потенциально выполняя 128 000 инструкций за цикл без доступа к памяти.

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

Рекомендации по установке TensorFlow

В общем, TensorFlow может работать на любой платформе, поддерживающей 64-битную среду разработки Python. Этой среды достаточно для обучения и тестирования самых простых примеров и руководств. Однако большинство экспертов сходятся во мнении, что платформа HPC настоятельно рекомендуется для исследований или профессионального развития.

Требования к производительности процессора и памяти

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

Есть два режима производительности глубокого обучения, которые следует учитывать:

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

Параметры виртуальной машины

Виртуальные машины (VMS) для глубокого обучения теперь лучше всего подходят для аппаратных архитектур, ориентированных на ЦП, где доступно несколько ядер. Ускорение на виртуальной машине затруднено, поскольку операционная система хоста управляет физическими устройствами, такими как ЦП и ГП. Известны два метода:

  • Крепление графического процессора: * Работает только на гипервизорах типа 1, таких как Citrix Xen, VMware ESXi, Kernel Virtual Machine и IBM Power. * Накладные расходы на монтирование зависят от конкретной комбинации ЦП, набора микросхем, гипервизора и операционной системы. Вообще говоря, накладные расходы аппаратного обеспечения последнего поколения намного меньше. * Данная комбинация гипервизора и ОС поддерживает определенный графический процессор NVIDIA.
  • Виртуализация графического процессора: * Поддерживает все основные поставщики графических процессоров, такие как NVIDIA (GRID), AMD (MxGPU) и Intel (GVT-G). * Поддержка последней версии OpenCL на некоторых новых графических процессорах (официально TensorFlow не поддерживает OpenCL). * Последняя версия NVIDIA GRID поддерживает CUDA и OpenCL на некоторых новых графических процессорах.

Варианты установки докера

Запуск TensorFlow в контейнере Docker или кластерной системе контейнеров Kubernetes дает множество преимуществ. TensorFlow может распределять потоковые графы в качестве задач выполнения на кластеры серверов TensorFlow, которые фактически сопоставляются с кластерами контейнеров. Дополнительным преимуществом использования Docker является то, что сервер TensorFlow может получать доступ к физическим ядрам графического процессора (устройствам) и назначать им определенные задачи.

Разработчики также могут развернуть TensorFlow в кластерной системе контейнеров Kubernetes на сервере PowerAI OpenPOWER, установив образ Docker, созданный сообществом, например «Обучение TensorFlow с системой PowerAI Kubernetes на серверах OpenPOWER".

Варианты облачной установки

Существует несколько вариантов облачной установки TensorFlow:

  • Google Cloud TPU. Для исследователей у Google есть альфа-версия TensorFlow Research Cloud, которая предоставляет живые экземпляры TPU.
  • Облако Google. Google предоставляет настраиваемые экземпляры машин TensorFlow в определенных регионах с доступом к одному, четырем или восьми устройствам с графическим процессором NVIDIA.
  • Наука и управление данными IBM Cloud. IBM предоставляет среду Python с Jupyter Notebook и Spark. TensorFlow уже предустановлен.
  • Веб-сервисы Amazon (AWS). Amazon предоставляет образы машин Amazon для глубокого обучения AWS (AMI) с дополнительной поддержкой графического процессора NVIDIA, которые работают на различных экземплярах Amazon Elastic Compute Cloud. Предустановлены TensorFlow, Keras и другие фреймворки для глубокого обучения. AMI может поддерживать до 64 ядер ЦП и 8 графических процессоров NVIDIA (K80).
  • Лазурь. TensorFlow можно настроить в экземпляре Docker с помощью службы контейнеров Azure или на сервере Ubuntu. Экземпляр машины Azure может поддерживать 24 ядра ЦП и до 4 графических процессоров NVIDIA (M60 или K80).
  • Кластеры IBM Cloud Kubernetes. Кластеры Kubernetes в IBM Clound могут запускать TensorFlow. Доступен созданный сообществом образ Docker. Серверы POWERAI обеспечивают поддержку GPU.

Какие языки программирования поддерживает TensorFlow?

Хотя ГуглCКод ядра TensorFlow реализован на ++, но его основной язык программирования — Python, и этот API — самый полный, самый мощный и самый простой в использовании. Для получения дополнительной информации см.Документация API Python. Python API также имеет широчайшую документацию и возможности расширения, а также широкую поддержку сообщества.

Помимо Python, TensorFlow поддерживает API на следующих языках, но стабильность не гарантируется:

  • C++. ТензорФлоуC++ API — это следующий по мощности API для построения и выполнения графов потоков данных и TensorFlow Serving. больше оC++ API, см.C++ API. СвязанныйC++ Для получения дополнительной информации об API службы см.Справочник по API обслуживания TensorFlow.
  • язык Java. Хотя этот API является экспериментальным, поддержка TensorFlow в последнем выпуске Android Oreo может сделать этот API более заметным. Для получения дополнительной информации см.tensorflow.org.
  • Идти. Этот API представляет собой экспериментальную привязку к языку Google Go. Для получения дополнительной информации см.package tensorflow.

привязка третьей стороны

Google определил внешний функциональный интерфейс (FFI) для поддержки других языковых привязок. Этот интерфейс используетCAPI предоставляет TensorFlowC++ основные функции. FFI является новым и не может использоваться существующими сторонними привязками.

Опрос GitHub показал, что существуют сторонние привязки TensorFlow, разработанные сообществом или поставщиками на следующих языках.C#, Haskell, Julia, Node.js, PHP, R, Ruby, Rust и Scala.

Android

Теперь появилась новая библиотека TensorFlow-Lite для Android, оптимизированная для запуска приложений TensorFlow. Для получения дополнительной информации см.What's New in Android: O Developer Preview 2 & More.

Упростите TensorFlow с помощью Keras

Слои и модели Keras полностью совместимы с чистым тензором TensorFlow. Поэтому Keras предоставляет хороший плагин определения модели для TensorFlow. Разработчики могут даже использовать Keras с другими библиотеками TensorFlow. Для получения подробной информации см.Использование Keras в качестве краткого интерфейса для TensorFlow: учебник.

в заключении

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

Если вы готовы увидеть несколько примеров использования TensorFlow, ознакомьтесь сАлгоритмы машинного обучения ускоряют процесс обученияиОбучение распознаванию изображений с помощью ноутбуков PowerAIрежим кода разработчика в .


Скачать


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,React,внешний интерфейс,задняя часть,продукт,дизайнЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.