Implantar um modelo de IA no Serviço Kubernetes do Azure (AKS) com o operador da cadeia de ferramentas de IA (visualização)

O operador de cadeia de ferramentas de IA (KAITO) é um complemento gerenciado para o AKS que simplifica a experiência de executar modelos de IA OSS em seus clusters AKS. O operador da 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 desenvolvimento de modelos de IA, em vez de na configuração da infraestrutura.

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

Importante

Os recursos de visualização do AKS estão disponíveis em uma base de autosserviço e opt-in. As visualizaçõ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 visualizações do AKS são parcialmente cobertas pelo suporte ao cliente com base no melhor esforço. Como tal, estas funcionalidades não se destinam a utilização em produção. Para obter mais informações, consulte os seguintes artigos de suporte:

Antes de começar

  • Este artigo pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, consulte Conceitos principais do Kubernetes para AKS.
  • Para todas as imagens de inferência de modelo hospedado e configuração de infraestrutura recomendada, consulte o repositório KAITO GitHub.
  • O complemento do operador da cadeia de ferramentas AI atualmente suporta a versão KAITO v0.1.0, por favor, tome nota disso ao considerar sua escolha de modelo do repositório de modelos KAITO.

Pré-requisitos

Instalar a extensão de visualização 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 da cadeia de ferramentas de IA

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

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

    O registo demora alguns minutos a 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 pelos seus.

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

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

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

Crie um cluster AKS com o complemento do operador da 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 AKS com o complemento do operador da cadeia de ferramentas de IA ativado usando o comando az aks create com as --enable-ai-toolchain-operator bandeiras 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
    

    Nota

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

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

  3. Em um cluster AKS existente, você pode habilitar o complemento do operador da 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 cluster

  1. Configure 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 kubectl get comando.

    kubectl get nodes
    

Exportar variáveis de ambiente

  • Exporte variáveis de ambiente para o grupo de recursos MC, identidade de ID principal e 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}"
    

Obtenha o emissor AKS OpenID Connect (OIDC)

  • Obtenha o URL do Emissor AKS OIDC e exporte-o 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 nova 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 AKS OIDC 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 a implantação está em execução

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

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. Verifique se a implantação está sendo executada 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 Falcon 7B-instruct a partir do repositório de modelos KAITO usando o kubectl apply comando.

    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 em tempo real em seu espaço de trabalho usando o kubectl get comando.

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

    Nota

    Ao acompanhar as alterações de recursos em tempo real em seu espaço de trabalho, observe que a preparação da máquina pode levar até 10 minutos e a preparação do espaço de trabalho até 20 minutos.

  3. Verifique o seu serviço 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. Execute o modelo Falcon 7B-instruct com uma entrada de exemplo de sua escolha usando o seguinte curl comando:

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

Clean up resources (Limpar recursos)

Se você não precisar mais desses recursos, poderá excluí-los para evitar incorrer em cobranças extras do Azure.

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

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

Próximos passos

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