概要
本エントリーは、早くシンギュラリティが実現して、生理食塩の水槽に脳ミソ一つでプカプカ浮かびながら、無限大の時間と空間を飛び回りたいと望んでいる筆者のポエムです。
#ディープラーニング
「シンギュラリティ = 超AI」ということで、まずは流行りのディープラーニングを実際に動かして体験してみようというのが本エントリの目的です。
#ガイド本
独学で新しい技術を学ぶ時、1冊はそのテーマの実装方法が詳細してある技術本を購入して、実際に動かして遊んでみるのが早道だというのが私の経験則です。
ディープラーニングについては、2年ぐらい前から、良い本がないかと本屋をチェックしていましたが、なかなか丁度良い感じのものがなかったのですが、昨年末にこちらの本を見つけ、今回はこの本で紹介されているサンプルをとにかく全部動かしてみることを目的にしました。
環境構築
ハードウェア
ディープラーニングをやるために必要なものは何かと言えば「GPU」ですね。
当初はAWSのGPUインスタンスを使って構築しようと目論んでいましたが、7年ぐらい前に3Dオンラインゲーム用に構築したゲームマシンのパーツをリニューアルしてディープラーニーングマシンを構築してみました。
スペックは以下の通り
【リニューアル前】
- CPU: AMD PhenomⅡX4 980 BE
- メモリ:8GB
- ハードディスク:2TB
- GPU: Redion 6700
- 電源: 550W
【リニューアル後】
- CPU:AMD PhenomⅡX6 1090T BE
- メモリ:16GB
- ハードディスク 2TB
- GPU:GTX 1080Ti
- 電源:850W
CPUは中古購入して4コアから6コアへ、メモリはもっと積みたいのですが、古いマザボのため最大搭載できる16GBとしています。
ガイド本では32GBで構成されていましたが、各サンプルプログラムを動かす限りでは、TOPコマンドでメモリ使用量を見ていたかぎりではそこまで使うことはなく、スワップも発生していなかったと思います。
そして目玉のGPUは、一般向用途向けGPUとしては最高峰の1080Tiを奢っちゃいました。
ディープラーニング環境はubuntuですが、構築前にWidnowsで動かしましたが確かにすごいですね。
このマザボでは到底再生不可能だろうと思っていた、ベンチマーク動画を軽々と再生してくれました。
そして電源。こちらは当初換装は考えていなかったのですが、GPUのリクアイメントが600Wだったのに気づき、急遽、追加発注しました。
最近のPCのスペックからすると、GPU以外かなり弱々しいですが、筆者の環境ではガイド本の全てのサンプルを動かすことができました。
また、トレーニングや推論にかかる時間も、ほぼ、ガイド本で紹介されている時間と同じ程度でした。
ちなみに、ガイド本ではGTX 1070を利用です。
OS
OSはubunt Server 16.04 LTS を本家からISOイメージを持ってきてDesktopが使えるようにインストールしました。
ガイド本でブラウザを使う項目のがあるので、Desktop版をインストールしようとしましたが、なぜか、このマシン構成ではインストール途中で落ちてしまうため、諦めてServer 版をインストールしています。
尚、ガイド本では14.04.5 LTSを使っています。
この辺の違いにより、サンプルプログラム実行中にワーニングが出たりしていましたが、動作自体は問題ありませんでした。
ミドルウェア
Linux環境が整ったら、諸々のミドルウェアをインストールして行きます。
ディープラーニーグの要のCUDA、cuDNN、Anacondanaなどなど。
基本的にはブラウザで落としてきてインストールですが、ガイド本にかなり詳細に記載されていますので、その通りに進めれば問題なくインストールできると思います。
ただ、CUDAあたりは1.9GBあり、ダウンロードに30分ぐらいかかったりします。
あと、パスの追加などもありますが、ミスるとはまるので要注意です。
しっかり、ミスって、ほとんどのコマンドが使えなくなり、こちらのお世話になりました。
あとそれぞれ最新版を使おうとしましたが、依存関係があったりしますので、ガイド本にある組み合わせでないと、うまく動かないケースがありました。
cuDNNはV7が出ていたので使おうとしましたが、ダメでした。おとなしくV.5.1を使います。
一通り、インストールできたら、nvidia-smiコマンドを実行して、GPUを認識しているか確認します。
$ nvidia-smi
Fri Aug 25 14:31:47 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.66 Driver Version: 375.66 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 108... Off | 0000:01:00.0 Off | N/A |
| 0% 44C P0 56W / 250W | 0MiB / 11171MiB | 3% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
はい、しっかり認識してもらっています。
せっかくTi使っているのに、グラフィックボード名が108…になっているのがちょっと悔しいですね。はい。
ちなみに、以下のようにコマンドを叩くと1秒おきに更新してくれるので、トレーニング中の動作状況をほぼリアルタイムでモニタできます。
nvidia-smi -l 1
たまに、300W超えたりするのが、「ディープラーニーングゥーしてルゥー」という感じで素敵です。
以上がガイド本の1章「本書の概要と準備」にあたります。
長くなったので一旦ここまで。
続きはこちら:https://qiita.com/fs-shinji-tomiyama/items/5bf63f6f5b20a9fd9b5f