1.Pop!_OSの22.04 LTSとCUDA11.7を新規にインストールまとめ
・メインのSSDを換装した際にPop!_OSとCUDAを入れなおした際の記録
・日本語キーボードの設定とNvidiaのドライバの再インストールは少し手間取る
・pytorchもまだCUDA11.6までしかサポートしてないのでアップデートは不要
2.Pop!_OSの22.04 LTSのインストール方法まとめ
Linux版デスクトップPCの使い方として、当初計画ではメインディスクを小容量(250G)でも早いSSD(M.2/NVMe)にして、データ用途は多少遅くても価格が安く容量の多い外付けSSD and HDDでやっていくつもりでした。
しかし、仮想環境を考えなしに作ると結構ディスクを食う感じで(anaconda3が63Gも使ってました)段々厳しくなってきました。
今回、メインのSSDを1TBに換装し、ついでCUDA 11.7も22.04 LTS対応版が出ているようなのでディープラーニング用ディストリビューションとして人気が高まっているように見えるPop!_OSも22.04 LTSに入れなおしました。
基本は20.10 LTSのインストールと同じやり方で大丈夫でしたが、幾つかトラブったので誰かの参考になるかと思い以下に経緯をメモっておきます。ネット上にはPop!_OSの資料は結構少ないですが、UbuntuベースなのでUbuntuの資料を参考にすると大体の場合はそのまま適用できます。
apt等のパッケージ管理ツール経由でNvidiaドライバを入れると大変楽なのですが、コンパイルが必要なモデルなどでは動かないケースがあるので、20.10 LTSの際はNvidiaドライバ同梱版のisoをベースイメージにしてインストールしましたが、後日、同梱ドライバを削除して手動でCUDA入れなおす事をやりました。
そのため、今回はドライバ同梱版ではない方の素の22.04 LTSを使いました。しかし、結論として「最終的に入れなおす事になるとしてもドライバ同梱版を使った方が楽なのかもしれない」と今は思っています。
インストールは問題発生しなかったです。キーボードの設定は前回の反省を生かして英語のままにしましたが、それも原因としてあるかもしれませんが、後で少しトラブりました。
その他、変えたのは速度重視のためディスク暗号化をしなかった事。
Rebootの指示があるので、リブートし(その際、インストール用USBを抜く)ログイン画面に。
ところが、ログイン画面でアカウントとパスワードを入れても、ログインできず、再びログイン画面に戻るログインループが発生してしまいました。
System76のSupport Articles(Black Screen or Login Issues (Pop!_OS))を見ると、https://support.system76.com/articles/login-loop-pop/
ログイン画面でCtrl + Alt + F5を押すとコンソールのログイン画面になるので失敗する原因が調査できる場合がある、と書いてあるので、その通りにやってみると、コンソールからは普通にログインできました。
ログインに失敗しているのではなく仮想デスクトップの表示に失敗している可能性が高いので、グラフィックドライバ絡みがアヤシイな、と思い、そのため、FAQを読み進めて同ページのNvidiaドライバーの再インストールの項目を実施
sudo apt update sudo apt full-upgrade sudo apt install system76-driver-nvidia sudo systemctl reboot
無事、ログインできました。アイキャッチ画像にしましたが、仮想デスクトップ画面の壁紙もカッコイイですね。
日本語が入力できない件
以前やった時は最初から入ってきた気がするのですが、
環境設定からjapaneseを入れないとMozcキーボードが追加選択の中に入ってこないので追加します。Settings -> Region & Language -> Manage Installed Languagesから追加します。
追加後はキーボードメニューから日本語(Mozc)が選べるようになります。ついでに英語入力は必要なさそうなので削除しました。
そして、追加したMozcキーボードがなぜか「半角/全角キー」がなくてその位置が「`」キーになっているキー配置として認識されているので、このままでもWindowキー+スペースで日本語入力は出来るのですが、「半角/全角キー」で日本語入力できるようにしたいので、
setxkbmap jp
と端末で打つとキー配置がかわって「半角/全角キー」が認識され、「半角/全角キー」で日本語入力モードに切り替えできるようになります。
このコマンドは永続的なものではなく、リブートすると消えてしまうようなのですが/etc/default/keyboardに書いておくと、永続的になるようです。(直で設定ファイルを変更するのはお行儀悪そうですが、Pop!_OSの設定メニューから変更する方法はわからなかったです)
日本語入力モード以外の様々なキー設定は、右上の「あ」や「A」と表示されている部分を押して、プロパティ
出現するMozcプロパティからキー設定の選択を「編集」
して出てくるウインドウで非常に柔軟に設定できます。
これで「半角/全角キー」でかな漢字変換モードに入れるようになりました。
CUDAのインストール
公式から落としてきたCUDAをインストールする際、「今使っているドライバを削除しないとインストールに失敗する事があるよ!」とメッセージが出て、無視して強硬しても失敗します。
20.10 LTSでNvidiaドライバ同梱版を使った際は、この流れに沿ってドライバを削除してもトラブルは発生しなかったのですが、今回はドライバの削除がそもそもスムーズにいかなかったです。
まず、仮想デスクトップではなく前述のコンソール(ログイン画面でCtrl + Alt + F5)で作業する必要があります。
公式のインストールドキュメントは以下
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu-ins
ダウンロードページは以下(正確にはダウンロード用コマンドを教えてくれるページ)
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local
まずはインストールしたPop!_OSのドライバを下記でアンインストール
sudo apt-get -purge remove system76-driver-nvidia
次、公式のファイルをとってきて、
wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run sudo sh ./cuda_11.7.1_515.65.01_linux.run
で、出現する画面で表示されるエンドユーザーライセンスをacceptを押して、ドライバ込みでインストールしようとすると失敗すると思います。
詳細メッセージを確認すると以下のメッセージが出ていると思います。
ERROR: The Nouveau kernel driver is currently in use by your system. This driver is incompatible with the NVIDIA driver, and must be disabled before proceeding. Please consult the NVIDIA driver README and your Linux distribution’s documentation for details on how to correctly disable the Nouveau kernel driver.
これは、ディフォルトで使われるOSSのNouveauディプレイドライバが動いているとインストールできないよ!と言う事のためのようで、Nvidiaドライバがセットアップ時にそれを検知して、ディフォルトドライバを無効にする設定ファイルを設置したから再起動してもう一度チャレンジしてね、というエラーメッセージも同時に他のログに出ていると思います。
ところが、Pop!_OS(Ubuntu?)は設定ファイルを設置しただけでは無効にならず以下のコマンドを実行する必要があります。
sudo update-initramfs -u
このコマンドを実行後、リブート
sudo reboot
その後、再起動して、再びコンソールで
sudo sh ./cuda_11.7.1_515.65.01_linux.run
で、トライすると無事CUDAがインストールできると思います。
次、cuDNN(CUDA Deep Neural Network)もついでにセットアップしましょう。くっだらないところで超手間どったので経緯書いておきます。
NVIDIA Developer登録必要ですが、下記からダウンロードします。
https://developer.nvidia.com/rdp/cudnn-download
2022年8月20日時点の最新はcuDNN v8.5.0です。
公式インストールガイドは下記です。
https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
今考えると「Local Installer for Linux x86_64 (Tar)」を選んで「2.3.1. Tar File Installation」に書かれている通りにtarとcpでインストールするのが一番楽だったと思います。
ちなみに「2.3.4.1. Ubuntu Network Installation」に書かれている方法では「公開鍵を利用できないため、以下の署名は検証できませんでした」「このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。」と出て、調査に手間がかかりそうなエラーなので諦めました。
まぁ、今回はダウンロードページでパッとみて「Local Installer for Ubuntu22.04 x86_64 (Deb)」と書いてあったので、これを選んでしまいました。ダウンロードすると以下のファイルができます。
cudnn-local-repo-ubuntu2204-8.5.0.96_1.0-1_amd64.deb
.debファイルなので
「2.3.2. Debian Local Installation」を見て作業する事になるのですが、ここで問題です。
上のファイル名をよく見てからお答えください。
「sudo apt-get install libcudnn8=8.x.x.x-1+cudaX.Y」を実行せよ、と言われた時に三番目の「x」って何が入ると思います?
正解は96です。私は「96_1」や「0」など様々なパターンを試して無為な時間を過ごしました。
そこだけわかれば、あとは「2.3.2. Debian Local Installation」に書かれている通りです。
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.5.0.96_1.0-1_amd64.deb sudo cp /var/cudnn-local-repo-ubuntu2204-8.5.0.96/cudnn-local-7ED72349-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get install libcudnn8=8.5.0.96-1+cuda11.7 sudo apt-get install libcudnn8-dev=8.5.0.96-1+cuda11.7 sudo apt-get install libcudnn8-samples=8.5.0.96-1+cuda11.7
これで、最低限のセットアップは出来ましたかね。使っているうちに不具合を見つけたら随時、このページを更新すると思います。
ここまで長く書いておきながらなんですが、pytorchもまだ11.6までしかサポートしてないようなので、まだ急いでアップデートしない方が良いかもです。
いつの日か、アップデートする必要に迫られた時にそういえば比較的新しめなCUDAインストール解説ページがあったな、と思い出して頂ければと思います。