Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El operador de cadena de herramientas de IA (KAITO) es un complemento administrado que simplifica la experiencia de ejecutar modelos de IA privados y de código abierto en tu clúster de AKS. KAITO reduce el tiempo para incorporar modelos y aprovisionar recursos, lo que permite crear prototipos y desarrollo de modelos de IA más rápidos en lugar de administrar 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 para la inferencia 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 ver todas las imágenes preestablecidas del modelo hospedado y la configuración de recursos predeterminada, consulte el repositorio kaito de GitHub.
- El complemento del operador de cadena de herramientas de IA admite actualmente la versión 0.4.4 de KAITO, tome nota de esto teniendo en cuenta la elección del modelo del repositorio de modelos 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 de Azure debe tener la cuota de máquina virtual de GPU recomendada para la implementación del modelo en la misma región de Azure que los recursos de AKS.
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.
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
Nota:
Antes de completar este paso, el pod del controlador de
gpu-provisioner
permanecerá en estado de bucle de bloqueo. Una vez creada la credencial federada, el pod de controlador degpu-provisioner
alcanzará un estado de ejecución y podrá verificar que la implementación se está ejecutando en los siguientes pasos.
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 del aprovisionamiento de GPU se está ejecutando con el
kubectl get
comando :kubectl get deployment -n kube-system | grep kaito
Implementación de un modelo de IA hospedado predeterminado
Implemente el valor preestablecido del modelo Falcon 7B-instruct desde el repositorio de modelos 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 la implementación del área de trabajo KAITO, 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 en función del tamaño del modelo.
Compruebe el servicio de inferencia y obtenga la dirección IP del servicio mediante el
kubectl get svc
comando .export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
Pruebe el servicio de inferencia Falcon 7B-instruct con un ejemplo de entrada de su elección utilizando el formato de API para finalizaciones de chat de 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 }'
Limpieza de recursos
Si ya no necesita estos recursos, puede eliminarlos para evitar incurrir en cargos adicionales de proceso de Azure.
Elimine el área de trabajo KAITO mediante el
kubectl delete workspace
comando .kubectl delete workspace workspace-falcon-7b-instruct
Debe eliminar los grupos de nodos de GPU aprovisionados por la implementación de KAITO manualmente. Use la etiqueta de nodo creada por el área de trabajo de instrucción de Falcon-7b para obtener el nombre del grupo de nodos mediante el comando
az aks nodepool list
. En este ejemplo, la etiqueta del nodo es "kaito.sh/workspace": "workspace-falcon-7b-instruct".az aks nodepool list --resource-group $AZURE_RESOURCE_GROUP --cluster-name $CLUSTER_NAME
Elimine el grupo de nodos con este nombre del clúster de AKS y repita los pasos descritos en esta sección para cada área de trabajo kaito que se quitará.
Escenarios habituales de solución de problemas
Después de aplicar el área de trabajo de inferencia del modelo KAITO, es posible que True
no actualice las condiciones de preparación del recurso y del área de trabajo por los siguientes motivos:
Es posible que no tenga permisos suficientes para operar en el clúster de AKS. Asegúrese de que a la identidad
ai-toolchain-operator-$CLUSTER_NAME
se le ha asignado el rolContributor
a su grupo de recursos Azure. Ejecute elaz role assignment list
comando y confirme que el resultado no está vacío:az role assignment list --scope /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP
La suscripción de Azure no tiene cuota para el tipo de instancia de GPU mínima especificado en su área de trabajo KAITO. Deberá solicitar un aumento de cuota para la familia de máquinas virtuales de GPU en la suscripción de Azure.
El tipo de instancia de GPU no está disponible en su región de AKS. Confirme la disponibilidad de la instancia de GPU en su región específica y cambie la región de Azure si la familia de máquinas virtuales de GPU no está disponible.
Pasos siguientes
Obtenga más información sobre las opciones de implementación del modelo KAITO a continuación:
- Ajuste un modelo con precisión con el complemento de operador de cadena de herramientas de IA en AKS.
- Obtenga información sobre Procedimientos recomendados de MLOps para sus canalizaciones de IA en AKS
- Incorpore un modelo personalizado para la inferencia KAITO en AKS.
Azure Kubernetes Service