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

В настоящее время наиболее известными фреймворками являются PyTorch и TensorFlow, созданные Facebook и Google соответственно.

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

Почему сравнение?

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

TensorFlow и PyTorch — не единственные существующие фреймворки для глубокого обучения — JAX, MXNet и факел-предшественник PyTorch — все это жизнеспособные возможности, — но они, безусловно, самые популярные.

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

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

ПиТорч

PyTorch — это программное обеспечение для машинного обучения Python с открытым исходным кодом, созданное командой машинного обучения Facebook AI Research. Впервые он был выпущен в 2016 году и основан на платформе машинного обучения Torch, которая немного старше и использует Lua.

PyTorch используется в ряде известных приложений для глубокого обучения. Он содержит функцию Tesla Autopilot, а также Pyro, вероятностный язык программирования Uber.

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

Хотя PyTorch был создан с учетом Python, он также имеет интерфейс C++. PyTorch выделяется среди сред машинного обучения своим императивным и «питоническим» стилем программирования. Большинство фреймворков машинного обучения являются декларативными.

ТензорФлоу

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

Он основан на DistBelief, частной платформе машинного обучения Google с закрытым исходным кодом.

Многие языки программирования, включая Python, Java, C++ и JavaScript, включают интерфейсы в структуру.

TensorFlow доступен в двух основных версиях: оригинальной TensorFlow и TensorFlow 2, которая была запущена в конце 2019 года. TensorFlow 2 предоставляет несколько улучшений платформы, которые упрощают ее использование и делают ее более сопоставимой с другими платформами машинного обучения.

PyTorch против TensorFlow

Ниже приведены наиболее существенные различия между PyTorch и TensorFlow.

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

В эссе 2017 года для журнала Towards Data Science Кирилл Дубовиков, технический директор Cinimex DataLab, излагает некоторые из этих несоответствий. TensorFlow, по словам Дубовикова, «больше похож на библиотеку, чем на фреймворк», поскольку «все операции довольно низкоуровневые, и вам нужно будет написать много шаблонного кода, даже если вы этого не хотите». В то время как TensorFlow предлагает абстракции, которые могут помочь вам писать меньше шаблонного кода, более Pythonic и императивный стиль программирования PyTorch может сделать его более очевидным и удобным для пользователя.

Однако некоторые аспекты фреймворка могут сделать TensorFlow более привлекательным в определенных случаях.

Панели мониторинга и визуализация данных

TensorFlow содержит TensorBoard, платформу визуализации для отображения информационных панелей данных. У PyTorch есть собственный инструмент визуализации Visdom, однако он не такой всеобъемлющий, как TensorBoard. TensorBoard также интегрирован с PyTorch.

Развертывание и масштабируемость

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

Модели TensorFlow традиционно проще развертывать в браузерах и телефонах с помощью TensorFlow Extended (TFX), инфраструктуры развертывания TensorFlow, чем модели PyTorch ML. TensorFlow также упростил развертывание в целом.

Это изменилось в 2020 году, когда был выпущен TorchServe, инструмент для обслуживания моделей PyTorch. Инструмент не такой сложный, как TFX, но предлагает гибкий и простой механизм развертывания.

Параллелизм данных.

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

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

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

Другие отличия

ТензорФлоу

ПиТорч

Набор данных.

Идеально подходит для огромных наборов данных и высокопроизводительных моделей.

Идеально подходит для огромных наборов данных и высокопроизводительных моделей.

Уровень API.

Предоставляет как высокоуровневые, так и низкоуровневые API

Предоставляет только низкоуровневые API

Представление.

Высокая производительность.

Высокая производительность.

Архитектура.

Это сложно и может быть не особенно полезно для новичков.

Сложность высокая, читаемость низкая.

Простота использования.

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

Нужно написать больше строк кода, и это не так просто, как Tensorflow.

Отладка.

Сложно отлаживать.

Легко отлаживать.

PyTorch против TensorFlow: кто что использует?

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

Многие профессионалы отрасли долгое время считали TensorFlow оптимальным вариантом. В результате, если вы работаете с профессиональным специалистом по данным или исследователем искусственного интеллекта, вероятно, стоит изучить TensowFlow, просто чтобы убедиться, что вы находитесь на одной волне.

Эта модель изменилась в последние годы. PyTorch, например, превзошел TensorFlow в начале 2019 года и с тех пор только вырос, согласно данным Papers With Code. PyTorch использовался в 58% статей в июне 2021 года, тогда как TensorFlow использовался только в 13% публикаций. Согласно данным, упомянутым на важных конференциях, исследователи предпочитают PyTorch с большим отрывом.

Снижение популярности TensorFlow обычно соответствует выпуску TensorFlow версии 2.0, хотя многие недавние реализации по-прежнему используют более старую версию.

Нет никаких гарантий, что новая тенденция PyTorch сохранится. Вполне возможно, что через год или два TensorFlow вернет себе известность, или новая среда может занять место в среде машинного обучения.

Тем не менее, популярность PyTorch выросла, и ожидается, что она еще долгое время будет самой популярной средой машинного обучения.

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

Что лучше использовать: TensorFlow или PyTorch?

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

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

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

TensorFlow через TFX значительно упрощает развертывание и добавляет в PyTorch функции, которых не хватает PyTorch.

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