Quickstart — Docker
ROCm が入った Docker コンテナを使って、PyTorch で GPU 計算を 1 回動かすところまで進みます。環境を汚さず試せるのが Docker の強みです。
この教室では、Docker の細かいフラグを毎回書く代わりに、compose.yaml を使います。最初に1回だけ用意すれば、以後は短いコマンドで同じ環境を繰り返し使えます。
必要なものは2つだけです。
Docker が入っているか確認:
docker --versiondocker compose versionどちらもバージョンが表示されれば OK です。
docker-ce パッケージには docker compose が含まれています。docker compose version でバージョンが出ればそのまま使えます。
GPU の対応状況はこちらで確認できます:
作業用のフォルダを作り、その中に compose.yaml を1つ置きます。これが ROCm 環境の設定ファイルになります。
mkdir -p ~/rocm-workspace && cd ~/rocm-workspace以下の内容で compose.yaml を作成してください。
services:
rocm:
image: rocm/pytorch:latest
tty: true
stdin_open: true
devices:
- /dev/kfd
- /dev/dri
group_add:
- video
volumes:
- .:/workspace
working_dir: /workspaceimage — AMD が公開している PyTorch 入り Docker イメージdevices — GPU デバイスをコンテナに渡すgroup_add — GPU にアクセスする権限を追加volumes — このフォルダの中身をコンテナから読み書きできるようにするworking_dir — コンテナに入った瞬間に作業フォルダに立つようにする
イメージの取得(数 GB)は初回の起動時に自動で行われます。
compose.yaml があるフォルダで、この1行を実行します。
docker compose run --rm rocmコンテナのシェルに入れたら成功です。
video グループに入っているか、ROCm のカーネルドライバが入っているかを確認してください。group_add に render を追加してみてください(Ubuntu 20.04 以降で必要になることがあります)。
compose.yaml の中身を docker run のフラグに展開するとこうなります:
docker run -it --rm \
--device=/dev/kfd \
--device=/dev/dri \
--group-add video \
-v "$PWD":/workspace \
-w /workspace \
rocm/pytorch:latest長いので、この教室では compose を使います。
コンテナのシェルに入ったら、まず rocminfo で確認します。
rocminfo | head -30GPU 名が出ていれば、コンテナから GPU が見えています。
python3 -c "import torch; print('HIP:', torch.version.hip); print('GPU available:', torch.cuda.is_available())"True が出れば、PyTorch が GPU を認識しています。
これが今日のゴールです。
python3 -c "
import torch
device = torch.device('cuda')
a = torch.randn(3, 3, device=device)
b = torch.randn(3, 3, device=device)
c = torch.matmul(a, b)
print('結果:', c)
print('デバイス:', c.device)
"device='cuda:0' と出ていれば、GPU 上で計算できています。
torch.cuda という名前ですが、AMD GPU でも使える API 名です(詳しくは第1章で)。docker compose run --rm rocm で同じ環境をすぐ使えます。
「動いた」ことが確認できたら、次は2つの方向があります。