TensorFlow vs PyTorch

На практике при работе с Machine Learning алгоритмами Data Scientist сталкивается с вопросом: “Какой фреймворк (библиотеку) выбрать?”, рассматривая два популярных Python-решений: TensorFlow и PyTorch. Сегодня мы подготовили для вас подробное сравнение этих библиотек: читайте в нашей статье про сходства и различия, плюсы и минусы TensorFlow и PyTorch.

Pytorch становится популярней среди исследователей

Как сказано в статье журнала The Gradient, библиотека PyTorch упоминается все чаще на конференциях, посвященных Machine Learning. До 2018 года TensorFlow имел больше упоминаний, но после 2018 года ситуация кардинально изменилась на многих конференциях. Рисунок ниже это иллюстрирует.

График с упоминаниями на конференциях PyTorch и TensorFlow за период 2017 по середину 2019 годов
PyTorch vs TensorFlow: количество упоминаний на конференциях

Но такая тенденция наблюдается лишь у специалистов по Machine Learning. В этой же статье говорилось о списках вакансий на работу, в которых TensorFlow упоминается 1541 раз, а PyTorch — 1437. На блог-платформе Medium имеется более 3000 статей о TensorFlow и более 1200 о PyTorch. Попробуем выяснить почему Data Scientist’ы и ML-исследователи все больше предпочитают PyTorch в качестве основной библиотеки.

Механизмы вычислительных графов в TensorFlow и PyTorch

Библиотека TensorFlow была разработана в Google в 2015 году, а PyTorch появился в 2017 году в Facebook. Обе библиотеки открытые и работают на специальных структурах данных — тензорах, о которых мы рассказывали здесь. Они обе являются масштабируемыми и применяются для глубокого обучения. Кроме того, в основе и PyTorch, и TensorFlow лежат вычислительные графы (computational graphs) – абстракция, которая описывает вычисления в виде ориентированного ациклического графа. Например, выражение y = wx+b можно развернуть в граф, изображенный ниже. Основной особенность такого представления является параллелизм, когда операции выполняются одновременно, что ускоряет работу.

Схема с переменными, операторами и направлениями графов в TensorFlow и PyTorch
Вычислительный граф для выражения y = wx+b

Различие библиотек состоит в том, что PyTorch использует динамические вычислительные графы, а TensorFlow – статические вычислительные графы.

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

Статические вычислительные графы, с другой стороны, требуют перекомпиляции при изменении входных параметров. Однако позволяют получить высокую производительность, когда используются в качестве конечного продукта, в это время они закрыты для изменений и, следовательно, для перекомпиляции.

Распределенность вычислений при обучении

В плане распараллеливания PyTorch имеет огромное преимущество. PyTorch оптимизирует производительность, используя встроенную поддержку асинхронных вызовов Python. Ниже приведен фрагмент кода на Python, объясняющий, как просто реализовать распределенное обучение для модели в PyTorch.

import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP

dist.init_process_group()
model = DDP(model)

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

Визуализация: TensorBoard vs Visdom

Визуализация данных помогает специалистам Machine Learning следить за процессом обучения и отлаживать код в соответствии с результатами. В визуализации явно выигрывает TensorFlow со своим инструментом — TensorBoard. Разработчики на PyTorch используют сторонний инструмент Visdom от Facebook. Минималистичный Visdom имеет не так много особенностей по сравнению с TensorBoard.

Особенности Tensorboard:

  • Отслеживание и визуализация таких показателей, как потери (accuracy) и точность (loss).
  • Визуализация вычислительного графа (его операции и слои).
  • Просмотр весов, смещений (bias) по мере их изменения со временем.
  • Отображение изображений, текста и аудио данных.
  • Профилирование TensorFlow-программ .

Особенности Visdom:

  • Обработка обратных вызовов(callbacks).
  • Построение графиков и управление ими.

Развертывание в production

Когда появляется желание внедрить обученную модель в качестве конечного продукта, то TensorFlow снова берет верх. TensorFlow предоставляет свой фреймворк для REST API — TensorFlow Serving.

А вот у PyTorch такого фреймворка нет, поэтому во многих случаях для production придется воспользоваться сторонними фреймворками типа Flask, Django, FastAPI.

Плюсы и минусы TensorFlow

Подведем итоги, перечислив достоинства и недостатки TensorFlow.

Плюсы TensorFlow:

  • Простой встроенный высокоуровневый API.
  • Многофункциональный
  • Имеет свой фреймворк для развертывания в produсtion.
  • Хорошая поддержка под мобильные устройства.
  • Подробная документация.

Минусы TensorFlow:

  • Сложная отладка.
  • Трудности с внесением изменений (связано с использованием статических вычислительных графов).

Плюсы и минусы PyTorch

Аналогичным образом, резюмируем достоинства и недостатки PyTorch.

Плюсы PyTorch:

  • Интерфейс в Python-стиле.
  • Простое и быстрое внесение изменений и экспериментирование (связано с использованием динамических вычислительных графов).
  • Подробная документация.

Минусы PyTorch:

  • Нет своего инструмента для визуализации.
  • Нет своего фреймворка для развертывания в production.

 

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

А о том, как на практике использовать TensorFlow и PyTorch в реальных Data Science проектах, вы узнаете на наших курсах по Python в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.

Источники
  1. https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/

Добавить комментарий

Поиск по сайту