TensorFlow умер. Да здравствует TensorFlow 2.0!

Вышло долгожданное обновление фреймворка машинного обучения – TensorFlow 2.0. Что же предлагают разработчики Google в альфа-версии?

TensorFlow умер. Да здравствует TensorFlow 2.0!

Вы новичок в TensorFlow? Поздравляем! Вы выбрали лучшее время, чтобы погрузиться в тематику искусственного интеллекта ;)

Основное преимущество TensorFlow – производительность. Этот инструмент создан для массового переноса моделей с уровня исследований в производство и фактически является промышленным станком для ИИ... но примерно таким же понятным для незнакомого с ним пользователя. Низкоуровневый TensorFlow 1.x труден для изучения и заставляет попотеть желающих открывать планеты или развивать медицину.

Так что многие исследователи ограничивались Keras – высокоуровневым API для построения моделей глубокого обучения слой-за-слоем. Keras создан с нуля на Python. Он гибок и прост, оптимизирован под распространенные задачи глубокого обучения. Плюс он работает с несколькими фреймворками машинного обучения, не только с TensorFlow.

А зачем выбирать между привлекательной удобностью Keras и мощным исполнением традиционного TensorFlow? Действительно, незачем! Эта идея и лежит в основе стратегии TensorFlow 2.0.

TensorFlow умер. Да здравствует TensorFlow 2.0!

Теперь Keras превратился в высокоуровневый API, встроенный в TensorFlow 2.0 по умолчанию в виде tf.keras. Его функционал богаче в сравнении со стандартным интерфейсом и позволяет «дотянуться» до продвинутых функций TensorFlow. С основными особенностями tf.keras можно ознакомиться в русскоязычной документации.

Разработчики Google отказались от всего, что вы могли невзлюбить в TensorFlow 1.x. Магический ритуал, чтобы просто сложить два числа? Забудьте. Сессии TensorFlow? Почили в бозе. Переписывание кода для нового железа или масштабирования? Никогда более. Ужасные сообщения об ошибках? Устранено.

TensorFlow 2.0 – это приятный, меняющий правила игры фреймворк, не только мощный, но и удобный.

Eager execution

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

В качестве структур данных теперь можно использовать стандартные структуры Python. Вы можете быстро проверять гипотезы и легко отлаживать код на небольших моделях и малом количестве данных. Eager execution также поддерживает ускорение на GPU и распределенные вычисления на множестве машин.

Использование эталонных моделей

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

Для хранения обученных моделей используется концепция SavedModel.

Интеграция TensorBoard и Keras

Экосистема инструментов в TensorFlow 2.0 прошла тщательную очистку от конвейеров обработки данных до экспорта моделей в TensorBoard – инструмент для визуализации процесса обучения, отладки кода и оптимизации обучаемой модели. TensorBoard теперь совмещен с Keras, и может быть вызван однострочным кодом:

tb_callback = keras.callbacks.TensorBoard(log_dir=log_dir)

model.fit(x_train, y_train, epochs=5,
          validation_data=[x_test, y_test],
          callbacks=[tb_callback])

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

  1. Загрузка данных через tf.data. Данные для обучения считываются через специальные входные конвейеры. Характеристики свойств описываются в tf.feature_column. Поддерживается ввод данных из памяти (например, из NumPy).
  2. Создание, обучение и валидация модели в tf.keras или из готовых моделей в tf.estimator. Если не хотите обучать модели с нуля, вы можете применить трансферное обучение моделей Keras или Estimator, используя модели из TensorFlow Hub.
  3. Запуск и дебаггинг с Eager execution с последующей работой над графом с помощью tf.function (проиллюстрировано в блокноте Jupyter). Процесс сохраняет плюсы выполнения графов в TensorFlow 1.x: оптимизация производительности, удаленное выполнение, сериализация, экспорт и развертывание. К старым методикам добавляется гибкость программ на простом Python.
  4. Использование распределенного обучения. В крупных задачах машинного обучения Distribution Strategy API позволит легко распределять и обучать модели. TensorFlow обеспечивает поддержку различных аппаратных ускорителей – как CPU, так и графических процессоров и TPU, а также конфигураций с несколькими узлами, включая блоки TPU, кластеры Kubernetes и облачные вычисления. Также у TensorFlow есть Lite-версия, позволяющая обучать (или дообучать) модели на мобильных платформах.
  5. Экспорт в SavedModel. TensorFlow стандартизирует формат SavedModel в качестве формата обмена для TensorFlow, TensorFlow Lite, TensorFlow.js, TensorFlow Hub и сторонних платформ.

Миграция c TensorFlow 1.x на TensorFlow 2.0

TensorFlow 1.x некоторое время еще будет поддерживаться, в том числе в течение года будут выпускаться исправления безопасности для последней вариации первой версии. Но главные силы после выпуска стабильной версии TensorFlow 2.0 будут перекинуты на новую версию и развитие ее экосистемы. Сейчас TensorFlow 2.0 доступен в альфа-версии:

pip install tensorflow==2.0.0-alpha0

Для апгрейда до версии TensorFlow 2.0 команда разработчиков написала upgrade script:

tf_upgrade_v2 --infile tensorfoo.py --outfile tensorfoo-upgraded.py

API в TensorFlow 2.0 стало более связным и ясным, сокращено дублирование функционала. В связи с этим произошли изменения названий множества функций и их расположения. Чтобы избежать проблем с совместимостью, написан модуль tf.compat.v1, содержащий все элементы API 1.x кроме tf.contrib.

При запуске upgrade script все изменения можно посмотреть в логе. В результате обработки скриптом старая программа полностью переходит на новый API. Но для понимания нового, ясного стиля TensorFlow 2.0 нужно внимательно изучить документацию.

Заметим, что сайт TensorFlow тоже существенно изменился, и значительная часть примеров теперь доступна и на русском языке.

Основные источники: первый, второй.

Вам также могут быть интересны:

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ