search
LoginSignup
4

posted at

updated at

Ubuntu22.04 LTS での Deep Learning 環境の構築

概要

本記事は 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-0 \
    libcudnn8=8.0.4.30-1+cuda11.0  \
    libcudnn8-dev=8.0.4.30-1+cuda11.0


# 一旦ここで再起動を行う

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.9.12
pyenv rehash
python -V
> Python 3.9.12

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が見えたら成功です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4