はじめに
機械学習をするためにubuntu 20.04 で環境構築をしたが、依存関係がややこしかったのでまとめておく。
機械学習のためのPCセットアップ
- NVIDIA-driverは基本一度インストールした後は触らない(触ると厄介なことになる)
- CUDAはタスクごとに使い分けたい
- PyTorchやcuDNNはCUDAのバージョンに依存
- CUDAはNVIDIA-driverに依存
- つまりバーションの依存関係は NVIDIA-driver > CUDA >= PyTorch > cuDNN
以上を考慮すると、
- 使いたいCUDAのバージョンを決める
- CUDAを動かせるNVIDIA-driverを入れる
- CUDAのバージョンに対応したPyTorchとcuDNNを入れる
必要がある。
セットアップ手順
ドライバインストールの前準備
nouveauドライバの停止
nouveauドライバを停止しないと、NVIDIA-driverを入れても動かない場合がある
sudo reboot
lsmod | grep -i nouveau
以下をまとめて実行
sudo sh -c "cat << ETX > /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
ETX" && cat /etc/modprobe.d/blacklist-nouveau.conf
output
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
Nouveau ドライバを無効化
sudo sh -c "echo 'options nouveau modeset=0' > /etc/modprobe.d/nouveau-kms.conf" && cat /etc/modprobe.d/nouveau-kms.conf
デバイスやバージョンの確認・削除
使用しているGPUの確認
lspci | grep -i nvidia
現在入っているCUDA, nvidia-driverの確認
dpkg -l | grep nvidia
dpkg -l | grep cuda
現在入っているCUDA nvidiaドライバの削除
sudo apt-get --purge remove nvidia-*
sudo apt-get --purge remove cuda-*
sudo apt-get autoremove
sudo apt-get autoclean
NVIDIA-driverのインストール / 手法1:端末でインストール
参考サイト:
sudo update-initramfs -u
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
対応しているNVIDIA-driverを調べる
ubuntu-drivers devices
# 現在利用可能なNVIDIAドライバのうちバージョン515をリストアップ
apt-cache madison nvidia-driver-515
バージョンを指定してインストール
sudo apt install nvidia-driver-515=515.43.04-0ubuntu1
Configuring Secure Bootと出てきた場合
- TabキーとEnterキーを使って進み、パスワードを設定(8-16文字)
- DLが終わったら再起動&BIOS/UEFI設定画面に入る(再起動時にF2, DELとか連打)
- pcsetup_MOK_3.jpgで Enroll MOK 、もしくは Change Secure Boot stateを選択
- pcsetup_MOK_4.jpgのView key 0 で確認、Continueでさっきのパスワードを入力
再起動
sudo reboot
NVIDIA-driverを確認
DPで接続したモニターも使用できるようになるはず
nvidia-smi
NVIDIA-driverのインストール / 手法2:.runファイルからインストールする方法(面倒なので手法1がおすすめ)
NVIDIA DriverのDLサイト:
参考サイト(2.2参照):
参考サイト:
DLして実行権限をつける
wget https://www.nvidia.co.jp/content/DriverDownloads/confirmation.php?url=/XFree86/Linux-x86_64/550.67/NVIDIA-Linux-x86_64-550.67.run
sudo chmod +x NVIDIA-Linux-x86_64-550.67.run
Ctrl + Alt + F6でコンソールモードに切り替え
sudo service lightdm stop
sudo ./NVIDIA-Linux-x86_64-550.67.run
reboot
nvidia-smi
Anacondaでの環境構築
Anacondaをインストールしてconda内でCUDA, PyTorchなどをインストール
Anacondaで環境構築をすると、バージョン管理が楽なのでおすすめ
Anacondaで環境構築する場合、以下は無視
Anacondaで仮想環境を作らずに、単一のCUDAやPytorchを使用する場合は以下の手順でインストール
CUDAのDL
CUDA12.1がPytorch対応しているので12-1 (対応しているバージョンを調べる)
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-12-1
reboot
nano ~/.bashrc
# nanoの使い方
# Ctrl + O : 変更を保存
# Ctrl + X : エディタを閉じる
export PATH=/usr/local/cuda:/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/cuda/lib64:$LD_LIBRARY_PATH
source ~/.bashrc
nvcc -V
CUDA toolkit
cuDNNのインストール 以下参照
# sudo dpkg -i <path(ex:cudnn-local-repo-ubuntu2004-8.4.0.27_1.0-1_amd64.deb)>
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb
# sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo cp /var/cudnn-local-repo-ubuntu2004-8.9.7.29/cudnn-local-30472A84-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install libcudnn8=8.9.7.29-1+cuda12.2
sudo apt-get install libcudnn8-dev=8.9.7.29-1+cuda12.2
PyTorch
動作確認
python3
import torch
print(f"torch version: {torch.__version__}") # PyTorchのバージョンを表示
print(f"CUDA version: {torch.version.cuda}") # CUDAのバージョンを表示
print(f"torch & cuda: {torch.cuda.is_available()}") # CUDAが利用可能かどうかを確認
import torchvision
print(f"torchvision: {torchvision.__version__}")
# torch version: 1.13.1+cu117
# CUDA version: 11.7
# torch & cuda: True
# torchvision: 0.14.1+cu117
バージョン確認
lspci | grep VGA
lspci | grep NVIDIA
python3 -V
nvidia-smi
nvidia-smi -q -u | grep "CUDA Version" | cut -d":" -f2 | tr -d "[:blank:]"
nvcc -V