Deeplearning4j

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 01:40, 2 октября 2018.
Deeplearning4j
DL4J.png
Создатели: Адам Гибсон, Крис Николсон, Джош Паттерсон
Разработчики: Various
Состояние разработки: активный
Написана на: Java, Scala, CUDA, C, C++, Python, Clojure
Операционная система: Linux, macOS, Windows, Android
Платформа: кроссплатформенность
Локализация: английский
Тип ПО: Обработка естественного языка, глубокое обучение, компьютерное зрение, искусственный интеллект
Лицензия: Apache 2.0
Веб-сайт deeplearning4j.org

Deeplearning4j — библиотека программ для глубинного обучения, написанная на языке Java и использующая Java Virtual Machine (JVM)[Источник 1][Источник 2], а также фреймворк для широкой поддержки алгоритмов для глубинного обучения.[Источник 3] Deeplearning4j включает в себя реализацию ограниченной машины Больцмана, глубокой сети доверия, глубокого автокодировщика, стекового автокодировщика с фильтрацией шума, рекурсивной тензорной нейронной сети, word2vec, doc2vec, and GloVe. Эти алгоритмы включены также в версии библиотеки, поддерживающие распределённые вычисления, интегрированные с архитектурами Apache Hadoop и Spark.[Источник 4]

Deeplearning4j — открытое программное обеспечение, распространяемое под лицензией Apache 2.0 ,[Источник 5] основные разработчики - группа машинного обучения в Сан-Франциско во главе с Адамом Гибсоном.[Источник 6][Источник 7] Коммерческия приложения поддерживает стартап Skymind.

Введение

Deeplearning4j реализована на языке Java, при этом совместим с Clojure и включает в себя интерфейс (API) для языка Scala. Дополнительная библиотека ND4J открытого доступа обеспечивает вычисления, при этом используя как процессор CPU, так и графические процессоры GPU[Источник 8][Источник 9].

Deeplearning4j применяется в ряде коммерческих и академических приложениях. Коды библиотеки хранятся в репозитории GitHub.[Источник 10] Форум поддержки осуществляется через Gitter[Источник 11].

Фреймворк позволяет комбириновать компоненты, объединяя обычные нейронные сети с машинами Больцмана, свёрточными нейронными сетями, автокодировщиками и рекуррентными сетями в одну систему. Кроме того поддерживаются расширенные средства визуализации[Источник 12]. Обучение проводится как с помощью обычных многослойных нейронных сетей, так и для сложных сетей, в которых определён граф вычислений[Источник 13].

Распределённые вычисления

Обучение в Deeplearning4j осуществляется через кластеры. Нейронные сети обучаются параллельно по итерациям, процесс поддерживается архитектурами Hadoop-YARN и Spark[Источник 14]. Deeplearning4j осуществляет также интеграцию с ядром архитектуры CUDA для осуществления чистых операций с GPU и распределения операций на графических процессорах.

Научные расчёты для JVM

Deeplearning4j включает в себя класс для работы с n-мерным массивом данных в библиотеке ND4J. Это облегчает вычисления для научных задач на языках Java и Scala, функциональность при этом соответствует языку NumPy для Pythonа. Использование этих средств позволяет эффективно решать задачи линейной алгебры и матричных преобразований в практических приложениях.

Библиотека векторизации DataVec для машинного обучения

Библиотека DataVec проводит векторизацию файлов в различных входных и выходных форматах методом, подобным MapReduce; при этом данные трансформируются в векторную форму. DataVec векторизирует табличный формат CSV, изображения, звуки, тексты, видео и временные последовательности данных[Источник 15][Источник 16].

Обработка естественного языка и текстов

Для обработки больших объёмов текстов с использованием мощности параллельных графических процессоров Deeplearning4j привлекает инструментарий векторного и тематического моделирования на языке Java.

В библиотеку входят реализации частотной инверсии (tf–idf), глубинное обучение, алгоритм Миколова word2vec[Источник 17], doc2vec, и GloVe, которые оптимизированы на Java. При этом используется принцип стохастического встраивания соседей с t-распределением (t-distributed stochastic neighbor embedding) для реализации облака слов.

Взаимоотношения с реальным миром

В Deeplearning4j включены средства защиты от внешнего вмешательства и безопасности от взлома, что особенно важно в финансовых задачах [Источник 18], в промышленных системах, в электронной коммерции и предпринимательстве применяется распознавание аномалий[Источник 19] и распознавание образов. Deeplearning4j интегрирован с другими платформами машинного обучения - такими как RapidMiner, Prediction.io и Weka[Источник 20].

Сервер модели машинного обучения

Deeplearning4j предлагает модели машинного обучения для вывода на производство с использованием бесплатной версии разработчика SKIL, Skymind Intelligence Layer.[Источник 21] Модельный сервер обслуживает параметрические модели машинного обучения, которые принимают решения о данных. Он используется для этапа вывода машинного процесса обучения после передачи данных и обучения модели. Модельный сервер - это инструмент, который позволяет исследовать науку о данных в реальной производственной среде.

Также как веб-сервером является Интернет, так модельным сервером является AI. Когда веб-сервер получает HTTP-запрос и возвращает данные о веб-сайте, модельный сервер получает данные и возвращает решение или предсказание об этих данных: например, отправил изображение, модельный сервер может вернуть ярлык для этого изображения, идентифицируя лица или животных на фотографиях.

Сервер модели SKIL может импортировать модели из инфраструктур Python, таких как Tensorflow, Keras, Theano и CNTK, преодолевая серьезный барьер при развертывании моделей глубокого обучения.

Бенчмарки

Сопоставление производительности показывает, что Deeplearning4j сопоставим с Caffe в задачах нетривиального распознавания образов с привлечением параллельных графических процессоров[Источник 22]. Для программистов, незнакомых с HPC на JVM, имеется несколько параметров, которые можно регулировать для улучшения производительности обучения нейронных сетей. В эти параметры входит настройка динамической памяти, алгоритм сборки мусора, подкачка памяти и предварительное сохранение данных для ускорения ETL[Источник 23]. Комбинируя эти настройки, можно увеличить производительность Deeplearning4j до десяти раз.

Языки для пользования библиотекой: Java, Scala, Python и Clojure

Deeplearning4j можно использовать разработчикам через несколько языковых интерфейсов - Java, Scala, Python и Clojure. API для Scala называется ScalNet[Источник 24]. Через фреймворк Keras происходит обращение на Python API[Источник 25]. Оболочка для Clojure носит название DL4CLJ[Источник 26]. Для широкомасштабных математических операций в ядре процессоров при глубинном обучении используются языки C, C++ and CUDA C.

Выводы

Хотя, библиотека deeplearning4j – просто один из многих инструментов для глубокого обучения, она оснащена нативной интеграцией с Apache Spark и написана на Java, поэтому особенно удачно вписывается в экосистему Hadoop. Поскольку доступ к информации на предприятиях повсеместно обеспечивается через Hadoop, а ее обработка происходит в Spark, библиотека deeplearning4j позволяет ускорить развертывание и сократить издержки, и можно сразу извлекать такую информацию, полученную методом глубокого обучения. Библиотека использует для сложных вычислений ND4J – другую хорошо оптимизированную библиотеку, отлично взаимодействующую с дешевыми CPU, но также поддерживающую работу с GPU, когда требуется резко нарастить производительность. Deeplearning4j – это полнофункциональная библиотека для глубокого обучения, в ней имеется полный набор инструментов, обеспечивающих обработку данных от потребления до развертывания. При помощи этой библиотеки можно решать всевозможные задачи: распознавание изображений и видео, обработка аудио, обработка естественного языка, создание рекомендательных систем и т.д.

Примечания

  1. The Mission to Bring Google's AI to the Rest of the World // Wired.[2014-2018]. Дата обновления: 02.06.2014. URL: https://www.wired.com/2014/06/skymind-deep-learning/ (дата обращения: 11.02.2018)
  2. Deep Learning for (Some of) the People // businessweek. [2014-2018]. Дата обновления: 03.06.2014. URL: http://www.businessweek.com/articles/2014-06-03/teaching-smaller-companies-how-to-probe-deep-learning-on-their-own (дата обращения: 11.02.2018)
  3. Want an open-source deep learning framework? Take your pick // venturebeat.[2015-2018]. Дата обновления: 14.11.2015. URL: https://venturebeat.com/2015/11/14/deep-learning-frameworks/ (дата обращения: 11.02.2018)
  4. Adam Gibson, DeepLearning4j on Spark and Data Science on JVM with nd4j, SF Spark @Galvanize 20150212. // youtube [2015-2018]. Дата обновления: 12.02.2015. URL: https://www.youtube.com/watch?v=LCsc1hFuNac&feature=youtu.be/ (дата обращения: 11.02.2018)
  5. Github Repository. // github [2015-2018]. Дата обновления: 15.03.2015. URL: https://github.com/deeplearning4j/deeplearning4j (дата обращения: 11.02.2018)
  6. deeplearning4j.org // deeplearning4j [2015-2018]. Дата обновления 10.04.2015. URL:http://deeplearning4j.org/ (дата обращения: 11.02.2018)
  7. Crunchbase Profile // crunchbase [2017-2018]. Дата обновления: 12.03.2017. URL:http://www.crunchbase.com/person/adam-gibson (дата обращения: 11.02.2018)
  8. A startup called Skymind launches, pushing open source deep learning // gigaom [2014-2018]. Дата обновления 02.06.2014. URL:http://gigaom.com/2014/06/02/a-startup-called-skymind-launches-pushing-open-source-deep-learning/ (дата обращения: 11.02.2018)
  9. Skymind launches with open-source, plug-and-play deep learning features for your app // venturebeat [2014-2018]. Дата обновления 02.06.2014. URL:https://venturebeat.com/2014/06/02/skymind-launches-with-open-source-plug-and-play-deep-learning-features-for-your-app// (дата обращения: 11.02.2018)
  10. Deeplearning4j source code // github [2014-2018]. Дата обновления 03.05.2014. URL:https://github.com/deeplearning4j/deeplearning4j (дата обращения: 11.02.2018)
  11. Deeplearning4j Gitter Support Channel // gitter [2015-2018]. Дата обновления 04.08.2015. URL:https://gitter.im/deeplearning4j/deeplearning4j (дата обращения: 11.02.2018)
  12. visualization Deeplearning4j Visualization Tools // deeplearning4j [2015-2018]. Дата обновления 08.07.2015. URL:http://deeplearning4j.org/visualization (дата обращения: 11.02.2018)
  13. compgraph Deeplearning4j Computation Graph // deeplearning4j [2013-2018]. Дата обновления 04.05.2013. URL:http://deeplearning4j.org/compgraph (дата обращения: 11.02.2018)
  14. Iterative reduce // github [2014-2018]. Дата обновления 05.05.2014. URL:https://github.com/emsixteeen/IterativeReduce (дата обращения: 11.02.2018)
  15. datavec DataVec ETL for Machine Learning // deeplearning4j [2015-2018]. Дата обновления 03.04.2015. URL:http://deeplearning4j.org/datavec (дата обращения: 11.02.2018)
  16. deep-learning-time-series-anomaly-detection Anomaly Detection for Time Series Data with Deep Learning // infoq.com [2015-2018]. Дата обновления 04.03.2015. URL:https://www.infoq.com/articles/deep-learning-time-series-anomaly-detection (дата обращения: 11.02.2018)
  17. word2vec // code.google [2014-2018]. Дата обновления 01.07.2014. URL:https://code.google.com/p/word2vec/ (дата обращения: 11.02.2018)
  18. Finance & Fraud // skymind [2015-2018]. Дата обновления 05.08.2014. URL:http://www.skymind.io/finance/ (дата обращения: 11.02.2018)
  19. Archived copy // skymind [2016-2018]. Дата обновления 22.02.2016. URL:http://www.skymind.io/commerce/ archiveurl:https://web.archive.org/web/20160310082156 (дата обращения: 11.02.2018)
  20. WekaDeeplearning4J: Deep Learning using Weka // deeplearning [2015-2018]. Дата обновления 08.05.2015. URL:https://deeplearning.cms.waikato.ac.nz/ (дата обращения: 11.02.2018)
  21. Model Server for Machine Learning and AI // deeplearning4j [2014-2018]. Дата обновления 19.08.2014. URL:https://deeplearning4j.org/modelserver (дата обращения: 11.02.2018)
  22. dl4j-benchmark // github [2015-2018]. Дата обновления 10.12.2015. URL:https://github.com/deeplearning4j/dl4j-benchmark (дата обращения: 11.02.2018)
  23. How to Run Deeplearning4j Benchmarks // deeplearning4j [2015-2018]. Дата обновления 07.11.2015. URL:https://deeplearning4j.org/benchmark (дата обращения: 11.02.2018)
  24. Scala, Apache Spark and Deeplearning4j // deeplearning4j [2014-2018]. Дата обновления 03.05.2014. URL:https://deeplearning4j.org/scala (дата обращения: 11.02.2018)
  25. Keras Model import: Supported Features // deeplearning4j [2014-2018]. Дата обращения 08.05.2014. URL:https://deeplearning4j.org/keras (дата обращения: 11.02.2018)
  26. Deep Learning With Clojure // deeplearning4j [2014-2018]. Дата обновления 17.05.2014. URL:https://deeplearning4j.org/clojure (дата обращения: 11.02.2018)

Ссылки