admin 06 февраля 2019

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

Хочешь уверенно проходить IT-интервью?

Готовься к IT-собеседованиям уверенно с AI-тренажёром T1!

Мы понимаем, как сложно подготовиться: стресс, алгоритмы, вопросы, от которых голова идёт кругом. Но с AI тренажёром всё гораздо проще.

💡 Почему Т1 тренажёр — это мастхэв?

  • Получишь настоящую обратную связь: где затык, что подтянуть и как стать лучше
  • Научишься не только решать задачи, но и объяснять своё решение так, чтобы интервьюер сказал: "Вау!".
  • Освоишь все этапы собеседования, от вопросов по алгоритмам до диалога о твоих целях.

Зачем листать миллион туториалов? Просто зайди в Т1 тренажёр, потренируйся и уверенно удиви интервьюеров. Мы не обещаем лёгкой прогулки, но обещаем, что будешь готов!

Реклама. ООО «Смарт Гико», ИНН 7743264341. Erid 2VtzqwP8vqy


Как выбрать фреймворк глубокого обучения? Сравниваем 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.

Источник

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

Комментарии

ВАКАНСИИ

Добавить вакансию
Hotel Search Team Lead (Golang)
по итогам собеседования
Golang-разработчик
Пермь, по итогам собеседования

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