proglib
Сообщение

Почему специалистом по кибербезопасности быть интереснее, чем разработчиком или сисадмином? Приглашаем на вебинар от HackerU

Почему специалистом по кибербезопасности быть интереснее, чем разработчиком или сисадмином? Приглашаем на вебинар от HackerU

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

0
17436

Вышло долгожданное обновление фреймворка машинного обучения – 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 тоже существенно изменился, и значительная часть примеров теперь доступна и на русском языке.

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

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

РУБРИКИ В СТАТЬЕ

МЕРОПРИЯТИЯ

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

ВАКАНСИИ

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

BUG