パソコンを新調したのでとりあえずDeeplearning4j開発環境を拵えてみる
こんにちは、和田です。
最近ずっと自宅のPCの調子が悪かったので、初売りのセールを利用してPCを新調してみました。
ちなみに余談ですが、ワタクシ元PCショップ店員でして、PCの自作ならお手の物。
嫁もその時の職場で知り合ったので、PCパーツの知識に明るく、こういう事に関して話が早いので助かります。
■ 確認してた症状
メモリ4枚挿し状態でMEMTEST → エラー
挿しなおしで問題なし → 後日またエラー → しばらく2枚挿しで凌ぐ
5枚刺さってるSSDのうち、2枚が不定期に見えなくなる
ちなみに、昨年嫁の実家に何故か転がってた550Wの電源に積み替えたばかりなので、電源はたぶん大丈夫。
と、いうことで、嫁と会議したところ、
① マザー・CPU・メモリの3点セットをとりあえず変えよう
② 勿体なくて歴代SSDを山のようにつないでたのをやめて、1本化しよう
といったプランでパーツを選んだ結果がこちら。
CPU : Core i5-6500 3.2GHz
MEM : Kingston DDR4 8GB x 2
M/B : Asrock H170M PRO4
SSD : Samsung 850 EVO 500GB
ケース、電源、ODD、GPUは使いまわしです。
初売りセール品を狙って買ったので、Win10も付けても6万掛からず。
まぁ、昔みたいに家でガリガリゲームやるわけでもないし、良いかなと。
ちなみに、今回15年ぶりくらいに自分のPCをCPU付属のリテールクーラーで組みました。
付けまくってたSSDも淘汰したんで、ケースの中が非常に綺麗に。
あぁ、素晴らしい。。。
そして、ここからが本題
そんな訳で、せっかく綺麗なWindows10が出来たんだしと言う理由だけで、
サクっとDeepleaning4j (DL4J) の環境構築だけでもしてしまおうかなと思った次第です。(無計画)
ちなみに、DL4Jのサイトはこちら↓
まずはIDE
とりあえず、定番のPleiades All in one Eclipseを入手します。
なお、DL4Jのクイックスタートガイドによると「IntelliJ IDEA」がオススメと書いてあります。
Deeplearning 4 j のクイックスタートガイド - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM
ええい、知るか。ワシはEclipseを使いたいんじゃ!(無計画)
そんな訳で、↓のサイトからPleiades All in one EclipseのJava版をダウンロードします。
Eclipse 日本語化 | MergeDoc Project
この時、色々ダウンロード出来るんですが、Javaの64bit版を選びます。
ちなみに、32bit版だとDL4Jのライブラリが動かないので、64bit版必須です。
本気でDeeplearningをやるならPython環境の方がメジャーなので、PyDevとか入っている版も視野なのですが、今回はとりあえずJavaで動かしてみるので、Java版を使います。
使いたくなったら後でpluginを足せばいい!それがEclipse!
(そして、pluginが増えすぎて不安定になるのもEclipse)
ダウンロードが完了したら、適当な場所に解凍します。
今回は「C:\pleiades」に解凍しました。
とりあえずeclipse.exeを起動します。
サンプルプロジェクトを作成
初手からクイックスタートの推奨をガン無視したので、IntelliJ 向けに書かれている内容をEclipse向けに読み替えながら進めます。
えーと、なになに。gitでサンプルを落として来いと。
ウィンドウ > ビューの表示 > その他を開いて、出てきたウィンドウから Gitリポジトリーを選択します。
GitリポジトリーViewで 「Gitリポジトリーの複製」を選び、URIの複製を選びます。
URIに「https://github.com/deeplearning4j/dl4j-examples.git」と入力し、次へを押します。
ブランチの選択ではmasterを選択して次へ。
宛先のディレクトリーを「C:\pleiades\git\dl4j-examples」にして、
サブモジュールのクローンにチェックを入れて完了を押します。
しばらくすると、Gitのクローンが出来上がるので、Gitリポジトリーの中から作業ツリーを選択し、dl4j-examplesを右クリックしてプロジェクトのインポートをします。
ここでは「一般的なプロジェクトとしてインポート」を選択してインポートします。
そうするとパッケージエクスプローラーに「dl4j-examples」プロジェクトが出来上がります。
ここで問題発生。
このプロジェクトはMavenプロジェクトとして動いてほしいのに、Eclipse上はただのプロジェクトとして認識しています。
どうにかしてMavenプロジェクトとしてこの「dl4j-examples」を認識させたいので。。。
色々考えたんですが、面倒なので「.project」ファイルを直接書き換えてしまおう作戦。
パッケージエクスプローラー上、非表示になっている、「.project」ファイルを、ナビケータとかで開いて↓のように編集します。
<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>dl4j-examples</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.m2e.core.maven2Builder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.m2e.core.maven2Nature</nature> </natures> </projectDescription>
<buildSpec>と<natures>が元のXMLには無かったと思うので、その部分だけ付け加えても大丈夫です。
これで、ファイルを保存して、ビルドを掛けるとMavenリポジトリから各種ライブラリを勝手に落としてきてくれます。
その後、プロジェクト構成がおかしくなっていると思うので、プロジェクトを右クリック、Maven → プロジェクトの更新 を行うとエラーがなくなります。
↓
準備が整ったので実行
と、言うわけで、クイックスタートガイドにあった「MLPClassifierLinear」を実行します。
パッケージエクスプローラーから辿って、右クリックして実行♪
ボン!
なんでや!?
えー、よくソースを見ると、実行時の作業ディレクトリが、dl4j-examplesの1階層上から実行されるようになってます。
どのみち環境構築の為に動作確認したいだけだったので、大人しくファイルを読み込んでいる箇所を見て回って、パスから「dl4j-examples/」を消していきます。
ちまちま…
気を取り直して再度実行すると…
なんか出ました。
これで一旦DL4Jが正常に動作している確認が取れました。
ちなみに、このサンプルによるとDL4Jのcoreである、ND4JはCPU演算で動いている状態になります。
ND4JをCUDAで動かして高速化する方法もあるのですが、今回は一旦この辺で。
次回また機会があれば書いていこうと思います。