日々是勉強

機械学習やもろもろ勉強したことに関するゆるい備忘録

Ubuntu18.04に基本的な機械学習の開発環境(Cuda 10.1 update 2)を構築する

タイトルの通りですが、Ubuntu機械学習のための基本の開発環境を構築するのに思いの外苦戦したため、備忘録として手順を残します。 まず、用いるPCのスペックは以下の通り。

思いの外と書いたのは、正直もっとUbuntuならインストールはトラブルなく行くかと思っていたのですが、Cudaのインストールには非常に手間取りました。 一応うまくは行きましたがスムーズに行かなかったため、正直今でもエラーがまったくないのかは多少不安ではありますが・・・

本記事のゴール

今回はこれをインストールするところ+cuDNNのインストール、動作確認までを目標にします。

CUDA Toolkit 10.1 update2 Archive | NVIDIA Developer

基本的にはこちらのインストラクションどおりにすればOK、なはずです。が、今回うまくいかなかったこともあり、備忘録を残しています。

CUDA Toolkit Documentation

インストール前の準備

まず、もし事前にインストール済みのバージョンのNVIDIAドライバ、Cudaドライバがある場合は以下のコマンドにて削除します。

sudo apt-get --purge remove "*cublas*" "cuda*"
sudo apt-get --purge remove "*nvidia*"
$ sudo apt-get install build-essential
$ sudo apt-get install linux-headers-$(uname -r)

公式ドキュメントにも書いてありますが、Runファイルでのインストールには以下の処理がさらに必要になります。

$ sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nouveau.conf"
$ sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nouveau.conf"

念の為、ちゃんと入力されたかを確認します。

$ cat /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0

あっていれば再起動します。

$ sudo update-initrmfs -u
$ sudo reboot

NVIDIA DRIVERのインストール

さて、今回はRunファイルからインストールしましたので、その手順を記しておきます。
通常であればそのままインストラクションどおりに進めれば上手くいくはず、なのですが私の環境ではなぜかドライバーインストールのあたりで"Building kernel modules"関連のエラーが発生してうまくできませんでした。(もしかしたらこちらのエラーはDebファイルでのインストール時のエラーでまた別のエラーだったかもしれません)そこで、ドライバーはまた別個インストールすることにしました。以下のコードでインストールします。

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ ubuntu-drivers devices
$ sudo apt-get install nvidia-430

上記3行目の処理でインストールできるドライバ一覧が表示されます。ここでは、現行のPyTorchに対応しているCuda10.1対応しているドライバを入れたいため430を選択します。インストール後は、再起動を行った上で、以下からインストールが正しくできているかを確認します。

nvidia-smi

Runファイルを利用したCudaドライバのインストール

次に、いよいよRunファイルをダウンロードして以下のコードにてインストールを実行します。 ここで、上記の処理によりすでにドライバーがインストールされているため、重複を避けるため競合する環境にはインストールを避けるべきというメッセージが表示されると思いますが、その先のオプションでドライバーのインストールを選択から解除しすることができますので、今回はそのようにインストールしてみました。

$ wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
$ sudo sh cuda_10.1.243_418.87.00_linux.run

私の環境では、これで特にエラーは起きずにインストールができたように見えました。

cuDNNのインストール

次に、cuDNNのインストールを行います。こちらは以下のサイトから会員登録後、ダウンロードします。

NVIDIA cuDNN | NVIDIA Developer

こちらはインストーラもあるようですが、私は手動で解凍したファイルを適当なフォルダに移動することにしました。 移動は以下のような形で行なえます。

sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

環境変数の設定

最後に、環境変数の設定を行います。これを通さなければ、Cuda関連ファイルがシステム側から見つけられないので、忘れないようにしましょう。

$ echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
$ source ~/.bashrc

動作確認

では、最後にCudaが正しく設定されているかを確認するため以下のコードを実行します。結果が正しく返ってくればインストールは完了です。

nvcc -V

今のところ上記の方法にて問題は起きておりませんが、もしかするとドライバの競合にいつか気づく、かもしれません。その時はまた修正するようにします。

補足:Debファイルでのインストール方法

実は、もともとはDebファイルを使ったインストールを試みたのですが、NVIDIA公式ドキュメントの手順どおりに進めるとどうしてもCuda10.2(最新版)のインストールになってしまい、それを避けられなかったためRunファイルにてインストールをする方針としました。 Cudaの最新版で問題ない方は以下の通りインストールをすれば問題なくインストールできるかと思います。(以下はNVIDIA公式の10.1 Update2のDeb(local)インストールの転載です。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-1-local-10.1.243-418.87.00/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

もしくは、試してませんが、これで指定したバージョンでインストールできるのかも。このあたりはまだまだapt-getとかの勉強が必要ですね。もしどなたかご存知の方いらっしゃいましたら、指定バージョンでのインストール方法をご教示いただけるとありがたいです。

$ sudo apt-get -s install -y --no-install-recommends cuda

では今日はこんなところで。