初心者必見 GPU環境構築〜UbuntuインストールからNvidia・Cuda・Cudnn・深層学習ライブラリインストールまで〜

mac から ubuntu 18.04の環境構築

デスクトップのGPUサーバーをGETしたのですが, 無知すぎて, ネットで検索しまくって数日かけてようやく環境構築が終了しました.
とても苦労したので, 一連の流れをまとめました. ところどころ詳細については, 他の方がとても丁寧に解説しているのでそちらのサイトを紹介しています.

マシンスペック

僕のGPUサーバーのスペックです.
GPU2枚(GeForce GTX 1080)・6コア12スレッド (Core i7-8700K)です.
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417010940.png

GPUサーバーの組み立てについては, 割愛させて頂きます.
組み立て終えたところから, UBuntuのインストールから基本的な環境構築までのお話をします.

USBを使ってGPUサーバにUbuntuを入れる

ブートUSB作成

組み立てた直後は, OSが何も入っていないのでまずはOSをインストールします. そのために, まず, 別のPCからUSBにUbuntu OSの情報をダウンロードします (ブートUSB・ライブUSBと呼ぶ). その次に, ブートSBをサーバーに接続してUbuntuをインストールします. ブートUSBの作成は, 以下の手順を追えば, スムーズにできます.

ブートUSBの作成 (for mac)
MacでUbuntu18.04LTSのブートUSBを作成する - Qiita

ブートUSBの作成 (for windows)
WindowsにUbuntuをインストールするのは気持ち良いゾイ!!~導入編~ - Qiita

UEFI BIOSの設定

ブートUSBの作成後は, サーバーにUSBを接続して起動させます. ただし, サーバーがUSBを読み込んでくれるように, UEFI BIOSで設定を行う必要があります. UEFI BIOSを起動させるためには, 電源起動後すぐにF2 or ESCを押し続れば画面が切り替わります (機種によって異なる可能性あり). 以下のようなカッコイイ画面になればUEFI BIOSが起動しています.
次に, Advanced modeをクリックします.
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417133536.jpg

そうしたら, Bootに移動し, Boot MenuからブートUSBを選択します.
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417133540.jpg

最後に, Ezmodeで先ほどの画面に戻り, Save & Exitをクリックすれば, 再起動してUbuntuがインストールされます.

その後は, Ubuntu 18.04 LTSインストールガイド 3.3章から順に進めれば, 初期設定は完了です.

アプリケーションインストール

まず初めに必ず以下のアプリケーションでソフトウェアの更新を行いましょう!
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417015435.png

必要なアプリPICK UP!

機械学習系で使いそうなものを中心にPICK UPします.

Google Chrome

Google Chrome ウェブブラウザ

Emacs

以下のコマンドでインストール可能

sudo apt install emacs

Vscode

Download Visual Studio Code - Mac, Linux, Windows

Pycharm

Download PyCharm: Python IDE for Professional Developers by JetBrains

インストールがやや面倒なので以下を参照
参照:UbuntuでPyCharmインストールからHello Worldまでやってみた - Qiita

※pycharmがアプリケーションに表示されていない場合
./pycharm.sh実行後ConfigureのCreate Desktop Entryで表示できるようになる.
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417020309.png

Guake (ターミナル)

以下のコマンドでインストール可能

sudo apt-get install guake

F12でターミナルを即座に表示・非表示できて非常に便利!もちろん設定で透過もできる!
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417020835.png

Slack

ダウンロード | Slack

Line

Linuxでは, アプリ版はないためGoogle Chromeの拡張機能をインストールします.
「LINE」をLinuxで使う方法 | LFI



もっと色々設定したいという方は以下を参照してください.
参照:Ubuntu 18.04 LTSのインストール直後にやっておきたいことまとめ | LFI

GPUを使うために・・・

ここからが本題です. GPUを使用するためには, 主にNvidia driverとcudaをインストールする必要があります.

Nvidia driverインストール

以下のコマンドを実行 (Ubuntu18.04でだいぶ簡単になった模様). nvidia-smiでNvidiaが正常にインストールされたか確認できます. また, GPU Nameで名前が確認でき, 枚数も把握できます (2枚の場合GPUの0と1が存在)

sudo ubuntu-drivers autoinstall
#再起動
sudo reboot
#挙動確認・以下の図のように表示されれば問題ない
nvidia-smi

https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417022315.png

Minicondaのインストール

Minicondaのインストールをします. Anaconda, MinicondaどちらでもOK. AnacondaやMinicondaが分からない・どちらが良いか迷っている方は以下を参照してください.
参照:AnacondaとMinicondaの比較、どちらで環境構築するべきか | 生物・化学系でもIT()したい

Minicondaのインストールは以下のコマンドを実行

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
#インストールの最後に,pathを.bashrcに追加するか聞かれるのでYESとする
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc

仮想環境構築

condaで仮装環境を構築します. 仮装環境について分からない場合は以下を参照してください.
参照:【初心者向け】Anacondaで仮想環境を作ってみる - Qiita

pythonのバージョンを指定して仮装環境py36を作成します (今回はpython 3.6を指定)

 conda create -n py36 python=3.6

cudaインストール

以下を参考にさせて頂きました.
参考:Tensorflow GPU Installation Made Easy: Use conda instead of pip

まずは, NVIDIA driverのversionを確認します.

#NVIDIA driverのversion確認
nvidia-smi

https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417024245.png

次に, cudaとNVIDIA driverの対応を確認します.
(NVIDIA driverとcudaのバージョンの相性が悪いと最悪フリーズして, OSインストールからやり直しになるので, 必ず対応を確認しましょう!)
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417024456.png
参照:Release Notes :: CUDA Toolkit Documentation

cudaのインストール (対応するバージョンを指定)

#対応するバージョンを指定
conda install cudatoolkit==X.X

cudnnのインストール

cudaと対応するバージョンのcudnnがインストールされるはずです.

conda install cudnn

深層学習ライブラリインストール

ライブラリをインストールします. 今回は, Tensorflow-gpuとKeras-gpuをインストールします. ただし, condaとpipをどちらかに統一しましょう.
参考:condaとpip:混ぜるな危険 - onoz000’s blog

#tensorflow-gpu
conda install tensorflow-gpu
#keras-gpu
conda install keras-gpu


最終確認

TensorflowでGPUを認識するか確認します. 下記のように表示されれば問題なく終了です!

python
>>>import tensorflow as tf
>>> tf.test.gpu_device_name()
... ... ...
... ... ...
... ... ...
'/device:GPU:0'

※CUDA driver version is insufficient for CUDA runtime version
と表示された場合は,CUDAのバージョンがNVIDIA driverのバージョンに対応していない可能性が高いです

conda仮装環境の使用

最後にcondaで作った仮装環境のよく使うコマンドを紹介します.

環境の作成

conda create -n 環境名 python=x.x インストールするパッケージ名

環境の削除

conda remove -n 環境名 --all

作成した環境の一覧を見る

conda info -e

環境を切り替える

source activate 環境名

環境を出る

conda deactivate