概要
TensorFlowを、自宅PCに積んでいるGPUを用いて動かすように設定したので、その手順を自分の備忘録も兼ねて説明していきたいと思います。
使用OSバージョン、GPU
- OS : Ubuntu (Ubuntu 24.04.1 LTS)
- GPU : GeForce RTX 3070
必要な対応 (下記をインストール)
- NVIDIA® GPU ドライバ
- CUDA® ツールキット(TensorFlow は 2.5.0 以降)
- cuDNN SDK 8.1.0
GPUサポートにソフトウェア要件及びインストールサイトが記載されていますので、最新状況はこちらを確認してください。
NVIDIA® GPU ドライバをインストールする
1. こちらのサイトへアクセスし、インストールドライバをダウンロードする。
下記コマンドで、自分が使用しているGPUの詳細情報を確認することができます。
今回の場合は、「NVIDIA GeForce RTX 3070」と記載されているので、こちらに対応したドライバをダウンロードします。
nvidia-smi
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.144 Driver Version: 570.144 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3070 Off | 00000000:07:00.0 On | N/A |
| 0% 44C P8 20W / 220W | 572MiB / 8192MiB | 26% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 2348 G /usr/lib/xorg/Xorg 160MiB |
| 0 N/A N/A 2643 G /usr/bin/gnome-shell 105MiB |
| 0 N/A N/A 3341 G .../6042/usr/lib/firefox/firefox 252MiB |
+-----------------------------------------------------------------------------------------+
2. UbuntuをCUIの画面に変更する
ダウンロードしたファイルをコマンドからインストールする際、GUIが起動したままだとGPUが使用中の状態となり、インストール時に不具合が発生する可能性があります。
そのため、下記コマンドを実行してCUIの状態にして再実行をする必要があります。
sudo systemctl isolate multi-user.target
3. 先程保存したディレクトリへ移動し、.run(先ほどダウンロードしたファイル)を実行する
CUIに切り替えたあと、ログインが必要になる場合があります。
cd path/to/your/directory
sudo ./NVIDIA-Linux-x86_64-570.144.run
CUDA® ツールキットをインストールする
CUDAとは
「NVIDIAのGPUを用いて、計算を爆速で行うための仕組み」です。
本来GPUは、ゲームグラフィックを描くためのチップだけれども「、大量に簡単な計算を一気に並列処理できる」特性があるため、NVIDIAがGPU用に作ったプログラミング用の仕組みです。
こいつをインストールしないと、TensorFlowの処理がとんでもなく時間かかってしまうわけですね。
1. CUDAのサイトへアクセスし、インストールドライバをダウンロードする
今回インストールするのは、「CUDA 11.8」になりますので、「CUDA Toolkit 11.8.0 (October 2022), Versioned Online Documentation」をダウンロードします。
ubuntuの方は下記を指定していただければ大丈夫です。
- Operating System : Linux
- Architecture : ☓86_64
- Distribution : Ubuntu
- Version : 22.04
versionだけそれぞれ異なると思うので、下記コマンドを実行して確認をしてください。
最新バージョン(24.04.1 LTS)の場合は、22.04をダウンロードして大丈夫です。
○○に注意してください。
lsb_release -a
2. 上記を指定すると、下記コマンドが表示されるので実行する
# ① CUDAのリポジトリ設定ファイルをダウンロード
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
# ② それを /etc/apt/preferences.d/ に移動
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
# ③ CUDA 11.8本体のインストーラをダウンロード
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
# ④ ダウンロードした.debパッケージをインストール
sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
# ⑤ セキュリティキー(GPGキー)を登録
sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
# ⑥ aptのパッケージリストを更新
sudo apt-get update
# ⑦ CUDA本体をインストール!
sudo apt-get -y install cuda
3. 下記エラーが発生した場合、4以降の対応をする
このエラーの内容は、「CUDA 11.8をインストールしようとしたが、その中のツール(nsight-systems-2022.4.2)がlibtinfo5っていう古いライブラリに依存してるが、だけどUbuntu 24.04にはもうlibtinfo5が無い」ということです。
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:
以下のパッケージには満たせない依存関係があります:
nsight-systems-2022.4.2 : 依存: libtinfo5 しかし、インストールすることができません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
user@user-2412:~$ sudo apt-get -o Dpkg::Options::="--force-overwrite" install cuda-toolkit-11-8
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:
以下のパッケージには満たせない依存関係があります:
nsight-systems-2022.4.2 : 依存: libtinfo5 しかし、インストールすることができません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
ということで、対策として「本当に必要な最小限パッケージだけを個別インストール」をします。
✅ cuda-compiler-11-8
✅ cuda-cudart-11-8
✅ cuda-libraries-11-8
✅ cuda-cupti-11-8
✅ cuda-nvcc-11-8
sudo apt-get install cuda-compiler-11-8 cuda-cudart-11-8 cuda-libraries-11-8 cuda-cupti-11-8 cuda-nvcc-11-8
4. 先程インストールしたCUDAにパスを切り替える。
これではまだ別のCUDAのバージョンが参照されてしまっているため。
nano ~/.bashrc
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc
cuDNN SDK 8.6.0をインストールする
cuDNN(CUDA Deep Neural Network library)とは
AI学習用の「畳み込み層」「LSTM」「Pooling」みたいな処理をめちゃくちゃ高速化する専用ライブラリです。
TensorFlowやPyTorchみたいな機械学習フレームワークは、基本的に「cuDNN前提」で最適化されてるので、インストールしないと、学習速度や推論速度が数倍〜数十倍遅くなることもあるので、インストールすることを推奨されています。
1. cuDNN バージョンのサイトへアクセスし、インストールドライバをダウンロードする
警告
初めて使用する場合は、アカウント登録が必要になりますので、登録をしてください。
先ほどインストールしたCUDA Toolkitのバージョンが「11.8」の為、公式に対応しているcuDNNのバージョンである「8.6系」である「cuDNN v8.6.0 (October 3rd, 2022), for CUDA 11.x」をダウンロードします。
ダウンロードファイル一覧が表示されます。
今回は、「CUDA 11.8+cuDNN 8.6.0はUbuntu20.04」用に公式に最適化されてるので、「Local Installer for Ubuntu20.04 x86_64 (Deb)」をダウンロードして実行します。
# cuDNNの.debをインストール
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_amd64.deb
# GPGキー登録
sudo cp /var/cudnn-local-repo-ubuntu2004-8.6.0.163/cudnn-*-keyring.gpg /usr/share/keyrings/
# apt更新
sudo apt-get update
# cuDNNパッケージインストール
sudo apt-get install libcudnn8 libcudnn8-dev libcudnn8-samples
2. LD_LIBRARY_PATHを設定する
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
python3.10の仮想環境を構築する
警告
TensorFlow 2.15は3.11までしか対応していない為。
1. python3.10をインストールする
sudo apt-get update
sudo apt-get install python3.10 python3.10-venv
sudo apt update
sudo apt install -y 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 git
curl https://pyenv.run | bash
sudo apt update
sudo apt install -y 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 git
2. .bashrc という設定ファイルの一番下に、この設定を追加する。
nano ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
eval "$(pyenv virtualenv-init -)"
source ~/.bashrc
3. 仮想環境を作成
python -m venv .venv
4. 仮想環境にアクセスする
source .venv/bin/activate
5. TensorFlowをインストール
pip install tensorflow==2.15.0
以上でTensorFlowでGPUを動かす手順の説明を終わります。
これが皆さんの環境構築の手助けになることを祈ります。