共用方式為


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

AI 工具鏈操作員 (KAITO) 是 AKS 的受控附加元件,可簡化在 AKS 叢集上執行 OSS AI 模型的體驗。 AI 工具鏈操作員會自動佈建必要的 GPU 節點,並將相關聯的推斷伺服器設定為 AI 模型的端點伺服器。 使用此附加元件可減少上線時間,並可讓您專注於 AI 模型使用和開發,而不是基礎結構設定。

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

重要

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

開始之前

  • 本文章假設您對 Kubernetes 概念有基本瞭解。 如需詳細資訊,請參閱 AKS 的 Kubernetes 核心概念
  • 如需所有已裝載的模型推斷映像和建議的基礎結構設定,請參閱 KAITO GitHub 存放庫
  • AI 工具鏈操作員附加元件目前支援 KAITO 0.1.0 版,請考慮從 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. 使用 az aks get-credentials 命令將 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 命令驗證部署正在執行中:

    kubectl get deployment -n kube-system | grep kaito
    

部署預設託管 AI 模型

  1. 使用 kubectl apply 命令從 KAITO 模型存放庫部署 Falcon 7B-instruct 模型。

    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
    

    注意

    當您追蹤工作區中的即時資源變更時,請注意,機器最多可能需要 10 分鐘才會就緒,工作區最多可能需要 20 分鐘才會就緒。

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

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. 使用下列 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 計算費用。

  • 使用 kubectl delete workspace 命令刪除 KAITO 工作區及其相關聯的資源。

    kubectl delete workspace workspace-falcon-7b-instruct
    

下一步

如需更多模型部署選項,請參閱上游 KAITO GitHub 存放庫