次の方法で共有


AI ツールチェーン オペレーター (プレビュー) を使用して Azure Kubernetes Service (AKS) で推論用の AI モデルを微調整してデプロイする

この記事では、AKS 用の AI ツールチェーン オペレーター アドオン (プレビュー) を使用して、言語モデルの推論ワークロードを微調整してデプロイする方法について説明します。 次のタスクを実行する方法について説明します。

AI ツールチェーン オペレーター (KAITO) は、AKS クラスター上の AI モデルのデプロイと運用を簡略化する AKS 用のマネージド アドオンです。 KAITO バージョン 0.3.1 以降では、AKS マネージド アドオンを使用して、サポートされている基盤モデルを新しいデータで微調整し、AI モデルの精度を向上させることができます。 パラメーター効率の高い微調整方法とそのユース ケースの詳細については、「概念 - AKS 上で AI と機械学習ワークフローの言語モデルを微調整する」を参照してください。

重要

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。

開始する前に

  • この記事は、AKS クラスターがすでに存在していることを前提としています。 クラスターがない場合は、Azure CLIAzure PowerShell、または Azure portal を使用して作成します。
  • インストールおよび構成済みの Azure CLI バージョン 2.47.0 以降。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

前提条件

  • Kubernetes コマンド ライン クライアント kubectl がインストールされ、構成されていること。 詳細については、kubectl のインストールに関するページを参照してください。
  • AKS クラスターで、新規または既存の Azure Container Registry (ACR) 統合を構成します。
  • AKS クラスターに AI ツールチェーン オペレーター アドオンをインストールします。
  • 既に AI ツールチェーン オペレーター アドオンがインストールされている場合は、KAITO v0.3.1 以降が実行されるように AKS クラスターを最新バージョンに更新し、AI ツールチェーン オペレーター アドオン機能フラグが有効になっていることを確認します。

環境変数をエクスポートします

この記事では構成手順を簡略化するために、次のコマンドを使用して環境変数を定義できます。 プレースホルダーの値は、実際の値に置き換えてください。

ACR_NAME="myACRname"
ACR_USERNAME="myACRusername"
REPOSITORY="myRepository"
VERSION="repositoryVersion'
ACR_PASSWORD=$(az acr token create --name $ACR_USERNAME --registry $ACR_NAME --expiration-in-days 10 --repository $REPOSITORY content/write content/read --query "credentials.passwords[0].value" --output tsv)

プライベート レジストリ用の新しいシークレットを作成する

この例では、KAITO 微調整デプロイによってコンテナー化されたアダプター出力が生成され、KAITO ワークスペースには、アダプター イメージを ACR にプッシュするための認可として新しいプッシュ シークレットが必要です。

kubectl create secret docker-registry コマンドを使用してモデルの微調整出力イメージを ACR にプッシュするための KAITO 微調整ワークスペース アクセスを提供する新しいシークレットを生成します。

kubectl create secret docker-registry myregistrysecret --docker-server=$ACR_NAME.azurecr.io --docker-username=$ACR_USERNAME --docker-password=$ACR_PASSWORD

AI モデルを微調整する

この例では、次の Phi-3-mini KAITO 微調整ワークスペース CRD を適用して qLoRA チューニング方法を使用し、Phi-3-mini 小規模言語モデルを微調整します。

apiVersion: kaito.sh/v1alpha1
kind: Workspace
metadata:
     name: workspace-tuning-phi-3-mini
resource:
     instanceType: "Standard_NC24ads_A100_v4"
     labelSelector:
          matchLabels:
                apps: tuning-phi-3-mini-pycoder
tuning:
     preset:
         name: phi3mini128kinst
  method: qlora
  input:
      urls: 
          - “myDatasetURL”
  output:
      image: “$ACR_NAME.azurecr.io/$REPOSITORY:$VERSION”
      imagePushSecret: myregistrysecret

この例では、入力の URL で指定されたパブリック データセットを使用します。 微調整データのソースとしてイメージを選択する場合は、KAITO 微調整 API 仕様を参照し、ACR からイメージをプルするように入力を調整してください。

Note

モデルの微調整には通常、モデル推論よりも多くの GPU メモリが必要となるため、GPU SKU の選択は重要です。 GPU のメモリ不足エラーを回避するには、NVIDIA A100 以上のレベルの GPU を使用することをお勧めします。

  1. kubectl apply コマンドを使用して、KAITO 微調整ワークスペース CRD を適用します。

    kubectl apply workspace-tuning-phi-3-mini.yaml
    
  2. kubectl get workspace コマンドを使用して、GPU リソース、微調整ジョブ、ワークスペースの準備状況を追跡します。

    kubectl get workspace -w
    

    出力は次の出力例のようになります。

    NAME                         INSTANCE                  RESOURCE READY  INFERENCE READY  JOB STARTED  WORKSPACE SUCCEEDED  AGE
    workspace-tuning-phi-3-mini  Standard_NC24ads_A100_v4  True                             True                              3m 45s
    
  3. kubectl get pods コマンドを使用して、微調整ジョブ ポッドの状態を確認します。

    kubectl get pods
    

Note

アダプターは、コンテナー イメージまたは Kubernetes でサポートされている任意のストレージの種類として、特定の出力場所に格納できます。

推論用に微調整されたモデルをデプロイする

次に、前のセクションで作成した Phi-3-mini アダプター イメージを、このモデルでの新しい推論デプロイに使用します。

以下の KAITO 推論ワークスペース CRD は、AKS クラスターにデプロイする次のリソースとアダプターで構成されています。

apiVersion: kaito.sh/v1alpha1
kind: Workspace
metadata:
  name: workspace-phi-3-mini-adapter
resource:
  instanceType: "Standard_NC6s_v3"
  labelSelector:
    matchLabels:
      apps: phi-3-adapter
inference:
  preset:
    name: “phi-3-mini-128k-instruct“
  adapters:
    -source:
       name: kubernetes-adapter
       image: $ACR_NAME.azurecr.io/$REPOSITORY:$VERSION
       imagePullSecrets:
             - myregistrysecret
     strength: “1.0”

Note

必要に応じて、追加の "ソース" フィールドを定義することで、異なるデータ セットで同じモデルを使用して微調整デプロイで作成した複数のアダプターをプルできます。 さまざまなアダプターを使用して推論し、さまざまなコンテキストで微調整されたモデルのパフォーマンスを比較します。

  1. kubectl apply コマンドを使用して、KAITO 推論ワークスペース CRD を適用します。

    kubectl apply -f workspace-phi-3-mini-adapter.yaml
    
  2. kubectl get workspace コマンドを使用して、GPU リソース、推論サーバー、ワークスペースの準備状況を追跡します。

    kubectl get workspace -w
    

    出力は次の出力例のようになります。

    NAME                          INSTANCE          RESOURCE READY  INFERENCE READY  JOB STARTED  WORKSPACE SUCCEEDED  AGE
    workspace-phi-3-mini-adapter  Standard_NC6s_v3  True            True                          True                 5m 47s
    
  3. kubectl get pods コマンドを使用して、推論ワークロード ポッドの状態を確認します。

    kubectl get pods
    

    ポッドが Running の状態になるまで、数分かかる場合があります。

モデル推論サービス エンドポイントをテストする

  1. kubectl get svc コマンドを使用して、モデル推論サービスを確認し、サービス IP アドレスを取得します。

    export SERVICE_IP=$(kubectl get svc workspace-phi-3-mini-adapter -o jsonpath=’{.spec.clusterIP}’)
    
  2. kubectl run コマンドを使用して、任意のサンプル入力で微調整された Phi-3-mini モデルを実行します。 次の例では、生成 AI モデルに "AKS とは何ですか?" と尋ねています。

    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\":\"What is AKS?\"}"
    

    出力は次の例のようになります。

    "Kubernetes on Azure" is the official name.
    https://learn.microsoft.com/en-us/azure/aks/ ...
    

リソースをクリーンアップする

これらのリソースが不要になった場合は、余分な Azure 料金の発生を避けるために削除できます。 リソースの推定コストを計算するには、Azure 料金計算ツールを使用できます。

kubectl delete workspace コマンドを使用して、AKS クラスター上の KAITO ワークスペースと割り当てられたリソースを削除します。

kubectl delete workspace workspace-tuning-phi-3-mini
kubectl delete workspace workspace-phi-3-mini-adapter

次のステップ