Compartir a través de


Implementación de un modelo de IA en Azure Kubernetes Service (AKS) con el operador de cadena de herramientas de IA (versión preliminar)

Implementación en Azure

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

Instalación de la extensión de versión preliminar de la CLI de Azure

  1. 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
    
  2. 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

  1. 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.

  2. 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

  1. Cree un grupo de recursos de Azure con el comando az group create.

    az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION
    
  2. 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.

  3. 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

  1. 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
    
  2. 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 de gpu-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

  1. 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
    
  2. 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

  1. 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
    
  2. 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.

  3. 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}')
    
  4. 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.

  1. Elimine el área de trabajo KAITO mediante el kubectl delete workspace comando .

    kubectl delete workspace workspace-falcon-7b-instruct
    
  2. 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
    
  3. 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 rol Contributor a su grupo de recursos Azure. Ejecute el az 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: