Implementación de un modelo de IA en Azure Kubernetes Service (AKS) con el operador de cadena de herramientas de IA (versión preliminar)
El operador de cadena de herramientas de IA (KAITO) es un complemento administrado para AKS que simplifica la experiencia de ejecución de modelos de IA OSS en los clústeres de AKS. El operador de cadena de herramientas de IA aprovisiona automáticamente los nodos de GPU necesarios y configura el servidor de inferencia asociado como servidor de punto de conexión para los modelos de IA. El uso de este complemento reduce el tiempo de incorporación y le permite centrarse en el uso y el desarrollo del modelo de IA en lugar de en la configuración de la infraestructura.
En este artículo se muestra cómo habilitar el complemento del operador de cadena de herramientas de IA e implementar un modelo de IA en AKS.
Importante
Las características en versión preliminar de AKS están disponibles como opción de participación y autoservicio. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de AKS reciben cobertura parcial del soporte al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:
Antes de empezar
- En este artículo se presupone un conocimiento básico de los conceptos de Kubernetes. Para más información, vea Conceptos básicos de Kubernetes para AKS.
- Para obtener todas las imágenes de inferencia de modelos hospedadas y la configuración de infraestructura recomendada, consulte Repositorio de GitHub de KAITO.
- El complemento del operador de cadena de herramientas de IA admite actualmente la versión 0.1.0 de KAITO. Téngalo en cuenta al elegir el modelo en el repositorio de modelos de KAITO.
Requisitos previos
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Si tiene varias suscripciones de Azure, asegúrese de seleccionar la suscripción correcta en la que se crearán los recursos y se cobrarán mediante el comando az account set.
Nota:
La suscripción que use debe tener cuota de máquina virtual de GPU.
CLI de Azure versión 2.47.0 o posterior instalada y configurada. Ejecute
az --version
para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.El cliente de línea de comandos de Kubernetes, kubectl, instalado y configurado. Para más información, vea Instalación de kubectl.
Instalar la extensión de la versión preliminar de AKS de la CLI de Azure.
Registre la marca de características del operador de cadena de herramientas de IA.
Instalación de la extensión de versión preliminar de la CLI de Azure
Instale la extensión de versión preliminar de la CLI de Azure mediante el comando az extension add.
az extension add --name aks-preview
Actualice la extensión para asegurarse de que tiene la versión más reciente mediante el comando az extension update .
az extension update --name aks-preview
Registro de la marca de características del operador de cadena de herramientas de IA
Registre la marca de característica AIToolchainOperatorPreview mediante el comando az feature register.
az feature register --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
El proceso de registro tarda unos minutos en completarse.
Compruebe el registro mediante el comando az feature show.
az feature show --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
Exportación de variables de entorno
Para simplificar los pasos de configuración de este artículo, puede definir variables de entorno mediante los comandos siguientes. Asegúrese de reemplazar los valores del marcador de posición por otros propios.
export AZURE_SUBSCRIPTION_ID="mySubscriptionID" export AZURE_RESOURCE_GROUP="myResourceGroup" export AZURE_LOCATION="myLocation" export CLUSTER_NAME="myClusterName"
Habilitación del complemento de operador de cadena de herramientas de IA en un clúster de AKS
En las secciones siguientes se describe cómo crear un clúster de AKS con el complemento del operador de cadena de herramientas de IA habilitado e implementar un modelo de IA hospedado predeterminado.
Creación de un clúster de AKS con el complemento del operador de cadena de herramientas de IA habilitado
Cree un grupo de recursos de Azure con el comando az group create.
az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
Cree un clúster de AKS con el complemento del operador de cadena de herramientas de IA habilitado mediante el comando az aks create con las marcas
--enable-ai-toolchain-operator
y--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:
AKS crea una identidad administrada una vez que habilite el complemento de operador de cadena de herramientas de IA. La identidad administrada se usa para crear grupos de nodos de GPU en el clúster de AKS administrado. Es necesario establecer los permisos adecuados para ello manualmente siguiendo los pasos introducidos en las secciones siguientes.
La habilitación del operador de cadena de herramientas de IA requiere la habilitación del emisor de OIDC.
En un clúster de AKS existente, puede habilitar el complemento del operador de cadena de herramientas de IA mediante el comando az aks update.
az aks update --name ${CLUSTER_NAME} \ --resource-group ${AZURE_RESOURCE_GROUP} \ --enable-oidc-issuer \ --enable-ai-toolchain-operator
Conexión al clúster
Configure
kubectl
para conectarse al clúster mediante el comando az aks get-credentials.az aks get-credentials --resource-group ${AZURE_RESOURCE_GROUP} --name ${CLUSTER_NAME}
Compruebe la conexión al clúster con el comando
kubectl get
.kubectl get nodes
Exportación de variables de entorno
Exporte variables de entorno para el grupo de recursos de MC, la identidad de identificador de entidad de seguridad y la identidad KAITO mediante los siguientes 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}"
Obtención del emisor de OpenID Connect (OIDC) de AKS
Obtenga la dirección URL del emisor de OIDC de AKS y expórtela como una variable de entorno:
export AKS_OIDC_ISSUER=$(az aks show --resource-group "${AZURE_RESOURCE_GROUP}" \ --name "${CLUSTER_NAME}" \ --query "oidcIssuerProfile.issuerUrl" \ -o tsv)
Creación de una asignación de roles para la entidad de servicio
Cree una nueva asignación de roles para la entidad de servicio mediante el comando az role assignment create.
az role assignment create --role "Contributor" \ --assignee "${PRINCIPAL_ID}" \ --scope "/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourcegroups/${AZURE_RESOURCE_GROUP}"
Establecimiento de una credencial de identidad federada
Cree la credencial de identidad federada entre la identidad administrada, el emisor de OIDC de AKS y el sujeto mediante el 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
Comprobación de que la implementación se está ejecutando
Reinicie la implementación del aprovisionamiento de GPU KAITO en los pods mediante el comando
kubectl rollout restart
:kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
Compruebe que la implementación se está ejecutando con el comando
kubectl get
:kubectl get deployment -n kube-system | grep kaito
Implementación de un modelo de IA hospedado predeterminado
Implemente el modelo Falcon 7B-instruct desde el repositorio de modelos de KAITO mediante el comando
kubectl apply
.kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
Realice el seguimiento de los cambios de recursos activos en el área de trabajo mediante el comando
kubectl get
.kubectl get workspace workspace-falcon-7b-instruct -w
Nota:
A medida que realiza un seguimiento de los cambios de recursos activos en el área de trabajo, tenga en cuenta que la preparación de la máquina puede tardar hasta 10 minutos y la preparación del área de trabajo hasta 20 minutos.
Compruebe el servicio y obtenga la dirección IP del servicio mediante el comando
kubectl get svc
.export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
Ejecute el modelo Falcon 7B-instruct con la entrada de ejemplo que prefiera mediante el siguiente 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\"}"
Limpieza de recursos
Si ya no necesita estos recursos, puede eliminarlos para evitar incurrir en cargos de Azure adicionales.
Elimine el grupo de recursos y sus recursos asociados mediante el comando az group delete.
az group delete --name "${AZURE_RESOURCE_GROUP}" --yes --no-wait
Pasos siguientes
Para obtener más opciones del modelo de inferencia, vea el repositorio de KAITO en GitHub.
Azure Kubernetes Service