ND4Jのフルインストール

このインストールは複数の段階の手順に従って行います。質問やコメント等は、是非、Gitter Live Chatでお聞かせください。弊社のスタッフがお手伝いいたします。恥ずかしがる必要は全くありません。いつでも気軽にご連絡ください。

ND4J、DL4Jを開始するには、以下をお読みください。

  1. 必要なもの
  2. 統合開発環境
  3. 新しいND4Jのプロジェクト
  4. 開発ツール
  5. GPUs
  6. 次のステップ

Deeplearning4jは、プロのJava開発者向けのオープンソースプロジェクトで、製品展開、IntellijなどのIDE、Mavenのような自動ビルドツールなどに精通した方々を対象としています。既にこれらのツールをお持ちの方には、弊社のツールは、非常に役に立ちます。

必要なもの

システム設定の必要条件:

オプショナル:

Java 7、またはそれ以降のバージョン

Javaは、主要なインターフェース、そしてND4Jのネットワーキング言語です。何千ものノードを使ったクラウドベースの配信システムからローメモリーのモノのインターネット(Iot:Internet of Things)に至るまで様々なものに使用されているからです。「いったん作成すれば、あちこちで実行できる」言語なのです。

使用しているJavaのバージョン名を調べるには(またはJavaがインストールされているかを調べるには)、以下のコマンドを入力してください。

java -version

Java 7がインストールされていない場合は、Java開発キットをこちらからダウンロードしてください。最近のMacの場合、最初のラインのファイルに、Mac OS X (jdk-7uの後の数字はアップデートを行うごとに増えます)の情報を入れます。 「Mac OS X x64 185.94 MB - jdk-7u79-macosx-x75.dmg」のようになります。

Maven

MavenはJavaのプロジェクトの自動ビルドツール(Mavenのその他の用途はこちら)です。最新バージョンのND4J、そしてDL4Jのプロジェクトライブラリ(.jar files)を見つけ、自動でダウンロードします。これらのリポジトリは、Maven Centralにあります。

Javaプログラマーでない方々のためのさらに詳細にわたるMavenガイドも準備しましたので、こちらをお読みください。 Mavenだと、ND4JとDeeplearning4jのプロジェクトの両方が簡単にインストールできます。IntelliJなどのような統合開発環境(IDE)を使うのには最適です。

お手持ちの機器にMavenがインストールされているか、またはどのバージョンのMavenがインストールされているかを調べるには以下のコマンドラインを入力してください。

mvn --version

最新のMavenがインストールされていない場合は、最新のものにアップデートしてください。(これが書かれた現時点では3.3.xが最新です。)Mavenのインストールの方法については、こちらをお読みください。Mavenの最新で安定したバージョンの入った圧縮ファイルをダウンロードしてください。

Alt text

同じページの下部で、お使いのオペレーティングシステムのガイドに従ってください。例)「Unixベースオペレーティングシステム(Linux、 Solaris、Mac OS X)」 以下のようになります。

Alt text

統合開発環境:IntelliJ

統合開発環境(IDE)を使用すると、APIを使用し、クリックするだけで自分のネットワークが作成できます。統合開発環境には、IntelliJを使うことをお勧めします。IntelliJだと、インストールしたJavaのバージョンで使うことができ、Mavenを使って依存関係を扱うことができるからです。

IntelliJのフリーコミュニティーサイトでは、こちらでインストレーションのガイドを提供しています。弊社では、IntelliiJの方をお勧めしていますが、他にもEclipseNetbeansが人気のある統合開発環境です。EclipseでND4J/DL4Jパッケージをインストールするには、こちらのガイドをお読みください。

新しいND4Jプロジェクトをはじめましょう

IntelliJに新規のND4Jプロジェクトを作成するには、IntelliJの開始画面で「Open Project(プロジェクトを開く)」をクリックするか、File(ファイル)/Open(開く)タブをクリックし、「nd4j」を選びます。Githubからソースファイルをクローンした場合、ディレクトリは、IntelliJからアクセス可能です。

IntelliJに新規のND4Jプロジェクトを作成するには、正しいdependencyを、該当するプロジェクトのPOM.xmlファイルにペーストしてください。これらすべてが正しく実行されれば、Mavenが自動でND4Jを構築します。正しい依存関係をPOMファイルにペーストすることにより、ND4Jがインストールできます。他にインストールしなければならないものはありません。

maven-archetype-quickstartを選びます。

Alt text

こちらは、Mavenを使ったIntelliJの新規プロジェクト作成ウイザード画面です。まずは自分のグループ名とアーティファクト名を付けてください。

Alt text

次の画面の「Next(次へ)」をクリックし、その次の画面で、自分のプロジェクト名(例えば「ND4J-test」)を入れ、「Finish(終了)」をクリックします。次に、IntelliJの新規NND4JプロジェクトのルートにあるPOM.xmlにアクセスします。

必要な依存関係を挿入してPOMファイルを更新させます。必要な依存関係は、CPUやGPUによって異なります。

CPUのデフォルト設定のバックエンドは、x86ですが、これはNetlib-blasに強く依存しています。YPOMの<dependencies> ... </dependencies> とあるところに、以下のようにペーストします。

<dependency>
 <groupId>org.nd4j</groupId>
 <artifactId>nd4j-native</artifactId>
 <version>${nd4j.version}</version>
</dependency>

ND4Jのバージョンは、ここでは、変数となります。IPOMの少し上にある別のライン<properties> ... </properties>を指します。nd4jのバージョンを指定したもので、以下のようになります。

<nd4j.version>0.4.0</nd4j.version>

dl4jのバージョンも0.4.0、DataVecのバージョンは0.4.0。

バージョン番号は、新しいリリースが出るにつれて変わります。Maven Centralにある最新のバージョンを忘れずにこちらでチェックするようにしてください。正しいdependencyとnd4jバージョンをペーストすれば、Mavenが自動的に必要なライブラリをインストールし、ND4Jを実行させることができます。

バックエンドがx86である必要はありません。GPUとの関係で、Jcublasに切り替えても大丈夫です。このことは、弊社の依存関係のページで、より上級レベルの設定変更についてとともにご説明しています。また、このページでは、ライブラリの最新バージョンについて説明しています。

もうこれで、IntelliJで新規のJavaファイルを作成し、ND4JのAPIを線形代数の計算に使い始めることができます。

新規のIntellijプロジェクトごとに、App.javaファイルを開き、public static void main( String[] args )の後に表示される波括弧内にコードを入れてください。

正しいパッケージがインポートされなかったため、クラスの多くは赤色で表示されます。しかし、IntelliJは、これらのパッケージを自動的にファイルのトップに追加します。パッケージを自動ロードさせるには、お使いのOSに基づいて、適切なホットキーを調べてください。

(最初の手順については、弊社のイントロダクションをお読みください。IntelliJ のND4Jには、オートコンプリート機能があるため、どの文字のコマンドを入れても、その文字が含まれるすべてのND4Jコマンドのリストを表示させてくれます。)

GitHub & Source

Githubは、ウェブベースのRevision Control Systemで、オープンソースプロジェクトの事実上のホストです。

ND4Jのコミッターになるつもりはない方、または最新のアルファバージョンが必要ない方は、Maven Centralから最も安定したバージョンである0.4-rc1.xをダウンロードすることをお勧めいたします。JARファイルは、Maven Centralから直接ダウンロードすることができます。あるいは、弊社のソースをご参照ください。

Scala

ND4Jと連動させるためにScalaをインストールする必要はありません。ND4Sという名のリポジトリにScala APIがあるからです。

Scalaは、マルチパラダイムの言語です。Java仮想マシンで実行できる強い静的型システムです。このようにして、Scalaには、SchemeやHaskellに似た機能的プログラム機能やJavaのようなオブジェクト指向プログラミング機能があり、プログラムが簡易になる構造になっています。ScalaをJavaライブラリと連動させて使用することができます。Scalaに書かれたニューラルネットワークのexampleが複数あり、Sparkの実装に必要になっています。

お手持ちの機器にScalaがインストールされているか、またはどのバージョンのScalaがインストールされているかを調べるには以下のコマンドラインを入力してください。

scala -version

Scalaをインストールするには、Scalaダウンロードページにアクセスしてください。ND4Jは、Scala 2.10.4との互換性があり、Scalaには後方互換性がありません。Homebrewでは、Macのユーザーのために、Scalaをインストールするためのガイドを提供しています。コマンドのbrew install scalaを使用すると、最新のバージョン2.11.xが入手できます。Homebrewを使ってScala 2.10.xをインストールするには、こちらをお読みください。

IntelliJのプラグインによってScalaを使用することができます。(IntelliJにプラグインを追加するには、タブのIntelliJ IDEA/Preferences/IDE Setting/Plugins/へ行き、Scalaを探します。)

DataVec

Canovaは、機械学習ツールとして弊社が構築した一般的なベクトル化ライブラリです。生のデータを使用可能なベクターフォーマットであるsvmLightlibsvmARFFなどにベクトル化するため、弊社のニューラルネットワークに使用できます。Canovaは、ND4Jに必要ではありませんが、Deeplearning4jニューラルネットワークにデータをロードするのに役立ちます。

Canovaをインストールしましょう

Mavenで、ND4Jに使用したものと同じ手順にしたがってDataVecをインストールしてください。Mavenは、必ず最新バージョンを入手するようにしてください。弊社が現在使用しているバージョンは、0.4.1-SNAPSHOTです。

Deeplearning4jをインストールしましょう

ND4Jに使ったものと同じ方法で、POMのプロパティセクションにハード・コード化されたバージョンを使い、バージョン変数を各依存性に入れて、Deeplearning4jのバージョンを指定する必要があります。

POMに追加するDL4Jの依存性は、プロジェクトの性質によって異なります。

以下のコア依存性に加えて、コマンドラインインターフェイスにdeeplearning4j-cliをインストールしたり、Hadoopや Sparkと並行させて使用するために、deeplearning4j-scaleoutをインストールしたい方もおられるかもしれません。

<dependency>
 <groupId>org.deeplearning4j</groupId>
 <artifactId>deeplearning4j-core</artifactId>
 <version>${deeplearning4j.version}</version>
</dependency>

Deeplearning4jをインストールするための詳細情報は、DL4Jをはじめましょうをお読みください。

OSX, Windows & Linux用のC言語開発ツール

あるND4J依存関係をWindows、Linux OSにコンパイルするには、gccなどC言語の開発ツールが必要です。お手持ちの機器にgccがインストールされているかを調べるには、ターミナルやコマンドプロンプトにコマンドのgcc -vを実行してください。

###OSX

アップル開発ツールXcodeの一部のバージョンは、gccをインストールしてくれます。gccがまだインストールされていない場合は、コマンドプロンプトにbrew install gccと入力してください。

OpenBlas

nativeのバックエンドにあるネイティブライブラリが使用できるかを調べるには、システムパスに/opt/OpenBLAS/libが必要になります。その後、以下のコマンドをプロンプトに入れてください。

sudo cp libopenblas.so liblapack.so.3
sudo cp libopenblas.so libblas.so.3

これを追加し、SparkがOpenBlasで使用できるようにしました。

OpenBlasが正常に動作しない場合は、以下の手順に従ってください。

  • Openblasがインストールされていれば、これを削除します。
  • コマンドのsudo apt-get remove libopenblas-baseを実行します。
  • OpenBLASの開発版をダウンロードします。
  • git clone git://github.com/xianyi/OpenBLAS
  • cd OpenBLAS
  • make FC=gfortran
  • sudo make PREFIX=/usr/local/ install
  • Linuxの場合、シンボリックリンクのlibblas.so.3liblapack.so.3LD_LIBRARY_PATHに存在しないか再度確認します。もし、存在しなければ、/usr/libにリンクを追加してください。以下のようにして設定できます。(-sにより、リンクがシンボリックになります。)
    ln -s TARGET LINK_NAME
    // 解釈: ln -s "to-here" <- "from-here"
    
  • “from-here”は、まだ存在しないシンボリックリンクを作成したものです。StackOverflowのシンボリックリンク作成方法ガイドがありますので、こちらをお読みください。「Linux man page」は、こちらをお読みください。
  • 最後に統合開発環境を再起動します。
  • ネイティブのBlasをCentos 6で作動させるための詳細は、こちらのCentos 6をお読みください。

Ubuntu(15.10)のOpenBlasについてのガイドは、こちらをお読みください。OpenBlasを動作させるには、その他、以下を実行する必要があるかもしれません。

cd OpenBLAS
make FC=gfortran
sudo make PREFIX=/usr/local/ install

sudo ln -s libopenblas.so libblas.so.3
sudo ln -s libopenblas.so liblapack.so.3

WindowsにOpenBlasをインストールするには、こちらのファイルをダウンロードしてください。ダウンロードしたファイルをC:/BLASなどの場所で解凍してください。最後に、そのディレクトリを、お使いのシステムの環境変数PATHに追加してください。

Windows

Windowsをご使用の場合、Visual Studio Community 2013、またはそれ以降(無料)をインストールする必要があります。そのパスをPATH環境変数に手動で追加する必要があります。パスは以下のようになります。C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

コマンドプロンプトにclと入力してください。.dllファイルが足りないというメッセージが表示されることがあります。VS/IDEフォルダーがパスに入っていることを確認してください(上記をご参照ください)。If your CMD returns usage info for cl, then it’s in the right place.

Visual Studioを使用する場合は、

  • \bin\cl.exe用などに)を指すように、環境変数PATHを設定する。
  • ND4Jにmvn clean installを実行する前に、環境を設定するためにvcvars32.bat(binにあります)を実行してみてください(ヘッダーをあちこちにコピーする手間が省けます)。
  • vcvars32は一時的かもしれないので、ND4Jのmvn installを実行するたびにvcvars32を実行する必要があるかもしれません。
  • Visual Studio 2015をインストールし、 PATH変数を設定した後、 ヘッダーファイルをコピーしなくて済むよう、vcvars32.batを実行し、環境変数(INCLUDE、LIB、LIBPATH)を正しく設定する必要があります。しかし、バッチファイルをエキスプローラから実行すると、一時的なものであるため適切に設定されていません。そこで、mvn installと同じコマンドプロンプト画面から、vcvars32.batを実行すると、すべての環境変数が正しく設定されます。
  • 以下のように設定してください。
    INCLUDE = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include
    LIB = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib"
    //これにより、.lib filesへリンクできます。^^
    
  • Visual Studioで、C++もクリックしてください。これでデフォルト設定でなくなります。 (また、Java CPPのinclude pathは、常にWindowsで動作するとは限りません。これを解決する1つの方法はVisual Studioのincludeディレクトリーからヘッダーファイルを取り、それらをJavaがインストールされたJava Run-Time Environment(JRE)のincludeディレクトリーに入れることです。これによりstandardio.hなどのファイルに影響が出ます。
  • Git、IntelliJ 、Mavenでexampleのインストールガイドは、弊社のクイックスタートをお読みください
  • こちらでは、Windows 64プラットフォームでどのようにしてdllを入手するかを解説しています。
  • dllライブラリをダウンロードし、Java binフォルダ(例えば、 C:\prg\Java\jdk1.7.0_45\bin)に入れてください。
  • ライブラリのnetlib-native_system-win-x86_64.dllは、 libgcc_s_seh-1.dll libgfortran-3.dll libquadmath-0.dll libwinpthread-1.dll libblas3.dll liblapack3.dllに依存します。
  • liblapack3.dlllibblas3.dllは、libopeblas.dllの名前を変えたコピーです。)
  • コンパイルしたライブラリは、sourceforgeOpenBLASMaven Centralからダウンロードできます。

###Linux

Linuxの場合、UbuntuやCentosのユーザーは、2つの異なる手順にしたがう必要があります。

###Ubuntu

Ubuntuの場合、最初に以下を入力します。

sudo apt-get update

次に、このコマンドのバージョンを実行する必要があります。

sudo apt-get install linux-headers-$(uname -r) build-essential

$(uname -r)は、お使いのLinuxのバージョンによって異なります。Linuxのバージョンを調べるには、ターミナルの新しいウインドウを開き、以下のコマンドを入れてください。

uname -r

すると、結果が3.2.0-23-genericなどのように表示されます。 どのような結果が表示されたとしても、それをスクリプトの最初の行に$(uname -r)が表示された場所にコピー&ペーストします。それから、1スペースを入れ、build-essentialと入力してください。タイプミスには注意してください。タブを押して任意のコマンドを完了させてください。

###CentOS

ルートユーザーとして、ターミナル(または、sshセッション)に以下のコマンドを入れてください。

yum groupinstall 'Development Tools'

その後、ターミナルで様々な処理、インストールが実行されます。例えば、gccがインストールされているかを調べるには、以下のコマンドを実行してください。

gcc --version

完全ガイドは、こちらをお読みください。

GPU

Jcublasバックエンドを追加することについてのガイドは、こちらをお読みください。CUDAのバージョン5.5、6.0、6.5、7に対応いたしております。

いったんGPUでニューラルネットワークのトレーニングを開始した後、GPUがどのくらいちゃんと動作しているかモニターしたい場合は、様々な方法があります。

exampleを実行させる準備が整いました。お使いの統合開発環境を起動し、ND4Jのプロジェクトをロードし、exampleのサブディレクトリを開きます。IntelliJウインドウの左側のファイルツリーからexampleを見つけ、その上で右クリックをし、ドロップダウンメニューで「Run(実行)」を意味する緑色の矢印を選択します。

すべてが正常にインストールされれば、プログラムの出力結果として、IntelliJウィンドウの下部に数字が表示されます。実験を始めるには、これらのexampleをサンドボックスとして使用してください。

examplesに慣れてくると、POMファイルで定義された依存関係を変更してみるといいでしょう。依存関係の変更方法は、こちらをお読みください。

役に立つリンク