新しいパソコンを入手したので、GPUで機械学習できるように設定する。
対象者としては、
・ubuntu2204で機械学習をやってみたい人向け
・nvidiaのGPUで高速化したい人
・dockerを使ってみたい人
・さらに、VSCodeをdockerコンテナ内の環境で使って見たい人
・ローカルでなくリモート環境でもubuntuを触りたい
・いざという時は、Windowsマシンにリストアしたい
このような人におすすめです。
検証は、今回のマシン
MBASRock Z780 steel legeno wifi
GPU RTX4090 LEADTEK PG139
セキュアブートでのドライバ導入も行った。
先ずは、ubuntuの起動ディスクを作成
widnowsマシンで、ubuntu22.04 LTS日本語リミックスをダウンロード
isoの書込ツール(balena Etcherなど)でUSB起動ディスクを作成する。
起動F11でブートメニュー USBを選ぶ DELキーBSキーの場合もあり
バックアップすべきものがあるとき
外付けHDDをマウント
Gpartedで場所を確認
sudo mkdir /media/usbhdd
sudo mount -t ntfs /dev/sdb1 /media/usbhdd
元環境windows11pro M2SSD をDDコマンドで外付けUSBHDDにバックアップ
ubuntuのインストール
利用可能なM2SSDをMBにセット。windowsのSSDは外しておく。
USBからubuntuを起動。このとき、直接インストールせずに、一度ライブCD(USB)状態で起動する。これを行うことで、WiFiドライバやディスプレイドライバがあたる。直接インストールでは、wifi使えず、モニタ解像度も最低のものだけになった。
重要 自動ログインの設定をしないこと: 自動でログインするとディスプレイ周りの設定とchrome-remote-desktopのディスプレイ設定が交錯してしまう。
wifi接続は、後で共有フォルダを設定することを考慮して適切なネットワークを選ぶ。
更新を忘れずに
sudo apt update
sudo apt upgrade -y
sudo apt-get update aptとapt-getは情報を別々に持っているようだ。のちのnvidia-docker2インストールのためアップデート
sudo apt install curl
まとめて
sudo apt update && sudo apt-get update && sudo apt upgrade -y && sudo apt install curl
フォルダ名を英語にする
ダウンロードなど和名のフォルダを英語表記に変える。ダウンロードフォルダに何も入っていない方が良い。firefoxがすぐにtempファイルを作る。
LANG=C xdg-user-dirs-gtk-update
2度と聞かないでと言ったけど、やり直したいとき
LANG=ja_JP.UTF-8 xdg-user-dirs-update --force
ホームフォルダのmusicやpictureなどを永続的に消したいとき。
musicやpictureフォルダは手動で削除しても自動生成してしまう。
~/.config/user-dirs.dirs ファイルを以下のように変更する。
# 再起動時に勝手に書き換えられないように
XDG_USER_DIRS_DISABLE=true
# 既存の設定
XDG_MUSIC_DIR=""
XDG_PICTURES_DIR=""
設定の反映
xdg-user-dirs-update
ファイラーnautilusの左パネルの表示を消すには、
~/.config/gtk-3.0/bookmarks
を編集する。(リアルタイムで反映する)
なぜか、~/.config/nautilus/フォルダではない。
ブラウザなど不要なタイミングでパスワードを求められるとき
Authentication is required to create a color managed deviceの表示がうっとうしい
ついでに、Authentication is required to refresh the system repositories も
以下のHPを参考に
https://www.cagylogic.com/archives/2021/03/23145121/11743.php
https://qiita.com/HirumaT/items/36a7209814a157f62cec
次のコマンドでテキストエディターを開いて該当部分を貼付、保存。
sudo gedit /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla
以下、貼り付ける内容
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
[Allow Package Management all Users]
Identity=unix-user:*
Action=org.debian.apt.*;io.snapcraft.*;org.freedesktop.packagekit.*;com.ubuntu.update-notifier.*
ResultAny=no
ResultInactive=no
ResultActive=yes
GPUドライバの設定
インストールできそうなドライバ一覧を確認 nvidia-driver-525など表示される。
ubuntu-drivers devices
sudo apt install -y nvidia-driver-525
sudo reboot
ドライバのインストール中、UEFIのセキュアブートで証明書の登録パスワードの作成を求められる。
再起動すると、MOKとかEnrollとか、ドライバの認証のための手続きを求められる。本体にモニタを直接つなぐこと!!(Biosレベルなのでリモートはダメ)
Press Any Key -> Enroll MOK -> Veiw Key 0 -> Continue ->先ほどのパスワード入力 -> Reboot
nvidia-smi
ドライバが正常にインストールされていれば、情報が表示される。
セキュアブートの対応 https://nanbu.marune205.net/2021/12/ubuntu-secure-boot.html?m=1
ドライバの再インストール
何らかの理由でドライバが壊れて、再起動してもnvidia-smi が応答しないことがある。このとき
sudo apt update
sudo apt upgrade
sudo apt purge nvidia*
(sudo apt-get purge nvidia*)
sudo reboot
などで対応。nvidia関連を削除したあとは、docker関係も再インストールや設定が必要。
GPUドライバを削除した状態でもchrome-desktopからはアクセス可能だった。
今回のトラブルケースではver545が突然使えなくなり、ver545の再インストールがエラー。ver535はインストールすることが出来た。
別のGPUドライバの設定方法
公式サイトからドライバをダウンロード https://www.nvidia.co.jp/Download/index.aspx?lang=jp
sudo sh NVIDIA-Linux-x86_64-525.85.05.run
gcc,cc,makeが入っていないと言われたら、
sudo apt install gcc
sudo apt install make
を先に実行する。こちらの方法でもセキュアブートの対応が必用。
デフォルトでロードされている [nouveau] ドライバー
デフォルトでロードされている [nouveau] ドライバーを無効化するとの情報もネット上にある。https://www.server-world.info/query?os=Ubuntu_22.04&p=nvidia&f=1
GPUドライバのセットアップは、dockerコンテナ内で計算資源を使うことが目的なので、特に無効化をしていない。
chromeのインストール
firefoxでクロームを検索し、linux用のインストールファイルをダウンロードする。
右クリックでインストールかコマンドでインストール。
sudo dpkg -i google-chrome-stable_current_amd64.deb
試した環境では再起動後の正常起動した。
だめなら、sudo apt --fix-broken install を試す。
chrome-remote-desktopのインストール
GPU・グラフィック周りの設定完了後に行うこと。
再掲:自動ログインしないこと。ローカルとリモートと一方だけでアクセスすること。
chromeの拡張機能から選べるが、失敗するので以下の方法で行う。
まずは、chromeにログインする必要がある。
https://qiita.com/katakaku/items/dafc5bcbebf443f75f9b
dockerのインストール
dockerとnvidia-container-toolkitとdocker-compose をインストールしていく。
nvidia-docker2 だけをインストールすれば、nvidia-container-toolkit も一緒にインストールされるとのこと
以下を実行していく。
curl https://get.docker.com | sh && sudo systemctl --now enable docker
Setup the package repository and the GPG key(暗号化ソフトで生成される公開鍵 知らぬ間にカギが更新されると困る)
このあたりまでは、最初の1回やれば良いようです。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
nvidia-docker2のインストールとdockerの再起動を行う。docker-composeも後で利用するので入れておく。
sudo apt-get update && sudo apt-get install -y nvidia-docker2 && sudo apt install docker-compose && sudo systemctl restart docker
動作確認でnvidia-smiの正常な結果が出ればOK
sudo docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
コンテナの名前nvidia/cuda:11.8.0-base-ubuntu22.04は適当なものを利用。
dockerの中と外では、記述内容やバージョンが若干異なることもある。
dockerを一般ユーザーで実行できるようにする
VSCodeでdockerを使うとき、sudoではなく、自分をdockerグループに入れておく。
これにより、sudo docker ....とsudoを付ける必用がなくなる。
sudo usermod -aG docker ユーザー名
id コマンドで自分がdockerグループに入ったことが確認できるが、要再起動。
dockerのコンテナを別ドライブに保存したいとき
以下を参照
swapファイルの作成
インストールした最初の状態だと、swapが2Gだけなので大きくする。
128Gのswapを作成する。
現在の設定を確認。
sudo swapon --show
swapfile2という名前で作成して確認。
sudo fallocate -l 128G /swapfile2
ls -lh /swapfile2
sudo chmod 600 /swapfile2
ls -lh /swapfile2
作成したファイルをスワップファイルにする。
続いて、有効化する。
sudo mkswap /swapfile2
sudo swapon /swapfile2
永続化(次回起動時にも有効にする)
fstabに記述することで永続化できる。
sudo gedit /etc/fstab
次の一文を追記する。
/swapfile2 none swap sw 0 0
swapfileを消したいとき
sudo swapoff /swapfile2
sudo rm /swapfile2
このあと、fallocateコマンドで再作成できる。
githubの設定
コンテナ内からのアクセスでは認証方法についてもっと理解する必要がある。
gitと秘密鍵で検索 もう少し調べること
httpsでトークンによる認証とsshと秘密鍵の方法がある。
httpsでのトークンは、通常のパスワードと同様の感覚でつかえそう。トークンは忘れたら再作成。
VS Codeのインストール
ブラウザでvscodeを検索。Linux用debファイルをダウンロード。
右クリックでインストールを選択。または、sudo dpkg -i でインストール。
画像ビューア(gthumb)のインストール
sudo apt install gthumb
samba共有フォルダを作る
ラズベリーパイ超入門改定6版 ファイル共有サーバーとして使うを一部参考に途中まで作業し挫折。
別のUbuntuとファイル共有(操作)
Ubuntuのファイラーでほかの場所を選ぶ。右下のサーバーへ接続のところに、
ssh://192.168.0.** と入力。接続先のIDとパスワードを入れるとGUIでアクセス出来る。簡単。
以下を参考
https://minoru.okinawa/archives/824
ubuntu22にはセキュリティ対策で、ssh-serveがインストールされていない。
以下を参考にインストールする。
sudo apt update
sudo apt install openssh-server