- PVSM.RU - https://www.pvsm.ru -
На определенном этапе своего проекта AI вам придется решить, какую среду машинного обучения вы будете использовать. Для некоторых задач традиционных алгоритмов машинного обучения будет достаточно. Однако, если вы работаете с большим объемом текстов, изображений, видео или речевых данных, рекомендуется использовать глубокое обучение.
Итак, какую среду глубокого обучения выбрать? Эта статья посвящена сравнительному анализу существующих сред глубокого обучения.
Среды глубокого обучения упрощают разработку и обучение моделей глубокого обучения за счет предоставления простейших элементов высокого уровня для сложных и ненадежных математических преобразований, например, функции градиентного спуска, обратного распространения и логического вывода.
Правильно выбрать среду нелегко, потому что эта сфера до сих пор развита мало, и на сегодняшний момент не существует абсолютно выигрышного варианта. Также выбор среды может зависеть от ваших целей, ресурсов и команды.
Мы сделаем упор на средах, у которых есть версии, оптимизированные Intel, и которые могут эффективно работать на новых ЦП (например, процессорах Intel Xeon Phi), оптимизированных для матричного умножения.
Оценку сред мы производили в два этапа.
Каждую среду мы оценили исходя из активности сообщества и оценок участников.
GitHub [1]
Stack Overflow [2]
По результатам нашего анализа популярных сред мы составили следующую таблицу для оценки каждой среды по популярности и активности.
Общая популярность и активность разных сред
Среда глубокого обучения | Количество звезд GitHub | Количество форков GitHub | Количество коммитов GitHub за последний месяц | Количество вопросов Stack Overflow |
---|---|---|---|---|
TensorFlow | 60 030 | 28 808 | 1127 | 12 118 |
Caffe | 18 354 | 11 277 | 12 | 4355 |
Keras | 16 344 | 5788 | 71 | 2754 |
Microsoft Cognitive Toolkit | 11 250 | 2823 | 337 | 545 |
MXNet | 9951 | 3730 | 230 | 289 |
Torch | 6963 | 2062 | 7 | 722 |
Deeplearning4J | 6800 | 3168 | 172 | 316 |
Theano | 6417 | 2154 | 100 | 2207 |
Среда neon | 3043 | 665 | 38 | 0 |
Согласно этим данным, наиболее популярными средами являются TensorFlow, Caffe, Keras, Microsoft Cognitive Toolkit (ранее известна как CNTK), MXNet, Torch, Deeplearning4j (DL4J) и Theano. Популярность среды neon также растет. Мы расскажем об этих средах в следующем разделе.
Среды глубокого обучения различаются по своему уровню функциональности. Некоторые из них, такие как Theano и TensorFlow, позволяют определять нейронные сети произвольного уровня сложности, используя самые базовые структурные элементы. Среды такого типа даже можно назвать языками. Другие среды, такие как Keras, являются движками или оболочками, призванными повысить производительность разработчиков, но ограниченными в функциональности из-за более высокого уровня абстракции.
При выборе среды глубокого обучения сначала необходимо выбрать среду низкого уровня. Оболочка высокого уровня может оказаться хорошим дополнением, но она не обязательна. По мере созревания экосистемы все больше сред низкого уровня будут дополняться спутниками более высокого уровня.
Caffe [3] представляет собой среду глубокого обучения, которая создавалась с учетом выражения, скорости и модульного принципа. Она была создана компанией Berkeley AI Research (BAIR) при участии членов сообщества. Янгквин Джиа (Yangqing Jia) создал проект во время своей работы над докторской диссертацией в Калифорнийском университете в Беркли. Библиотека Caffe издана под лицензией 2 статьи о распространении программного обеспечения университета Беркли.
Важные особенности:
Microsoft Cognitive Toolkit [4] (прежнее название — CNTK) — это унифицированный набор инструментов для глубокого обучения, который представляет нейронные сети как серию вычислительных действий через направленный граф. В графе листья представляют входные значения или параметры сети, а другие узлы — операции матрицы в ответ на входные значения. Набор инструментов позволяет легко реализовывать и комбинировать популярные типы моделей, например, упреждающие глубокие нейронные сети, сверточные нейронные сети, рекуррентные нейронные сети (RNN) и сети с долгой краткосрочной памятью (LSTM). Он реализует обучение по принципу стохастического градиентного спуска (SGD, обратное распространение ошибки) с автоматической дифференциацией и распараллеливанием по нескольким графическим процессорам и серверам. Библиотека доступна по лицензии на ПО с открытым исходным кодом с апреля 2015 года.
Важные особенности.
Keras [5] представляет собой API для нейронных сетей высокого уровня, написанный на Python. Эту библиотеку можно использовать дополнительно к TensorFlow или Theano. Библиотека Keras главным образом предназначена для ускорения экспериментов. Важным условием удачного исследования является возможность перехода от замысла к результату с минимальной возможной задержкой.
Важные особенности.
Deeplearning4j [6] (DL4J) — это первая библиотека распределенного глубокого обучения с открытым исходным кодом для коммерческой эксплуатации, написанная для Java* и Scala*. Библиотека DL4J интегрирована с Hadoop* и Apache Spark* и предназначена для использования в корпоративных средах на распределенных графических процессорах (GPU) и ЦП. DL4J представляет собой новейшую готовую библиотеку, больше ориентированную на стандарт, чем на настройку и обеспечивающую быстрое создание прототипов для специалистов, не являющихся профессиональными исследователями. DL4J можно настраивать при масштабировании. Библиотека доступна по лицензии Apache 2.0, при этом все производные продукты от DL4J принадлежат их создателям. DL4J позволяет импортировать модели нейронных сетей из большинства основных сред через Keras, включая TensorFlow, Caffe, Torch и Theano, закрывая брешь между экосистемой Python и виртуальной машиной Java (JVM) с помощью общего набора инструментов, предназначенного для аналитиков-исследователей, инженеров данных и разработчиков. В качестве прикладного программного интерфейса DL4J на Python используется Keras.
Важные особенности.
MXNet [7] представляет собой простую, универсальную и ультрамасштабируемую среду для глубокого обучения. Среда поддерживает современные модели глубокого обучения, включая сверточные нейронные сети и LSTM. Библиотека берет свое начало в научной среде и является продуктом совместной и индивидуальной работы исследователей из нескольких ведущих университетов. Библиотека, активно поддерживаемая компанией Amazon, разрабатывалась с особым упором на машинное зрение, обработку и понимание речи и языка, порождающие модели, сверточные и рекуррентные нейронные сети. MXNet позволяет определять, обучать и развертывать сети в самых разных условиях: начиная от мощных облачных инфраструктур и заканчивая мобильными и подключенными устройствами. Библиотека обеспечивает универсальную среду с поддержкой многих распространенных языков, давая возможность использовать как императивные, так и символические программные конструкции. Библиотека MXNet также занимает мало места. Благодаря этому ее можно эффективно масштабировать на нескольких графических процессорах и машинах, что хорошо подходит для обучения на больших наборах данных в облачной среде.
Важные особенности.
Благодаря языку на основе Python с открытым исходным кодом и набору библиотек для разработки моделей глубокого обучения, neon [8] является быстрым, мощным и простым в использовании инструментом.
Важные особенности.
TensorFlow [9] представляет собой открытую программную библиотеку для числовых вычислений с использованием графов потоков данных. Узлы в графе представляют математические операции, а ветви графа — многомерные массивы данных (тензоры), которыми они обмениваются. Благодаря универсальной архитектуре вычисления можно развертывать на одном или нескольких ЦП или графических процессорах настольного компьютера, сервера или мобильного устройства с одним API. TensorFlow изначально был разработан научными сотрудниками и инженерами, работавшими в группе Google Brain в подразделении Google по изучению машинного интеллекта, для проведения машинного обучения и изучения нейронных сетей, однако благодаря своему общему характеру систему также можно использовать в других областях.
Theano [10] — это библиотека Python, предназначенная для определения, оптимизации и оценки математических выражений, особенно выражений с многомерными массивами (numpy.ndarray). Theano позволяет достичь скоростей работы с большими объемами данных, которые могут конкурировать только со специально изготовленными программами на языке СИ. Theano также превосходит СИ на ЦП во много раз за счет использования последних версий графических процессоров. Theano совмещает в себе аспекты системы компьютерной алгебры (СКА) с аспектами оптимизирующего компилятора. С помощью Theano также можно создавать пользовательский код на языке СИ для многих математических операций. Такое сочетание СКА с оптимизирующей компиляцией особенно хорошо подходит для задач, в которых сложные математические выражения оцениваются многократно, поэтому для них важна скорость оценки. В ситуациях, когда оценивается множество разных выражений только один раз, Theano помогает уменьшить количество непроизводительных компиляций и анализов, по-прежнему обеспечивая символьные функции, такие как автоматическая дифференциация.
Важные особенности.
Torch [11] представляет собой научную вычислительную среду с широкой поддержкой алгоритмов машинного обучения, в которой упор сделан на графические процессоры (GPU). Она отличается удобством в использовании и быстродействием благодаря простому и быстрому языку скриптов, LuaJIT и базовой программе на основеC/CUDA.
Важные особенности.
Большинство сред имеют общие черты: скорость, портативность, сообщество и экосистема, простота разработки, совместимость и масштабируемость.
Входные данные для процесса поиска в среде для нашего проекта создания приложения автоматического видеомонтажа должны удовлетворять следующим требованиям.
Производительность разработчиков представляет большую важность, особенно на этапе создания прототипов, поэтому необходимо выбирать среду, соответствующую навыкам и знаниям участников вашей команды. По этой причине мы исключим все среды, основывающиеся на альтернативных языках.
Большинство проектов, включая наш учебный проект, используют только некоторый существующий алгоритм нейронной сети, такой как AlexNet или LSTM. В нашем случае должна подойти любая среда глубокого обучения. Однако, если вы работаете над исследовательским проектом (например, разрабатываете новый алгоритм, тестируете новую гипотезу или оптимизируете библиотеку), высокоуровневые системы, такие как Keras, вам не подойдут. Среды низкого уровня, скорее всего, потребуют от вас написания нового алгоритма на языке C++.
Наш перечень (сред глубокого обучения) остается прежним.
Наш учебный проект предполагает решение двух традиционных задач глубокого обучения:
все среды поддерживают сверточные нейронные сети (применяются в основном для обработки изображений) и рекуррентные нейронные сети (применяются для моделирования последовательности).
Наш перечень остается прежним:
Поскольку у нас нет большого набора данных (например, 6000 аннотированных изображений) для обучения модели нашего проекта, мы должны использовать предварительно обученные модели.
Все выбранные среды поддерживают парки моделей. Кроме того, существуют преобразователи, позволяющие использовать модели, обученные с помощью другой библиотеки. Библиотека Caffe первой вошла в парк моделей и имеет самый широкий выбор моделей. Существуют средства для преобразования моделей парка Caffe в модель практически любой другой среды:
У всех этих сред также есть свои собственные парки моделей.
Наш перечень остается прежним:
Модель можно определить двумя способами: с помощью файла конфигурации (например, при использовании Caffe) или с помощью скриптов (в других средах). Файлы конфигурации удобны с точки зрения портативности модели, но их сложно использовать при создании сложной архитектуры нейронной сети (например, попробуйте вручную скопировать слои в ResNet-101). С другой стороны, с помощью скриптов можно создавать сложные нейронные сети с минимальным повторением кода, однако возможность переноса такого кода в другую среду будет под вопросом. Обычно предпочтительнее использовать скрипты, потому что переходы из одной среды в другую в рамках одного проекта случаются редко.
Теперь наш перечень изменится следующим образом:
Библиотека Intel Math Kernel Library (Intel MKL) для векторного и матричного умножения была доработана для глубокого обучения и теперь включает интегрированную многоядерную архитектуру Intel Many Integrated Core Architecture. Это процессорная архитектура с широким распараллеливанием, которая существенно ускоряет процессы глубокого обучения на ЦП. Все существующие на сегодняшний день конкурирующие среды уже интегрировали Intel MKL и предлагают версии, оптимизированные Intel.
Важно также знать, поддерживается ли распределенное обучение нескольких ЦП. Исходя из этих критериев, наш измененный перечень будет выглядеть следующим образом:
TensorFlow поддерживает специальный инструмент, который носит название TensorFlow Serving. Он берет обученную модель TensorFlow в качестве входных данных и преобразует ее в веб-сервис, позволяющий оценивать входящие запросы. Если вы собираетесь использовать обученную модель на мобильном устройстве, TensorFlow Mobile обеспечивает немедленную компрессию модели.
Подробнее о TensorFlow Serving [21]
TensorFlow Mobile [22]
MXNet обеспечивает развертывание через слияние, при котором модель вместе со всеми необходимыми привязками помещается в автономный файл. Такой файл потом можно перенести на другую машину, и получить к нему доступ через другие языки программирования. Например, его можно использовать на мобильном устройстве. Подробнее [23].
Microsoft Cognitive Toolkit (предыдущее название — CNTK) обеспечивает развертывание модели через облачную среду машинного обучения Azure*. Мобильные устройства пока не поддерживаются. Их поддержка ожидается в следующей версии. Подробнее [24].
Хотя мы не собираемся развертывать готовое приложение на мобильном устройстве, в некоторых ситуациях такая возможность может быть весьма кстати. Например, представьте приложение для видеомонтажа, с помощью которого можно будет создавать видео из только что сделанных снимков (такая функция уже доступна в Google Photos).
Теперь у нас осталось два конкурента: TensorFlow и MXNet. В конце концов команда, работающая над этим проектом, решила использовать библиотеку TensorFlow в связке с Keras, потому что у нее более активное сообщество, у участников команды есть опыт работы с этими инструментами, а также потому что для TensorFlow зафиксировано больше успешных проектов. См. перечень пользователей TensorFlow [25].
В этой статье мы представили несколько популярных сред для глубокого обучения и сравнили их по ряду критериев. Простота создания прототипов, развертывания и отладки модели, наряду с размером сообщества и масштабируемостью на нескольких машинах, являются одними из самых важных критериев, на которые следует ориентироваться при выборе среды глубокого обучения. Все современные среды сейчас поддерживают сверточные и рекуррентные нейросети, имеют парки предварительно обученных моделей и предлагают версии, оптимизированные для современных процессоров Intel Xeon Phi. Как показал наш анализ, для целей нашего проекта прекрасным выбором будет Keras на основе версии TensorFlow, оптимизированной Intel. Другим удачным вариантом будет библиотека MXNet, оптимизированная Intel.
Хотя по результатам этого сравнительного анализа победила библиотека TensorFlow, мы не учитывали эталоны сравнения, которые имеют ключевое значение. Мы планируем написать отдельную статью, в которой сравним время вывода и обучения библиотек TensorFlow и MXNet для широкого набора моделей глубокого обучения, чтобы определить окончательного победителя.
Автор: saul
Источник [26]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/280974
Ссылки в тексте:
[1] GitHub: https://github.com/
[2] Stack Overflow: https://stackoverflow.com/
[3] Caffe: http://caffe.berkeleyvision.org/
[4] Microsoft Cognitive Toolkit: https://www.microsoft.com/en-us/cognitive-toolkit/
[5] Keras: https://keras.io/
[6] Deeplearning4j: https://deeplearning4j.org/
[7] MXNet: https://mxnet.incubator.apache.org/
[8] neon: https://www.nervanasys.com/technology/neon/
[9] TensorFlow: https://www.tensorflow.org/
[10] Theano: http://deeplearning.net/software/theano/
[11] Torch: http://torch.ch/
[12] MXNet: https://github.com/dmlc/mxnet/tree/master/tools/caffe_converter
[13] Torch: https://github.com/szagoruyko/loadcaffe
[14] TensorFlow: https://github.com/ethereon/caffe-tensorflow
[15] neon: https://github.com/NervanaSystems/caffe2neon
[16] TensorFlow: https://www.tensorflow.org/deploy/distributed
[17] MXNet: https://mxnet.incubator.apache.org/how_to/multi_devices.html
[18] Microsoft Cognitive Toolkit: https://docs.microsoft.com/en-us/cognitive-toolkit/Multiple-GPUs-and-machines
[19] официальном форуме: https://discuss.pytorch.org/t/does-pytorch-support-parallelism-across-multiple-cpus/1631
[20] Theano: http://deeplearning.net/software/theano/tutorial/multi_cores.html
[21] Подробнее о TensorFlow Serving: https://tensorflow.github.io/serving/
[22] TensorFlow Mobile: https://www.tensorflow.org/mobile/
[23] Подробнее: https://mxnet.incubator.apache.org/how_to/smart_device.html
[24] Подробнее: https://docs.microsoft.com/en-us/cognitive-toolkit/Evaluate-a-model-in-an-Azure-WebApi
[25] перечень пользователей TensorFlow: https://www.tensorflow.org/#companies-using-tensorflow
[26] Источник: https://habr.com/post/359184/?utm_campaign=359184
Нажмите здесь для печати.