この記事は何か
Azureの初月の無料クレジット枠を使い VM で TRELLIS.2 を動かそうとして、最終的に H100 のクォータが通らず失敗した ときの作業メモです。
結論から書くと、無料クレジットのサブスクリプションでは NCads H100 v5 Series のクォータ増加が承認されませんでした。
VM の作り方を間違えたというより、サブスクリプション種別の制限に引っかかった形です。
この記事では、実際にやった VM 作成、SSH 接続、TRELLIS の準備、H100 へのリサイズ、クォータ申請、失敗確認、後始末までを残します。
やりたかったこと
やりたかったのはシンプルです。
Azure 上に GPU VM を立てて、Microsoft の TRELLIS.2 を動かしたい。
TRELLIS.2 は image-to-3D 系のモデルです。ローカルで軽く試せるかと思ったら、要求される GPU の性能がかなり高いです。
今回の目標 VM はこれでした。
Standard_NC40ads_H100_v5
Japan East でこの VM を 1 台使うには、少なくとも以下のクォータが必要でした。
NCads H100 v5 Series: 40 cores
最初から H100 VM を作ると高いので、まずは CPU VM を作って、SSH や Ubuntu の準備だけ済ませてから GPU VM にリサイズする方針にしました。
今回の VM 設定
最初に作った CPU VM は、GPU 実行用ではなく下準備用です。
| 項目 | 設定 |
|---|---|
| リソースグループ | rg-trellis-test |
| VM 名 | vm-trellis-a10-01 |
| リージョン | Japan East |
| 可用性ゾーン | Zone 1 |
| イメージ | Ubuntu Server 22.04 LTS x64 Gen2 |
| アーキテクチャ | x64 |
| 認証方式 | SSH 公開キー |
| 管理ユーザー | azureuser |
| OS ディスク | 128GB 以上 |
| ディスク種別 | Standard SSD または Premium SSD |
| Public IP | Standard |
実際には、Japan East の容量やクォータ都合で VM サイズ選びに何度か失敗しました。
特に注意した点はこの 2 つです。
-
Bps_v2/Bpls_v2系は Arm64 なので、x64 Ubuntu とは合わない - Azure Portal に SKU が見えていても、実際に作れるとは限らない
1. Azure にログインする
まず Azure CLI でログインします。
az login
ブラウザが開いて Azure アカウントでログインします。
このあと実行する az コマンドは、このログイン中のサブスクリプションに対して実行されます。
2. 変数を設定する
毎回長い名前を書くのが面倒なので、PowerShell の変数に入れておきました。
$VMRG="rg-trellis-test"
$LOCATIONLOCATION="japaneast"
$VM_NAME="vm-trellis-a10-01"
$ADMIN_USER="azureuser"
$VMIMAGE="Ubuntu2204"
それぞれの意味は以下です。
| 変数 | 意味 |
|---|---|
$VMRG |
リソースグループ名 |
$LOCATION |
Azure リージョン |
$VM_NAME |
VM 名 |
$ADMIN_USER |
SSH ログイン用ユーザー名 |
$VMIMAGE |
VM に入れる OS イメージ |
3. リソースグループを作る
az group create `
--name $VMRG `
--location $LOCATIONLOCATION
リソースグループは、VM、ディスク、NIC、Public IP などをまとめる入れ物です。
検証用ならリソースグループを分けておくと、最後にまとめて消せます。
4. CPU VM を作る
最終的に使った CPU VM 作成コマンドはこの形です。
az vm create `
--resource-group $VMRG `
--name $VM_NAME `
--location $LOCATIONLOCATION `
--zone 1 `
--image Ubuntu2204 `
--size Standard_D2s_v3 `
--admin-username $ADMIN_USER `
--generate-ssh-keys `
--os-disk-size-gb 128 `
--storage-sku StandardSSD_LRS `
--public-ip-sku Standard
この VM でやることは、あくまで下準備です。
- SSH できるか確認する
- Ubuntu の基本パッケージを入れる
- TRELLIS / TRELLIS.2 のリポジトリを clone する
CUDA や GPU 依存のセットアップは、CPU VM ではやらない方針にしました。そこで詰まっても意味が薄いからです。
コマンドの主な意味
| オプション | 意味 |
|---|---|
--resource-group |
VM を置くリソースグループ |
--name |
VM 名 |
--location |
リージョン |
--zone 1 |
可用性ゾーン 1 に配置 |
--image Ubuntu2204 |
Ubuntu 22.04 を使用 |
--size Standard_D2s_v3 |
VM サイズ |
--admin-username |
SSH ログインユーザー |
--generate-ssh-keys |
SSH キーを自動生成 |
--os-disk-size-gb 128 |
OS ディスク容量 |
--storage-sku StandardSSD_LRS |
Standard SSD を使用 |
--public-ip-sku Standard |
Standard Public IP を使用 |
5. VM 作成で実際に踏んだエラー
最初は Standard_D4s_v5 を使おうとしました。
az vm create `
--resource-group $VMRG `
--name $VM_NAME `
--location $LOCATIONLOCATION `
--image $VMIMAGE `
--size Standard_D4s_v5 `
--admin-username $ADMIN_USER `
--generate-ssh-keys `
--os-disk-size-gb 512 `
--storage-sku Premium_LRS `
--security-type Standard `
--public-ip-sku Standard
これは失敗しました。
SkuNotAvailable
意味としては、Japan East でその VM サイズが今は使えない、ということです。
次に Standard_B4ps_v2 も試しました。
az vm create `
--resource-group $VMRG `
--name $VM_NAME `
--location $LOCATIONLOCATION `
--image $VMIMAGE `
--size Standard_B4ps_v2 `
--admin-username $ADMIN_USER `
--generate-ssh-keys `
--os-disk-size-gb 512 `
--storage-sku Premium_LRS `
--security-type Standard `
--public-ip-sku Standard
これも失敗しました。
Cannot create a VM of size 'Standard_B4ps_v2' because this VM size only supports a CPU Architecture of 'Arm64',
but an image or disk with CPU Architecture 'x64' was given.
Standard_B4ps_v2 は Arm64 VM でした。
一方、指定した Ubuntu イメージは x64 です。
ここで学んだことは単純で、VM サイズと OS イメージの CPU アーキテクチャは揃える必要があります。
6. Public IP を確認する
VM が作れたら、SSH するために Public IP を確認します。
az vm show `
--resource-group $VMRG `
--name $VM_NAME `
--show-details `
--query publicIps `
--output tsv
--query publicIps で Public IP だけを取り出しています。
7. SSH で VM に入る
ssh azureuser@<public-ip>
<public-ip> は前のコマンドで出た IP に置き換えます。
初回接続時に fingerprint の確認が出たら yes で進めます。
8. Ubuntu 側の基本セットアップ
VM に入ったら、まず apt の情報を更新します。
sudo apt update
次に、最低限必要になりそうなツールを入れます。
sudo apt install -y git git-lfs wget curl build-essential ninja-build ffmpeg libgl1 libglib2.0-0
入れているものの意味は以下です。
| パッケージ | 何に使うか |
|---|---|
git |
GitHub からコードを取得する |
git-lfs |
大きいモデルファイルなどを扱う |
wget, curl
|
ファイル取得 |
build-essential |
C/C++ ビルド用 |
ninja-build |
ビルドツール |
ffmpeg |
画像・動画処理 |
libgl1, libglib2.0-0
|
画像処理系ライブラリの依存 |
Git LFS も有効化します。
git lfs install
9. TRELLIS を clone する
TRELLIS 1 を使う場合。
git clone --recurse-submodules https://github.com/microsoft/TRELLIS.git
TRELLIS.2 を使う場合。
git clone -b main https://github.com/microsoft/TRELLIS.2.git --recursive
--recurse-submodules や --recursive は、サブモジュールも一緒に取得するための指定です。
今回は CPU VM なので、ここまでにしました。
セットアップスクリプトは GPU VM にしてから実行する予定でした。
10. VM から抜ける
exit
SSH セッションを終了します。
11. VM を deallocate する
使い終わったら、VM を割り当て解除します。
az vm deallocate `
--resource-group $VMRG `
--name $VM_NAME
ここは重要です。
Azure VM は「停止」と「割り当て解除」が別です。
compute 課金を止めたい場合は、deallocated にする必要があります。
状態確認はこのコマンドです。
az vm get-instance-view `
--resource-group $VMRG `
--name $VM_NAME `
--query "instanceView.statuses[?starts_with(code, 'PowerState/')].displayStatus" `
--output tsv
期待する表示はこれです。
VM deallocated
12. H100 VM にリサイズしようとした
CPU VM を作ったあと、H100 VM に変更しようとしました。
az vm resize `
--resource-group $VMRG `
--name $VM_NAME `
--size Standard_NC40ads_H100_v5
結果は失敗です。
Operation could not be completed as it results in exceeding approved StandardNCadsH100v5Family Cores quota.
Current Limit: 0
Current Usage: 0
Additional Required: 40
New Limit Required: 40
つまり、Japan East の StandardNCadsH100v5Family クォータが 0 なので、H100 VM を作れません。
Standard_NC40ads_H100_v5 は 40 vCPU の VM なので、最低でも 40 cores のクォータが必要でした。
13. H100 クォータを申請する
Azure Portal の「クォータ」から以下を申請しました。
| 項目 | 値 |
|---|---|
| サービス | Service and subscription limits / Quotas |
| デプロイモデル | Resource Manager |
| リージョン | Japan East |
| シリーズ | NCads H100 v5 Series |
| 要求値 | 40 cores |
| 対象 VM | Standard_NC40ads_H100_v5 |
Portal 上では Standard NCads H100 v5 Family という名前ではなく、NCads H100 v5 Series と表示されていました。
14. Quota API で申請結果を確認する
Portal だけだと理由が分かりにくかったので、Quota API でも確認しました。
まず現在のサブスクリプション ID を取得します。
$SUB = az account show --query id -o tsv
Japan East の Compute クォータを見る scope を作ります。
$SCOPE = "/subscriptions/$SUB/providers/Microsoft.Compute/locations/japaneast"
クォータ申請履歴を取得します。
az rest --method get --url "https://management.azure.com$SCOPE/providers/Microsoft.Quota/quotaRequests?api-version=2023-02-01"
結果として、以下のような失敗が確認できました。
{
"error": {
"code": "QuotaNotAvailableForResource",
"message": "Request failed."
},
"message": "Request failed.",
"provisioningState": "Failed"
}
この時点で、単なる入力ミスではなく、対象リソースのクォータ増加が使えない状態だと分かりました。
15. サポートに問い合わせた
Azure サポートにも問い合わせました。
回答の要旨は以下です。
NCads H100 v5 Series は需要が非常に高いため、
無料サブスクリプションでは可用性が制限されている。
そのため、NCads H100 v5 Series の増加要求を承認できない。
利用したい場合は、従量課金制サブスクリプションを作成し、
そのサブスクリプションから改めてクォータ増加リクエストを行う必要がある。
つまり、今回の失敗理由はコマンドのミスではなく、サブスクリプション種別の制限でした。
16. 使わないリソースを片付ける
検証が終わったら、不要なリソースは削除します。
全部まとめて消すなら、リソースグループごと削除します。
az group delete --name rg-trellis-test
これで以下がまとめて消えます。
- VM
- OS ディスク
- NIC
- Public IP
- NSG
- その他関連リソース
未接続ディスクだけ消す場合は、この形です。
az disk delete `
--resource-group rg-trellis-test `
--name "<所有者が - のディスク名>" `
--yes
Azure Portal のディスク一覧で所有者が - になっているものは、どの VM にも接続されていないディスクです。
VM 作成失敗や作り直しの途中で残ることがあります。
未接続ディスクも課金対象なので、不要なら削除します。
まとめ
今回やったことは以下です。
- Azure で CPU VM を作成した
- SSH 接続した
- Ubuntu に基本ツールを入れた
- TRELLIS / TRELLIS.2 のリポジトリを clone した
- H100 VM へリサイズしようとした
- H100 ファミリのクォータ 0 で失敗した
- クォータ申請した
- 無料クレジット枠サブスクでは H100 クォータが承認されなかった
最終的な結論はこれです。
Azure の 無料クレジット枠のサブスクリプションでは、
NCads H100 v5 Series のクォータ増加は承認されなかった。
TRELLIS.2 を Azure で動かしたい場合は、最初から以下を検討した方がよさそうです。
- 従量課金制サブスクリプションを使う
- H100 / A100 のクォータが取れるリージョンを確認する
- Azure 以外の GPU レンタルサービスを使う
- TRELLIS.2 ではなく、より軽い TRELLIS 1 や別モデルを試す
今回の一番大きい学びは、GPU VM は「SKU が見えている」だけでは使えないということです。
必要なのは、VM サイズ、リージョン容量、ファミリ別クォータ、リージョン合計 vCPU、そしてサブスクリプション種別の全部でした。
検討するなら(次のステップ)
今回の用途(TRELLIS.2などの重量級AIモデルのテスト)であれば、Azureにこだわらず以下のGPUクラウドを検討するのが現実的です。
-
最安重視:Vast.ai
- 特徴: 個人や小規模データセンターが余らせているGPUをオークション形式で借りるP2Pスタイル
- メリット: とにかく時間あたりの単価が圧倒的に安い
- 注意点: ホストの都合で突然インスタンスが停止するリスク(プリエンプティブ)があるため、使い捨ての実験環境向き
-
安さと使いやすさのバランス:RunPod
- 特徴: AI開発者に今一番人気のあるGPUクラウド。UIが非常に洗練されている
- メリット: Jupyter NotebookやWebUIへの接続テンプレートが豊富で、立ち上げまでが爆速
- 注意点: 完全にデータセンター品質の「Secure Cloud」を選ぶと、Vast.aiよりは少し高くなる
-
安定・企業寄り:Lambda Labs
- 特徴: 大手AIスタートアップや研究機関も愛用する、信頼のデータセンター品質
- メリット: H100やA100などのハイエンドGPUが、メガクラウドよりはるかに安価で安定して動く
- 注意点: 人気すぎてインスタンスの空きがないという別格の壁がある(空いてたらラッキー)
-
Azure / AWS / GCP(3大メガクラウド)
- 特徴: エンタープライズ向けの巨大インフラ
- 結論: 今回のような「ちょっと個人で試したい」用途では、単価が高すぎる上にクォータ制限の壁が厚いので、後回しでOK