PyTorch против TensorFlow:подробное сравнение
Растущая популярность глубокого обучения создала здоровую конкуренцию между фреймворками глубокого обучения. PyTorch и TensorFlow выделяются как две самые популярные среды глубокого обучения. Библиотеки соревнуются друг с другом за право стать основным инструментом глубокого обучения.
TensorFlow старше и всегда лидировал из-за этого, но PyTorch догнал его за последние шесть месяцев. При выборе фреймворка глубокого обучения для проекта возникает много путаницы.
В этой статье сравниваются PyTorch и TensorFlow и проводится подробное сравнение двух фреймворков.
PyTorch и TensorFlow:обзор
И PyTorch, и TensorFlow отслеживают, что делают их конкуренты. Однако между этими двумя платформами все же есть некоторые различия.
Примечание. Эту таблицу можно прокручивать по горизонтали.
Библиотека | PyTorch | TensorFlow 2.0 |
---|---|---|
Создатель | FAIR Lab (Исследовательская лаборатория искусственного интеллекта Facebook) | Команда Google Brain |
На основе | Факел | Теано |
Производство | Ориентирован на исследования | Ориентирован на промышленность |
Визуализация | Висдом | Тензорная доска |
Развертывание | Факел (экспериментальный) | Сервис TensorFlow |
Мобильное развертывание | Да (экспериментально) | Да |
Управление устройствами | CUDA | Автоматически |
Создание графика | Динамический и статический режим | Нетерпеливый и статичный режим |
Кривая обучения | Легче для разработчиков и ученых | Проще для отраслевых проектов |
У поиск обращений | Фейсбук CheXNet Тесла Автопилот Убер ПИРО | Google Синовация предприятия PayPal Китай Мобильный |
1. Визуализация
Визуализация, сделанная вручную, требует времени. У PyTorch и TensorFlow есть инструменты для быстрого визуального анализа. Это облегчает просмотр тренировочного процесса. Визуализация также отлично подходит для представления результатов.
TensorFlow
Tensorboard используется для визуализации данных. Интерфейс интерактивный и визуально привлекательный. Tensorboard предоставляет подробный обзор метрик и данных обучения. Данные легко экспортируются и отлично подходят для презентаций. Плагины делают Tensorboard доступным и для PyTorch.
Однако Tensorboard громоздок и сложен в использовании.
PyTorch
PyTorch использует Visdom для визуализации. Интерфейс легкий и простой в использовании. Visdom является гибким и настраиваемым. Прямая поддержка тензоров PyTorch упрощает использование.
Visdom не хватает интерактивности и многих важных функций для просмотра данных.
2. Генерация графика
Существует два типа генерации архитектуры нейронной сети:
- Статические графики - Исправлена архитектура слоя. Сначала создается карта, а затем через нее проталкиваются данные.
- Динамические графики – Архитектура динамического слоя. Карта определяется неявно с перегрузкой данных.
TensorFlow
TensorFlow с самого начала использовал статические графики. Статические графы позволяют распределять данные по нескольким машинам. Модели развертываются независимо от кода. Использование статических графиков сделало TensorFlow более удобным и гибким при работе с новыми архитектурами.
В TensorFlow добавлена функция, имитирующая динамические графы, называемая нетерпеливым выполнением. TensorFlow 2 по умолчанию работает в режиме нетерпеливого выполнения. Генерация статического графика доступна при отключении нетерпеливого выполнения.
PyTorch
В PyTorch с самого начала использовались динамические графики. Эта функция ставит PyTorch в конкуренцию с TensorFlow.
Возможность изменять графики на ходу оказалась более удобной для программистов и исследователей подходом к созданию нейронных сетей. Структурированные данные и изменения размера данных легче обрабатывать с помощью динамических графиков. PyTorch также предоставляет статические графики.
3. Кривая обучения
Кривая обучения зависит от предыдущего опыта и конечной цели использования глубокого обучения.
TensorFlow
TensorFlow — более сложная библиотека. Функции Keras упрощают использование TensorFlow. Как правило, TensorFlow сложно понять тем, кто только начинает заниматься глубоким обучением.
Причиной этого является разнообразная функциональность TensorFlow. Есть много особенностей, которые нужно изучить и выяснить. Это отвлекает и излишне для новичка.
PyTorch
PyTorch — самая простая в освоении библиотека. С кодом легче экспериментировать, если Python знаком. В PyTorch есть Pythonic-подход к созданию нейронной сети. Гибкость PyTorch означает, что код удобен для экспериментов.
PyTorch не такой многофункциональный, но все основные функции доступны. PyTorch проще для начала и изучения.
4. Развертывание
Развертывание — это этап разработки программного обеспечения, который важен для групп разработчиков программного обеспечения. Развертывание программного обеспечения делает программу или приложение доступным для использования потребителем.
TensorFlow
TensorFlow использует TensorFlow Serving для развертывания модели. Обслуживание TensorFlow предназначен для производственных и промышленных сред. Развертывание является гибким и высокопроизводительным благодаря клиентскому API REST. Обслуживание TensorFlow хорошо интегрируется с Docker и Kubernetes.
PyTorch
PyTorch недавно начал решать проблему развертывания. Подача факела развертывает модели PyTorch. Существует RESTful API для интеграции приложений. API PyTorch расширяется для мобильного развертывания. Подача факела интегрируется с Kubernetes.
5. Параллелизм и распределенное обучение
Параллелизм и распределенное обучение необходимы для работы с большими данными. Общие показатели:
- Увеличение скорости – Отношение скорости последовательной модели (один GPU) к скорости параллельной модели (несколько GPU).
- Пропускная способность – Максимальное количество изображений, проходящих через модель в единицу времени.
- Масштабируемость – Как система справляется с увеличением рабочей нагрузки.
Существует два способа распределения учебной нагрузки:
- Параллелизм модели - Слои модели разделены на разных устройствах. Части графика используются в обучении одновременно.
- Параллелизм данных – Все устройства имеют копию всей модели. Каждое устройство тренируется на разных образцах данных. Синхронный метод SGD (стохастический градиентный спуск) предпочтительнее.
Параллелизм модели TensorFlow
Чтобы поместить часть модели в конкретное устройство в TensorFlow, используйте tf.device
.
Например, разделите два линейных слоя на два разных устройства GPU:
import tensorflow as tf from tensorflow.keras import layers with tf.device(‘GPU:0’): layer1 = layers.Dense(16, input_dim=8) with tf.device(‘GPU:1’): layer2 = layers.Dense(4, input_dim=16)
Параллелизм модели PyTorch
Перемещайте части модели на разные устройства в PyTorch с помощью nn.Module.to
метод.
Например, переместите два линейных слоя на два разных графических процессора:
import torch.nn as nn layer1 = nn.Linear(8,16).to(‘cuda:0’) layer2 = nn.Lienar(16,4).to(‘cuda:1’)
Параллелизм данных TensorFlow
Чтобы выполнить синхронный SGD в TensorFlow, установите стратегию распределения с tf.distribute.MirroredStrategy()
и оберните инициализацию модели:
import tensorflow as tf strategy = tf.distribute.MirroredStrategy() with strategy.scope(): model = … model.compile(...)
После компиляции модели с оберткой обучите модель как обычно.
Параллелизм данных PyTorch
Для синхронного SGD в PyTorch оберните модель в torch.nn.DistributedDataParallel
после инициализации модели и установить ранг номера устройства, начиная с нуля:
from torch.nn.parallel import DistributedDataParallel. model = ... model = model.to() ddp_model = DistributedDataParallel(model, device_ids=[])
6. Управление устройствами
Массивные изменения в производительности происходят при управлении устройствами. И PyTorch, и TensorFlow хорошо применяют нейронные сети, но исполнение отличается.
TensorFlow
TensorFlow автоматически переключается на использование графического процессора, если он доступен. Существует контроль над графическими процессорами и доступом к ним. Ускорение графического процессора автоматизировано. Это означает, что нет контроля над использованием памяти.
PyTorch
PyTorch использует CUDA для указания использования GPU или CPU. Модель не будет работать без спецификаций CUDA для использования GPU и CPU. Использование графического процессора не автоматизировано, что означает лучший контроль над использованием ресурсов. PyTorch улучшает процесс обучения за счет управления графическим процессором.
7. Примеры использования обеих платформ глубокого обучения
TensorFlow и PyTorch впервые использовались в соответствующих компаниях. С тех пор, как исходный код стал открытым, существует множество вариантов использования за пределами Google и Facebook.
TensorFlow
Исследователи Google из Google Brain Team впервые использовали TensorFlow для исследовательских проектов Google. Google использует TensorFlow для:
- Результаты поиска и автозаполнение.
- Технологии преобразования речи в текст и голоса.
- Распознавание и классификация изображений.
- Системы машинного перевода.
- Обнаружение спама в Gmail.
Есть много вариантов использования и за пределами Google. Например:
- Sinovation Ventures – Классификация и сегментация заболеваний с использованием изображений сетчатки.
- PayPal – Обнаружение мошенничества с помощью глубокого обучения и генеративного моделирования.
- Китайская мобильная связь – Системы глубокого обучения для обнаружения проблем в сетях, автоматического прогнозирования окон времени переключения и проверки журналов операций.
PyTorch
PyTorch впервые был использован в Facebook Лабораторией исследователей искусственного интеллекта Facebook (FAIR). Facebook использует PyTorch для:
- Распознавание лиц и обнаружение объектов.
- Фильтрация спама и обнаружение поддельных новостей.
- Автоматизация ленты новостей и система предложения друзей.
- Распознавание речи.
- Системы машинного перевода.
PyTorch имеет открытый исходный код. В настоящее время существует множество вариантов использования за пределами Facebook, например:
- Чекснет – Оценка вероятности пневмонии и тепловая карта рентгенографии грудной клетки с использованием сверточных нейронных сетей.
- Автопилот Tesla – Многозадачность компьютерного зрения в режиме реального времени для автономных транспортных средств.
- Лаборатория искусственного интеллекта Uber PYRO – Вероятностный язык программирования для глубокого вероятностного моделирования. Прогнозирование и оптимизация сопоставления клиентов с водителями, оптимальными маршрутами и интеллектуальными транспортными средствами нового поколения.
Что лучше использовать:PyTorch или TensorFlow?
PyTorch — любимый вариант среди программистов и ученых-исследователей. Научное сообщество предпочитает PyTorch по количеству цитирований. Благодаря новейшим функциям развертывания и производства PyTorch — отличный вариант для перехода от исследований к производству.
Организации и стартапы обычно используют TensorFlow. Функции развертывания и производства обеспечивают TensorFlow хорошую репутацию в корпоративных сценариях использования. Визуализация с помощью Tensorboard также демонстрирует элегантную презентацию для клиентов.
PyTorch и TensorFlow — это мощные библиотеки глубокого обучения, которые интенсивно развиваются. Сегодня между ними больше сходства, чем различий, и переход от одного к другому — процесс плавный.
Облачные вычисления
- AWS и Azure:обзор и сравнение служб
- Интернет вещей в производстве:подробный обзор
- GPS против. RFID:сравнение технологий определения местоположения активов
- ZigBee Vs. XBee:простое для понимания сравнение
- Сравнение токарного станка по дереву с ЧПУ и традиционного токарного станка по дереву
- Емкостный делитель напряжения:подробное руководство
- Сравнение 3D-технологий:SLA и FDM
- Углубленный взгляд на центробежный водяной насос
- Сравнение хонингования и притирки
- Сравнение конвейерных лент для горных работ