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
Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
Se você tiver várias assinaturas do Azure, certifique-se de selecionar a assinatura correta na qual os recursos serão criados e cobrados usando o comando az account set .
Nota
A assinatura que você usa deve ter cota de VM de GPU.
Azure CLI versão 2.47.0 ou posterior instalado e configurado. Executar
az --version
para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).O cliente de linha de comando Kubernetes, kubectl, instalado e configurado. Para obter mais informações, consulte Instalar kubectl.
Registre o sinalizador de recurso de complemento do operador da cadeia de ferramentas de IA.
Instalar a extensão de visualização 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 da cadeia de ferramentas de IA
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.
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
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 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.
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
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}
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
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
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
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
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.
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}')
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.
Azure Kubernetes Service