admin 06 февраля 2019

Фреймворк глубокого обучения в 2019: выбираем из 10 лучших

Как выбрать фреймворк глубокого обучения? Сравниваем 10 популярных сред тренировки нейросетей. Преимущества, недостатки, подводные камни.

Фреймворк глубокого обучения в 2019 году: выбираем из 10 лучших

1. TensorFlow

Начнем с очевидного. TensorFlow, без сомнения, – популярнейший инструмент для обучения нейросетей. Google активно использует собственный фреймворк глубокого обучения для таких крупномасштабных сервисов как Gmail и Google Translate. TensorFlow уже применили к своим сервисам и такие значительные бренды как Uber, Airbnb, Dropbox и многие другие. Он оказал огромное влияние на разработку.

Компании, использующие фреймворк для глубокого обучения TensorFlow

Наиболее удобным клиентским языком работы с TensorFlow является Python, но доступны и экспериментальные интерфейсы на JavaScript, C++, Java и Go. Сообщество open source разработало также решения для C# и Julia.

Следствием популярности фреймворка стала подробная документация, включающая не только версию на официальном сайте, но и сторонние источники. Документация описывает как структуру фреймворка TensorFlow, так и инструменты, позволяющие отследить сам процесс обучения нейросети, например, визуализация с TensorBoard.

https://youtu.be/eBbEDRsCmv4

Важно, что проект учитывает не только мощные вычислительные кластеры, но и возможность запуска моделей на мобильных платформах, как iOS и Android.

Тем не менее, TensorFlow – это низкоуровневый инструмент. Вам нужно тщательно продумывать архитектуру нейросети, правильно оценивать размерность и объемы входных и выходных данных. Таким образом, работа с TensorFlow требует написания значительного количества программного кода.

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

2. PyTorch

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

Фреймворк PyTorch был разработан для сервисов Facebook, но уже используется для собственных задач такими компаниями как Twitter и Salesforce. В PyTorch можно использовать стандартные дебаггеры, например, pdb или PyCharm. Процесс тренировки нейросети прост и ясен. При этом PyTorch поддерживает модель параллелизма данных и распределенного обучения, а также содержит множество предобученных моделей.

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

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

3. Sonnet

Надстроенный над TensorFlow фреймворк глубокого обучения Sonnet разработан для создания нейросетей со сложной архитектурой всемирно известной компанией DeepMind.

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

4. Keras

Наиболее минималистичный подход к использованию TensorFlow, Theano или CNTK дает высокоуровневая оболочка Keras. Прототипирование здесь облегчено до предела. Создание массивных моделей глубокого обучения в Keras сведены до одностроковых функций. Но такая стратегия делает Keras менее конфигурируемой средой, чем низкоуровневые фреймворки.

Таким образом, Keras – лучший Deep Learning фреймворк для тех, кто только начинает. Идеально подходит для обучения и прототипирования простых концептов, чтобы понять самую суть различных моделей и процессов их обучения.

5. MXNet

MXNet представляет собой фреймворк глубокого обучения, разрабатываемый компанией Amazon. Фреймворк исходно поддерживает большое количество языков (C++, Python, R, Julia, JavaScript, Scala, Go и даже Perl). Основной акцент сделан на том, что фреймворк очень эффективно параллелится на множестве GPU и многих машинах. Это, в частности, продемонстрировано и его работой на Amazon Web Services.

6. Gluon

Специфика проекта Gluon – гибкий интерфейс, упрощающий создание прототипов, построение и обучение моделей глубокого обучения без ущерба для скорости обучения. Gluon базируется на MXNet и предлагает простое API, упрощающее создание моделей глубокого обучения. Аналогично PyTorch, фреймворк Gluon поддерживает работу с динамическим графом, сочетая это с высокой производительностью MXNet. В этом ракурсе Gluon выглядит крайне интересной альтернативой Keras для распределенных вычислений.

7. CNTK

Как вы могли заметить, все мировые гиганты IT находятся в гонке за глубокое обучение. Исключением не стала и компания Microsoft.

Фреймворк глубокого обучения CNTK (он же Microsoft Cognitive Toolkit) содержит множество готовых решений для распознавания речи и изображений. Работает с C++, Python, С# и Java. Поддерживает Apache Spark и Microsoft Azure Virtual Machine. Однако по понятным причинам CNTK в большей мере ориентирован на Windows.

8. Chainer

Chainer – фреймворк глубокого обучения, созданный японским стартапом и поддерживаемый IBM, Intel, Microsoft и Nvidia. Код написан на чистом Python поверх библиотек Numpy и CuPy. Chainer – первый фреймворк, который стал оперировать динамической моделью архитектуры (как в PyTorch). Кроме того, Chainer несколько раз бил рекорды по эффективности масштабирования при моделировании задач, решаемых нейронными сетями.

9. DL4J

Тем, кто на короткой ноге с Java или Scala, стоит обратить внимание на DL4J (сокращение от Deep Learning for Java). Обучение нейросетей в DL4J осуществляется параллельно по итерациям через кластеры. Процесс поддерживается архитектурами Hadoop и Spark. Использование Java позволяет применять библиотеку в цикле разработке программ для Android-устройств. Заметим, что разработчикам под iOS стоит обратить внимание на фреймворк Core ML.

10. ONNX

Проект ONNX родился в результате сотрудничества Microsoft и Facebook как поиск открытого формата для представления моделей глубокого обучения. ONNX упрощает процесс переноса моделей между различными средствами работы с искусственным интеллектом. Таким образом, ONNX позволяет сочтать преимущества различных Deep Learning фреймворков.

Заключение

Подведем итог. При выборе фреймворка обратите внимание на таблицу сравнения различных фреймворков и библиотек. Если вы только начинаете и хотите разобраться, что к чему, лучший выбор – Keras. В исследовательских целях наиболее востребован PyTorch. Для продакшена нужно ориентироваться на среду. Так, для Google Cloud лучший выбор – это TensorFlow, для AWS – MXNet и Gluon, для Microsoft Azure – CNTK. Разработчикам под Android стоит обратить внимание на D4LJ, для iOS подобный круг задач решает Core ML. Наконец, в вопросах взаимодействия между различными фреймворками поможет ONNX.

Источник

Если фрейморк глубокого обучения уже выбран:

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ