Eclipse Deeplearning4J (DL4J) エコシステムは、JVM ベースの深層学習アプリケーションのすべてのニーズをサポートすることを目的としたプロジェクトのセットです。これは、生データから始めて、どこからでもどんな形式であってもロードして前処理し、単純で複雑なさまざまな深層学習ネットワークを構築して調整することを意味します。
Deeplearning4J は JVM 上で実行されるため、Scala、Kotlin、Clojure など、Java 以外のさまざまな JVM ベースの言語で使用できます。
DL4J スタックは次のもので構成されます。
- DL4J : カスタム レイヤーを含むさまざまなレイヤーを使用して MultiLayerNetworks と ComputationGraphs を構築するための高レベル API。 tf.keras モデル (1.0.0-beta7 以降) を含む、h5 からの Keras モデルのインポートをサポートし、Apache Spark での分散トレーニングもサポートします
- ND4J : 500 を超える数学演算、線形代数演算、深層学習演算を備えた汎用線形代数ライブラリ。 ND4J は、高度に最適化された C++ コードベース LibND4J に基づいており、CPU (AVX2/512) および GPU (CUDA) のサポートと、OpenBLAS、OneDNN (MKL-DNN)、cuDNN、cuBLAS などのライブラリによる高速化を提供します。
- SameDiff : ND4J ライブラリの一部である SameDiff は、自動微分/深層学習フレームワークです。 SameDiff は、TensorFlow グラフ モードと同様に、グラフベース (定義して実行) アプローチを使用します。 Eager グラフ (TensorFlow 2.xeager/PyTorch) グラフの実行が計画されています。 SameDiff は、TensorFlow 凍結モデル形式 .pb (protobuf) モデルのインポートをサポートしています。 ONNX、TensorFlow SavedModel、および Keras モデルのインポートが計画されています。 Deeplearning4j は、カスタム レイヤーと損失関数を簡単に作成できるように SameDiff を完全にサポートしています。
- DataVec : さまざまな形式およびファイル (HDFS、Spark、画像、ビデオ、オーディオ、CSV、Excel など) の機械学習データ用の ETL
- LibND4J : すべてを支える C++ ライブラリ。 JVM がネイティブ配列および操作にアクセスする方法の詳細については、JavaCPP を参照してください。
- Python4J : JVM 用のバンドルされた cpython 実行
DL4J エコシステム内のすべてのプロジェクトは、Windows、Linux、macOS をサポートしています。ハードウェアのサポートには、CUDA GPU (OSX を除く 10.0、10.1、10.2)、x86 CPU (x86_64、avx2、avx512)、ARM CPU (arm、arm64、armhf)、および PowerPC (ppc64le) が含まれます。
コミュニティサポート
プロジェクトのサポートについては、https://community.konduit.ai/ にアクセスしてください。
プロジェクトでの Eclipse Deeplearning4J の使用
Deeplearning4J にはかなりの数の依存関係があります。このため、ビルド ツールでの使用のみをサポートしています。
< dependencies >
< dependency >
< groupId >org.deeplearning4j</ groupId >
< artifactId >deeplearning4j-core</ artifactId >
< version >1.0.0-M2.1</ version >
</ dependency >
< dependency >
< groupId >org.nd4j</ groupId >
< artifactId >nd4j-native-platform</ artifactId >
< version >1.0.0-M2.1</ version >
</ dependency >
</ dependencies >
CPU バックエンドで Deeplearning4J を使用するには、これらの依存関係を pom.xml ファイルに追加します。新しい Maven プロジェクトを最初から開始したい場合は、完全なスタンドアロン プロジェクトのサンプルがサンプル リポジトリで利用できます。
コードサンプル
DL4J はモノ リポジトリに複数のモジュールを含む多面的なプロジェクトであるため、さまざまなモジュールのさまざまな使用法を味わうためにサンプルを参照することをお勧めします。以下に各モジュールの例へのリンクを示します。
- ND4J: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/nd4j-ndarray-examples
- DL4J: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/dl4j-examples
- サメディフ: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/samediff-examples
- Datavec: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/data-pipeline-examples
- Python4j: https://deeplearning4j.konduit.ai/python4j/tutorials/quickstart
他のフレームワークからモデルを実行できるようにしたいユーザーについては、以下を参照してください。
- Onnx: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/onnx-import-examples
- Tensorflow/Keras: https://github.com/deeplearning4j/deeplearning4j-examples/tree/master/tensorflow-keras-import-examples
ドキュメント、ガイド、チュートリアル
Deeplearning4J とそのエコシステムのその他のライブラリの公式ドキュメントは、http://deeplearning4j.konduit.ai/ で見つけることができます。
いくつかの例が必要ですか?
さまざまな例を利用できる別のリポジトリがあります: https://github.com/eclipse/deeplearning4j-examples
ソースから構築する
公式のコンパイル済みリリースを使用することをお勧めします (上記を参照)。ただし、ソースからビルドする場合は、まずソースからビルドするための前提条件をここで確認してください: https://deeplearning4j.konduit.ai/multi-project/how-to-guides/build-from-source。 CPU および GPU のビルドに関するさまざまな手順がそこにあります。さらにサポートが必要な場合は、フォーラムにアクセスしてください。
テストの実行
テストを実行するには、platform-tests モジュールを参照してください。このモジュールは jdk 11 でのみ実行されます (主に古い scala バージョン + JDK 17 の Spark とバグが原因です)
platform-tests を使用すると、さまざまなバックエンドに対して dl4j を実行できます。コマンドラインで指定できるプロパティがいくつかあります。
- backend.artifactId: これはデフォルトで nd4j-native になり、CPU でテストを実行します。nd4j-cuda-11.6 のような他のバックエンドを指定できます。
- dl4j.version: テストを実行する dl4j のバージョンを変更できます。デフォルトは 1.0.0-SNAPSHOT です。
その他のパラメーターは次の場所にあります。
| <プラットフォーム.classifier> ${javacpp.platform} </プラットフォーム.classifier> |
Intellij IDEA でプロジェクトを実行する:
- jdk 9 以降では https://stackoverflow.com/questions/45370178/exporting-a-package-from-system-module-is-not-allowed-with-release に従っていることを確認してください
- すべての nd4j-shade サブモジュールを無視します。各フォルダーを右クリックし、[Maven] -> [プロジェクトを無視] をクリックします。
ライセンス
Apache ライセンス 2.0
商用サポート
Deeplearning4J は、Konduit KK のチームによって積極的に開発されています。
[商用サポートが必要な場合は、お気軽にお問い合わせください。 [email protected] まで