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