Ubuntu18.04に基本的な機械学習の開発環境(Cuda 10.1 update 2)を構築する
タイトルの通りですが、Ubuntuに機械学習のための基本の開発環境を構築するのに思いの外苦戦したため、備忘録として手順を残します。 まず、用いるPCのスペックは以下の通り。
- OS: Ubuntu18.04.3LTS
- CPU: Intel Core i9-9960X
- GPU: NVIDIA Geforce RTX 2080Ti
- RAM: 48GB
思いの外と書いたのは、正直もっとUbuntuならインストールはトラブルなく行くかと思っていたのですが、Cudaのインストールには非常に手間取りました。 一応うまくは行きましたがスムーズに行かなかったため、正直今でもエラーがまったくないのかは多少不安ではありますが・・・
- 本記事のゴール
- インストール前の準備
- NVIDIA DRIVERのインストール
- Runファイルを利用したCudaドライバのインストール
- cuDNNのインストール
- 環境変数の設定
- 動作確認
- 補足:Debファイルでのインストール方法
本記事のゴール
今回はこれをインストールするところ+cuDNNのインストール、動作確認までを目標にします。
CUDA Toolkit 10.1 update2 Archive | NVIDIA Developer
基本的にはこちらのインストラクションどおりにすればOK、なはずです。が、今回うまくいかなかったこともあり、備忘録を残しています。
インストール前の準備
まず、もし事前にインストール済みのバージョンの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
では今日はこんなところで。