共用方式為


使用 AI 工具鏈運算子 (預覽) 在 Azure Kubernetes Service (AKS) 上部署 AI 模型

部署至 Azure

AI 工具鏈作員 (KAITO) 是受控附加元件,可簡化在 AKS 叢集上執行開放原始碼和私人 AI 模型的體驗。 KAITO 可縮短導入模型和配置資源的時間,從而加速 AI 模型的原型設計與開發,避免將時間浪費在基礎設施管理上。

本文說明如何啟用 AI 工具鏈作員附加元件,並部署 AI 模型以在 AKS 上推斷。

重要

AKS 預覽功能可透過自助服務,以加入方式使用。 預覽會以「現狀」和「可供使用時」提供,其其不受服務等級協定和有限瑕疵擔保所保護。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:

開始之前

  • 本文章假設您對 Kubernetes 概念有基本瞭解。 如需詳細資訊,請參閱 AKS 的 Kubernetes 核心概念
  • 如需 所有裝載的模型預設映像 和預設資源設定,請參閱 KAITO GitHub 存放庫
  • AI 工具鏈作員附加元件目前支援 KAITO 0.4.4 版,請在考慮您從 KAITO 模型存放庫選擇模型時,記下這一點。

必要條件

安裝 Azure CLI 預覽延伸模組

  1. 使用 az extension add 命令安裝 Azure CLI 預覽延伸模組。

    az extension add --name aks-preview
    
  2. 使用 az extension update 命令更新延伸模組以確保您有最新版本。

    az extension update --name aks-preview
    

註冊 AI 工具鏈操作器插件功能標誌

  1. 使用 az feature register 命令註冊 AIToolchainOperatorPreview 功能旗標。

    az feature register --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
    

    需要幾分鐘的時間才能完成註冊。

  2. 使用 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 叢集

  1. 使用 az group create 命令建立 Azure 資源群組。

    az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION
    
  2. 使用 az aks create 命令搭配 --enable-ai-toolchain-operator--enable-oidc-issuer 旗標,建立已啟用 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
    

    附註

    一旦您啟用 AI 工具鏈操作員附加元件,AKS 就會建立受控識別。 受控識別可用來在受控 AKS 叢集中建立 GPU 節點集區。 必須按照下列各節介紹的步驟,手動為其設定適當的許可權。

  3. 在現有的 AKS 叢集上,您可以使用 az aks update 命令來啟用 AI 工具鏈運算子附加元件。

    az aks update --name $CLUSTER_NAME \
            --resource-group $AZURE_RESOURCE_GROUP \
            --enable-oidc-issuer \
            --enable-ai-toolchain-operator
    

連線至您的叢集

  1. 使用 kubectl 命令將 設定為連線到您的叢集。

    az aks get-credentials --resource-group $AZURE_RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. 使用 kubectl get 命令確認叢集的連線。

    kubectl get nodes
    

匯出環境變數

  • 使用下列命令匯出 MC 資源群組、主體識別碼身分識別和 KAITO 身分識別的環境變數:

    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"
    

建立同盟身分識別認證

  • 使用 az identity federated-credential create 命令,在受控識別、AKS OIDC 簽發者與主體之間建立同盟身分識別認證。

    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
    

    附註

    在此步驟完成之前,gpu-provisioner 控制器 Pod 會保持在損毀迴圈狀態中。 建立同盟認證後,gpu-provisioner 控制器 Pod 會達到執行中的狀態,您可以透過以下步驟來驗證部署是否正在執行。

驗證您的部署正在執行中

  1. 使用 kubectl rollout restart 命令重新啟動 Pod 上的 KAITO GPU 佈建程式部署:

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. 使用 kubectl get 命令確認 GPU 佈建工具部署正在執行:

    kubectl get deployment -n kube-system | grep kaito
    

部署預設託管 AI 模型

  1. 使用 kubectl apply 命令,從 KAITO 模型存放庫部署 Falcon 7B 指示模型預設。

    kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
    
  2. 使用 kubectl get 命令追蹤工作區中的即時資源變更。

    kubectl get workspace workspace-falcon-7b-instruct -w
    

    附註

    當您追蹤 KAITO 工作區部署時,請注意,機器整備可能需要最多 10 分鐘的時間,而工作區整備時間最多 20 分鐘,視您的模型大小而定。

  3. 檢查您的推斷服務,並使用 命令取得服務IP位址 kubectl get svc

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. 使用您選擇的範例輸入,利用OpenAI 聊天完成 API 格式,測試 Falcon 7B 指令推理服務。

    kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http://$SERVICE_IP/v1/completions -H "Content-Type: application/json" \
      -d '{
            "model": "falcon-7b-instruct",
            "prompt": "What is Kubernetes?",
            "max_tokens": 10
           }'
    

清除資源

如果您不再需要這些資源,您可以將其刪除,以避免產生額外的 Azure 計算費用。

  1. 使用 kubectl delete workspace 命令刪除 KAITO 工作區。

    kubectl delete workspace workspace-falcon-7b-instruct
    
  2. 您必須手動刪除 KAITO 部署所佈建的 GPU 節點集區。 使用由 Falcon-7b instruct workspace 創建的節點標籤,利用 az aks nodepool list 命令取得節點集區名稱。 在此範例中,節點標籤為 「kaito.sh/workspace」:「workspace-falcon-7b-instruct」。

    az aks nodepool list --resource-group $AZURE_RESOURCE_GROUP --cluster-name $CLUSTER_NAME
    
  3. 從您的 AKS 叢集刪除具有此名稱的節點集區,並針對將移除的每個 KAITO 工作區重複本節中的步驟。

常見疑難解答案例

套用 KAITO 模型推斷工作區之後,您的資源整備程度和工作區條件可能不會因為下列原因而更新為 True

  • 您可能沒有足夠的權限來操作 AKS 叢集。 確定 ai-toolchain-operator-$CLUSTER_NAME 身分識別已獲指派 Contributor 角色到您的 Azure 資源群組。 az role assignment list執行 命令,並確認結果不是空的:

    az role assignment list --scope /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP
    
  • 您的 Azure 訂用帳戶對於 KAITO 工作區中指定的最小 GPU 實例類型沒有配額。 您必須為 Azure 訂用帳戶中的 GPU VM 系列 要求增加配額

  • 您的 AKS 區域中無法使用 GPU 實例類型。 確認 特定區域中的 GPU 實例可用性 ,如果您的 GPU VM 系列無法使用,請切換 Azure 區域。

下一步

深入瞭解 下列 KAITO 模型部署選項