Deeplearning4j

{{Short description|Open-source deep learning library}}

{{Multiple issues|

{{cleanup press release|1=article|date=November 2017}}

{{notability|Products|date=July 2020}}

}}

{{Infobox software

| name = Eclipse Deeplearning4j

| logo =

| screenshot =

| caption =

| collapsible =

| author = Alex D. Black, Adam Gibson, Vyacheslav Kokorin, Josh Patterson

| developer = Kondiut K. K. and contributors

| released =

| latest release version =

| latest release date =

| latest preview version = 1.0.0-beta7

| latest preview date = {{Start date and age|2020|05|13|df=yes}}{{cite web

| url = https://github.com/eclipse/deeplearning4j/releases

| title = Releases · eclipse/deeplearning4j

| website = github.com

| access-date = 2021-04-03

}}

| programming language = Java, CUDA, C, C++,

| operating system = Linux, macOS, Windows, Android, iOS

| platform = CUDA, x86, ARM, PowerPC

| size =

| language = English

| genre = Natural language processing, deep learning, machine vision, artificial intelligence

| license = Apache License 2.0

}}

{{machine learning bar}}

Eclipse Deeplearning4j is a programming library written in Java for the Java virtual machine (JVM).{{cite magazine|first=Cade|last=Metz|title=The Mission to Bring Google's AI to the Rest of the World|magazine=Wired.com|date=2014-06-02|url=https://www.wired.com/2014/06/skymind-deep-learning/|access-date=2014-06-28}}{{cite news|url=http://www.businessweek.com/articles/2014-06-03/teaching-smaller-companies-how-to-probe-deep-learning-on-their-own|archive-url=https://web.archive.org/web/20140604063205/http://www.businessweek.com/articles/2014-06-03/teaching-smaller-companies-how-to-probe-deep-learning-on-their-own|url-status=dead|archive-date=June 4, 2014|title=Deep Learning for (Some of) the People|last=Vance|first=Ashlee|author-link=Ashlee Vance|work=Bloomberg Businessweek|date=2014-06-03|access-date=2014-06-28}} It is a framework with wide support for deep learning algorithms.{{cite web|url=https://venturebeat.com/2015/11/14/deep-learning-frameworks/|title=Want an open-source deep learning framework? Take your pick|last=Novet|first=Jordan|work=VentureBeat|date=2015-11-14|access-date=2015-11-24}} Deeplearning4j includes implementations of the restricted Boltzmann machine, deep belief net, deep autoencoder, stacked denoising autoencoder and recursive neural tensor network, word2vec, doc2vec, and GloVe. These algorithms all include distributed parallel versions that integrate with Apache Hadoop and Spark.{{cite web|url=https://www.youtube.com/watch?v=LCsc1hFuNac|title=Adam Gibson, DeepLearning4j on Spark and Data Science on JVM with nd4j, SF Spark @Galvanize 20150212|work=SF Spark Meetup|date=2015-02-12|access-date=2015-03-01}}

Deeplearning4j is open-source software released under Apache License 2.0,{{cite web|title=Github Repository|website=GitHub|date=April 2020|url=https://github.com/agibsonccc/java-deeplearning}} developed mainly by a machine learning group headquartered in San Francisco.{{cite web|url=http://deeplearning4j.org/|title=deeplearning4j.org}} It is supported commercially by the startup Skymind, which bundles DL4J, TensorFlow, Keras and other deep learning libraries in an enterprise distribution called the Skymind Intelligence Layer.{{cite web|title=Skymind Intelligence Layer Community Edition|url=https://skymind.ai/quickstart|access-date=2017-11-02|archive-url=https://web.archive.org/web/20171107015537/https://skymind.ai/quickstart|archive-date=2017-11-07|url-status=dead}} Deeplearning4j was contributed to the Eclipse Foundation in October 2017.{{cite web|title=Eclipse Deeplearning4j Project Page|date=22 June 2017|url=https://projects.eclipse.org/proposals/deeplearning4j}}{{cite web|title=Skymind's Deeplearning4j, the Eclipse Foundation, and scientific computing in the JVM|url=https://jaxenter.com/skymind-deeplearning4j-eclipse-138872.html|work=Jaxenter|date=13 November 2017|access-date=2017-11-15}}

Introduction

Deeplearning4j relies on the widely used programming language Java, though it is compatible with Clojure and includes a Scala application programming interface (API). It is powered by its own open-source numerical computing library, ND4J, and works with both central processing units (CPUs) and graphics processing units (GPUs).{{cite news | url=https://venturebeat.com/entrepreneur/deep-learning-startup-skymind-raises-3-million-launches-intelligence-layer-distribution/ | title=Deep learning startup Skymind raises $3 million, launches Intelligence Layer distribution

| first=Jordan | last=Novet | work=VentureBeat | date=September 28, 2016}}{{cite news | url=https://venturebeat.com/dev/skymind-launches-with-open-source-plug-and-play-deep-learning-features-for-your-app/ | title=Skymind launches with open-source, plug-and-play deep learning features for your app | first=Jordan | last=Novet | work=VentureBeat |date=June 2, 2014}}

Deeplearning4j has been used in several commercial and academic applications. The code is hosted on GitHub.{{Cite web|url=https://github.com/deeplearning4j/deeplearning4j|title=deeplearning4j/deeplearning4j|date=29 April 2023|accessdate=29 April 2023|via=GitHub}} A support forum is maintained on Gitter.{{Cite web|url=https://app.gitter.im/#/room/#deeplearning4j_deeplearning4j:gitter.im|title=Element|website=app.gitter.im|accessdate=29 April 2023}}

The framework is composable, meaning shallow neural nets such as restricted Boltzmann machines, convolutional nets, autoencoders, and recurrent nets can be added to one another to create deep nets of varying types. It also has extensive visualization tools,{{Cite web |url=http://deeplearning4j.org/visualization |title=Deeplearning4j Visualization Tools |access-date=2016-08-17 |archive-date=2017-08-10 |archive-url=https://web.archive.org/web/20170810053823/https://deeplearning4j.org/visualization |url-status=dead }} and a computation graph.{{Cite web |url=http://deeplearning4j.org/compgraph |title=Deeplearning4j Computation Graph |access-date=2016-08-17 |archive-date=2017-08-10 |archive-url=https://web.archive.org/web/20170810053821/https://deeplearning4j.org/compgraph |url-status=dead }}

Distributed

Training with Deeplearning4j occurs in a cluster. Neural nets are trained in parallel via iterative reduce, which works on Hadoop-YARN and on Spark.{{cite web|url=https://github.com/emsixteeen/IterativeReduce|title=Iterative reduce|website=GitHub|date=15 March 2020}} Deeplearning4j also integrates with CUDA kernels to conduct pure GPU operations, and works with distributed GPUs.

Scientific computing for the JVM

Deeplearning4j includes an n-dimensional array class using ND4J that allows scientific computing in Java and Scala, similar to the functions that NumPy provides to Python. It's effectively based on a library for linear algebra and matrix manipulation in a production environment.

DataVec vectorization library for machine-learning

DataVec vectorizes various file formats and data types using an input/output format system similar to Hadoop's use of MapReduce; that is, it turns various data types into columns of scalars termed vectors. DataVec is designed to vectorize CSVs, images, sound, text, video, and time series.{{Cite web |url=http://deeplearning4j.org/datavec |title=DataVec ETL for Machine Learning |access-date=2016-09-18 |archive-date=2017-10-02 |archive-url=https://web.archive.org/web/20171002011151/https://deeplearning4j.org/datavec |url-status=dead }}{{Cite web|url=https://www.infoq.com/articles/deep-learning-time-series-anomaly-detection/|title=Anomaly Detection for Time Series Data with Deep Learning|website=InfoQ|accessdate=29 April 2023}}

Text and NLP

Deeplearning4j includes a vector space modeling and topic modeling toolkit, implemented in Java and integrating with parallel GPUs for performance. It is designed to handle large text sets.

Deeplearning4j includes implementations of term frequency–inverse document frequency (tf–idf), deep learning, and Mikolov's word2vec algorithm,{{Cite web|url=https://code.google.com/archive/p/word2vec|title=Google Code Archive - Long-term storage for Google Code Project Hosting.|website=code.google.com|access-date=29 April 2023}} doc2vec, and GloVe, reimplemented and optimized in Java. It relies on t-distributed stochastic neighbor embedding (t-SNE) for word-cloud visualizations.

Real-world use cases and integrations

Real-world use cases for Deeplearning4j include network intrusion detection and cybersecurity, fraud detection for the financial sector,{{Cite web |url=http://www.skymind.io/finance/ |title=Archived copy |access-date=2016-02-22 |archive-url=https://web.archive.org/web/20160310082208/http://www.skymind.io/finance/ |archive-date=2016-03-10 |url-status=dead }}{{Cite web|url=https://skymind.ai/bsa-aml%7B%7BDead+link%7Cdate=September+2018+%7Cbot=InternetArchiveBot+%7Cfix-attempted=yes+%7D%7D|title=skymind.ai|website=skymind.ai|accessdate=29 April 2023}} anomaly detection in industries such as manufacturing, recommender systems in e-commerce and advertising,{{cite web |url=http://www.skymind.io/commerce/ |title=Archived copy |access-date=2016-02-22 |url-status=dead |archive-url=https://web.archive.org/web/20160310082156/http://www.skymind.io/commerce/ |archive-date=2016-03-10 }} and image recognition.{{Cite web|url=https://skymind.ai/image%7B%7BDead+link%7Cdate=September+2018+%7Cbot=InternetArchiveBot+%7Cfix-attempted=yes+%7D%7D|title=skymind.ai|website=skymind.ai|accessdate=29 April 2023}} Deeplearning4j has integrated with other machine-learning platforms such as RapidMiner, Prediction.io,{{cite web |url=https://www.rapidminerchina.com/en/products/shop/product/deeplearning4j/ |title=DeepLearning4J(Stable) | RapidMiner China |website=www.rapidminerchina.com |access-date=22 May 2022 |archive-url=https://archive.today/20160518041312/https://www.rapidminerchina.com/en/products/shop/product/deeplearning4j/ |archive-date=18 May 2016 |url-status=dead}} and Weka.{{Cite web|url=https://deeplearning.cms.waikato.ac.nz/|title=Home - WekaDeeplearning4j|website=deeplearning.cms.waikato.ac.nz|access-date=29 April 2023}}

Machine Learning Model Server

Deeplearning4j serves machine-learning models for inference in production using the free developer edition of SKIL, the Skymind Intelligence Layer.{{Cite web |url=https://skymind.ai/products |title=Products |access-date=2017-09-20 |archive-url=https://web.archive.org/web/20170921001159/https://skymind.ai/products |archive-date=2017-09-21 |url-status=dead }}{{Cite web |url=https://deeplearning4j.org/modelserver |title=Model Server for Deep Learning and AI - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM |access-date=2017-09-20 |archive-url=https://web.archive.org/web/20170921001516/https://deeplearning4j.org/modelserver |archive-date=2017-09-21 |url-status=dead }} A model server serves the parametric machine-learning models that makes decisions about data. It is used for the inference stage of a machine-learning workflow, after data pipelines and model training. A model server is the tool that allows data science research to be deployed in a real-world production environment.

What a Web server is to the Internet, a model server is to AI. Where a Web server receives an HTTP request and returns data about a Web site, a model server receives data, and returns a decision or prediction about that data: e.g. sent an image, a model server might return a label for that image, identifying faces or animals in photographs.

The SKIL model server is able to import models from Python frameworks such as Tensorflow, Keras, Theano and CNTK, overcoming a major barrier in deploying deep learning models.

Benchmarks

Deeplearning4j is as fast as Caffe for non-trivial image recognition tasks using multiple GPUs.{{Cite web | url=https://github.com/deeplearning4j/dl4j-benchmark | title=GitHub - deeplearning4j/Dl4j-benchmark: Repo to track dl4j benchmark code | website=GitHub | date=19 December 2019}} For programmers unfamiliar with HPC on the JVM, there are several parameters that must be adjusted to optimize neural network training time. These include setting the heap space, the garbage collection algorithm, employing off-heap memory and pre-saving data (pickling) for faster ETL.{{Cite web |url=https://deeplearning4j.org/benchmark |title=Deeplearning4j Benchmarks - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM |access-date=2017-01-30 |archive-date=2017-08-09 |archive-url=https://web.archive.org/web/20170809124911/https://deeplearning4j.org/benchmark |url-status=dead }} Together, these optimizations can lead to a 10x acceleration in performance with Deeplearning4j.

API Languages: Java, Scala, Python, Clojure & Kotlin

Deeplearning4j can be used via multiple API languages including Java, Scala, Python, Clojure and Kotlin. Its Scala API is called ScalNet.{{Cite web |url=https://deeplearning4j.org/scala |title=Scala, Spark and Deeplearning4j - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM |access-date=2017-02-25 |archive-date=2017-02-25 |archive-url=https://web.archive.org/web/20170225133003/https://deeplearning4j.org/scala |url-status=dead }} Keras serves as its Python API.{{Cite web |url=https://deeplearning4j.org/keras |title=Running Keras with Deeplearning4j - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM |access-date=2017-02-25 |archive-url=https://web.archive.org/web/20170225133010/https://deeplearning4j.org/keras |archive-date=2017-02-25 |url-status=dead }} And its Clojure wrapper is known as DL4CLJ.{{Cite web |url=https://deeplearning4j.org/clojure |title=Deep Learning with Clojure - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM |access-date=2017-02-25 |archive-url=https://web.archive.org/web/20170225133007/https://deeplearning4j.org/clojure |archive-date=2017-02-25 |url-status=dead }} The core languages performing the large-scale mathematical operations necessary for deep learning are C, C++ and CUDA C.

Tensorflow, Keras & Deeplearning4j

Tensorflow, Keras and Deeplearning4j work together. Deeplearning4j can import models from Tensorflow and other Python frameworks if they have been created with Keras.{{Cite web |url=https://deeplearning4j.org/tensorflow |title=Tensorflow & Deeplearning4j - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM |access-date=2017-09-07 |archive-url=https://web.archive.org/web/20170908021856/https://deeplearning4j.org/tensorflow |archive-date=2017-09-08 |url-status=dead }}

See also

{{Portal|Free and open-source software|Computer programming}}

References