概要
本記事は Ubuntu22.04 LTS 上でのDeepLearning環境の構築方法について記載します。
nvidia-driverのインストール方法や、UbuntuとNvidiaGPUの相性などが改善されてきており
困ることが少なくなってきましたが、良く行う作業のため、設定方法を記事とします。
以前の記事や Ubuntu 20.04 LTS との影響のある変更点
- Ubuntu の Desktop System が X11 から Wayland がデフォルト設定となりました。 (が、設定をする途中で、X11に切り替わります。)
- pyenv の Path の設定が変わりました (2021/05 あたりからPathの通し方が変わっています。)
関連記事
Install USB の作成
iso イメージを利用して Install USB を作成してください
http://www.ubuntulinux.jp/News/ubuntu2204-ja-remix
Ubuntuのインストール
画面の指示に従ってインストールを行います。
- 予めどのアプリケーションをインストールしますか?
- →通常のインストール
- Ubuntuのインストール中にアップデートをダウンロードする
- →✓
- グラフィックとWi−Fiハードウェアと追加のメディアフォーマットのサードパーティ製ソフトウェアをインストールする
- →✓せず
(option) RustDeskのインストール
RustDeskを利用すると、TeamViewer のように
インターネット接続を利用してリモートデスクトップアクセスが可能です。
VPN設定前や、SSH接続ができないケースで便利です。
▼RustDesk 公式ページ
https://rustdesk.com/
主要ライブラリのインストール
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y vim csh flex gfortran g++ \
cmake xorg-dev patch zlib1g-dev libbz2-dev \
libboost-all-dev openssh-server libcairo2 \
libcairo2-dev libeigen3-dev lsb-core \
lsb-base net-tools network-manager \
git-core git-gui git-doc xclip gdebi-core libffi-dev \
make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev
sudo apt update
sudo apt upgrade
Nvidia driver のインストール
Ubuntu 22.04 LTS とは関係なく、Nvidia のリポジトリの問題ですが、
古い手順で実行すると以下のエラーが出るため注意してください。
※ RTX 4090 の場合はこちらの公式の手順を参照してください
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/520.56.06/NVIDIA-Linux-x86_64-520.56.06.run
chmod +x NVIDIA-Linux-x86_64-520.56.06.run
sudo ./NVIDIA-Linux-x86_64-520.56.06.run
その後以下の手順を実行します。
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local
W: GPG エラー: https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY A4B469963BF863CC
E: リポジトリ https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease はもう署名されていません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
※ RTX 4090 以外の場合はこちらの公式の手順を参照してください
※冒頭の NVIDIA package repositories の .pin や .pub の設定が新しくなっています。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/libnvinfer7_7.1.3-1+cuda11.0_amd64.deb
sudo apt install ./libnvinfer7_7.1.3-1+cuda11.0_amd64.deb
sudo apt-get update
sudo apt-get install --no-install-recommends \
cuda-11-8 \
libcudnn8 \
libcudnn8-dev
# 一旦ここで再起動を行う
sudo apt-get install -y --no-install-recommends libnvinfer7=7.1.3-1+cuda11.0 \
libnvinfer-dev=7.1.3-1+cuda11.0 \
libnvinfer-plugin7=7.1.3-1+cuda11.0
pyenvのインストール
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
パスを通します。
# ~/.bashrc にPATHを通す (2021/05 あたりに内容が変わりました。 )
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
再起動します。
source ~/.bashrc
好きなバージョンをインストールして設定します。
pyenv install 3.10.9
pyenv global 3.10.9
pyenv rehash
python -V
> Python 3.10.9
Docker のインストール
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
インストールの確認
sudo docker run hello-world
nvidia-container-toolkit のインストール
container 内から GPU を使うための設定です。
公式ドキュメントの手順に従います。
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
動作確認
sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
コンテナ内から nvidia-smi
を叩いて、ホストマシンのGPUが見えたら成功です。