ROCm 10.1をDocker内で使う場合、ROCmのパッケージをイメージへ入れるだけではGPUへ届きません。LinuxホストのAMD GPUドライバーと、コンテナへ渡すデバイスが必要です。AMDのコンテナ運用資料は、Container Runtime Toolkitと手動パススルーの二つを案内しています。
ホスト側の役割
Dockerの外側では、対応するAMD GPUドライバーがGPUとLinuxカーネルをつなぎます。ROCm 10.1導入資料はドライバーとCore SDKの導入を分けて説明しています。ホストでGPUを認識できない状態なら、コンテナ内にROCmのライブラリを追加してもデバイスは現れません。ホストでrocminfoやamd-smiを使ってカードを確認するのが先です。
Ubuntu 24.04のRadeon環境では、対応するポイントリリースとカーネル系列をAMDの互換性表に合わせます。たとえばRadeon RX 9070 XTはgfx1201です。イメージ内で使うROCmのGPU向けコードもこのターゲットを含む必要があります。ホストのドライバーとイメージ内のユーザー空間を別々に管理すると、更新の対象が明確になります。
手動で渡すデバイス
AMDは、Container Runtime Toolkitを使わずにGPUを渡す方法として/dev/kfdと/dev/driの指定を示します。/dev/kfdは計算向けのインターフェース、/dev/driにはGPUのレンダーノードが含まれます。Dockerのrun資料にも、--deviceでホストのデバイスをコンテナへ公開する仕組みが記載されています。
docker run --rm -it \
--device /dev/kfd \
--device /dev/dri \
YOUR_ROCM_10_1_IMAGE
上記はデバイスの渡し方を示す形です。実行時はROCm 10.1を含む実在のイメージ名に置き換えます。AMDの資料は、必要に応じて--security-opt seccomp=unconfinedを使う例も載せています。この指定は対象ワークロードとホストの運用条件を見て加える選択であり、GPU公開の核は二つのデバイスです。
複数GPUの選択
/dev/dri全体を渡すと、ホストの複数GPUがコンテナから見える構成になります。AMDは特定GPUだけを使う場合、/dev/dri/renderD128のような個別レンダーノードを指定する例を示します。ノード番号はホストで列挙して確定します。複数カードを積んだワークステーションで、推論コンテナごとにGPUを割り当てるときに役立つ方法です。
どのカードに対応するノードかは、ホストでGPUの一覧とデバイスを照合します。コンテナ内のROCmツールが表示するGPU一覧は、渡したデバイスに制限されます。GPUを一枚だけ指定したつもりで全てを渡した場合は、/dev/driのディレクトリ指定と個別ノード指定の違いを見直します。
Container Runtime Toolkit
AMD Container Runtime Toolkitは、コンテナへのGPU注入とGPU選択を扱うツールです。AMDの資料はCDIを推奨経路として紹介し、従来型のamd-container-runtimeも説明します。GPUの枚数が多い環境やコンテナ管理を自動化する環境では、手動のデバイス指定を繰り返すよりToolkitで定義する方が管理しやすくなります。
Toolkitを使う場合も、ホスト側のドライバーとDocker Engineが前提です。コンテナのイメージが目的のROCm版を含むかも独立に確認します。vLLMなどは自身のROCm向けイメージを配布しており、イメージのタグに版数が反映されます。vLLMの記事では10.1向けの版数関係を説明しました。
認識確認と切り分け
AMDはコンテナ内のrocminfoやamd-smi listで、渡したGPUが列挙されるか確かめる方法を案内します。ホストでは見えるのにコンテナでは見えない場合、まず--deviceの指定と実行ユーザーのデバイス権限を確認します。コンテナ内でも見えるのにPyTorchがCPU実行なら、今度はイメージ内のPyTorchホイールとGPU向けコードを調べます。
Docker Composeでの指定
複数のサービスをまとめて起動するなら、AMDの資料はDocker Composeのdevicesキーも示しています。単一コンテナの--device指定と同じ考え方で、サービス定義へ/dev/kfdと/dev/driを書きます。コンテナイメージを更新しても、GPUデバイスを渡す定義がComposeファイルに残るため、運用時の構成を追いやすくなります。
services:
inference:
image: YOUR_ROCM_10_1_IMAGE
devices:
- /dev/kfd
- /dev/dri
イメージ欄には利用するアプリの実在するROCm対応イメージとタグを指定します。GPUを一枚に限定するなら、全体の/dev/driではなく対象レンダーノードを指定する構成に変えます。起動後はコンテナ内でGPU一覧を確認します。
まとめ
DockerでROCm 10.1を使う要点は、ホストの互換ドライバー、GPUデバイスの公開、10.1対応のイメージです。まず手動の/dev/kfdと/dev/driで認識を確かめ、複数GPUの運用ではToolkitを検討してください。ホストの整備はUbuntu導入から確認できます。
