Deeplearning4j

Deeplearning4j — программная библиотека для JVM, предназначенная для реализации алгоритмов глубокого обучения[1][2]. Deeplearning4j реализует широкий спектр алгоритмов глубокого обучения[3]. В библиотеку входят реализации ограниченной машины Больцмана, глубоких доверительных сетей, автокодировщиков, стэковых денойз-автокодировщиков, рекурсивных тензорных нейросетей, word2vec, doc2vec и GloVe. Для всех этих алгоритмов поддерживаются распределённые и параллельные вычисления с интеграцией в Apache Hadoop и Spark.

Deeplearning4j — это открытое программное обеспечение под лицензией Apache License 2.0[4], разрабатываемое в основном группой по машинному обучению из Сан-Франциско[5]. Коммерческую поддержку оказывает стартап Skymind, который распространяет DL4J, TensorFlow, Keras и другие библиотеки глубокого обучения в корпоративном дистрибутиве Skymind Intelligence Layer[6]. В октябре 2017 года Deeplearning4j была передана в фонд Eclipse Foundation[7][8].

Общие сведения
Deeplearning4j
Тип обработка естественного языка, глубокое обучение, машинное зрение, искусственный интеллект
Авторы Alex D. Black, Adam Gibson, Вячеслав Кокорин, Josh Patterson
Разработчики Kondiut K. K. и соавторы
Написана на Java, CUDA, C, C++
Операционные системы Linux, macOS, Windows, Android, iOS
Языки интерфейса английский
Аппаратные платформы CUDA, x86, ARM, PowerPC
Последняя версия 1.0.0-M2.1 (17 августа 2022)
Репозиторий github.com/eclipse/deepl…
Лицензия Apache License 2.0
Сайт deeplearning4j.konduit.ai

Введение

Deeplearning4j написана на широко используемом языке Java, однако совместима с Clojure и включает API для Scala. В качестве ядра используется собственная библиотека для численных расчётов — ND4J. Поддерживается выполнение как на CPU, так и на GPU[9][10].

Deeplearning4j используется в ряде коммерческих и академических проектов. Исходный код размещён на GitHub[11], поддерживается форум на Gitter[12].

Архитектура фреймворка допускает объединение нейросетей разного типа: ограниченных машин Больцмана, свёрточных и рекуррентных сетей, автокодировщиков и других. Предусмотрены инструменты визуализации[13] и вычислительный граф[14].

Распределённость

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

Научные вычисления для JVM

В библиотеке реализован класс для работы с N-мерными массивами на базе ND4J, что даёт возможности научных вычислений на Java и Scala, аналогичные NumPy для Python. Основа библиотеки — средства линейной алгебры и манипуляции матрицами для промышленного применения.

DataVec: библиотека векторизации данных

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

Обработка текста и NLP

В состав Deeplearning4j входит инструментариум тематического моделирования и работы с векторными пространствами, реализованный на Java с поддержкой параллельных GPU для повышения производительности, — подходит для работы с большими объёмами текстовых данных.

Библиотека реализует tf-idf, глубокое обучение, word2vec[18], doc2vec и GloVe, оптимизированные и переписанные на Java. Для визуализации слова используется t-SNE.

Применение и интеграции

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

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

Deeplearning4j предоставляет сервер для развёртывания моделей машинного обучения в промышленной эксплуатации — бесплатно, в редакции SKIL (Skymind Intelligence Layer)[24][25]. Сервер моделей подаёт параметрические модели машинного обучения, принимающие решения по входящим данным, — используется на этапе инференса после построения моделей и подготовки данных. Такой сервер позволяет развернуть научные методы анализа данных в продуктивной среде.

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

Сервер моделей SKIL может импортировать модели из Python-фреймворков (Tensorflow, Keras, Theano, CNTK), позволяя развёртывать разнообразные решения на практике.

Бенчмарки

По скорости на задачах распознавания изображений на нескольких GPU Deeplearning4j не уступает Caffe[26]. Для оптимизации времени обучения нейросетей на JVM нужно скорректировать ряд параметров: выделение памяти, схему сборки мусора, использовать off-heap память, предсохранять (pickle) данные для ускорения загрузки на этапе ETL[27]. Такие оптимизации могут в 10 раз ускорять обучение на Deeplearning4j.

API: Java, Scala, Python, Clojure и Kotlin

Deeplearning4j предоставляет интерфейсы (API) на Java, Scala, Python, Clojure и Kotlin. Для работы со Scala используется API под названием ScalNet[28]. В качестве Python-интерфейса применяется Keras[29]. Для Clojure разработан wrapper DL4CLJ[30]. Основные вычислительные ядра для глубокого обучения написаны на C, C++ и CUDA C.

Tensorflow, Keras и Deeplearning4j

Фреймворки Tensorflow, Keras и Deeplearning4j способны работать совместно. Deeplearning4j может импортировать модели из Tensorflow и других Python-фреймворков, если они созданы с помощью Keras[31].

Примечания

  1. Metz, Cade The Mission to Bring Google's AI to the Rest of the World (англ.). WIRED (2 июня 2014). Дата обращения: 28 июня 2014. Архивировано 23 февраля 2025 года.
  2. Vance, Ashlee. Deep Learning for (Some of) the People (англ.), Bloomberg Businessweek (3 June 2014). Архивировано 4 июня 2014. Дата обращения: 28 июня 2014.
  3. Novet, Jordan Want an open-source deep learning framework? Take your pick (англ.). VentureBeat (14 ноября 2015). Дата обращения: 24 ноября 2015. Архивировано 20 ноября 2015 года.
  4. Github Repository (англ.). GitHub (апрель 2020).
  5. 1 2 deeplearning4j.org.
  6. Skymind Intelligence Layer Community Edition. Дата обращения: 2 ноября 2017. Архивировано 7 ноября 2017 года.
  7. Eclipse Deeplearning4j Project Page (22 июня 2017). Архивировано 4 октября 2017 года.
  8. Skymind's Deeplearning4j, the Eclipse Foundation, and scientific computing in the JVM. Jaxenter (13 ноября 2017). Дата обращения: 15 ноября 2017. Архивировано 16 ноября 2017 года.
  9. Novet, Jordan. Deep learning startup Skymind raises $3 million, launches Intelligence Layer distribution (англ.), VentureBeat (28 сентября 2016). Архивировано 25 октября 2022 года.
  10. Novet, Jordan. Skymind launches with open-source, plug-and-play deep learning features for your app (англ.), VentureBeat (2 июня 2014). Архивировано 20 августа 2022 года.
  11. deeplearning4j/deeplearning4j. GitHub (29 апреля 2023). Дата обращения: 29 апреля 2023. Архивировано 20 сентября 2025 года.
  12. Element. app.gitter.im. Дата обращения: 29 апреля 2023. Архивировано 20 октября 2025 года.
  13. Deeplearning4j Visualization Tools. Дата обращения: 17 августа 2016. Архивировано 10 августа 2017 года.
  14. Deeplearning4j Computation Graph. Дата обращения: 17 августа 2016. Архивировано 10 августа 2017 года.
  15. Iterative reduce. GitHub (15 марта 2020). Архивировано 1 июня 2023 года.
  16. DataVec ETL for Machine Learning. Дата обращения: 18 сентября 2016. Архивировано 2 октября 2017 года.
  17. Anomaly Detection for Time Series Data with Deep Learning. InfoQ. Дата обращения: 29 апреля 2023. Архивировано 7 декабря 2024 года.
  18. Google Code Archive — Long-term storage for Google Code Project Hosting. code.google.com. Дата обращения: 29 апреля 2023.
  19. skymind.ai. skymind.ai. Дата обращения: 29 апреля 2023.
  20. Recommendation Systems Can Make Your Customers Happier, Faster. (англ.). Дата обращения: 22 февраля 2016. Архивировано 10 марта 2016 года.
  21. skymind.ai. skymind.ai. Дата обращения: 29 апреля 2023.
  22. DeepLearning4J(Stable). www.rapidminerchina.com. Дата обращения: 22 мая 2022. Архивировано 18 мая 2016 года.
  23. WekaDeeplearning4j: Deep Learning using Weka. deeplearning.cms.waikato.ac.nz. Дата обращения: 29 апреля 2023.
  24. Products. Дата обращения: 20 сентября 2017. Архивировано 21 сентября 2017 года.
  25. Model Server for Deep Learning and AI — Deeplearning4j: Open-source, Distributed Deep Learning for the JVM. Дата обращения: 20 сентября 2017. Архивировано 21 сентября 2017 года.
  26. GitHub - deeplearning4j/Dl4j-benchmark: Repo to track dl4j benchmark code. GitHub (19 декабря 2019). Архивировано 11 июня 2018 года.
  27. Deeplearning4j Benchmarks - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM. Дата обращения: 30 января 2017. Архивировано 9 августа 2017 года.
  28. Scala, Spark and Deeplearning4j - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM. Дата обращения: 25 февраля 2017. Архивировано 25 февраля 2017 года.
  29. Running Keras with Deeplearning4j - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM. Дата обращения: 25 февраля 2017. Архивировано 25 февраля 2017 года.
  30. Deep Learning with Clojure - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM. Дата обращения: 25 февраля 2017. Архивировано 25 февраля 2017 года.
  31. Tensorflow & Deeplearning4j - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM. Дата обращения: 7 сентября 2017. Архивировано 8 сентября 2017 года.