AI ツールチェーン オペレーター (プレビュー) を使用して Azure Kubernetes Service (AKS) に AI モデルをデプロイする
AI ツールチェーン オペレーター (KAITO) は、AKS クラスターで OSS AI モデルを実行するエクスペリエンスを簡略化する AKS 用のマネージド アドオンです。 AI ツールチェーン オペレーターは、必要な GPU ノードを自動的にプロビジョニングし、関連付けられている推論サーバーを AI モデルへのエンドポイント サーバーとして設定します。 このアドオンを使用すると、オンボード時間が短縮され、インフラストラクチャのセットアップではなく、AI モデルの使用と開発に集中できます。
この記事では、AI ツールチェーン オペレーター アドオンを有効にし、AKS に AI モデルをデプロイする方法について説明します。
重要
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。
開始する前に
- この記事では、Kubernetes の基本的な概念を理解していることを前提としています。 詳細については、AKS における Kubernetes の中心概念に関するページを参照してください。
- すべてのホステッド モデル推論用イメージおよび推奨されるインフラストラクチャのセットアップについては、KAITO GitHub リポジトリを参照してください。
- 現在、AI ツールチェーン オペレーター アドオンは、KAITO バージョン 0.1.0 をサポートしています。KAITO モデル リポジトリからモデルを選択することを検討する際は、この点に注意してください。
前提条件
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
複数の Azure サブスクリプションがある場合は、az account set コマンドを使用して、リソースを作成して課金する正しいサブスクリプションを選択してください。
Note
使用するサブスクリプションには、選択したモデルのデプロイ用の GPU VM クォータが必要です。
インストールおよび構成済みの Azure CLI バージョン 2.47.0 以降。 バージョンを確認するには、
az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。Kubernetes コマンド ライン クライアント kubectl がインストールされ、構成されていること。 詳細については、kubectl のインストールに関するページを参照してください。
Azure CLI プレビュー拡張機能をインストールする
az extension add コマンドを使用して Azure CLI プレビュー拡張機能をインストールします。
az extension add --name aks-preview
az extension update コマンドを使用して、拡張機能を更新して最新バージョンがあることを確認します。
az extension update --name aks-preview
AI ツールチェーン オペレーター アドオン機能フラグを登録する
az feature register コマンドを使用して、AIToolchainOperatorPreview 機能フラグを登録します。
az feature register --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
登録が完了するまでに数分かかります。
az feature show コマンドを使用して登録を確認します。
az feature show --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
環境変数をエクスポートする
この記事では構成手順を簡略化するために、次のコマンドを使用して環境変数を定義できます。 プレースホルダーの値は、実際の値に置き換えてください。
export AZURE_SUBSCRIPTION_ID="mySubscriptionID" export AZURE_RESOURCE_GROUP="myResourceGroup" export AZURE_LOCATION="myLocation" export CLUSTER_NAME="myClusterName"
AKS クラスターで AI ツールチェーン オペレーター アドオンを有効にする
次のセクションでは、AI ツールチェーン オペレーター アドオンを有効にして AKS クラスターを作成し、既定のホステッド AI モデルをデプロイする方法について説明します。
AI ツールチェーン オペレーター アドオンが有効になっている AKS クラスターを作成する
az group create コマンドを使って Azure リソース グループを作成します。
az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
--enable-ai-toolchain-operator
と--enable-oidc-issuer
フラグを指定して az aks create コマンドを使用して、AI ツールチェーン オペレーター アドオンが有効になっている AKS クラスターを作成します。az aks create --location ${AZURE_LOCATION} \ --resource-group ${AZURE_RESOURCE_GROUP} \ --name ${CLUSTER_NAME} \ --enable-oidc-issuer \ --enable-ai-toolchain-operator \ --generate-ssh-keys
Note
AI ツールチェーン オペレーター アドオンを有効にすると、AKS によってマネージド ID が作成されます。 マネージド ID は、マネージド AKS クラスターに GPU ノード プールを作成するために使用されます。 次のセクションで紹介する手順に従って、適切なアクセス許可を手動で設定する必要があります。
既存の AKS クラスターでは、az aks update コマンドを使用して、AI ツールチェーン オペレーター アドオンを有効にすることができます。
az aks update --name ${CLUSTER_NAME} \ --resource-group ${AZURE_RESOURCE_GROUP} \ --enable-oidc-issuer \ --enable-ai-toolchain-operator
クラスターへの接続
az aks get-credentials コマンドを使用して、クラスターに接続するように
kubectl
を構成します。az aks get-credentials --resource-group ${AZURE_RESOURCE_GROUP} --name ${CLUSTER_NAME}
kubectl get
コマンドを使用して、ご利用のクラスターへの接続を確認します。kubectl get nodes
環境変数をエクスポートする
次のコマンドを使用して、MC リソース グループ、プリンシパル ID、KAITO ID の環境変数をエクスポートします。
export MC_RESOURCE_GROUP=$(az aks show --resource-group ${AZURE_RESOURCE_GROUP} \ --name ${CLUSTER_NAME} \ --query nodeResourceGroup \ -o tsv) export PRINCIPAL_ID=$(az identity show --name "ai-toolchain-operator-${CLUSTER_NAME}" \ --resource-group "${MC_RESOURCE_GROUP}" \ --query 'principalId' \ -o tsv) export KAITO_IDENTITY_NAME="ai-toolchain-operator-${CLUSTER_NAME}"
AKS OpenID Connect (OIDC) 発行者を取得する
AKS OIDC 発行者 URL を取得し、それを環境変数としてエクスポートします。
export AKS_OIDC_ISSUER=$(az aks show --resource-group "${AZURE_RESOURCE_GROUP}" \ --name "${CLUSTER_NAME}" \ --query "oidcIssuerProfile.issuerUrl" \ -o tsv)
サービス プリンシパルに対するロール割り当てを作成する
az role assignment create コマンドを使用して、サービス プリンシパルに対する新しいロール割り当てを作成します。
az role assignment create --role "Contributor" \ --assignee "${PRINCIPAL_ID}" \ --scope "/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourcegroups/${AZURE_RESOURCE_GROUP}"
フェデレーション ID 資格情報を確立する
az identity federated-credential create コマンドを使用して、マネージド ID、AKS OIDC 発行者、サブジェクトの間にフェデレーション ID 資格情報を作成します。
az identity federated-credential create --name "kaito-federated-identity" \ --identity-name "${KAITO_IDENTITY_NAME}" \ -g "${MC_RESOURCE_GROUP}" \ --issuer "${AKS_OIDC_ISSUER}" \ --subject system:serviceaccount:"kube-system:kaito-gpu-provisioner" \ --audience api://AzureADTokenExchange
Note
この手順が完了するまでは、
gpu-provisioner
コントローラー ポッドはクラッシュ ループ状態のままです。 フェデレーション資格情報が作成されると、gpu-provisioner
コントローラー ポッドは実行中の状態になり、次の手順でデプロイが実行されていることを確認できます。
デプロイが実行中であることを確認する
kubectl rollout restart
コマンドを使用して、ポッドで KAITO GPU プロビジョナーのデプロイを再起動します。kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
kubectl get
コマンドを使用して、デプロイが実行されていることを確認します。kubectl get deployment -n kube-system | grep kaito
既定のホステッド AI モデルをデプロイする
kubectl apply
コマンドを使用して、KAITO モデル リポジトリから Falcon 7B-instruct モデルをデプロイします。kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
kubectl get
コマンドを使用して、ワークスペース内のライブ リソースの変更を追跡します。kubectl get workspace workspace-falcon-7b-instruct -w
Note
ワークスペース内のライブ リソースの変更を追跡するときは、マシンの準備には最大 10 分かかる場合があり、ワークスペースの準備には最大 20 分かかることに注意してください。
kubectl get svc
コマンドを使用して、サービスを確認し、サービス IP アドレスを取得します。export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
次の
curl
コマンドを使用し、任意のサンプル入力を選択して、Falcon 7B-instruct モデルを実行します。kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http://$SERVICE_IP/chat -H "accept: application/json" -H "Content-Type: application/json" -d "{\"prompt\":\"YOUR QUESTION HERE\"}"
リソースをクリーンアップする
これらのリソースが不要になった場合は、余分な Azure Compute の料金が発生しないように削除することができます。
kubectl delete workspace
コマンドを使用して、KAITO ワークスペースとそれに関連付けられているリソースを削除します。kubectl delete workspace workspace-falcon-7b-instruct
次のステップ
その他のモデル デプロイ オプションについては、アップストリームの KAITO GitHub リポジトリを参照してください。
- AKS での AI および機械学習ワークフローの MLOps を調べる
- AKS 上の AI パイプラインの MLOps のベスト プラクティス について学ぶ
- AKS に GPU ワークロードをデプロイする方法を学ぶ
Azure Kubernetes Service