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 la 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

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
    

    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.

  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
    

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

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

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