超低火力DeepLeaning環境をUbuntu16 & 750ti & Chainerで構築したよ
どうも、Deep Leaningという言葉が流行ってから久しいですが、自分は今まで完全にノータッチでした。しかし、どうやらDeep Lenaningというのは思っていた以上に画期的な手法なようで、その適応範囲は画像処理や物体識別、自然言語処理など、現在では様々な分野に広がっています。
そうなるといつまでもノータッチというわけにもいきません。じゃあ、実際にやってみようという気持ちになってきます。しかし、この手法は基本的に(CPUには)面倒くさい計算を大量に行うようで、CPU環境では計算時間がベラボウにかかるらしいです。
というわけで、今回は、約10,000円という低価格のグラフィックボードでDeep Leaning環境を構築します。構成の概要は、Ubuntu16,04とGeForce GTX 750 TiそしてDeep Leaningのフレームワーク代表格であるChainerです。インストールしたばかりのUbuntu16.04でやっていきます。
ちなみにこれが今回使用した750tiです。
OS : Ubuntu 16.04 LTS
(3年前に組み立てた自作PC(Win7→Win10)にUbuntuを同居させています。)
CUDA : 8.0
Python : 2.7.12
メモリ : 8GB
CPU : Intel i5-3470
GPU : GeForce GTX 750 Ti
Contents
1. いつもの作業
では、環境構築を始めていきましょう。まずやることは、作業環境の更新です。調べていると必ずと言っていいほどこれから始まりますね。
1 2 3 |
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get dist-upgrade |
ついでに作業に必要なものもインストールしておきます。すでに入っている人がほとんどだと思いますが、一応書いておきます。
1 2 |
$ sudo apt-get install git $ sudo apt-get install python-pip |
さて、これで下準備は完了です。次に行きましょう。
2. グラボのドライバを入れる
さて、ではグラフィックボードのドライバ入れていきましょう。一応コマンドでやる方法とGUIでやる方法があります。自分はGUIを使うことができるので、後者でやりましたが、一応前者の方法も紹介しておきます。やっていることは違いますが、どちらでも導入はできると思うのでどっちかでやってみてください。ちなみに、自分はコマンドの方法ではできませんでした…。
もし、すでにグラフィックボードのドライバを入れている人はこの項目を飛ばしても大丈夫です。入れられているか不安な人はこの方法で確認してみてください。
1. GUIでやってみる
Ubuntuの設定画面を出します(画面右上にある歯車のマークから「システム設定」を選ぶのが早いと思います)。そして、ウィンドウ下にある「ソフトウェアとアップデート」→「追加のドライバー」という項目を選んでください。選んでから数秒待つと「NVIDIA Corporation…」の項目が出現すると思います。その項目内に使用できるドライバーの一覧が出現します。この中から推奨されているもの(現在使用していないもの)を選んで「変更の適用」を押します。その後再起動すればドライバが適用されます。
導入できているかの確認ですが、再びUbuntuの設定画面を出します。「システム設定」のウィンドウが出たら一番下にある「詳細」を選んでください。以下の画像のような画面が出てきたら、概要で「グラフィック」の項目が、導入しているグラフィックボードと同じものになっていることを確認します。
2. コマンドでやってみる
コマンドは以下のとおりです。
1 2 3 4 5 |
$ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt-get update $ sudo apt-get install nvidia-367 $ sudo apt-get install mesa-common-dev $ sudo apt-get install freeglut3-dev |
これでドライバ入れることができるようです。確認するには以下のコマンドで自分のグラフィックボードと同じものが出れば大丈夫みたいです。
1 |
$ nvidia-smi |
3. CUDAのインストール
では次にCUDAをインストールします。まずは、公式サイトに移動し、CUDA8.0をダウンロードしてきてください。上記のリンクからサイトに移動するとダウンロードフォームがあるのでそこからダウンロードすることができます。
今回の環境ですと、画像のように、「Linux」-「x86_64」-「Ubuntu」-「16.04」-「deb[local]」で大丈夫です。次に、ダウンロードしたファイルを元にCUDAをインストールします。インストールには以下のコマンドを使用します。
1 2 3 |
$ sudo dpkg -i [ダウンロードしたファイル名].deb $ sudo apt-get update $ sudo apt-get install cuda |
これでCUDAのインストールは完了です。
4. cuDNNのインストール
次にcuDNNをインストールします。これは入れなくても大丈夫らしいですが、せっかくなので入れておきます。また、ファイルのダウンロードにはユーザ登録が必要なようです。まずは公式サイトに移動します。移動したページから「Register」→「Join now」と移動していき、出てきた入力フォームで情報を入れ先に進みます。最後まで登録し、ちょっとすると登録完了のメールが届きます。そのメール内のリンクから会員登録を完了させるとcuDNNをダウンロードできるようになります。
また公式サイトに移動し、今度はDownloadを選択し、簡単なアンケートにてけとーに答えるとダウンロードリンクの一覧が出現します。今回の環境では、「Download cuDNN v5.1 [August 10, 2016], for CUDA 8.0」-「cuDNN v5.1 Library for Linux」からダウンロードしてください。Ubuntu14版もありますが、こちらではできませんので注意です。
ダウンロードが完了したら、以下のコマンドでcuDNNの導入します。
1 2 3 4 |
$ tar -zxf [ダウンロードしたファイル名].tgz #例) cudnn-8.0-linux-x64-v5.1.tgz $ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ $ sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ $ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* |
また、.bashrcを編集してパスを通します。
1 2 |
$ vim ~/.bashrc $ source .bashrc |
1 2 3 4 5 6 7 |
# CUDA Toolkit export CUDA_ROOT=/usr/local/cuda export PATH=/usr/local/cuda/bin:${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export CPATH=/usr/local/cuda/include:$CPATH # cuDNN export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH |
これで、cuDNNの導入は完了です。
5. Chainerのインストール
最後にChainerのインストールをやっていきます。インストールは簡単です。
1 |
$ sudo pip install chainer |
6. 動作確認
では、最後に動作確認をして終わりましょう。テストには公式さんが作成したMNISTのプログラムを使用します。以下のコマンドで必要なコードとをダウンロードして実行してみてください。
1 2 3 |
$ wget https://github.com/pfnet/chainer/archive/v1.16.0.tar.gz $ tar xzf v1.16.0.tar.gz $ python chainer-1.16.0/examples/mnist/train_mnist.py -g=0 #"-g=0"でGPUモードで実行 |
これでちゃんと動けば作業はおしまいです。
おわりに
さて、お疲れ様でした。環境構築は大事な作業ですが大変でうまく行かないと、その後のやる気がガクッと削られてしまします。自分も今回様々なところを調べてなんとか環境を整えることができました。
しかし、本当にやりたかったことはこれからなので、こんなところで満足していられません。みなさんも、環境構築に潰されないように強い心とのほほんとした気持ちで頑張ってください。
「Ubuntu16.04+GTX1080+CUDA8.0で機械学習環境を構築する」