Implantar um modelo de IA no AKS (Serviço de Kubernetes do Azure) com o operador de cadeia de ferramentas de IA (versão prévia)

O KAITO (operador de cadeia de ferramentas de IA) é um complemento gerenciado para AKS que simplifica a experiência de execução de modelos de IA do OSS em seus clusters do AKS. O operador de cadeia de ferramentas de IA provisiona automaticamente os nós de GPU necessários e configura o servidor de inferência associado como um servidor de ponto de extremidade para seus modelos de IA. O uso desse complemento reduz o tempo de integração e permite que você se concentre no uso e no desenvolvimento do modelo de IA, em vez da configuração da infraestrutura.

Este artigo mostra como habilitar o complemento do operador de cadeia de ferramentas de IA e implantar um modelo de IA 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 de inferência de modelo hospedados e a configuração de infraestrutura recomendada, confira o repositório GitHub do KAITO.
  • O complemento do operador de cadeia de ferramentas de IA atualmente dá suporte à versão KAITO v0.1.0. Observe isso ao considerar sua escolha de modelo no repositório de modelos da 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
    

    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.

    A habilitação do operador de cadeia de ferramentas de IA requer a habilitação do emissor do OIDC.

  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 o kubectl para se conectar ao 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 a entidade 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 da conta de serviço e o assunto 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
    

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 está em execução usando o comando kubectl get:

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

    À medida que você acompanha as alterações de recursos ao vivo em seu workspace, observe que a preparação do computador pode levar até 10 minutos e a preparação do workspace até 20 minutos.

  3. Verifique seu serviço e obtenha o endereço IP do serviço usando o comando kubectl get svc.

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. Execute o modelo de instrução Falcon 7B com uma entrada de amostra de sua escolha usando o seguinte comando curl:

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

Limpar os recursos

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

  • Exclua o grupo de recursos e os recursos associados usando o comando az group delete.

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

Próximas etapas

Para obter mais opções de modelo de inferência, confira o repositório GitHub do KAITO.