Если вы хорошо знаете, что такое глубокое обучение, что, скорее всего, не раз слышали такую фразу: «PyTorch против TensorFlow».
PyTorch и TensorFlow – это два самых популярных фреймворка глубокого обучения. В этом руководстве представлен полный обзор отличительных особенностей каждого из них, который призван помочь вам выбрать фреймворк для вашего следующего проекта глубокого обучения.
Для начала мы поговорим о том, что такое PyTorch и TensorFlow, а затем проанализируем и оценим возможности, которые они предлагают.
Давайте начнем!
1. Что такое PyTorch?
PyTorch — это фреймворк с открытым исходным кодом, предназначенный для создания моделей машинного и глубокого обучения для различных приложений, в том числе приложений для обработки естественного языка и машинного обучения.
Это Pythonic-фреймворк, разработанный Meta AI (а не Facebook AI) в 2016 году на базе Torch – пакета, написанного на Lua.
Недавно Meta AI выпустила PyTorch 2.0. В частности, новый релиз предлагает улучшенную поддержку распределенного обучения, компиляции моделей и графовых нейронных сетей.
2. Что такое TensorFlow?
TensorFlow – это комплексный фреймворк машинного обучения с открытым исходным кодом, выпущенный компанией Google в 2014 году. В нем есть такие функции, как подготовка данных, развертывание моделей и MLOps.
С TensorFlow вы получаете поддержку кроссплатформенной разработки и встроенную поддержку на всех этапах жизненного цикла машинного обучения.
3. PyTorch против TensorFlow
И PyTorch, и TensorFlow – это очень популярные фреймворки среди членов сообщества глубокого обучения. Обе эти платформы предоставляют встроенную поддержку для большинства приложений, над которыми вы можете работать.
Здесь мы проанализирует ключевые особенности PyTorch и TensorFlow, а также определим сценарии использования, при которых вы можете предпочесть один фреймворк другому.
#1. Библиотека наборов данных и предобученных моделей
Фреймворк глубокого обучения поставляется с полным арсеналом. Вряд ли вам хочется писать код модели с нуля. Вместо этого вы можете воспользоваться предобученными моделями и дообучить их в соответствии со своим сценарием использования.
Аналогично нам бы хотелось, чтобы в свободном доступе находились часто используемые наборы данных. Таким образом, мы сможем быстро создавать экспериментальные модели и нам не придется настраивать конвейер сбора данных или импортировать и очищать данные из других источников.
В связи с этим, хотелось бы, чтобы эти фреймворки содержали как наборы данных, так и предобученные модели, чтобы мы могли с их помощью быстро создавать базовые модели.
Наборы данных и модели PyTorch
PyTorch содержит такие библиотеки, как torchtext, torchaudio и torchvision, которые необходимы для задач обработки естественного языка, обработки аудио и изображений соответственно. Поэтому, когда вы работаете с PyTorch, вы смело можете использовать наборы данных и модели, которые предоставляют эти библиотеки, в частности:
- Библиотеки torchtext.datasets и torchtext.models предоставляют наборы данных и предобученные модели для задач обработки естественного языка
- Библиотеки torchvision.datasets и torchvision.models предоставляют наборы данных и предобученные модели для задач компьютерного зрения
- Библиотеки torchaudio.datasets и torchaudio.models предоставляют наборы данных и предобученные модели для задач машинной обработки аудио
Наборы данных и модели TensorFlow
- TensorFlow Datasets (офиц.) содержит наборы данных, которые вы можете использовать с TensorFlow
- TensorFlow Model Hub, или Model Garden, содержит предобученные модели, которые вы можете использовать в нескольких доменах
#2. Поддержка развертывания
В споре между PyTorch и TensorFlow, чаще всего, центральное место занимает именно развертывание.
Модель машинного обучения, которая хорошо работает в вашей локальной среде разработки, - это отличное начало. Но, чтобы извлечь хоть какую-то выгоду из моделей машинного обучения, важно запустить их в производство и постоянно отслеживать.
Здесь мы рассмотрим, какие функции предлагают PyTorch и TensorFlow для запуска моделей машинного обучения в производство.
TensorFlow Extended (TFX)
TensorFlow Extended, скоращенно TFX, - это фреймворк развертывания на базе TensorFlow. Он обеспечивает функциональные возможности, которые помогают в организации и сопровождении конвейеров машинного обучения. Помимо этого, он предоставляет функции для проверки и преобразования данных.
С помощью TensorFlow Serving вы сможете развертывать модели машинного обучения в производственных средах.
TorchServe
Существует общее мнение, что PyTorch популярен в научной области, а TensorFlow – в промышленной. Но совсем недавно оба эти фреймворка смогли найти более широкое применение.
Подобно TensorFlow Serving, PyTorch предоставляет TorchServe – простой в использовании фреймворк, который упрощает обслуживание моделей PyTorch в производственной среде. К тому же, чтобы развертывать модели машинного обучения на мобильных и других периферийных устройствах, вы также можете использовать TensorFlow Lite.
Несмотря на то, что поддержку развертывания обеспечивают оба фреймворка, TensorFlow поддерживает развертывание моделей по умолчанию. Поэтому, если мы говорим о производственных средах, то лучше выбрать именно его.
#3. Функции для интерпретируемости модели
Вы можете создавать модели глубокого обучения для приложений, которые используются в таких областях, как здравоохранение и финансы. Однако если модели представляют собой «черные ящики» и выдают лишь конкретную метку или прогноз, возникает вопрос: как интерпретировать прогноз модели?
Это привело к появлению интерпретируемого машинного обучения (или объяснимого МО), а также подходов к объяснению того, как работают нейронные сети и прочие модели машинного обучения.
Получается, что интерпретируемость крайне важна для глубокого обучения и лучшего понимания принципа работы нейронных сетей. Так что, давайте посмотрим, какие функции нам предлагают PyTorch и TensorFlow.
PyTorch Captum
PyTorch Captum – это библиотека для интерпретации моделей для PyTorch, предоставляющая для этих целей несколько функций.
К этим функциям относятся следующие методы:
- Метод интегрированных градиентов
- Методы LIME и SHAP
- Метод DeepLIFT
- Метод GradCAM и его разновидности
- Методы атрибуции слоев
TensorFlow Explain (tf-explain)
TensorFlow Explain (tf-explain) – это библиотека, которая предоставляет функции для интерпретации нейронных сетей, в том числе:
- Метод интегрированных градиентов
- Метод GradCAM
- Метод SmoothGrad
- Метод Vanilla Gradients и т.д.
Мы рассмотрели функции для интерпретации моделей. Теперь перейдем к еще одному важному аспекту – конфиденциальности.
#4. Поддержка конфиденциального машинного обучения
То, насколько полезными являются модели машинного обучения, зависит от их доступа к реальным данным. Но здесь есть свои подводные камни: теряется конфиденциальность данных. За последнее время были достигнуты значительные успехи в области конфиденциального машинного обучения, например, разработана технология дифференциальной конфиденциальности и методика федеративного обучения.
PyTorch Opacus
Дифференциально-приватное обучение моделей гарантирует, что отдельные записи будут способны сохранять полезность информации о всем наборе данных.
PyTorch Opacus позволяет обучать модели по технологии дифференциальной приватности.
TensorFlow Federated
Федеративное обучение устраняет необходимость в централизованном сборе и обработке данных. При таком подходе данные никогда не покидают владельца или помещение. Таким образом, федеративное обучение обеспечивает лучшее распоряжение данными.
TensorFlow Federated предоставляет функции, который позволяют обучать модели машинного обучения на децентрализованных данных.
#5. Простота изучения
PyTorch — это Pythonic-фреймворк глубокого обучения. Чтобы вам было комфортно программировать в PyTorch, вам потребуется средний уровень знаний Python, в том числе хорошее понимание таких концепций объектно-ориентированного программирования, как наследование.
Что же касается TensorFlow, здесь вы можете воспользоваться API Keras. Это API высокого уровня, который упрощает некоторые детали низкоуровневой реализации. В конечном итоге, если вы только начинаете создавать модели глубокого обучения, вам может быть проще использовать Keras.
4. PyTorch против TensorFlow: краткий обзор
Функция |
PyTorch |
TensorFlow |
Библиотека набора данных и предобученных моделей |
Наборы данных и предобученные модели можно найти в torchtext, touchaudio и torchvision |
Наборы данных и предобученные модели можно найти в torchtext, touchaudio и torchvision |
Развертывание |
TorchServe для обслуживания моделей машинного обучения |
TensorFlow Serving и TensorFlow Lite для развертывания моделей
|
Интерпретируемость моделей |
PyTorch Captum |
tf-explain |
Конфиденциальное машинное обучение |
PyTorch Opacus для дифференциально-приватного обучения моделей |
TensorFlow Federated для федеративного машинного обучения |
Простота изучения |
Требуется средний уровень знаний Python |
Относительно проще в изучении и использовании |