IMG_1896_s

我が家のデスクトップPCにはNVIDIAのGPUが搭載されています。GeForce GTX 960というモデルで、CUDAコアは1024個です。3年前のGPUなので今となってはミドルクラスですが、3Dモデリング作成などは今でも快適にできます。せっかくなので、GPUを使った演算処理も試したいと思い、深層学習(ディープラーニング)の分野で耳にすることの多いTensorflowを使ってみることにしました。

GPUを使った並列処理にはオープンで汎用性の高いOpenCLとNVIDIA独自のCUDAがあります。現時点で、CUDAの方が効率が高いようです。

CUDAを使うにはNVIDIAのCUDA Toolkitをインストールする必要があります。最初、Windows 10にインストールしようと思いましたが、GeForceドライバのインストールに失敗してしまいました。Windowsを日常的に使うので、あまり環境が壊れるも困るので、VMWare上のUbuntu 16.04LTS上で試そうと思いましたが、仮想マシンではGeForceがそもそも認識しませんでした。そこで、Ubuntu 16.04LTSをPCに直接インストールすることにしました。

もちろん、Windows10の環境は必要なので、Ubuntu 16.04LTSとのデュアルブートにしようと考えました。大学時代にDebianとWindows XPのデュアルブートを良くやっていましたが、下手するとWindowsが動かなくなったりと、結構、大変だった思いがあるので、先に調べてみました。

[UEFI基本編]Ubuntu 16.04 LTS と Windows10 とのデュアルブート環境の構築 が大変参考になりました。Windows 8.1以降に導入されたセキュアブートが要注意ということがわかりました。

このページを参考に、Windows 10上で高速スタートアップを無効にし、BIOS上でFastBoot、SecureBootをDisableにしました。手順を替えた部分は、1) LiveUSBの代わりにDVDを使ったこと、2) 「[Legacy環境編]Ubuntu 14.04 LTS と Windows10 とのデュアルブート環境の構築」を参考にブートローダーをインストールしたディスク(セカンドHDDにしました)に設定したこと、3) BIOSの起動パーティションの順番を上記のUbuntuをインストールしたパーティションを優先にしたこと、4) 「UbuntuとWindowsをデュアルブートしていると時刻が9時間ずれる」 を参考にUbuntuの時刻設定をJSTに変えたこと、です。

Software Design 2017 December号の機械学習の特集記事を参考に、CUDA、DIGITS、cuDNN (CUDA Deep Neural Network library)、TensorFlowのインストールを行いました。一部「Windows10のデュアルブートUbuntu16.04LTS(GTX1080)でTensorFlow-gpu==0.12.1(python3版)使えるまでの道のり」も参考にしました。TensorFlowはSoftwareDesignでは1.3.0を前提としていますが、GitHubからダウンロードすると最新の1.8.0がインストールされてしまうため、sudo pip install tensorflow-gpu==1.3.0、のようにバージョン1.3.0を使うよう指定しました。

中でもDIGITSは0〜9の文字のサンプル60000枚からなるデータを使って機械学習できます。DIGITSでモデルを作成し、TensorFlowで実行させる形になります。tensorboardコマンドを使うと3Dに可視化されます。

個人の環境でも人工知能や機械学習ができる環境が整ってきたので、実際に色々と試しながら理解を深めたいと思います。

参考ページ: 素人でもディープラーニングができる「NVIDIA DIGITS」で文字認識をやってみた