ubuntu20.04LTSにアップデートしました
というかこのブログを開設してもう1年が経ちました。
時の流れは早いものですね。
最近はちょいちょいYoutubeにモンハンの投稿をしているのですが(Riseじゃなくってアイスボーンだけどね)、またブログの方も書いていきたいですね。
少し前にAIの剣持刀也をアップデートしたし、そこら辺のこともブログに書いて更新したいところ。
ですが相変わらず忙しいのとちょっと全体的にモチベーションが下がっているのもあって色々とやる気が起きませんでした。。。
とまあ前置きはここまでにして、現在趣味でやっているAIの開発をubuntu18.04LTSでしています。
剣持刀也開発ページを見るとなんかWindows10homeって書いてありますけど、すみません、だいぶ前からubuntuで開発していました。
ubuntuとは
まぁオープンソースのOSですね(無料)。
で、なんでubuntuを使っているかというと、一般的にプログラミングを調べているとコマンドとか環境がlinuxベースで開発されていることが多いです。
Windowsだど逆に情報が少ないことが多いんですよね。。。
特に個人的にはPythonの開発に関してはWindowsでやっている人の方が少ないのでは?と思うほどです(ネットで検索すると大体がlinuxで開発してます)。
また、Windowsとは違ってubuntuは軽量で日常使いする分には何の苦労もありません。
それだけクオリティが高いんですよ
私は今までは「ubuntu18.04LTS」というバージョンで開発を行っていました。
ですが去年に20.04LTSが公開されたのでそろそろそっちを使ってみようかなと思い、アップデートすることにしました。
使ってみた感想としては凄い良いです(小並感)。
↓が実際のubuntuの画面なんですが、あんまりWindowsと変わらないんですよ。というかmac系に近い?

ディープラーニングに対応させるためGPUの再設定
ubuntu18.04LTSではPythonの3.7.7でGPUを使ってディープラーニングを行っていました。
ですが、ubuntu20.04LTSではPython3.7系をサポートしていません。なので使えなくなりました。
デフォルトのPythonのバージョンが3.8系です。
Pythonのバージョンが変わるとディープラーニング用のフレームワークの対応バージョンが変わり、フレームワークが変わるとGPUを使用するツールの対応バージョンも変わります。
つまりとんでもなくめんどくさいことになりました。
なので再度ドライバをインストールしたのですが、毎回この作業に苦戦しているので自分のブログに備忘録として手順を残しておこうと思います。
今回やった内容
一応現在の環境など
既存ドライバの削除
sudo apt --purge remove nvidia-* sudo apt --purge remove cuda-*この後にターミナルで「nvidia-smi」とかを入れて「コマンドが見つかりません」と出れば削除されている。
デフォルトのドライバ無効化
以下のコマンドで動作しているか確認する。
lsmod | grep nouveauもし色々表示される場合は有効化状態なので以下のディレクトリにファイルを作成して無効化するような情報を書き込む
作成ディレクトリ及びファイル名:/etc/modprobe.d/blacklist-nouveau.conf
書き込む内容
blacklist nouveau options nouveau modeset=0※もしかしたらルート権限でしか作成及び書き込めないかもしれないのでそこは注意する。その場合は以下コマンドで書き込んで対応
$ sudo vim /etc/modprobe.d/blacklist-nouveau.confその後変更を反映するため再起動する
$ sudo update-initramfs -u $ sudo reboot再起動後念のためもう一回「lsmod | grep nouveau」を入力して無効化されているか確認する
CUDA Toolkit 10.0から10.1にアップグレード、インストール
CUDAを使えるようにするためCUDA Toolkitを入れる。
たいていの場合、CUDA Toolkitとかを入れる場合は機械学習目的の人が大半だと思う。
で、その場合TnesorFlowとCUDA関係のバージョンの関係性を事前に調べておく必要がある。
目的のTensorFlowのバージョンとそれに対応しているバージョンのCUDAを入れなきゃ正常に動作しない。
私が手元のPCて試したバージョンをとりあえず以下に載せておきます。
おそらくだけど大体TensorFlowはこの二つのバージョンで動いていることが結構多いんじゃないかな?
一応公式ページにTensorFlowバージョンとCUDAバージョンの対応表があるのでそちらを参照したほうがいいですね。
TensorFlow | CUDA | cuDNN |
---|---|---|
1.14 | 10.0 | 7.4 |
2.2.0 | 10.1 | 7.6 |
今回私はPython3.8系でTensorFlow2.2.0を使いたいので、公式ページにもあるようにCUDA 10.1とcuDNN7.6を入れます。
で、CUDAを使えるようにするためにCUDA Toolkitを入れます。
CUDA Toolkit 10.1 update2のダウンロードページの手順に従ってインストールを行います。
ダウンロードページに飛んだら、「Linux」→「x86_64」→「Ubuntu」→「18.04」を選びます。
今回は20.04にインストールするのですが、選択項目の最新バージョンが18.04までしかないので18.04を選択します(特に問題ない)。
で、Installer Type(インストーラータイプ)ですが、私は「runfile(local)」で今回はインストールしました。
runfile(local)を選択するとインストール方法が表示されます。
ターミナルを開いて、記載されている通りまずは下記コマンドでrunファイルをダウンロードします。
$ wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.runその後、ダウンロードしたrunファイルがあるディレクトリで以下コマンドを実行します。
$ sudo sh cuda_10.1.243_418.87.00_linux.runで、このときもしかしたら「Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.」こんなログがでてインストールに失敗することがあるかもしれません。
私は出ました。
これは単純にCUDAのコンパイルで使用するgccのバージョンが古いため失敗するそうです(18.04と20.04の違いによるものかな?)。
これは以下のコマンドでgccをアップデートすることにより解決できました。
sudo apt -y install gcc-8 g++-8 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 8
正常にインストールが終わったらパスを通す必要があるので、以下のコマンドでパスを追加します。
export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
その後、再起動します。
$ sudo reboot再起動後、「nvcc -V」をコマンド入力してCUDAのバージョンが10.1と表示されていれば成功です。
$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Sun_Jul_28_19:07:16_PDT_2019 Cuda compilation tools, release 10.1, V10.1.243もしこれで古いバージョンが表示されたら、環境変数が古い状態のものが設定されている可能性があるので、そこを削除して書き直す必要があります。
この辺は環境変数で検索すると色々出てくるので調べてください(~/.bashrcに書いている可能性もあるかも?)。
nvidia-driverのインストール
まずは以下コマンドで推奨ドライバのバージョンチェックをします。
$ ubuntu-drivers devices == /sys/devices/pci0000:00/0000:00:03.1/0000:09:00.0 == modalias : pci:v000010DEd00001E04sv00001043sd00008675bc03sc00i00 vendor : NVIDIA Corporation model : TU102 [GeForce RTX 2080 Ti] driver : nvidia-driver-460-server - distro non-free driver : nvidia-driver-418-server - distro non-free driver : nvidia-driver-450-server - distro non-free driver : nvidia-driver-450 - third-party non-free driver : nvidia-driver-455 - third-party non-free driver : nvidia-driver-460 - third-party non-free recommended driver : nvidia-driver-418 - third-party non-free driver : xserver-xorg-video-nouveau - distro free builtin「recommended」と記載されているバージョンを入れればとりあえず大丈夫です。
$ sudo apt install nvidia-driver-460もしここでインストールに失敗した場合、「apt」ではなく「aptitude」でインストールするとうまくいくことがあります(私はそうでした)。
$ sudo apt install aptitude $ sudo aptitude install nvidia-driver-460その後、再起動してターミナルで「nvidia-smi」を入力して問題なく動作していれば大丈夫(右上に表示されているCUDAのバージョンが違うがこれは気にしなくていい)。
$ nvidia-smi Sun Apr 25 19:41:43 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 GeForce RTX 208... On | 00000000:09:00.0 Off | N/A | | 27% 29C P8 1W / 250W | 15MiB / 11016MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 1475 G /usr/lib/xorg/Xorg 9MiB | | 0 N/A N/A 1593 G /usr/bin/gnome-shell 4MiB | +-----------------------------------------------------------------------------+
cuDNNの入れ直し
TensorFlowをGPUで実行するためにはcuDNNというものもインストールする必要があります。
cuDNNはNVIDIAの開発者ページに登録する必要があります(無料)。
cuDNNのページにいき、cuDNNをダウンロードします。
私はTensorFlow2.2.0、CUDAが10.1なので今回はcuDNN7.6.5をインストールします。
ダウンロードページで「cuDNN Runtime Library for Ubuntu18.04 (Deb)」と「cuDNN Developer Library for Ubuntu18.04 (Deb)」の2種類をダウンロードしてください。
その後、以下コマンドで順番に実行していきます(devが後)。
$ sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.2_amd64.deb $ sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.2_amd64.deb↑このコマンドの指定ファイル名はダウンロードしたファイル名に随時合わせてください。
インストールしたら念の為再起動します。
これで一応TensorFlowがGPUで動くはずです!お疲れ様でした!
感想
毎回マジで大変なんだよなぁ。。。
一応後日TensorFlowでGPUが動いているか確認する方法も記載したいと思います。
とりあえず今回はここまで。
またなにか詳細に書く必要があれば追記します。