Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Se você tiver várias assinaturas do Azure, selecione a assinatura correta na qual os recursos serão criados e cobrados usando o comando az account set.
Observação
Sua assinatura do Azure deve possuir a cota recomendada de VM com GPU para a implantação do seu modelo, na mesma região do Azure que seus recursos do AKS.
A CLI do Azure, versão 2.47.0 ou posterior, deve estar instalada e configurada. Execute
az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.O cliente de linha de comando do Kubernetes, kubectl, instalado e configurado. Para obter mais informações, confira Instalar o kubectl.
Registrar o sinalizador de recurso de complemento do operador de cadeia de ferramentas de IA.
Instalar a extensão de versão prévia da CLI do Azure
Instale a extensão de visualização da CLI do Azure usando o comando az extension add.
az extension add --name aks-preview
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
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.
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
Crie um grupo de recursos do Azure usando o comando az group create.
az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION
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.
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
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
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 controladorgpu-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
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
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
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
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.
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}')
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.
Exclua o workspace KAITO usando o
kubectl delete workspace
comando.kubectl delete workspace workspace-falcon-7b-instruct
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
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çãoContributor
para seu grupo de recursos do Azure. Execute oaz 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:
- Ajuste um modelo com o complemento do operador de cadeia de ferramentas de IA no AKS.
- Saiba mais sobre as Práticas recomendadas do MLOps para seus pipelines de IA no AKS
- Integrar um modelo personalizado para inferência KAITO no AKS.
Azure Kubernetes Service