Open5
Azure Virtual Machines で Docker & GPU の環境を作る
GPU インスタンスを使用するには Quota が必要
NVIDIA Driver のインストール
Secure Boot の無効化
Secure Boot を無効化しないと NVIDIA Driver が正しくインストールされない. コンソールから無効化できる.
NVIDIA Driver のインストール
- ubuntu-drivers コマンドのインストール
sudo apt install ubuntu-drivers-common
- インストール可能な NVIDIA Driver を確認
ubuntu-drivers devices
- ドライバーをインストール (ex.
sudo apt install nvidia-driver-535
- VM を再起動
コンソールから再起動する. - インストールを確認
nvidia-smi
Docker のインストール
- 公式ドキュメントに従ってインストールする
https://docs.docker.com/engine/install/ubuntu/ -
azureuser
を Docker Group に追加するDocker の再起動sudo gpasswd -a azureuser docker
SSH で再接続するとsudo systemctl restart docker
sudo
なしでdocker
コマンドが実行できるようになる.
NVIDIA Container Toolkit のインストール
Docker で CUDA を利用するのに必要.
公式ドキュメントに従ってインストールする.
インストールを確認.
nvidia-container-cli info
コンテナで GPU が使えることを確認.
docker run --rm --gpus all nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04 nvidia-smi
Azure Container Registry からイメージを Pull する
User Assigned Identity で ACR にアクセスしたい
必要なこと
- VM に Azure CLI をインストール
- User Assigned ID を作成する
- VM に User Assigned ID を割り当てる
- User Assigned ID に ACR へのアクセス権を与える
公式ドキュメント
事前に定義しておく変数
# Resource Group の名前
RESOURCE_GROUP=
# User Assigned ID の名前
USER_ID_NAME=
# VM の名前
VM_NAME=
# ACR の名前
CONTAINER_REGISTRY=
VM に Azure CLI をインストール
User Assigned ID を作成する
az identity create --resource-group $RESOURCE_GROUP --name $USER_ID_NAME
VM に User Assigned ID を割り当てる
User Assigned ID の Resource ID を取得
USER_ID=$(az identity show --resource-group $RESOURCE_GROUP --name $USER_ID_NAME --query id --output tsv)
User Assigned ID の Service Principal ID を取得
SP_ID=$(az identity show --resource-group $RESOURCE_GROUP --name $USER_ID_NAME --query principalId --output tsv)
az vm identity assign --resource-group $RESOURCE_GROUP --name $VM_NAME --identities $USER_ID
User Assigned ID に ACR へのアクセス権を与える
ACR の Resource ID を取得
ACR_ID=$(az acr show --resource-group $RESOURCE_GROUP --name $CONTAINER_REGISTRY --query id --output tsv)
ACR から Pull を行う権限を付与
az role assignment create --assignee $SP_ID --scope $ACR_ID --role acrpull
VM から ACR にアクセス
VM 上で Azure CLI の認証
VM
az login --identity --username $USER_ID
ACR の認証
VM
az acr login --name $CONTAINER_REGISTRY
これで VM から ACR にアクセス可能になった
VM
docker pull <registry-name>.azurecr.io/<image-name>:<image-tag>