GCPでGPU対応Docker環境の構築手順

この記事は生成AIによって作成されています。

# GCPでGPU対応Docker環境の構築手順

GCPでGPUを利用可能なDocker実行環境を構築する手順を詳しく解説します。

## 1. プロジェクトとGPUリソースの準備

### プロジェクトの作成
1. Google Cloud Consoleにアクセスし、新規プロジェクトを作成
2. 請求先アカウントの設定（クレジットカード情報の登録が必要）
3. Compute Engine APIの有効化

### GPUリソースの割り当て申請
1. IAMと管理 → 割り当てを選択
2. フィルタに「GPUs (all regions)」と入力
3. 必要なGPUタイプ（例：NVIDIA T4）の割り当て数を申請[1]

## 2. VMインスタンスの作成

### 基本設定
```bash
# インスタンス作成コマンド例
gcloud compute instances create "gpu-docker-instance" \
  --zone "asia-northeast1-a" \
  --machine-type "n1-standard-8" \
  --accelerator type=nvidia-tesla-t4,count=1 \
  --image-family "ubuntu-2004-lts" \
  --image-project "ubuntu-os-cloud" \
  --boot-disk-size "50GB" \
  --boot-disk-type "pd-ssd"
```

### SSH接続の設定
1. ローカル環境でSSH鍵を生成：
```bash
ssh-keygen -t ed25519
```
2. 生成された公開鍵（.pub）をGCPコンソールのメタデータに登録
3. SSH configファイルの設定：
```bash
# ~/.ssh/configに追加
Host gpu-docker
    HostName [VMの外部IP]
    User [ユーザー名]
    IdentityFile ~/.ssh/id_ed25519
```

## 3. GPU環境のセットアップ

### NVIDIAドライバのインストール
```bash
# NVIDIAリポジトリの設定
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

# NVIDIA Driver 565のインストール
sudo apt install -y nvidia-driver-565
sudo reboot
```

### 環境変数の設定
```bash
# ~/.bashrcに追加
export PATH=/usr/local/cuda-12.7/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.7/lib64:$LD_LIBRARY_PATH

# 設定の反映
source ~/.bashrc
```

### CUDA Toolkit 12.7のインストール
```bash
# CUDA Toolkitのインストール
sudo apt install -y cuda-toolkit-12-7
```

### インストール確認
```bash
# ドライバーバージョンの確認
nvidia-smi

# CUDAバージョンの確認
nvcc --version
```

## 4. Dockerのセットアップ

### Dockerのインストール
```bash
# 必要なパッケージのインストール
sudo apt update
sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# Dockerの公式GPGキーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Dockerリポジトリの設定
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Dockerのインストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# ユーザーをdockerグループに追加
sudo usermod -aG docker $USER
```

## 5. NVIDIA Container Toolkitのインストール
```bash
# リポジトリの設定
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# NVIDIA Container Toolkitのインストール
sudo apt update
sudo apt install -y nvidia-docker2
sudo systemctl restart docker
```

## 6. 動作確認

### GPUサポートの確認
```bash
# NVIDIA-SMIコンテナでの確認
sudo docker run --gpus all nvidia/cuda:12.7.0-base nvidia-smi
```

### サンプルGPUワークロードの実行
```bash
# TensorFlow-GPUコンテナの実行
docker run --gpus all -it tensorflow/tensorflow:latest-gpu python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
```

## 7. セキュリティとベストプラクティス

### ファイアウォールの設定
1. 必要最小限のポートのみを開放
2. SSH接続用のポート（デフォルト22）のセキュリティ強化

### Dockerのベストプラクティス
1. コンテナごとに1つのアプリケーションを実行[5]
2. イメージのサイズを最小限に保つ
3. マルチステージビルドの活用
4. 適切なタグ付けとバージョン管理

## 8. コスト管理

### インスタンスの停止
- 使用しない時間帯はインスタンスを停止
- 永続ディスクのデータは保持される
- GPUとCPUの課金を停止できる

### コスト最適化
1. プリエンプティブルインスタンスの利用検討
2. 適切なディスクタイプの選択
3. 自動シャットダウンスクリプトの活用

## 9. まとめ
このセットアップにより、GPUを活用したコンテナ開発環境が構築され、機械学習やディープラーニングのワークロードを効率的に実行できます。セキュリティとコスト管理を適切に行うことで、安全で効率的な開発環境として活用できます。