Compartilhar via


Implantar um modelo de IA no Azure Kubernetes Service (AKS) com o AI Toolchain Operator (em versão prévia)

Implantar no Azure

O operador de cadeia de ferramentas de IA (KAITO) é um complemento gerenciado que simplifica a experiência de execução de modelos de IA privados e de software livre no cluster do AKS. O KAITO reduz o tempo para integrar modelos e provisionar recursos, permitindo a criação e o desenvolvimento de modelos de IA mais rápidos em vez do gerenciamento de infraestrutura.

Este artigo mostra como habilitar o complemento do operador de cadeia de ferramentas de IA e implantar um modelo de IA para inferência no AKS.

Importante

As versões prévias do recurso AKS estão disponíveis em uma base de autoatendimento e aceitação. As versões prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:

Antes de começar

  • Este artigo pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, confira Conceitos básicos do Kubernetes para o AKS.
  • Para todas as imagens predefinidas do modelo hospedado e a configuração de recursos padrão, consulte o repositório GitHub do KAITO.
  • O complemento do operador de ferramentas de IA atualmente dá suporte ao KAITO versão 0.4.4, faça uma anotação disso ao considerar sua escolha de modelo no repositório de modelos KAITO.

Pré-requisitos

Instalar a extensão de versão prévia da CLI do Azure

  1. Instale a extensão de visualização da CLI do Azure usando o comando az extension add.

    az extension add --name aks-preview
    
  2. Atualize a extensão para garantir que você tenha a versão mais recente usando o comando az extension update.

    az extension update --name aks-preview
    

Registrar o sinalizador de recurso de complemento do operador de cadeia de ferramentas de IA

  1. Registre o sinalizador de recurso AIToolchainOperatorPreview usando o comando az feature register.

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

    Leva alguns minutos para o registro ser concluído.

  2. Verifique o registro usando o comando az feature show.

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

Exportar variáveis de ambiente

  • Para simplificar as etapas de configuração neste artigo, você pode definir variáveis de ambiente usando os comandos a seguir. Certifique-se de substituir os valores de espaço reservado com seus próprios valores.

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

Habilitar o complemento do operador de cadeia de ferramentas de IA em um cluster do AKS

As seções a seguir descrevem como criar um cluster do AKS com o complemento do operador de cadeia de ferramentas de IA habilitado e implantar um modelo de IA hospedado padrão.

Criar um cluster do AKS com o complemento do operador de cadeia de ferramentas de IA habilitado

  1. Crie um grupo de recursos do Azure usando o comando az group create.

    az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION
    
  2. Crie um cluster do AKS com o complemento do operador de cadeia de ferramentas de IA habilitado usando o comando az aks create com os sinalizadores --enable-ai-toolchain-operator e --enable-oidc-issuer.

    az aks create --location $AZURE_LOCATION \
        --resource-group $AZURE_RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --enable-oidc-issuer \
        --enable-ai-toolchain-operator \
        --generate-ssh-keys
    

    Observação

    O AKS cria uma identidade gerenciada após você habilitar o complemento do operador de cadeia de ferramentas de IA. A identidade gerenciada é usada para criar pools de nós de GPU no cluster gerenciado do AKS. As permissões adequadas precisam ser definidas para ele manualmente seguindo as etapas introduzidas nas seções a seguir.

  3. Em um cluster do AKS existente, você pode habilitar o complemento do operador de cadeia de ferramentas de IA usando o comando az aks update.

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

Conectar-se ao seu cluster

  1. Configure kubectl para se conectar ao seu cluster usando o comando az aks get-credentials.

    az aks get-credentials --resource-group $AZURE_RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. Verifique a conexão com o cluster usando o comando kubectl get.

    kubectl get nodes
    

Exportar variáveis de ambiente

  • Exporte variáveis de ambiente para o grupo de recursos do MC, a identidade da ID da entidade de segurança e a identidade KAITO usando os seguintes comandos:

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

Obter o emissor OpenID Connect (OIDC) do AKS

  • Obtenha a URL do Emissor OIDC do AKS e exporte-a como uma variável de ambiente:

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

Criar atribuição de função para o principal de serviço

  • Crie uma atribuição de função para a entidade de serviço usando o comando az role assignment create.

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

Estabelecer uma credencial de identidade federada

  • Crie a credencial de identidade federada entre a identidade gerenciada, o emissor OIDC do AKS e o sujeito usando o comando 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
    

    Observação

    Antes que esta etapa seja concluída, o pod do controlador gpu-provisioner permanecerá em um status de loop de falhas. Depois que a credencial federada for criada, o pod do controlador gpu-provisioner atingirá o estado em execução e você poderá verificar se a implantação está em execução nas etapas a seguir.

Verifique se sua implantação está em execução

  1. Reinicie a implantação do provisionador de GPU KAITO em seus pods usando o comando kubectl rollout restart:

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. Verifique se a implantação do provisionador de GPU está em execução usando o kubectl get comando:

    kubectl get deployment -n kube-system | grep kaito
    

Implantar um modelo de IA hospedado padrão

  1. Implante o modelo de instrução Falcon 7B predefinido do repositório de modelos KAITO usando o comando kubectl apply.

    kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
    
  2. Acompanhe as alterações de recursos ao vivo em seu workspace usando o comando kubectl get.

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

    Observação

    Ao acompanhar a implantação do workspace KAITO, observe que a preparação do computador pode levar até 10 minutos e a preparação do workspace até 20 minutos, dependendo do tamanho do seu modelo.

  3. Verifique o serviço de inferência e obtenha o endereço IP do serviço usando o kubectl get svc comando.

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. Teste o serviço de inferência do Falcon 7B com uma entrada de exemplo de sua escolha usando o formato de API de conclusões de chat do OpenAI:

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

Limpar os recursos

Caso não precise mais desses recursos, poderá excluí-los para evitar incorrer em encargos extras de computação do Azure.

  1. Exclua o workspace KAITO usando o kubectl delete workspace comando.

    kubectl delete workspace workspace-falcon-7b-instruct
    
  2. Você precisa excluir manualmente os pools de nós de GPU provisionados pela implantação do KAITO. Use o rótulo de nó criado pelo Falcon-7b para instruir o workspace a obter o nome do pool de nós usando o comando az aks nodepool list. Neste exemplo, o rótulo do nó é "kaito.sh/workspace": "workspace-falcon-7b-instruct".

    az aks nodepool list --resource-group $AZURE_RESOURCE_GROUP --cluster-name $CLUSTER_NAME
    
  3. Exclua o pool de nós com esse nome do cluster do AKS e repita as etapas nesta seção para cada workspace KAITO que será removido.

Cenários comuns de solução de problemas

Depois de aplicar o workspace de inferência do modelo KAITO, a preparação do recurso e as condições do workspace podem não ser atualizadas para True pelos seguintes motivos:

  • Talvez você não tenha permissões suficientes para operar no cluster do AKS. Verifique se a identidade ai-toolchain-operator-$CLUSTER_NAME foi atribuída à função Contributor para seu grupo de recursos do Azure. Execute o az role assignment list comando e confirme se o resultado não está vazio:

    az role assignment list --scope /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP
    
  • Sua assinatura do Azure não tem cota para o tipo mínimo de instância de GPU especificado em seu workspace KAITO. Você precisará solicitar um aumento de cota para a família de VMs de GPU em sua assinatura do Azure.

  • O tipo de instância de GPU não está disponível em sua região do AKS. Confirme a disponibilidade da instância de GPU em sua região específica e alterne a região do Azure se sua família de VMs de GPU não estiver disponível.

Próximas etapas

Saiba mais sobre as opções de implantação do modelo KAITO abaixo: