Een AI-model implementeren in Azure Kubernetes Service (AKS) met de AI-toolchainoperator (preview)

De AI-toolchainoperator (KAITO) is een beheerde invoegtoepassing voor AKS die de ervaring van het uitvoeren van OSS AI-modellen op uw AKS-clusters vereenvoudigt. De operator ai-hulpprogrammaketen richt automatisch de benodigde GPU-knooppunten in en stelt de bijbehorende deductieserver in als een eindpuntserver voor uw AI-modellen. Als u deze invoegtoepassing gebruikt, vermindert u de onboardingtijd en kunt u zich richten op het gebruik en de ontwikkeling van AI-modellen in plaats van de installatie van de infrastructuur.

In dit artikel leest u hoe u de invoegtoepassing ai-hulpprogrammaketenoperator inschakelt en een AI-model implementeert in AKS.

Belangrijk

AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals is' en 'als beschikbaar' en ze worden uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:

Voordat u begint

  • In dit artikel wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten. Zie Kubernetes-kernconcepten voor AKS voor meer informatie.
  • Zie de KAITO GitHub-opslagplaats voor alle gehoste modeldeductieinstallatiekopieën en aanbevolen infrastructuurinstallatiekopieën.
  • De invoegtoepassing ai-hulpprogrammaketenoperator ondersteunt momenteel KAITO-versie v0.1.0. Noteer dit in overweging nemend bij uw keuze uit de KAITO-modelopslagplaats.

Vereisten

  • Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

    • Als u meerdere Azure-abonnementen hebt, moet u ervoor zorgen dat u het juiste abonnement selecteert waarin de resources worden gemaakt en in rekening worden gebracht met behulp van de opdracht az account set .

      Notitie

      Het abonnement dat u gebruikt, moet een GPU-VM-quotum hebben.

  • Azure CLI versie 2.47.0 of hoger geïnstalleerd en geconfigureerd. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

  • De Kubernetes-opdrachtregelclient, kubectl, geïnstalleerd en geconfigureerd. Zie Kubectl installeren voor meer informatie.

  • Installeer de Preview-extensie van Azure CLI AKS.

  • Registreer de invoegtoepassingsvlag voor de AI-hulpprogrammaketenoperator.

De Preview-extensie van Azure CLI installeren

  1. Installeer de Azure CLI Preview-extensie met behulp van de opdracht az extension add .

    az extension add --name aks-preview
    
  2. Werk de extensie bij om ervoor te zorgen dat u de nieuwste versie hebt met behulp van de opdracht az extension update .

    az extension update --name aks-preview
    

De invoegtoepassingsvlag voor de AI-toolchainoperator registreren

  1. Registreer de functievlag AIToolchainOperatorPreview met behulp van de opdracht az feature register .

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

    Het duurt enkele minuten voordat de registratie is voltooid.

  2. Controleer de registratie met behulp van de opdracht az feature show .

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

Omgevingsvariabelen exporteren

  • Om de configuratiestappen in dit artikel te vereenvoudigen, kunt u omgevingsvariabelen definiëren met behulp van de volgende opdrachten. Zorg ervoor dat u de waarden van de tijdelijke aanduiding vervangt door uw eigen waarden.

    export AZURE_SUBSCRIPTION_ID="mySubscriptionID"
    export AZURE_RESOURCE_GROUP="myResourceGroup"
    export AZURE_LOCATION="myLocation"
    export CLUSTER_NAME="myClusterName"
    

De invoegtoepassing voor de AI-hulpprogrammaketenoperator inschakelen op een AKS-cluster

In de volgende secties wordt beschreven hoe u een AKS-cluster maakt met de invoegtoepassing AI-hulpprogrammaketenoperator ingeschakeld en een standaard gehost AI-model implementeert.

Een AKS-cluster maken waarvoor de invoegtoepassing AI-hulpprogrammaketenoperator is ingeschakeld

  1. Maak een Azure-resourcegroep met behulp van de opdracht az group create .

    az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
    
  2. Maak een AKS-cluster met de invoegtoepassing AI-hulpprogrammaketenoperator ingeschakeld met behulp van de opdracht az aks create met de --enable-ai-toolchain-operator en --enable-oidc-issuer vlaggen.

    az aks create --location ${AZURE_LOCATION} \
        --resource-group ${AZURE_RESOURCE_GROUP} \
        --name ${CLUSTER_NAME} \
        --enable-oidc-issuer \
        --enable-ai-toolchain-operator
    

    Notitie

    AKS maakt een beheerde identiteit zodra u de invoegtoepassing voor de AI-hulpprogrammaketenoperator inschakelt. De beheerde identiteit wordt gebruikt om GPU-knooppuntgroepen te maken in het beheerde AKS-cluster. De juiste machtigingen moeten hiervoor handmatig worden ingesteld door de stappen in de volgende secties te volgen.

    Voor het inschakelen van ai-hulpprogrammaketenoperators is het inschakelen van OIDC-verlener vereist.

  3. Op een bestaand AKS-cluster kunt u de invoegtoepassing ai-hulpprogrammaketenoperator inschakelen met behulp van de opdracht az aks update .

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

Verbinding maken met uw cluster

  1. Configureer kubectl deze om verbinding te maken met uw cluster met behulp van de opdracht az aks get-credentials .

    az aks get-credentials --resource-group ${AZURE_RESOURCE_GROUP} --name ${CLUSTER_NAME}
    
  2. Controleer de verbinding met uw cluster met behulp van de kubectl get opdracht.

    kubectl get nodes
    

Omgevingsvariabelen exporteren

  • Exporteer omgevingsvariabelen voor de MC-resourcegroep, principal-id en KAITO-identiteit met behulp van de volgende opdrachten:

    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}"
    

De verlener van AKS OpenID Verbinding maken (OIDC) ophalen

  • Haal de URL van de AKS OIDC Issuer op en exporteer deze als een omgevingsvariabele:

    export AKS_OIDC_ISSUER=$(az aks show --resource-group "${AZURE_RESOURCE_GROUP}" \
        --name "${CLUSTER_NAME}" \
        --query "oidcIssuerProfile.issuerUrl" \
        -o tsv)
    

Roltoewijzing maken voor de service-principal

  • Maak een nieuwe roltoewijzing voor de service-principal met behulp van de opdracht az role assignment create .

    az role assignment create --role "Contributor" \
        --assignee "${PRINCIPAL_ID}" \
        --scope "/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourcegroups/${AZURE_RESOURCE_GROUP}"
    

Een federatieve identiteitsreferentie instellen

  • Maak de federatieve identiteitsreferentie tussen de beheerde identiteit, de AKS OIDC-verlener en het onderwerp met behulp van de opdracht az identity federated-credential create .

    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
    

Controleer of uw implementatie wordt uitgevoerd

  1. Start de IMPLEMENTATIE van de KAITO GPU-inrichting opnieuw op uw pods met behulp van de kubectl rollout restart opdracht:

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. Controleer of de implementatie wordt uitgevoerd met behulp van de kubectl get opdracht:

    kubectl get deployment -n kube-system | grep kaito
    

Een standaard gehost AI-model implementeren

  1. Implementeer het Falcon 7B-instruct-model vanuit de KAITO-modelopslagplaats met behulp van de kubectl apply opdracht.

    kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
    
  2. Houd de wijzigingen in de live-resource in uw werkruimte bij met behulp van de kubectl get opdracht.

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

    Notitie

    Wanneer u de wijzigingen in de liveresource in uw werkruimte bijhoudt, moet u er rekening mee houden dat de gereedheid van de machine maximaal 10 minuten kan duren en dat de gereedheid van de werkruimte maximaal 20 minuten kan duren.

  3. Controleer uw service en haal het IP-adres van de service op met behulp van de kubectl get svc opdracht.

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. Voer het Falcon 7B-instruct-model uit met een voorbeeldinvoer van uw keuze met behulp van de volgende curl opdracht:

    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\"}"
    

Resources opschonen

Als u deze resources niet meer nodig hebt, kunt u ze verwijderen om te voorkomen dat er extra Azure-kosten in rekening worden gebracht.

  • Verwijder de resourcegroep en de bijbehorende resources met behulp van de opdracht az group delete .

    az group delete --name "${AZURE_RESOURCE_GROUP}" --yes --no-wait
    

Volgende stappen

Zie de KAITO GitHub-opslagplaats voor meer opties voor deductiemodel.