Официальная интерпретация: все новые функции, появившиеся в TensorFlow 2.0

TensorFlow

Выбрано из Medium, автор: TensorFlow, скомпилировано сердцем машины.

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

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

В ноябре прошлого года TensorFlow отпраздновал свой третий день рождения. Вскоре произойдет еще одна важная веха — TensorFlow 2.0.

TensorFlow 2.0 будет ориентирован на простоту и удобство использования, а основные направления обновления включают:

  • с помощью Кераса иeager executionСоздавайте модели легко.

  • Обеспечьте надежное развертывание рабочей модели на любой платформе.

  • Предоставляет мощные экспериментальные инструменты для исследований.

  • Упростите API, удалив устаревшие API и уменьшив дублирование.

В Google заявили, что за последние несколько лет в TensorFlow было добавлено множество компонентов. Благодаря масштабной перестройке TensorFlow 2.0 эти возможности будут объединены в комплексную платформу, поддерживающую весь рабочий процесс машинного обучения от обучения до развертывания. На следующей диаграмме кратко показана новая архитектура TensorFlow 2.0:

Примечание. Хотя часть обучения на приведенном выше рисунке посвящена API Python, TensorFlow.js также поддерживает модели обучения. TensorFlow 2.0 также имеет разную степень поддержки других языков, включая Swift, R и Julia.

Создавайте модели легко

Команда TensorFlow недавно объявила, что Keras API станет основным высокоуровневым API для построения и обучения моделей в TensorFlow. Keras API упрощает запуск проекта с помощью TensorFlow. Важно отметить, что Keras предоставляет несколько API-интерфейсов для построения моделей (последовательные, функциональные и подклассы), поэтому вы можете выбрать уровень абстракции, соответствующий вашему проекту. Реализация TensorFlow имеет несколько улучшений, в том числе быстрое выполнение для прямой итерации и интуитивно понятной отладки, а также tf.data для построения масштабируемых входных конвейеров.

Вот пример рабочего процесса (в ближайшие месяцы мы будем работать над обновлением руководства, ссылка на которое приведена ниже):

  1. Загрузите данные с помощью tf.data. Прочитайте обучающие данные с входным потоком, созданным tf.data. Используйте tf.feature_column для описания функций объектов, таких как сегментация и пересечение объектов. Также поддерживается удобный ввод из данных в памяти, таких как NumPy.

  2. Создавайте, обучайте и проверяйте модели с помощью tf.keras, готовых оценщиков. Keras тесно интегрирован с остальной частью TensorFlow, поэтому вы всегда можете получить доступ к функциям TensorFlow. Стандартный набор упакованных моделей (например, линейная или логистическая регрессия, деревья с градиентным усилением, случайные леса) также можно использовать напрямую (реализовано с помощью API tf.estimator). Если вы не хотите обучать модель с нуля, вскоре вы сможете обучить модель Keras или Estimator, используя трансферное обучение через модуль TensorFlow Hub.

  3. Запустите и отладьте с нетерпеливым выполнением, затем используйте tf.function на графике. TensorFlow 2.0 по умолчанию работает с быстрым выполнением для простоты использования и плавной отладки. Кроме того, аннотация tf.function прозрачно преобразует программы Python в графы TensorFlow. Этот процесс сохраняет все преимущества выполнения на основе графа TensorFlow 1.x: оптимизацию производительности, удаленное выполнение и возможность сериализации, экспорта и развертывания, добавляя при этом гибкость и простоту выражения программ на простом Python.

  4. Распределенное обучение с использованием распределенной стратегии. Для большинства задач обучения машинному обучению API стратегии распространения упрощает распространение и обучение моделей на различных аппаратных конфигурациях без изменения определения модели. Поскольку TensorFlow обеспечивает поддержку ряда аппаратных ускорителей (например, ЦП, ГП, ТПУ), вы можете распределять учебные рабочие нагрузки на конфигурации с одним узлом/мультиускорителем, а также на конфигурации с несколькими узлами/мультиускорителями, включая модули TPU. Хотя этот API поддерживает различные конфигурации кластеров, он предоставляет шаблоны для развертывания обучения на кластерах Kubernetes локально или в облаке.

  5. Экспорт в SavedModel. TensorFlow будет стандартизирован на SavedModel в качестве формата обмена для TentsorFlow Serving, TensorFlow Lite, TensorFlow.js, TentsorFlow Hub и других.

Надежное развертывание производственной модели на любой платформе

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

  • Обслуживание TensorFlow: библиотека TensorFlow, которая позволяет обслуживать модели через буферы HTTP/REST или gRPC/Protocol.

  • TensorFlow Lite: облегченное решение TensorFlow для мобильных и встроенных устройств позволяет развертывать модели на Android, iOS и встроенных системах, таких как Raspberry Pi и Edge TPU.

  • TensorFlow.js: поддерживает развертывание моделей в среде JavaScript, например, через Node.js. TensorFlow.js развертывает модели в веб-браузере или на стороне сервера, а также поддерживает определение моделей в JavaScript и использование Keras-подобного API непосредственно в веб-браузер Обучите модель.

TensorFlow также поддерживает другие языки (поддерживаемые более широким сообществом), включая: C, Java, Go, C#, Rust,Julia, Р и т. д.

Предоставляет мощные экспериментальные инструменты для исследований

TensorFlow упрощает перенос новых идей из концепции в код и из моделей в публикации. TensorFlow 2.0 сочетает в себе множество функций для определения и обучения современных моделей без ущерба для скорости или производительности:

  • Keras Functional API и Model Subclassing API: позволяет создавать сложные топологии, включая использование остаточных слоев, настраиваемые модели с несколькими входами/выходами и принудительно записываемые прямые проходы.

  • Пользовательская логика обучения: детальное управление вычислением градиента с помощью tf.GradientTape и tf.custom_gradient.

  • Для большей гибкости и контроля низкоуровневый API TensorFlow всегда доступен и работает с абстракциями более высокого уровня для полностью настраиваемой логики.

TensorFlow 2.0 добавляет дополнительные функции, которые позволяют исследователям и опытным пользователям экспериментировать с многофункциональными плагинами, такими как Ragged Tensors, TensorFlow Probability, Tensor2Tensor и другими.

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

Различия между TensorFlow 1.x и 2.0

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

Основные изменения на этот раз включают в себя:

  • Удалите обработчик очереди в пользу tf.data.

  • Удалить коллекцию графики.

  • Изменения в том, как обрабатываются переменные.

  • Перемещение и переименование символов API.

Кроме того, tf.contrib будет удален из основного репозитория TensorFlow и процесса сборки. Модули contrib TensorFlow вышли за рамки того, что может поддерживать и поддерживать один репозиторий. Большие проекты лучше поддерживать отдельно, в то время как небольшие расширения будут постепенно перемещаться в основной код TensorFlow. Специальная группа по интересам (SIG) была сформирована для поддержки и дальнейшего развития некоторых из наиболее важных будущих проектов вклада. Если вы хотите внести свой вклад, пожалуйста, свяжитесь со следующими RFC:

GitHub.com/tensorflow/…

Совместимость и устойчивость

Чтобы упростить переход на TensorFlow 2.0, будет создан инструмент преобразования для обновления кода TensorFlow 1.x Python для использования API-интерфейсов, совместимых с TensorFlow 2.0, или для пометки случаев, когда код не может быть преобразован автоматически.

Не все изменения можно полностью автоматизировать. Например, некоторые устаревшие API не имеют прямых эквивалентов. Вот почему мы представляем модуль совместимости tensorflow.compat.v1, который поддерживает полный API TensorFlow 1.x (включая tf.contrib). Этот модуль будет поддерживаться в рамках временной шкалы TensorFlow 2.x и позволит коду, написанному в TensorFlow 1.x, оставаться функциональным.

Кроме того, SavedModels или сохраненные GraphDefs будут обратно совместимы. Сохраненные модели, сохраненные с помощью TensorFlow 1.x, будут по-прежнему загружаться и выполняться в версии 2.x. Однако изменения в версии 2.0 означают, что имена переменных в исходной контрольной точке могут измениться, поэтому использование контрольной точки до версии 2.0 и кода, преобразованного в версию 2.0, может не гарантировать работоспособность. Подробнее см. в руководстве по TensorFlow 2.0:

GitHub.com/tensorflow/…

Мы считаем, что TensorFlow 2.0 принесет большую пользу сообществу, и сделали все возможное, чтобы упростить переход. Однако мы также обнаружили, что для переноса наших текущих потоков требуется время, и мы ценим текущие инвестиции сообщества в изучение и использование TensorFlow. Мы предоставим 12 месяцев исправлений безопасности в самой последней версии 1.x, чтобы дать существующим пользователям достаточно времени для перехода и использования преимуществ TensorFlow 2.0.

Хронология TensorFlow 2.0

Предварительная версия TensorFlow 2.0 была выпущена ранее в этом году. Теперь вы можете разрабатывать TensorFlow 2.0, используя tf.keras, быстрое выполнение, предварительно упакованные модели и библиотеки развертывания. Также частично доступен API стратегии распределения.

Оригинальная ссылка:medium.com/tensorflow/…