Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Облачные вычисления

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. Параллелизм и распределенное обучение

Параллелизм и распределенное обучение необходимы для работы с большими данными. Общие показатели:


Существует два способа распределения учебной нагрузки:

Параллелизм модели 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 для:

Есть много вариантов использования и за пределами Google. Например:

PyTorch

PyTorch впервые был использован в Facebook Лабораторией исследователей искусственного интеллекта Facebook (FAIR). Facebook использует PyTorch для:

PyTorch имеет открытый исходный код. В настоящее время существует множество вариантов использования за пределами Facebook, например:

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

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

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

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


Облачные вычисления

  1. AWS и Azure:обзор и сравнение служб
  2. Интернет вещей в производстве:подробный обзор
  3. GPS против. RFID:сравнение технологий определения местоположения активов
  4. ZigBee Vs. XBee:простое для понимания сравнение
  5. Сравнение токарного станка по дереву с ЧПУ и традиционного токарного станка по дереву
  6. Емкостный делитель напряжения:подробное руководство
  7. Сравнение 3D-технологий:SLA и FDM
  8. Углубленный взгляд на центробежный водяной насос
  9. Сравнение хонингования и притирки
  10. Сравнение конвейерных лент для горных работ