この記事は生成AIによって作成されています。
GCPでGPU対応Docker環境の構築手順
GCPでGPUを利用可能なDocker実行環境を構築する手順を詳しく解説します。
1. プロジェクトとGPUリソースの準備
プロジェクトの作成
- Google Cloud Consoleにアクセスし、新規プロジェクトを作成
- 請求先アカウントの設定(クレジットカード情報の登録が必要)
- Compute Engine APIの有効化
GPUリソースの割り当て申請
- IAMと管理 → 割り当てを選択
- フィルタに「GPUs (all regions)」と入力
- 必要なGPUタイプ(例:NVIDIA T4)の割り当て数を申請[1]
2. VMインスタンスの作成
基本設定
# インスタンス作成コマンド例
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接続の設定
- ローカル環境でSSH鍵を生成:
ssh-keygen -t ed25519
- 生成された公開鍵(.pub)をGCPコンソールのメタデータに登録
- SSH configファイルの設定:
# ~/.ssh/configに追加
Host gpu-docker
HostName [VMの外部IP]
User [ユーザー名]
IdentityFile ~/.ssh/id_ed25519
3. GPU環境のセットアップ
NVIDIAドライバのインストール
# 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
環境変数の設定
# ~/.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のインストール
# CUDA Toolkitのインストール
sudo apt install -y cuda-toolkit-12-7
インストール確認
# ドライバーバージョンの確認
nvidia-smi
# CUDAバージョンの確認
nvcc --version
4. Dockerのセットアップ
Dockerのインストール
# 必要なパッケージのインストール
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のインストール
# リポジトリの設定
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サポートの確認
# NVIDIA-SMIコンテナでの確認
sudo docker run --gpus all nvidia/cuda:12.7.0-base nvidia-smi
サンプルGPUワークロードの実行
# 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. セキュリティとベストプラクティス
ファイアウォールの設定
- 必要最小限のポートのみを開放
- SSH接続用のポート(デフォルト22)のセキュリティ強化
Dockerのベストプラクティス
- コンテナごとに1つのアプリケーションを実行[5]
- イメージのサイズを最小限に保つ
- マルチステージビルドの活用
- 適切なタグ付けとバージョン管理
8. コスト管理
インスタンスの停止
- 使用しない時間帯はインスタンスを停止
- 永続ディスクのデータは保持される
- GPUとCPUの課金を停止できる
コスト最適化
- プリエンプティブルインスタンスの利用検討
- 適切なディスクタイプの選択
- 自動シャットダウンスクリプトの活用
9. まとめ
このセットアップにより、GPUを活用したコンテナ開発環境が構築され、機械学習やディープラーニングのワークロードを効率的に実行できます。セキュリティとコスト管理を適切に行うことで、安全で効率的な開発環境として活用できます。