- Authors
- Name
- 1. ディープラーニング GPU サーバーのハードウェア選択ガイド
- 2. Ubuntu 22.04/24.04 のインストールと初期設定
- 3. NVIDIA ドライバーのインストール
- 4. ドライバーバージョン選択戦略
- 5. CUDA Toolkit のインストール
- 6. CUDA バージョンとドライバーの互換性マトリクス
- 7. cuDNN のインストールと設定
- 8. Conda/Mamba 環境構成
- 9. Docker + NVIDIA Container Toolkit の設定
- 10. nvidia-smi、nvtop モニタリングツール
- 11. SSH リモート開発環境
- 12. セキュリティ設定
- 13. 自動化:Ansible Playbook の例
- 14. まとめ:インストール手順の全体要約
- References
1. ディープラーニング GPU サーバーのハードウェア選択ガイド
ディープラーニングサーバーを構築する前に、最初に決定すべきことはハードウェア構成である。ワークロードの規模と予算に応じて選択肢が変わる。
1.1 GPU の選択
GPU はディープラーニングサーバーの核となるコンポーネントである。選択時には VRAM 容量、Tensor Core 世代、メモリ帯域幅を重点的に考慮する必要がある。
| GPU | VRAM | 用途 | おおよその価格帯 |
|---|---|---|---|
| RTX 4090 | 24GB GDDR6X | 個人研究、中小規模の学習 | ~$1,600 |
| RTX 5090 | 32GB GDDR7 | 個人研究、大型モデルの Fine-tuning | ~$2,000 |
| RTX A6000 / RTX 6000 Ada | 48GB GDDR6 | プロダクション、ECC メモリ対応 | ~$4,000+ |
| A100 (80GB PCIe/SXM) | 80GB HBM2e | 大規模学習、NVLink 対応 | ~$10,000+ |
| H100 (80GB SXM) | 80GB HBM3 | 最大規模の LLM 学習 | ~$25,000+ |
| H200 | 141GB HBM3e | Long-context LLM、メモリボトルネック解消 | ~$30,000+ |
実用的な推奨:
- 個人/小規模ラボ: RTX 4090 または RTX 5090。24〜32GB の VRAM で 7B〜13B パラメータモデルの Fine-tuning が可能。
- 企業/研究所: A100 80GB または H100。NVLink を利用したマルチ GPU 学習が必須の環境ではデータセンター級 GPU が必要。
- マルチ GPU を検討する場合: PCIe スロットの間隔、NVLink 対応の有無、電源供給容量を必ず確認すること。
1.2 CPU、RAM、ストレージ
| コンポーネント | 推奨スペック | 理由 |
|---|---|---|
| CPU | AMD EPYC または Intel Xeon(コア数 16 以上) | Data loading ボトルネック防止、PCIe レーン確保 |
| RAM | GPU VRAM の 2 倍以上(最低 64GB、推奨 128GB+) | 大規模データセットの前処理、DataLoader ワーカーメモリ |
| OS ストレージ | NVMe SSD 500GB+ | 高速起動、パッケージキャッシュ |
| データストレージ | NVMe SSD 2TB+ または RAID 構成 | 学習データ I/O ボトルネック防止 |
| PSU | 1200W+(マルチ GPU 時 1600W+) | RTX 4090 1 台で 450W、余裕のある電力が必須 |
CPU は GPU に比べて相対的に重要度は低いが、PCIe レーン数がマルチ GPU 環境でボトルネックになる可能性があるため、サーバー級プラットフォーム(AMD EPYC、Intel Xeon)を推奨する。デスクトッププラットフォーム(AM5、LGA1700)でもシングル GPU 環境では十分である。
2. Ubuntu 22.04/24.04 のインストールと初期設定
ディープラーニングサーバーの OS には Ubuntu 22.04 LTS または Ubuntu 24.04 LTS が最も広く使われている。NVIDIA ドライバー、CUDA、各種ディープラーニングフレームワークのサポートが最優先で行われるためである。
2.1 インストール後の基本設定
# システムアップデート
sudo apt update && sudo apt upgrade -y
# 必須ビルドツールのインストール
sudo apt install -y build-essential gcc g++ make cmake
# カーネルヘッダーのインストール(NVIDIA ドライバーのビルドに必要)
sudo apt install -y linux-headers-$(uname -r)
# ネットワークツール
sudo apt install -y net-tools curl wget git vim htop
# タイムゾーン設定
sudo timedatectl set-timezone Asia/Seoul
2.2 Secure Boot の無効化
NVIDIA ドライバーはカーネルモジュールをロードする必要があるため、BIOS で Secure Boot を無効にすることが推奨される。Secure Boot が有効な状態でも MOK(Machine Owner Key)を登録して使用できるが、設定が複雑になる可能性がある。
# Secure Boot の状態確認
mokutil --sb-state
3. NVIDIA ドライバーのインストール
NVIDIA 公式ドキュメントでは大きく 2 つのインストール方式を案内している:パッケージマネージャー(apt)方式と .run ファイル方式である。サーバー環境では管理の利便性から apt リポジトリ方式が推奨される。
3.1 方法 1:apt リポジトリ方式(推奨)
NVIDIA 公式ドライバーインストールガイド(https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/index.html)に従い、Ubuntu では以下のようにインストールする。
既存ドライバーの削除
# 既存の NVIDIA 関連パッケージを完全に削除
sudo apt-get purge nvidia* -y
sudo apt-get autoremove -y
sudo apt-get autoclean
ubuntu-drivers による自動インストール
Ubuntu では ubuntu-drivers ツールを使用してシステムに適したドライバーを自動でインストールできる。
# 利用可能なドライバー一覧の確認
sudo ubuntu-drivers devices
# 推奨ドライバーの自動インストール
sudo ubuntu-drivers autoinstall
NVIDIA 公式リポジトリによる手動インストール
特定バージョンのドライバーが必要な場合、NVIDIA の公式 apt リポジトリを追加してインストールする。
# NVIDIA 公式リポジトリのキーとソースを追加
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update
# 特定バージョンのインストール(例:550 バージョン)
sudo apt install -y nvidia-driver-550
# 再起動
sudo reboot
インストールの確認
nvidia-smi
正常にインストールされていれば、GPU 名、ドライバーバージョン、対応 CUDA バージョンなどが表示される。
3.2 方法 2:.run ファイル方式
NVIDIA ホームページから直接 .run ファイルをダウンロードしてインストールする方式。特殊なカーネル環境やカスタムビルドが必要な場合に使用する。
# Nouveau ドライバーの無効化
sudo bash -c "echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist-nouveau.conf"
sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf"
sudo update-initramfs -u
sudo reboot
# GUI 環境の停止(サーバーにデスクトップ環境がある場合)
sudo systemctl stop gdm3
# または
sudo systemctl stop lightdm
# .run ファイルの実行
chmod +x NVIDIA-Linux-x86_64-550.120.run
sudo ./NVIDIA-Linux-x86_64-550.120.run
.run ファイル方式の欠点:カーネル更新時にドライバーが壊れる可能性があり、パッケージマネージャーで管理されないためアップデートや削除が不便。サーバー運用環境では apt 方式を強く推奨する。
4. ドライバーバージョン選択戦略
NVIDIA はデータセンター/サーバー用ドライバーに対して 2 つのブランチを運営している。
4.1 Production Branch vs New Feature Branch
| 区分 | Production Branch (PB) | New Feature Branch (NFB) |
|---|---|---|
| 安定性 | 高い(広範なテスト完了) | 相対的に低い |
| 新機能 | リリース後の新機能追加なし | 最新 GPU サポート、新機能を含む |
| アップデート方針 | バグ修正とセキュリティパッチのみ | 定期的に新機能を含むリリース |
| 推奨環境 | プロダクションサーバー、安定性最優先 | 開発/テスト、最新 GPU 使用 |
実務ガイドライン:
- プロダクション環境:Production Branch を使用。例えば
550.xxシリーズが PB に指定された場合、そのシリーズ内でのみバグ修正アップデートが提供される。 - 最新 GPU(例:Blackwell アーキテクチャ):New Feature Branch を使用する必要がある場合が多い。最新ハードウェアのサポートは NFB で先に提供されるため。
- サーバーでは
-serverパッケージを使用:nvidia-driver-550-serverのように-serverサフィックスが付いたパッケージは Enterprise Ready Driver (ERD) であり、サーバー環境に最適化されている。
# 利用可能なサーバー用ドライバーの確認
apt list --installed 2>/dev/null | grep nvidia-driver
apt-cache search nvidia-driver | grep server
5. CUDA Toolkit のインストール
CUDA Toolkit は NVIDIA GPU で並列計算を行うための開発環境である。NVIDIA 公式インストールガイド(https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)に従ってインストールする。
5.1 インストール前の確認事項
# CUDA 対応 GPU の確認
lspci | grep -i nvidia
# gcc のインストール確認
gcc --version
# カーネルヘッダーの確認
uname -r
sudo apt install -y linux-headers-$(uname -r)
5.2 ネットワークリポジトリ方式でのインストール(推奨)
# CUDA keyring パッケージのインストール
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
# CUDA Toolkit のインストール(最新バージョン)
sudo apt-get install -y cuda-toolkit
# または特定バージョンのインストール
sudo apt-get install -y cuda-toolkit-12-6
5.3 環境変数の設定
# ~/.bashrc または ~/.zshrc に追加
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
# 適用
source ~/.bashrc
5.4 複数 CUDA バージョンの管理
実務ではプロジェクトごとに異なる CUDA バージョンが必要になることが頻繁にある。/usr/local/ 配下に複数の CUDA バージョンをインストールし、update-alternatives で管理できる。
# 複数バージョンのインストール(例:12.4 と 12.6)
sudo apt-get install -y cuda-toolkit-12-4
sudo apt-get install -y cuda-toolkit-12-6
# /usr/local/ 配下のインストール確認
ls /usr/local/ | grep cuda
# cuda -> cuda-12.6(シンボリックリンク)
# cuda-12.4
# cuda-12.6
# update-alternatives でバージョン切り替えを登録
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.4 10
sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.6 20
# バージョン切り替え
sudo update-alternatives --config cuda
update-alternatives --config cuda を実行すると対話型メニューが表示され、目的の CUDA バージョンを選択できる。この方式を使用すると /usr/local/cuda シンボリックリンクが選択したバージョンを指すように変更される。
# インストール確認
nvcc --version
6. CUDA バージョンとドライバーの互換性マトリクス
CUDA Toolkit と NVIDIA ドライバー間には最低ドライバーバージョンの要件が存在する。NVIDIA 公式 CUDA Toolkit Release Notes(https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html)で互換性表を確認できる。
6.1 主要互換性表(Linux x86_64 基準)
| CUDA Toolkit バージョン | 最低ドライバーバージョン(Linux) |
|---|---|
| CUDA 12.0 | >= 525.60.13 |
| CUDA 12.1 | >= 530.30.02 |
| CUDA 12.2 | >= 535.54.03 |
| CUDA 12.3 | >= 545.23.06 |
| CUDA 12.4 | >= 550.54.14 |
| CUDA 12.5 | >= 555.42.02 |
| CUDA 12.6 | >= 560.28.03 |
| CUDA 13.0 | >= 570.86.15 |
| CUDA 13.1 | >= 575.51.03 |
重要:
nvidia-smiに表示される「CUDA Version」は、そのドライバーがサポートする最大 CUDA Runtime バージョンである。実際にインストールされている CUDA Toolkit のバージョンとは異なる場合がある。実際の CUDA Toolkit バージョンはnvcc --versionで確認する。
6.2 CUDA Forward/Minor Compatibility
NVIDIA の CUDA Compatibility ドキュメント(https://docs.nvidia.com/deploy/cuda-compatibility/)によると、CUDA 12.x 以降は Minor Version Compatibility がサポートされている。つまり、CUDA 12.0 用ドライバーがインストールされていても、CUDA 12.6 でコンパイルされたアプリケーションを制限付きで実行できる。
# ドライバーがサポートする CUDA バージョンの確認
nvidia-smi | head -3
# 実際にインストールされている CUDA Toolkit バージョンの確認
nvcc --version
7. cuDNN のインストールと設定
cuDNN(CUDA Deep Neural Network library)はディープラーニングに最適化された GPU アクセラレーションライブラリである。Convolution、Pooling、Normalization、Activation などの演算を高度に最適化しており、PyTorch や TensorFlow などのフレームワークが内部的に使用している。
NVIDIA 公式 cuDNN インストールガイド(https://docs.nvidia.com/deeplearning/cudnn/installation/latest/linux.html)に基づいてインストールする。
7.1 apt リポジトリ方式でのインストール(推奨)
# CUDA keyring が既にインストールされていれば cuDNN パッケージを直接インストールできる
sudo apt-get install -y cudnn
# 特定 CUDA バージョン用の cuDNN インストール
sudo apt-get install -y cudnn-cuda-12
7.2 Tarball 方式でのインストール
特定バージョンが必要な場合やシステムパッケージマネージャーを使用したくない場合は tarball を使用する。
# NVIDIA Developer サイトからダウンロード後
tar -xvf cudnn-linux-x86_64-9.x.x.x_cudaXX-archive.tar.xz
# ファイルコピー
sudo cp cudnn-linux-x86_64-9.x.x.x_cudaXX-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-linux-x86_64-9.x.x.x_cudaXX-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
7.3 インストール確認
# cuDNN バージョン確認(apt インストール時)
dpkg -l | grep cudnn
# またはヘッダーファイルから直接確認
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
8. Conda/Mamba 環境構成
システムレベルの CUDA Toolkit とは別に、Conda/Mamba 仮想環境内で PyTorch や TensorFlow をインストールすると CUDA バージョンの競合を防ぐことができる。最近の PyTorch と TensorFlow は独自の CUDA Runtime をバンドルしており、システム CUDA バージョンとは独立して動作する。
8.1 Miniforge(Mamba)のインストール
# Miniforge のインストール(Mamba を含む)
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh -b -p $HOME/miniforge3
# 環境変数の設定
$HOME/miniforge3/bin/mamba init bash
source ~/.bashrc
8.2 PyTorch のインストール
# ディープラーニング環境の作成
mamba create -n dl python=3.11 -y
mamba activate dl
# PyTorch のインストール(CUDA 12.4 基準 - 公式サイトで最新コマンドを確認)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# インストール確認
import torch
print(f"PyTorch version: {torch.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"CUDA version: {torch.version.cuda}")
print(f"cuDNN version: {torch.backends.cudnn.version()}")
print(f"GPU: {torch.cuda.get_device_name(0)}")
8.3 TensorFlow のインストール
# TensorFlow のインストール(GPU サポート付き)
pip install tensorflow[and-cuda]
# インストール確認
import tensorflow as tf
print(f"TensorFlow version: {tf.__version__}")
print(f"GPU devices: {tf.config.list_physical_devices('GPU')}")
ヒント:PyTorch と TensorFlow を同一環境にインストールすると CUDA ライブラリのバージョン競合が発生する可能性がある。可能な限り別々の Conda 環境を使用することを推奨する。
9. Docker + NVIDIA Container Toolkit の設定
Docker を使用するとディープラーニング環境をコンテナ単位で隔離して管理できる。NVIDIA Container Toolkit(https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)をインストールすると Docker コンテナ内で GPU を使用できる。
9.1 Docker のインストール
# Docker 公式リポジトリの設定
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 現在のユーザーを docker グループに追加(sudo なしで使用)
sudo usermod -aG docker $USER
newgrp docker
9.2 NVIDIA Container Toolkit のインストール
NVIDIA 公式ドキュメントに従ったインストール手順である。
# NVIDIA Container Toolkit リポジトリの設定
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/stable/deb/nvidia-container-toolkit.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-container-toolkit
# Docker ランタイムの設定
sudo nvidia-ctk runtime configure --runtime=docker
# Docker の再起動
sudo systemctl restart docker
9.3 GPU Docker テスト
# GPU アクセステスト
docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi
# 特定の GPU のみ使用
docker run --rm --gpus '"device=0"' nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi
# すべての GPU を使用して PyTorch コンテナを実行
docker run --rm --gpus all -it pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime python -c \
"import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
9.4 Docker Compose での GPU 使用
# docker-compose.yml
services:
training:
image: pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all # または特定の数:1、2 など
capabilities: [gpu]
volumes:
- ./data:/workspace/data
- ./models:/workspace/models
shm_size: '8g' # PyTorch DataLoader の共有メモリ
注意:
shm_sizeを設定しないと、PyTorch の DataLoader でnum_workers > 0の場合に共有メモリ不足エラーが発生する可能性がある。
10. nvidia-smi、nvtop モニタリングツール
GPU サーバー運用においてモニタリングは必須である。GPU 使用率、メモリ使用量、温度などをリアルタイムで確認できる必要がある。
10.1 nvidia-smi
nvidia-smi は NVIDIA ドライバーと共にインストールされるデフォルトのモニタリングツールである。
# 基本的な状態確認
nvidia-smi
# リアルタイムモニタリング(1 秒間隔)
watch -n 1 nvidia-smi
# 特定情報のクエリ
nvidia-smi --query-gpu=name,temperature.gpu,utilization.gpu,memory.used,memory.total --format=csv
# プロセス別 GPU 使用量
nvidia-smi pmon -s um -d 1
# Persistence Mode の有効化(サーバー環境推奨)
sudo nvidia-smi -pm 1
Persistence Mode を有効にすると GPU ドライバーが常にロードされた状態を維持し、GPU を初めて呼び出す際に発生する初期化遅延(数秒程度)を排除できる。サーバー環境では必ず有効にすべきである。
10.2 nvtop
nvtop は htop と似たインターフェースを持つ GPU モニタリングツールである。複数 GPU の使用率、メモリ、温度、プロセス情報を 1 つの画面でリアルタイムに確認できる。
# インストール
sudo apt install -y nvtop
# 実行
nvtop
10.3 gpustat
簡潔な出力を好む場合は gpustat も便利である。
pip install gpustat
# リアルタイムモニタリング
gpustat -i 1 --color
11. SSH リモート開発環境
GPU サーバーはほとんどの場合リモートでアクセスして使用する。効率的なリモート開発環境を構成する。
11.1 SSH サーバーの設定
# OpenSSH サーバーのインストール
sudo apt install -y openssh-server
# SSH サービスの開始と自動起動設定
sudo systemctl enable ssh
sudo systemctl start ssh
11.2 VS Code Remote - SSH
VS Code の Remote - SSH 拡張機能を使用すると、ローカルの VS Code からリモートサーバーのファイルを直接編集し、リモートターミナルを使用できる。
クライアント(ローカル)側の SSH config 設定:
# ~/.ssh/config
Host gpu-server
HostName 192.168.1.100
User username
Port 22
IdentityFile ~/.ssh/id_ed25519
ForwardAgent yes
11.3 tmux によるセッション維持
SSH 接続が切断されても学習が継続実行されるよう tmux を使用する。
# tmux のインストール
sudo apt install -y tmux
# 新しいセッションの作成
tmux new -s training
# セッションのデタッチ:Ctrl+b, d
# セッションへの再接続
tmux attach -t training
# セッション一覧の確認
tmux ls
必須 tmux ショートカット:
Ctrl+b, d:セッションのデタッチ(学習は継続実行)Ctrl+b, c:新しいウィンドウCtrl+b, n/p:次/前のウィンドウCtrl+b, %:水平分割Ctrl+b, ":垂直分割
11.4 ポートフォワーディング
Jupyter Notebook や TensorBoard などをローカルブラウザからアクセスするための SSH ポートフォワーディング設定。
# Jupyter Notebook ポートフォワーディング(リモート 8888 -> ローカル 8888)
ssh -L 8888:localhost:8888 gpu-server
# TensorBoard ポートフォワーディング(リモート 6006 -> ローカル 6006)
ssh -L 6006:localhost:6006 gpu-server
# 複数ポートの同時フォワーディング
ssh -L 8888:localhost:8888 -L 6006:localhost:6006 gpu-server
12. セキュリティ設定
GPU サーバーがネットワークに公開されている場合、基本的なセキュリティ設定は必須である。
12.1 SSH 鍵認証の設定
# クライアントで鍵を生成
ssh-keygen -t ed25519 -C "your_email@example.com"
# サーバーに公開鍵をコピー
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@gpu-server
# サーバーでパスワード認証を無効化
sudo vim /etc/ssh/sshd_config
/etc/ssh/sshd_config で以下の項目を変更する:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
# SSH サービスの再起動
sudo systemctl restart sshd
12.2 UFW ファイアウォールの設定
# UFW のインストールと有効化
sudo apt install -y ufw
# デフォルトポリシー:受信トラフィック拒否、送信トラフィック許可
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH を許可
sudo ufw allow ssh
# 特定 IP からのみ SSH を許可(より安全)
sudo ufw allow from 192.168.1.0/24 to any port 22
# ファイアウォールの有効化
sudo ufw enable
# 状態の確認
sudo ufw status verbose
12.3 fail2ban の設定
SSH ブルートフォース攻撃を防御するために fail2ban をインストールする。
# インストール
sudo apt install -y fail2ban
# 設定ファイルのコピー
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# /etc/fail2ban/jail.local の [sshd] セクションを修正
sudo vim /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
# fail2ban の起動
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 状態の確認
sudo fail2ban-client status sshd
13. 自動化:Ansible Playbook の例
サーバーが複数台ある場合や環境構成を繰り返し行う必要がある場合、Ansible を使用して設定プロセス全体を自動化できる。
13.1 Ansible Inventory
# inventory.ini
[gpu_servers]
gpu-server-01 ansible_host=192.168.1.101
gpu-server-02 ansible_host=192.168.1.102
[gpu_servers:vars]
ansible_user=ubuntu
ansible_ssh_private_key_file=~/.ssh/id_ed25519
13.2 GPU サーバー Setup Playbook
# gpu_server_setup.yml
---
- name: GPU Server Initial Setup
hosts: gpu_servers
become: true
vars:
nvidia_driver_version: '550'
cuda_keyring_url: 'https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb'
tasks:
# ===== システム基本設定 =====
- name: Update and upgrade apt packages
apt:
update_cache: yes
upgrade: dist
cache_valid_time: 3600
- name: Install essential packages
apt:
name:
- build-essential
- gcc
- g++
- make
- cmake
- linux-headers-{{ ansible_kernel }}
- curl
- wget
- git
- vim
- htop
- tmux
- nvtop
- net-tools
- software-properties-common
state: present
- name: Set timezone to Asia/Seoul
community.general.timezone:
name: Asia/Seoul
# ===== NVIDIA ドライバーのインストール =====
- name: Purge existing NVIDIA drivers
apt:
name: 'nvidia*'
state: absent
purge: yes
ignore_errors: yes
- name: Add NVIDIA PPA
apt_repository:
repo: ppa:graphics-drivers/ppa
state: present
- name: Install NVIDIA driver
apt:
name: 'nvidia-driver-{{ nvidia_driver_version }}'
state: present
update_cache: yes
# ===== CUDA Toolkit のインストール =====
- name: Download CUDA keyring
get_url:
url: '{{ cuda_keyring_url }}'
dest: /tmp/cuda-keyring.deb
- name: Install CUDA keyring
apt:
deb: /tmp/cuda-keyring.deb
- name: Install CUDA Toolkit
apt:
name: cuda-toolkit
state: present
update_cache: yes
# ===== cuDNN のインストール =====
- name: Install cuDNN
apt:
name: cudnn-cuda-12
state: present
# ===== Docker のインストール =====
- name: Install Docker prerequisites
apt:
name:
- ca-certificates
- curl
- gnupg
state: present
- name: Add Docker GPG key
shell: |
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
args:
creates: /etc/apt/keyrings/docker.gpg
- name: Add Docker repository
shell: |
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
args:
creates: /etc/apt/sources.list.d/docker.list
- name: Install Docker
apt:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
state: present
update_cache: yes
- name: Add user to docker group
user:
name: '{{ ansible_user }}'
groups: docker
append: yes
# ===== NVIDIA Container Toolkit のインストール =====
- name: Add NVIDIA Container Toolkit GPG key
shell: |
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
args:
creates: /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
- name: Add NVIDIA Container Toolkit repository
shell: |
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
args:
creates: /etc/apt/sources.list.d/nvidia-container-toolkit.list
- name: Install NVIDIA Container Toolkit
apt:
name: nvidia-container-toolkit
state: present
update_cache: yes
- name: Configure Docker runtime for NVIDIA
command: nvidia-ctk runtime configure --runtime=docker
- name: Restart Docker
systemd:
name: docker
state: restarted
# ===== セキュリティ設定 =====
- name: Install security packages
apt:
name:
- ufw
- fail2ban
state: present
- name: Configure UFW - deny incoming
ufw:
direction: incoming
policy: deny
- name: Configure UFW - allow outgoing
ufw:
direction: outgoing
policy: allow
- name: Configure UFW - allow SSH
ufw:
rule: allow
name: OpenSSH
- name: Enable UFW
ufw:
state: enabled
- name: Enable fail2ban
systemd:
name: fail2ban
enabled: yes
state: started
# ===== GPU Persistence Mode =====
- name: Enable NVIDIA Persistence Mode
command: nvidia-smi -pm 1
ignore_errors: yes
handlers:
- name: Reboot server
reboot:
reboot_timeout: 300
13.3 Playbook の実行
# Ansible のインストール
pip install ansible
# Playbook の実行
ansible-playbook -i inventory.ini gpu_server_setup.yml
# ドライラン(実際に実行せず確認)
ansible-playbook -i inventory.ini gpu_server_setup.yml --check
14. まとめ:インストール手順の全体要約
ディープラーニング GPU サーバー構築の全体フローをまとめると以下のとおりである。
1. ハードウェア組み立てと BIOS 設定(Secure Boot 無効化)
|
2. Ubuntu 22.04/24.04 のインストールと基本パッケージ設定
|
3. NVIDIA ドライバーのインストール(apt 方式推奨)
|
4. CUDA Toolkit のインストール(必要なバージョンごとに複数インストール可能)
|
5. cuDNN のインストール
|
6. Conda/Mamba 環境構成 -> PyTorch/TensorFlow のインストール
|
7. Docker + NVIDIA Container Toolkit のインストール
|
8. セキュリティ設定(SSH Key、UFW、fail2ban)
|
9. モニタリングツールのインストール(nvtop、gpustat)
|
10. リモート開発環境の構成(VS Code Remote、tmux)
このガイドで取り上げた内容を順番に進めれば、NVIDIA ドライバーから Docker GPU 環境まで完全なディープラーニング開発サーバーを構築できる。各段階で問題が発生した場合は NVIDIA 公式ドキュメントを参照してトラブルシューティングすることを推奨する。
References
- NVIDIA Driver Installation Guide
- NVIDIA Driver Installation Guide - Ubuntu
- Ubuntu Server - NVIDIA Drivers Installation
- NVIDIA Data Center Drivers
- CUDA Installation Guide for Linux
- CUDA Toolkit Release Notes
- CUDA Compatibility
- Supported Drivers and CUDA Toolkit Versions
- cuDNN Installation Guide - Linux
- cuDNN Support Matrix
- NVIDIA Container Toolkit Installation Guide
- NVIDIA Container Toolkit - GitHub
- Docker Official Documentation