はじめに
EC2 の GPU 環境で Docker を利用できるようにする手順をまとめました。
リミット上限緩和申請 → EC2 インスタンス作成 → Docker & NVIDIA ドライバ & Nvidia Container Toolkit のセットアップ の流れを紹介します。
目次
1. リミット上限緩和申請
EC2 ではデフォルトで GPU インスタンスが使用できないため、リミットの引き上げ申請 が必要です。
手続き自体は簡単ですが、AWS の UI は変更されることがあり、古い記事の手順ではうまくいかないことがあります。
ここでは、2025年3月7日現在の最新の手順 を紹介します。
リミット申請の詳細は、AWS 公式ドキュメントも参考にしてください。
今回は g4dn.xlarge インスタンスを利用できるように申請を行います。
リミット申請の手順
- AWSコンソールでService Quotas を開く
- 画面右上のナビゲーションバーから、使用する リージョンを選択(例: Oregon)
- 検索窓に
Running On-Demand G and VT instances
と入力し、検索結果をクリック- g4dn.xlarge を利用する場合はこれを選択
- 他のインスタンスを使う場合は、それに合った「Running On-Demand 〇〇」を選択
- 右上の 「Request increase at account level」 をクリック
-
「Increase quota value」 に 必要な vCPU 数を入力 して申請
-
g4dn.xlarge は 1 インスタンスあたり vCPU を 4 個使用する →
4
を入力
-
g4dn.xlarge は 1 インスタンスあたり vCPU を 4 個使用する →
-
承認のメールを待つ
- 私の場合、申請から約 30 分後に承認メールが届きました。
これで、AWS EC2 で GPU インスタンスを使用する準備が整いました。
2. EC2でGPUインスタンス作成
AWS EC2 で GPU インスタンスを利用するための手順を説明します。
ここでは g4dn.xlarge インスタンスを例に、セットアップを進めます。
- AWS EC2 コンソールを開く
- 画面右上のナビゲーションバーから、リミット申請時に選択したリージョンを選択(例: Oregon)
- 「Launch instance」 をクリック
-
インスタンスの設定を行う(必要に応じて変更可能)
-
Name and tags(インスタンスの名前)
- 任意の名前を入力(例:
gpu-instance
)
- 任意の名前を入力(例:
-
Application and OS Images(Amazon Machine Image, AMI)
- 「Quick Start」から Ubuntu を選択
-
Instance type(インスタンスタイプ)
- 検索窓で
g4dn.xlarge
と入力して選択
- 検索窓で
-
Key pair(SSH キーペアの作成)
- 「Create key pair」 をクリック
-
「Key pair name」 に任意の名前(例:
gpukey
)を入力 - 自分の
~/.ssh
に合わせた Key pair type を選択 -
.pem
を選択し、「Create key pair」 をクリック - ダウンロードした
.pem
ファイルを~/.ssh/
に保存し、適切な権限を設定chmod 400 ~/.ssh/gpukey.pem
-
Configure storage(ストレージ設定)
- 30 GiBまで無料(変更しなくてもOK)
-
Name and tags(インスタンスの名前)
- 設定が完了したら、「Launch instance」 をクリック
- ここから課金が開始されます(g4dn.xlarge の場合、約 0.5 ドル/時間)。
EC2 インスタンスへのSSH接続
インスタンスの作成が完了したら、以下の手順で SSH 接続を行います。
- Public IPv4 DNS をコピー
- AWS EC2 コンソールの Instances に移動
- 作成したインスタンスにチェックを入れる
-
Public IPv4 DNS をコピー(例:
ec2-12-34-56-78.us-west-2.compute.amazonaws.com
)
2.ターミナルで SSH 接続
以下のコマンドを実行し、EC2 インスタンスに接続します。
ssh -i ~/.ssh/gpukey.pem ubuntu@ec2-12-34-56-78.us-west-2.compute.amazonaws.com
3.初回接続時の確認
最初の接続時に以下のようなメッセージが表示されます。
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes
と入力して Enter を押してください。
4.接続完了
ターミナルに以下のように表示されれば、SSH 接続が成功しています。
ubuntu@ip-192-168-1-100:~$
これで、EC2 インスタンス内で操作が可能になります。
3. Dockerインストール
EC2 インスタンスに Docker をインストールします。
以下の手順でセットアップを進めます。
パッケージリストの更新
sudo apt-get update
Docker のインストール
sudo apt-get install -y docker.io
ユーザーを Docker グループに追加
通常、Docker は root 権限が必要ですが、非 root ユーザー(例: ubuntu
)でも使用できるようにするために、docker
グループに追加します。
sudo gpasswd -a ubuntu docker
Docker のインストール確認
最後に、Docker が正しくインストールされたことを確認します。
docker --version
実行すると、以下のように Docker のバージョンが表示されます。
Docker version 20.10.12, build e91ed57
これで Docker のインストールは完了です。
4. Nvidiaドライバインストール
GPU を利用するために、NVIDIA ドライバをインストールします。
ubuntu-drivers devices
で簡単にインストールすることができます。
ubuntu-drivers devicesのインストール
sudo apt install -y ubuntu-drivers-common
推奨ドライバの確認
ubuntu-drivers devices
このコマンドを実行すると、次のような結果が表示されます。
modalias : pci:v000010DEd00001EB8sv000010DEsd000012A2bc03sc02i00
vendor : NVIDIA Corporation
model : TU104GL [Tesla T4]
driver : nvidia-driver-535 - distro non-free recommended
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-570-server - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-470 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
いくつかのドライバが表示されますが、recommended
のマークが付いているものをインストールします。
推奨ドライバのインストール
推奨ドライバ(nvidia-driver-535
)をインストールします。
sudo apt install -y nvidia-driver-535
インストール後の確認
ドライバのインストールが完了したら、サーバーを再起動します。
sudo reboot
再起動したら、InstancesでPublic IPv4 DNS をコピーし直してもう一度ssh接続します。
以下のコマンドを実行し、ドライバが正しくインストールされたか確認します。
nvidia-smi
5. NVIDIA Container Toolkitインストール
Docker で GPU を使用できるようにするために、NVIDIA Container Toolkit をインストールします。
「With apt: Ubuntu, Debian」 の項目に記載されている方法でインストールを行います。
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 systemctl restart docker
Docker で GPU が使えるか確認
docker run --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi
正常に動作していれば、GPU 情報が表示されます。
これで、Docker 上で GPU が利用可能になりました。