この記事では、AI アプリケーションの基盤となるサーバーレス GPU を使用するコンテナー アプリを作成する方法を学習します。
サーバーレス GPU を使用すると、ドライバーのインストールなどの手動のインフラストラクチャ構成を行わなくても、GPU コンピューティング リソースに直接アクセスできるようになります。 必要なのは、AI モデルのイメージをデプロイすることだけです。
このチュートリアルでは、次のことを行います。
- 新しいコンテナー アプリと環境を作成する
- サーバーレス GPU を使用するように環境を構成する
- アプリを Azure Container Apps にデプロイする
- 新しいサーバーレス GPU 有効化アプリケーションを使用する
- アーティファクト ストリーミングを有効にして GPU コールド スタートを減らす
前提条件
| リソース | 説明 |
|---|---|
| Azure アカウント | アクティブなサブスクリプションを含む Azure アカウントが必要です。 持っていない場合は、無料で作成できます。 |
| サーバーレス GPU へのアクセス | GPU へアクセスするには、まず GPU クォータのリクエストを行う必要があります。 GPU クォータ要求は、カスタマー サポート ケースを介して送信できます。 |
| リソース | 説明 |
|---|---|
| Azure アカウント | アクティブなサブスクリプションを含む Azure アカウントが必要です。 持っていない場合は、無料で作成できます。 |
| サーバーレス GPU へのアクセス | GPU へアクセスするには、まず GPU クォータのリクエストを行う必要があります。 GPU クォータ要求は、カスタマー サポート ケースを介して送信できます。 |
| Azure CLI | Azure CLI をインストールするか、最新バージョンにアップグレードします。 |
コンテナー アプリを作成する
Azure portal に移動し、[Container Apps] を検索して選択します。
[作成] を選択した後、[コンテナー アプリ] を選択します。
[基本] ウィンドウで、各セクションに以下の値を入力します。
[プロジェクトの詳細] で、以下の値を入力します。
設定 値 サブスクリプション Azure サブスクリプションを選択します。 リソースグループ [新規作成] を選択し、「my-gpu-demo-group」と入力します。 コンテナー アプリ名 「my-gpu-demo-app」と入力します。 デプロイ ソース [コンテナー イメージ] を選択します。 [Container Apps 環境] で、以下の値を入力します。
設定 値 リージョン [スウェーデン中部] を選択します。
サポートされているその他のリージョンについては、「Azure でのサーバーレス GPU の使用」を参照してください。Container Apps 環境 [新規作成] を選択します。 [Container Apps 環境の作成] ウィンドウで、以下の値を入力します。
設定 値 環境名 「my-gpu-demo-env」と入力します。 [作成]を選択します
[次へ: コンテナー >] を選択します。
[コンテナー] ウィンドウで、以下の値を入力します。
設定 値 名前 「my-gpu-demo-container」と入力します。 イメージのソース [Docker Hub またはその他のレジストリ] を選択します。 イメージの種類 [パブリック] を選択します。 レジストリ ログイン サーバー 「mcr.microsoft.com」と入力します。 [Image and tag]\(イメージとタグ\) 「k8se/gpu-quickstart:latest」と入力します。 ワークロード プロファイル [従量課金 - 最大 4 vCPU、8 GiB メモリ] を選択します。 GPU チェックボックスを選択します。 GPU の種類 Consumption-GPU-NC8as-T4 - 最大 8 vCPU、56 GiB メモリを選択し、リンクを選択してプロファイルを環境に追加します。 [次へ: イングレス >] を選択します。
[イングレス] ウィンドウで、以下の値を入力します。
設定 値 イングレス [有効] チェック ボックスをオンにします。 イグレス トラフィック [すべての場所からのトラフィックを受け取る] ラジオ ボタンを選択します。 ターゲット ポート 「80」と入力します。 [Review + create]\(レビュー + 作成\) を選択します。
[作成]を選択します
デプロイが完了するまでしばらく待ってから、[リソースに移動] を選択します。
このプロセスが完了するには最大で 5 分かかる可能性があります。
GPU アプリを使用する
[概要] ウィンドウから、[アプリケーション URL] リンクを選択して、ブラウザーで Web アプリ フロントエンドを開き、GPU アプリケーションを使用します。
Note
- GPU アプリの最適なパフォーマンスを実現するには、サーバーレス GPU のコールド スタートを改善するための以下の手順に従います。
- アプリケーションに複数のコンテナーがある場合、最初のコンテナーが GPU にアクセスします。
環境変数を作成する
次の環境変数を定義します。 このコマンドを実行する前に、 <PLACEHOLDERS> を実際の値に置き換えます。
RESOURCE_GROUP="<RESOURCE_GROUP>"
ENVIRONMENT_NAME="<ENVIRONMENT_NAME>"
LOCATION="swedencentral"
CONTAINER_APP_NAME="<CONTAINER_APP_NAME>"
CONTAINER_IMAGE="mcr.microsoft.com/k8se/gpu-quickstart:latest"
WORKLOAD_PROFILE_NAME="NC8as-T4"
WORKLOAD_PROFILE_TYPE="Consumption-GPU-NC8as-T4"
コンテナー アプリを作成する
このチュートリアルで作成したリソースを含むリソース グループを作成します。 このコマンドを実行すると
Succeededが出力されます。az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"コンテナー アプリをホストする Container Apps 環境を作成します。 このコマンドを実行すると
Succeededが出力されます。az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --query "properties.provisioningState"ワークロード プロファイルを環境に追加します。
az containerapp env workload-profile add \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --workload-profile-name $WORKLOAD_PROFILE_NAME \ --workload-profile-type $WORKLOAD_PROFILE_TYPEコンテナー アプリを作成します。
az containerapp create \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_IMAGE \ --target-port 80 \ --ingress external \ --cpu 8.0 \ --memory 56.0Gi \ --workload-profile-name $WORKLOAD_PROFILE_NAME \ --query properties.configuration.ingress.fqdnこのコマンドは、コンテナー アプリのアプリケーション URL を出力します。
GPU アプリを使用する
ブラウザーでコンテナー アプリのアプリケーション URL を開きます。 コンテナー アプリが起動するまでに最大 5 分かかる場合があることに注意してください。
サーバーレス GPU を使用する Azure Container Apps アプリケーションを使用すると、イメージを生成するためのプロンプトを入力できます。
Generate Imageを選択するだけで、既定のプロンプトを使用することもできます。 次の手順では、GPU 処理の結果を表示します。
Note
- GPU アプリの最適なパフォーマンスを実現するには、サーバーレス GPU のコールド スタートを改善するための以下の手順に従います。
- アプリケーションに複数のコンテナーがある場合、最初のコンテナーが GPU にアクセスします。
GPU を監視する
イメージを生成したら、次の手順に従って GPU 処理の結果を表示します。
Azure portal でコンテナー アプリを開きます。
[監視] セクションから、[コンソール] を選択します。
レプリカを選択します。
コンテナーを選択します。
[ 再接続] を選択します。
[スタートアップ コマンドの選択] ウィンドウで、[/bin/bash] を選択し、[接続] を選択します。
シェルの設定が完了したら、コマンド nvidia-smi を入力して、GPU の状態と出力を確認します。
リソースをクリーンアップする
このチュートリアルで作成したリソースは、Azure の請求書に影響します。
これらのサービスを長期間にわたっては使用しない場合は、以下の手順を使用して、このチュートリアルで作成したすべてのものを削除してください。
Azure portal で、[リソース グループ] を検索して選択します。
[my-gpu-demo-group] を選択します。
[リソース グループの削除] を選択します。
確認ボックスに、「my-gpu-demo-group」と入力します。
[削除]を選択します。
次のコマンドを実行します。
az group delete --name $RESOURCE_GROUP