NVIDIA GPU搭載PCにUbuntu 22.04LTSをインストールしてLinux機械学習環境を構築する(Tensorflow/PyTorch)

スポンサーリンク
Ubuntu 22.04 ML Environment

NVIDIAのグラフィックボードを搭載したPCで機械学習環境を立ち上げる方法としてWindows PCのWSL2仮想環境にUbuntuをインストールする方法があります。

WSL2は以前より使いやすくなってきていますが、ゲームコントローラなど外部に接続した機器との通信等がうまくいかないことがあります。

その点、仮想環境ではなくPCに直接Ubuntuをインストールするとそのような問題は解消されます。

本記事では、NVIDIAのグラフィックボードを搭載したPCにUbuntu 22.04LTSをインストールして、TensorflowとPyTorchでMNISTの動作確認をするまでの方法を紹介します。

機械学習用に自作PCを組む場合のパーツ選びについては以下の記事も参考にしてください。

Ubuntuインストール後の機械学習環境構築の手順を以下の動画に収めていますので、よろしければ参考にしてください。

使用環境

自作PCを使用しましたが、NVIDIAのGPUを搭載したPCであれば同様に実行できます。

項目内容補足
マザーボードZ690 UD DDR4
CPUIntel Core i5 12400
GPUNVIDIA GeForce RTX 3090
GPUドライバDriver Version: 515.65.01 CUDA Version: 11.7nvidia-smiで表示
CuDNNバージョンnvidia-cudnn/jammy 8.2.4.15~cuda11.4 amd64apt list nvidia-cudnnで表示
AnacondaインストーラAnaconda3-2022.05-Linux-x86_64.sh
Tensorflow2.9.2
PyTorch1.12.1+cu116

Ubuntuインストールメディア作成

Windows PCでUbuntuのインストールメディアを作成するには、こちらのサイトに従います。

ISOファイルをダウンロードして、Rufusでディスクイメージを書き込むという流れになります。

Ubuntu 22.04LTSのインストールメディアは12GB以上が推奨されているので、16GBのUSBメモリを使用しました。

Macの場合、balenaEtcherを使ってディスクイメージを書き込むことができます。

Ubuntuインストール

本章のUbuntuインストールは、可能なら有線LANをつないだ状態で実行することをおすすめします。

前章で作成したUbuntuのインストールメディアをUSB端子に差し込み、電源ボタンを押した直後にDelキーを連打してBIOSを起動し、USBからの起動優先順位を上げておきます。

BIOSの操作は機種によって異なりますが、多くの場合、下図のようにBootを開くと起動優先順位を設定できます。

BIOS Boot

Save & ExitからBIOSを終了し、再起動します。

下図のようにUbuntuの起動選択画面が出るので、一番上の「Try or Install Ubuntu」がハイライトされた状態でEnterを押します。

Ubuntu Selector

以下の画面で「Ubuntuをインストール」を押します。

Install Ubuntu

キーボードを選択して「続ける」を押します。

Select Keyboard

「グラフィックスとWi-Fi〜」にチェックを入れて「続ける」を押します。

Updates and Other Software

下図は、一度UbuntuをインストールしたSSDを使った際の表示例になります。

まっさらなSSDだと一番上が通常の新規インストールになるはずなので、それを選択します。

「それ以外」は、WindowsとUbuntuのデュアルブートにしたい場合や、内蔵ドライブ以外にUbuntuをインストールしたい場合の選択肢になります。

Installation Kind

「インストール」を押して先に進みます。

下図の画面で地域を選択し、「続ける」を押します。

Location

ユーザ名、PC名、パスワードを設定し、「続ける」を押します。

User Infomation

インストールが完了すると、下図の画面になるので、「今すぐ再起動する」を押します。

Reboot

下図のようにインストールメディアを抜いてEnterを押すよう指示されるので従います。

この画面は機種によって異なります。

Remove Install Media

再起動したらUbuntuのログイン画面が立ち上がるので、設定したユーザ名、パスワードでログインします。

無線LANドライバインストール

無線LANを使用せず、有線LANを常に使用する方は、本章の内容は不要なので、次の章に進んでください。

Firefoxブラウザを起動して、Googleなどと打ち込み、Googleに接続できる場合は、自動で無線LANドライバがインストールされているので、次の章に進んでください。

本章で紹介する内容は、使用する機器によっては動作しない可能性がありますので、ご使用になる無線LAN機器のマニュアルを参照願います。

無線LAN子機としてLinux対応と記載のあった機器を使用しましたが、付属のCD-ROMにあったLinux用ドライバはビルドに失敗してしまい、使用できなかったので、こちらのGitHubリポジトリを使いました。

ドライバをソースコードからビルドする必要があるのですが、Ubuntuインストール直後はmakeすら存在しないため、下記のように、まずbuild-essential(gcc、make等)をインストールします。

下記コマンドを実行する際、有線LANにつながっている必要があります。(無線LANは今ドライバをインストールしようとしている段階で使用できないため)

sudo apt install build-essential
git clone https://github.com/RinCat/RTL88x2BU-Linux-Driver
cd RTL88x2BU-Linux-Driver
make
sudo make install

以下は私が使用したものと同一ではありませんが、Linux対応との記載があり、同様に使えると思われます。

wifi usb 1300Mbps USB3.0 無線lan 子機 2.4G/5G デュアルバンド 5dBi超高速通信 wifi 子機

GPUドライバインストール

NVIDIAのグラフィックボードを使用するには、最新のドライバをインストールする必要があります。

こちらのサイトから下図のように使用する機器、バージョン等を設定すると、画面下の方にコマンドが表示されるので、それを実行します。

CUDA Install

上図で表示されたコマンドを以下に貼り付けておきます。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda

時が経つと上記コマンドはバージョンが上がって変わっていくと思いますので、NVIDIAのサイトに従って最新のコマンドを使用するのが良いでしょう。

CuDNNインストール

CuDNNのインストーラをダウンロードするにはNVIDIAのアカウントが必要ですので、ここから登録してください。

こちらのサイトからライセンス承諾のチェックを入れ、CUDA 11.xの中からLocal Installer for Ubuntu22.04 x86_64 (Deb)を選択してダウンロードします。

mv ~/ダウンロード/cudnn-local-repo-ubuntu2204-8.5.0.96_1.0-1_amd64.deb .
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.5.0.96_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo apt update
sudo apt -y install libcudnn8 libcudnn8-dev libcudnn8-samples

上記でlibcudnn8-samplesをインストールするとCuDNNのサンプルプログラムが/usr/srcにダウンロードされるので、動作確認に使用します。

cp -r /usr/src/cudnn_samples_v8 .
cd cudnn_samples_v8/RNN
make
./RNN
cd ../..

エラー無く実行できれば成功です。

Anacondaインストール

Anacondaのサイトの下記リンクからLinux 64-Bit用インストールスクリプトをダウンロードします。

インストール用スクリプトを実行します。

bash ~/ダウンロード/Anaconda3-2022.05-Linux-x86_64.sh

Anacondaインストーラが~/.bashrcに設定を書き足すので、sourceして有効にします。(次回以降はターミナル立ち上げると~/.bashrcの設定が有効になるので、sourceする必要はありません)

source ~/.bashrc

これで、コマンドプロンプト(コマンド入力部の左側の部分)に(base)と表示されるようになります。

Tensorflow

Anacondaをインストールするとcondaコマンドが使えるようになるので、Tensorflow用の仮想環境をpython 3.9でtfとして作成し、アクティベートします。

conda create -n tf python=3.9
conda activate tf

TensorflowとJupyter Notebookをインストールします。

pip install -U pip
pip install tensorflow
pip install notebook

サンプルプログラムをダウンロードします。

git clone https://github.com/tak6uch1/wsl2_pytorch_tf_gpu.git
cd wsl2_pytorch_tf_gpu

GPUが正しく認識できているか確認するため以下のコマンドを実行します。

python check_gpu.py

以下のようにdevice_type: “GPU”が表示されて、グラフックボードの名称が表示されれば、正しくGPUを認識できています。

((( 省略 )))
2022-09-04 14:08:54.978476: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1532] Created device /device:GPU:0 with 20143 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 3090, pci bus id: 0000:01:00.0, compute capability: 8.6
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 15858451040075004051
xla_global_id: -1
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 21122318336
locality {
  bus_id: 1
  links {
  }
}
incarnation: 7473896646874375007
physical_device_desc: "device: 0, name: NVIDIA GeForce RTX 3090, pci bus id: 0000:01:00.0, compute capability: 8.6"
xla_global_id: 416903419
]

Jupyter Notebookを起動します。

jupyter notebook

ここでFirefoxの新しいタブが開いて「ファイルへのアクセスが拒否されました」と表示されますが、ターミナルに表示される下記の部分をブラウザのアドレス入力部分に貼り付け、またはCtrl+クリックで下記URLにアクセスします。

http://127.0.0.1:8888/?token=XXXXXXXXXXXXX

以下のようにJupyter Notebookが立ち上がるので、New→Python 3からPython3の入力モードに移行します。

Jupyter initial

以下を入力し、Shift+Enterで実行します。

%%time
run -i mnist_cnn.py

以下のように表示されれば成功です。

Tensorflow MNIST

PyTorch

Python 3.9の仮想環境torchを作ってアクティベートします。

conda deactivate
conda create -n torch python=3.9
conda activate torch

PyTorchのGPU環境とJupyter Notebookをインストールします。

上記PyTorchのインストールコマンドはPyTorchのサイトから下図のように設定して表示されるコマンドを使用します。

PyTorch Install

下記の2行目は、上記で表示されたコマンドを貼り付けたものです。

pip install -U pip
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
pip install notebook

バージョンが上がると変わると思いますので、最新のコマンドを使うことをおすすめします。

PyTorchのバージョンを確認します。

python check_pytorch.py

以下のように表示されれば成功です。

1.12.1+cu116 True
tensor([[0.6327, 0.3665, 0.6174],
        [0.1698, 0.8373, 0.3658],
        [0.2713, 0.0527, 0.8659],
        [0.4002, 0.0120, 0.8794],
        [0.7513, 0.2406, 0.3140]])

以下のコマンドでPyTorch用MNISTがエラー無く実行できれば成功です。

python mnist_cnn_pytorch.py

上記を実行中に別のターミナルで以下のコマンドを実行することでGPUの使用状況を確認できます。

nvidia-smi -l

止める場合はCtrl+Cを押します。

トラブルシューティング

CuDNNリポジトリでGPGエラー

sudo apt update実行時に以下のようなエラーが出る場合の対処方法を紹介します。

エラー:1 file:/var/cudnn-local-repo-ubuntu2204-8.5.0.96  InRelease             
  公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 247F95647ED72349
・・・
W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: file:/var/cudnn-local-repo-ubuntu2204-8.5.0.96  InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 247F95647ED72349
W: file:/var/cudnn-local-repo-ubuntu2204-8.5.0.96/InRelease の取得に失敗しました  公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 247F95647ED72349

「CuDNNインストール」の章において、debファイルのダウンロードとsudo dpkg -i 〜のコマンドは実行したものの、GPGキーのコピーをしていない場合にこのエラーが出ます。

エラーを解消するには、CuDNNのGPGキーを所定の場所に格納する必要があります。

以下のコマンドで/usr/share/keyrings以下に存在するファイルを確認すると、cudnnから始まるファイルが見つからないと思います。(cudaから始まるファイルはあると思います)

ls -l /usr/share/keyrings

CuDNNのインストール時、dpkgコマンド実行後に以下を実行することでCuDNNのGPGキーを使用できるようになります。

sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/

再度、上記のlsコマンドを実行してGPGキーを確認すると、以下のようにcudnnから始まるファイルが見つかると思います。(下記の2行目、1行目はCUDA用)

-rw-r--r--   1 root root  1134  4月 22 18:07 cuda-archive-keyring.gpg
-rw-r--r--   1 root root  1141  9月 11 06:24 cudnn-local-7ED72349-keyring.gpg

以下のアップデートコマンドを実行してエラーが解消されることを確認してください。

sudo apt update

システムプログラムの問題

各種環境構築の際に問題が発生すると、問題解消後も「システムプログラムの問題が見つかりました。」のダイアログが表示されることがあるようです。

以下を実行することでダイアログを出なくすることができました。

sudo rm /var/crash/*
sudo sed -i 's/enabled=1/enabled=0/g' /etc/default/apport

まとめ

NVIDIAのグラフィックボードを搭載したPCにUbuntu 22.04 LTSをインストールして、GPU使用のTensorflowとPyTorch機械学習環境を構築する方法を紹介しました。

他のサイトでもUbuntuのインストール方法が紹介されていますが、内容が古く、そのままでは正しく実行できないものもありますので、本記事がこれから機械学習用にLinuxマシンを立ち上げたいと思っている方の参考になれば幸いです。

Ubuntuもかなり使いやすく進化してきたので、そろそろ、メインPCをUbuntuにしても良いかもしれないと考えています。

動画編集など、普段はMacを使用していましたが、Ubuntuに移行できそうと考えているので、今後も機械学習に限らず、Ubuntuを普段使いするための情報を発信していきます。

書籍紹介

人気ブロガーからあげ先生のとにかく楽しいAI自作教室

実践して楽しむことを重視していて、充実のサンプルコードで画像認識やテキスト分析、GAN生成といったAI応用をGoogle Colab環境下で体験できます。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

この本は、機械学習の仕組みを学ぶのにとても良い本だと思います。

Tensorflow/Kerasなどの既存プラットフォームを使うのではなく、基本的な仕組みを丁寧に説明し、かんたんなPythonコードで実装していく手順を紹介してくれます。

機械学習のコードがどのような処理をしているのか、想像できるようになります。

新しいLinuxの教科書
Linuxコマンドラインの使い方やシェルスクリプトの書き方、ファイルバージョン管理などの説明があり、これからLinuxで開発を始めたい方におすすめの入門書です。

参考文献

タイトルとURLをコピーしました