ディープラーニング【システム構築の準備編・・・その2】2020年01月12日 21:05

年末に手配しておいたパソコンが年明けに届きました。
グラボ(GPU)搭載のPCです。
ディープラーニングの学習はCPUだと時間が物凄くかかるのでGPUは必須です。
半自作PCでもよかったのですが、面倒だったのでDELLのXPS タワー スペシャルエディションにしました。
会社で使うものなので、なるべく手間をかけず確実なものにしたつもりです。
HP製パソコンでもよかったかもしれないけど、XPSはカッコいい!

<主な仕様>
 CPU:第9世代インテル® Core™ i7 9700K
 GPU:NVIDIA® GeForce RTX™ 2070 SUPER 8GB GDDR6
 メモリ:16GB
 ストレージ:1TB M.2 PCIe NVME SSD
+ 2TB SATA 7200RPM HDD

仕様だけ見るとゲーミングパソコンみたい。。。
でも、これなら何も悩まずにすぐに使えるはず。
とは言ってもPythonやエディタなどは入れないといけない。
問題なのは、Pythonのモジュールをネット経由でインストールできないこと
会社のLAN経由だと弾かれてサーバに繋がらない。
必要なモジュールをダウンロードしてインストールしなければならない。

ニューラルネットワークコンソール(NNC)はダウンロードしたものをコピーするだけで大丈夫なのでいいけど、Neural Network Libraries(Nnabla)のPythonモジュールはPIPコマンドでインストールしないといけない。
Python関連では、OpenCVやNumPyなども必要。
オンラインだと関連する必要なモジュールも自動でインストールしてくれるので簡単なんだけど手動でインストールする場合は必要なモジュールを調べて個別に入れないといけない。

それでは、始めます。

Pythonのインストールと環境構築

1.Python環境のインストール
Nnablaは64bitでないと動かないのでPythonは64bitバージョンをインストール。
Pythonのインストールについての日本語の情報はあふれるほどありましたが、”python Japan”さんのHPをメインに参照しながら行いました。

Pythonのバージョンは、3.7にしました。
最新バージョンは、3.8みたいでしたが、Nnablaは3.8に対応していないので。。。

まずはオンラインでインストールできる環境でPythonのモジュールをPIPコマンドでインストールして何のモジュールが必要か調べました。 。( ..)φメモメモ

<必要なモジュール>
OpenCV:システムではUSBカメラから直接画像を取り込むので必要
 opencv_python-4.1.2.30-cp37-cp37m-win_amd64.whl
 numpy-1.18.1-cp37-cp37m-win_amd64.whl
Qt5:UI構築で使用
 PyQt5-5.14.1-5.14.0-cp35.cp36.cp37.cp38-none-win_amd64.whl
 PyQt5_sip-12.7.0-cp37-cp37m-win_amd64.whl
Pyvisa:デバイスを発光させるための電源をGP-IBで制御するのに必要
 PyVISA-1.10.1.tar.gz
Nnabla:SONYさんのディープラーニングライブラリ
 nnabla-1.4.0-cp37-cp37m-win_amd64.whl
 configparser-4.0.2-py2.py3-none-any.whl
 numpy-1.16.6-cp37-cp37m-win_amd64.whl
 PyYAML-5.3-cp37-cp37m-win_amd64.whl
 contextlib2-0.6.0.post1-py2.py3-none-any.whl
 Pillow-7.0.0-cp37-cp37m-win_amd64.whl
 tqdm-4.41.1-py2.py3-none-any.whl
 h5py-2.10.0-cp37-cp37m-win_amd64.whl
 requests-2.22.0-py2.py3-none-any.whl
 pywin32-227-cp37-cp37m-win_amd64.whl
 boto3-1.10.47-py2.py3-none-any.whl
 imageio-2.6.1-py3-none-any.whl
 Cython-0.29.14-cp37-cp37m-win_amd64.whl
 protobuf-3.11.2-cp37-cp37m-win_amd64.whl
 six-1.13.0-py2.py3-none-any.whl
 chardet-3.0.4-py2.py3-none-any.whl
 certifi-2019.11.28-py2.py3-none-any.whl
 idna-2.8-py2.py3-none-any.whl
 urllib3-1.25.7-py2.py3-none-any.whl
 botocore-1.13.47-py2.py3-none-any.whl
 jmespath-0.9.4-py2.py3-none-any.whl
 docutils-0.15.2-py3-none-any.whl

それから、NnablaでGPUを使用する場合はGPU対応のモジュールが必要みたいです。
 nnabla_ext_cuda-1.0.18-cp37-cp37m-win_amd64.whl 
 nnabla-1.0.18-cp37-cp37m-win_amd64.whl
ただ、学習はNNCで行うので必須ないかも。推論はGPU無しでも速いから。

必要なモジュールのwhlファイルはPyPIからダウンロードしました。
PyPI · The Python Package Index:https://pypi.org/

Nablaは関連モジュールが多くて少し大変でしたが、バージョンなどに注視して無事にダウンロード完了。

次にダウンロードしたモジュールをオフラインでpip installする。
pip install --no-deps whlファイル名

この時にカレントディレクトリをダウンロードしたファイルのが保存されているディレクトリに移動しておくとファイル名指定が少しだけ楽になります。

pipのオプション:”--no-deps”で、関連ライブラリをインストールせず、指定したライブラリを単体で導入することができます。これにより外部接続をしないでインストールが可能になります。

必要なすべてのモジュールのpip installが完了したところで、Python環境でimportしてエラーが出ないことを確認しました。

NVIDIA GPUを使用できるように、”CUDAツールキッット”と”cuDNN”をNVIDIAのHPからダウンロードしてインストールします。

これも推論でGPUを使わなければ要らないかも。
でも取り敢えず入れておきました。
cuDNNは、bin、includeとlibを"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\V〇〇"にコピーします。

2.エディタのインストール
エディタは、さすがにメモ帳では辛いのでVisual Studio Code(VS Code)をインストールしました。
VS CodeはポータブルモードなんてのもあってUSBメモリで持ち運べるバージョンがあるんですね。
ダウンロードページでWindowsではZIP形式を選択するとポータブルモードのVS Codeがダウンロードできます。
なお、ポータブルモードは自動でアップデートされないのでアップデートするときは手動でダウンロードする必要があります。

ここで問題発生・・・。
会社のNET環境では何故かMicrosoftのHPからダウンロードできない。。。
Windowsのバージョンアップなどはできるので、VSCodeSetup-x64-1.41.1.exeを別のPCでダウンロードしてそれを実行すればインストールできそう。できました!
あとエディタでnotepad++があるとチョコっとした変更を行うときに便利なのでこれも入れておきました。

Visual StudioもPythonをサポートしていますが、それほど大がかりなソフトを作成するわけではないので今はVS Codeで十分。
ブレークポイントを設定してデバックもできるしアップデートも毎月行われています。

これで、とりあえず環境の整備が完了しました。
次回は、NNCでGPUを使用して学習させてみたいと思います。
CPUだと数百個くらいのデータだと2~4時間くらいで学習が終わりますが、データ数が1万個くらいに増やすと8時間以上かかってしまいます。
GPUだとどれくらい速くなるか楽しみです。