Compartir a través de


Implementación de la extensión Azure Machine Learning en el clúster de AKS o Kubernetes para Arc

Para permitir que el clúster de AKS o Kubernetes para Arc, ejecute trabajos de entrenamiento o cargas de trabajo de inferencia, primero debe implementar la extensión Azure Machine Learning en el clúster. La extensión Azure Machine Learning se basa en la extensión de clúster para AKS y la extensión de clúster para Kubernetes para Arc, y su ciclo de vida se administra fácilmente con k8s-extension de la CLI de Azure.

En este artículo, aprenderá lo siguiente:

  • Requisitos previos
  • Limitaciones
  • Revisión de la configuración de la extensión de Azure Machine Learning
  • Escenarios de implementación de la extensión de Azure Machine Learning
  • Comprobación de la implementación de la extensión de Azure Machine Learning
  • Revisión de los componentes de la extensión de Azure Machine Learning
  • Administración de la extensión Azure Machine Learning

Requisitos previos

  • Un clúster de AKS en ejecución en Azure. Si no ha usado extensiones de clúster para esto, tiene que registrar el proveedor de servicios de KubernetesConfiguration.
  • O bien, un clúster de Kubernetes para Arc en funcionamiento. Siga las instrucciones que se indican en Conexión de un clúster de Kubernetes existente a Azure Arc.
  • En producción, el clúster de Kubernetes debe tener un mínimo de 4 núcleos vCPU y 14 GB de memoria. Para obtener más información sobre los detalles de los recursos y recomendaciones de tamaño de clúster, vea Planeamiento de recursos recomendado.
  • Los clústeres que se ejecutan detrás de un servidor proxy o firewall de salida necesitan configuraciones de red adicionales.
  • Instale la CLI de Azure 2.24.0 u otra posterior o actualícela a alguna de estas versiones.
  • Instale o actualice la extensión de la CLI de Azure k8s-extension a la versión 1.2.3 u otra posterior.

Limitaciones

  • Azure Machine Learning no admite el uso de una entidad de servicio con AKS. En su lugar, el clúster de AKS debe usar una identidad administrada. Se pueden usar tanto identidades administradas asignadas por el sistema como identidades administradas asignadas por un usuario. Para obtener más información, consulte Uso de una identidad administrada en Azure Kubernetes Service.
    • Cuando la entidad de servicio usada en el clúster de AKS se convierte para usar la identidad administrada, antes de instalar la extensión todos los grupos de nodos deben eliminarse y volver a crearse, en lugar de actualizarse directamente.
  • Azure Machine Learning no admite la deshabilitación de cuentas locales para AKS. Al implementar un clúster de AKS, las cuentas locales se habilitan de forma predeterminada.
  • Si el clúster de AKS tiene un intervalo IP autorizado habilitado para acceder al servidor de API, habilite los intervalos IP del plano de control de Azure Machine Learning del clúster de AKS. El plano de control de Azure Machine Learning se implementa en regiones emparejadas. Sin acceso al servidor de API, no se pueden implementar los pods de Machine Learning. Use el intervalo IP para las regiones emparejadas al habilitar los intervalos IP en un clúster de AKS.
  • Azure Machine Learning no admite la asociación de una suscripción entre clústeres de AKS. Si tiene un clúster de AKS en otra suscripción, primero deberá conectarlo a Azure-Arc y especificar en la misma suscripción que el área de trabajo de Azure Machine Learning.
  • Azure Machine Learning no garantiza que todas las características de versión preliminar de AKS vayan a ser compatibles. Por ejemplo, no se admite identidad de pod de Microsoft Entra.
  • Si ha seguido los pasos del documento de Azure Machine Learning sobre AKS v1 para crear o conectar el clúster de inferencia AKS, use el siguiente vínculo para limpiar los recursos azureml-fe relacionados heredados antes de continuar con el paso siguiente.

Revisión de las opciones de configuración de la extensión de Azure Machine Learning

Puede usar el comando k8s-extension create de la CLI de Azure Machine Learning para implementar la extensión de Azure Machine Learning. La CLI k8s-extension create permite especificar un conjunto de opciones de configuración en formato key=value con --config el parámetro --config-protected. A continuación, se muestra la lista de opciones de configuración disponibles que se pueden especificar durante la implementación de la extensión Azure Machine Learning.

Nombre de clave de opción de configuración Descripción Cursos Inferencia Entrenamiento e inferencia
enableTraining True o False, predeterminado False. Debe establecerse en True para implementar la extensión Azure Machine Learning con compatibilidad con el entrenamiento de modelos de Machine Learning y la puntuación por lotes. N/D
enableInference True o False, predeterminado False. Debe establecerse en True para la implementación de la extensión Azure Machine Learning con compatibilidad con inferencia de Machine Learning. N/D
allowInsecureConnections True o False, predeterminado False. Puede establecerse en True para usar puntos de conexión HTTP de inferencia con fines de desarrollo o prueba. N/D Opcional Opcionales
inferenceRouterServiceType loadBalancer, nodePort o clusterIP. Obligatorio si enableInference=True. N/D
internalLoadBalancerProvider Esta configuración solo se aplica ahora al clúster de Azure Kubernetes Service (AKS). Se debe establecer en azure para permitir que el enrutador de inferencia use el equilibrador de carga interno. N/D Opcional Opcionales
sslSecret Nombre del secreto de Kubernetes en el espacio de nombres azureml. Esta configuración se usa para almacenar cert.pem (certificado TLS/SSL codificado en PEM) y key.pem (clave TLS/SSL codificada en PEM), ambos necesarios para la compatibilidad con puntos de conexión HTTPS de inferencia cuando allowInsecureConnections está establecido en False. Para obtener una definición de YAML de ejemplo de sslSecret, vea Configuración de sslSecret. Use esta configuración o una combinación de los valores de configuración protegidos de sslCertPemFile y sslKeyPemFile. N/D Opcional Opcionales
sslCname El punto de conexión HTTPS de inferencia usa un registro CNAME de TLS/SSL. Obligatorio si allowInsecureConnections=False N/D Opcional Opcional
inferenceRouterHA True o False, predeterminado True. De forma predeterminada, la extensión Azure Machine Learning implementa tres réplicas del enrutador de inferencia para conseguir alta disponibilidad, para lo que se necesitan al menos tres nodos de trabajo en un clúster. Establézcalo en False si el clúster tiene menos de tres nodos de trabajo; en este caso solo se implementa un servicio de enrutador de inferencia. N/D Opcional Opcionales
nodeSelector Los recursos de Kubernetes implementados y las cargas de trabajo de aprendizaje automático se implementan aleatoriamente en uno o más nodos del clúster de forma predeterminada, y los recursos DaemonSet se implementan en TODOS los nodos. Si quiere restringir la implementación de la extensión y las cargas de trabajo de entrenamiento e inferencia a nodos específicos con las etiquetas key1=value1 y key2=value2, use nodeSelector.key1=value1, nodeSelector.key2=value2 según corresponda. Opcional Opcionales Opcional
installNvidiaDevicePlugin True o False, predeterminado False. NVIDIA Device Plugin es necesario para las cargas de trabajo de ML en hardware GPU de NVIDIA. De forma predeterminada, la implementación de la extensión Azure Machine Learning instalará NVIDIA Device Plugin independientemente de que el clúster de Kubernetes tenga hardware de GPU o no. El usuario puede especificar esta configuración en True, para instalarla, pero asegúrese de cumplir los requisitos previos. Opcional Opcionales Opcional
installPromOp True o False, predeterminado True. La extensión Azure Machine Learning necesita el operador prometheus para administrar prometheus. Establezca en False para reutilizar el operador prometheus existente. Para más información sobre la reutilización del operador prometheus existente, consulte Reutilización del operador prometheus. Opcionales Opcionales Opcional
installVolcano True o False, predeterminado True. La extensión de Azure Machine Learning necesita el programador de Volcano para programar el trabajo. Establézcalo en False para reutilizar el programador de Volcano existente. Para más información sobre cómo reutilizar el programador Volcano existente, consulte Reutilización del programador Volcano Opcionales N/D Opcional
installDcgmExporter True o False, predeterminado False. Dcgm-exporter puede exponer métricas de GPU para cargas de trabajo de Azure Machine Learning, que se pueden supervisar en Azure Portal. Establezca installDcgmExporter en True para instalar dcgm-exporter. Pero si quiere utilizar un exportador dcgm-exporter propio, consulte Exportador DCGM. Opcionales Opcionales Opcional
Nombre de clave de configuración protegida Descripción Cursos Inferencia Entrenamiento e inferencia
sslCertPemFile, sslKeyPemFile Ruta al certificado TLS/SSL y al archivo de clave (con codificación PEM), necesaria para la implementación de la extensión Azure Machine Learning con compatibilidad con puntos de conexión HTTPS de inferencia, cuando allowInsecureConnections se establece en False. Nota No se admite el archivo PEM con frase de contraseña protegida. N/D Opcional Opcionales

Como puede ver en la tabla de opciones de configuración, las combinaciones de diferentes opciones permiten implementar la extensión Azure Machine Learning para distintos escenarios de carga de trabajo de ML:

  • Para el trabajo de entrenamiento y la carga de trabajo de inferencia por lotes, especifique enableTraining=True.
  • Solo para la carga de trabajo de inferencia, especifique enableInference=True.
  • Para todo tipo de carga de trabajo de ML, especifique enableTraining=True y enableInference=True.

Si tiene previsto implementar la extensión Azure Machine Learning para la carga de trabajo de inferencia en tiempo real y quiere especificar enableInference=True, preste atención a las siguientes opciones de configuración relacionadas con la carga de trabajo de inferencia en tiempo real:

  • El servicio de enrutador azureml-fe es necesario para la compatibilidad con la inferencia en tiempo real y debe especificar la configuración inferenceRouterServiceType para azureml-fe. azureml-fe se puede implementar con uno de los siguientes inferenceRouterServiceType:
    • Escriba LoadBalancer. Expone azureml-fe externamente mediante el equilibrador de carga de un proveedor de nube. Para especificar este valor, asegúrese de que el clúster admite el aprovisionamiento del equilibrador de carga. Tenga en cuenta que la mayoría de los clústeres de Kubernetes locales podrían no admitir el equilibrador de carga externo.
    • Escriba NodePort. Expone azureml-fe en la dirección IP de cada nodo en un puerto estático. Podrá ponerse en contacto con azureml-fe, desde fuera del clúster, solicitando <NodeIP>:<NodePort>. El uso de NodePort también permite configurar una solución de equilibrio de carga y terminación TLS/SSL propia para azureml-fe.
    • Escriba ClusterIP. Expone azureml-fe en una dirección IP interna del clúster y hace que azureml-fe sea solo accesible desde dentro del clúster. Para que azureml-fe atienda las solicitudes de inferencia de fuera del clúster, requiere que configure su propia solución de equilibrio de carga y la terminación TLS/SSL para azureml-fe.
  • Para garantizar la alta disponibilidad del servicio de enrutamiento azureml-fe, la implementación de la extensión Azure Machine Learning crea de forma predeterminada tres réplicas de azureml-fe para los clústeres con tres nodos o más. Si el clúster tiene menos de 3 nodos, establezca inferenceRouterHA=False.
  • También debería considerar la posibilidad de usar HTTPS para restringir el acceso a los puntos de conexión del modelo y proteger los datos que envían los clientes. Para este propósito, tendría que especificar la opción de configuración sslSecret o la combinación de valores de configuración protegidos sslKeyPemFile y sslCertPemFile.
  • De forma predeterminada, la implementación de la extensión de Azure Machine Learning espera valores de configuración para la compatibilidad con HTTPS. Con fines de desarrollo o prueba, se admite la compatibilidad con HTTP mediante la opción de configuración allowInsecureConnections=True.

Implementación de la extensión Azure Machine Learning: ejemplos de la CLI y Azure Portal

Para implementar la extensión Azure Machine Learning con la CLI, use el comando az k8s-extension create y pase valores para los parámetros obligatorios.

Se enumeran cuatro escenarios típicos de implementación de la extensión para referencia. A fin de implementar la extensión para usarla en producción, lea detenidamente la lista completa de valores de configuración.

  • Uso del clúster de AKS en Azure para una prueba rápida de concepto, para ejecutar todos los tipos de carga de trabajo de ML, es decir, para ejecutar trabajos de entrenamiento o implementar modelos como puntos de conexión en línea o por lotes.

    Para la implementación de la extensión de Azure Machine Learning en AKS, asegúrese de especificar el valor managedClusters para el parámetro --cluster-type. Ejecute el siguiente comando de la CLI de Azure para implementar la extensión de Azure Machine Learning:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer allowInsecureConnections=True InferenceRouterHA=False --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Uso del clúster de Kubernetes para Arc fuera de Azure para una prueba rápida de concepto, para ejecutar solamente trabajos de entrenamiento

    Para implementar la extensión Azure Machine Learning en un clúster de Kubernetes para Arc, debe especificar el valor connectedClusters para el parámetro --cluster-type. Ejecute el siguiente comando de la CLI de Azure para implementar la extensión de Azure Machine Learning:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Habilitación de un clúster de AKS en Azure para cargas de trabajo de entrenamiento e inferencia de producción Para implementar la extensión Azure Machine Learning en AKS, asegúrese de especificar el valor managedClusters para el parámetro --cluster-type. Se presupone que el clúster tiene más de tres nodos y que va a usar un equilibrador de carga público de Azure y HTTPS para la compatibilidad con cargas de trabajo de inferencia. Ejecute el siguiente comando de la CLI de Azure para implementar la extensión de Azure Machine Learning:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    
  • Habilitación de un clúster de Kubernetes para Arc en cualquier parte para cargas de trabajo de entrenamiento e inferencia de producción mediante GPU de NVIDIA

    Para implementar la extensión Azure Machine Learning en un clúster de Kubernetes para Arc, asegúrese de especificar el valor connectedClusters para el parámetro --cluster-type. Se presupone que el clúster tiene más de tres nodos y que va a usar un tipo de servicio NodePort y HTTPS para la compatibilidad con las cargas de trabajo de inferencia. Ejecute el siguiente comando de la CLI de Azure para implementar la extensión Azure Machine Learning:

    az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=NodePort sslCname=<ssl cname> installNvidiaDevicePlugin=True installDcgmExporter=True --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
    

Comprobación de la implementación de la extensión de Azure Machine Learning

  1. Ejecute el siguiente comando de la CLI para comprobar los detalles de la extensión de Azure Machine Learning:

    az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
    
  2. En la respuesta, busque "name" y "provisioningState": "Succeeded". Tenga en cuenta que podría aparecer "provisioningState": "Pending" durante los primeros minutos.

  3. Si provisioningState aparece como Succeeded, ejecute el siguiente comando en la máquina con el archivo kubeconfig que apunta al clúster para comprobar que todos los pods del espacio de nombres azureml se encuentran en estado "Running":

     kubectl get pods -n azureml
    

Revisión del componente de la extensión de Azure Machine Learning

Una vez completada la implementación de la extensión Azure Machine Learning, puede usar kubectl get deployments -n azureml para ver la lista de recursos creados en el clúster. Normalmente consta de un subconjunto de los siguientes recursos por cada configuración especificada.

Nombre del recurso Tipo de recurso Cursos Inferencia Entrenamiento e inferencia Descripción Comunicación con la nube
relayserver Implementación de Kubernetes El servidor de retransmisión se crea solo para el clúster de Kubernetes de Arc y no en el clúster de AKS. El servidor de retransmisión funciona con Azure Relay para comunicarse con los servicios en la nube. Recepción de la solicitud de creación de trabajo, implementación de modelo desde el servicio en la nube; sincronización del estado del trabajo con el servicio en la nube.
gateway Implementación de Kubernetes La puerta de enlace se utiliza para comunicarse y enviar datos hacia adelante y hacia atrás. Envío de nodos e información de recursos de clúster a los servicios en la nube.
aml-operator Implementación de Kubernetes N/D Administrar el ciclo de vida de los trabajos de entrenamiento. Intercambio de tokens con el servicio de token en la nube para la autenticación y autorización de Azure Container Registry.
metrics-controller-manager Implementación de Kubernetes Administración de la configuración de Prometheus N/D
{EXTENSION-NAME}-kube-state-metrics Implementación de Kubernetes Exporte las métricas relacionadas con el clúster a Prometheus. N/D
{EXTENSION-NAME}-prometheus-operator Implementación de Kubernetes Opcionales Opcionales Opcionales Proporcione la implementación nativa de Kubernetes y la administración de Prometheus y los componentes de supervisión relacionados. N/D
amlarc-identity-controller Implementación de Kubernetes N/D Solicitud y renovación del token de Blob de Azure/Azure Container Registry a través de la identidad administrada. Intercambio de tokens con el servicio de token en la nube para la autenticación y autorización de Azure Container Registry y Blob de Azure que usa la implementación de inferencias y modelos.
amlarc-identity-proxy Implementación de Kubernetes N/D Solicitud y renovación del token de Blob de Azure/Azure Container Registry a través de la identidad administrada. Intercambio de tokens con el servicio de token en la nube para la autenticación y autorización de Azure Container Registry y Blob de Azure que usa la implementación de modelos e inferencias.
azureml-fe-v2 Implementación de Kubernetes N/D Componente de front-end que enruta las solicitudes de inferencia entrantes a los servicios implementados. Envíe los registros de servicio al blob de Azure.
inference-operator-controller-manager Implementación de Kubernetes N/D Administrar el ciclo de vida de los puntos de conexión de inferencia. N/D
volcano-admission Implementación de Kubernetes Opcionales N/D Opcional Webhook de admisión de Volcano. N/D
volcano-controllers Implementación de Kubernetes Opcionales N/D Opcional Administración del ciclo de vida de los pods de trabajo de entrenamiento de Azure Machine Learning. N/D
volcano-scheduler Implementación de Kubernetes Opcionales N/D Opcional Se utiliza para hacer la programación de trabajos en cluster. N/D
fluent-bit DaemonSet de Kubernetes Recopilación del registro del sistema de los componentes. Carga del registro del sistema de los componentes en la nube.
{EXTENSION-NAME}-dcgm-exporter DaemonSet de Kubernetes Opcional Opcionales Opcionales dcgm-exporter expone métricas de GPU para Prometheus. N/D
nvidia-device-plugin-daemonset DaemonSet de Kubernetes Opcional Opcionales Opcionales nvidia-device-plugin-daemonset expone GPU en cada nodo del clúster. N/D
prometheus-prom-prometheus StatefulSet de Kubernetes Recopilación y envío de métricas de trabajo a la nube. Envío de métricas de trabajo, como el uso de CPU, GPU y memoria a la nube.

Importante

  • Los recursos de Azure Relay están en el mismo grupo de recursos que el recurso de clúster de Arc. Se usan para comunicarse con el clúster de Kubernetes y modificarlos interrumpirá los destinos de proceso asociados.
  • De forma predeterminada, los recursos de implementación de Kubernetes se implementan de manera aleatoria en uno o más nodos del clúster y los recursos daemonset se implementan en todos los nodos. Si quiere restringir la implementación de la extensión a nodos específicos, use el valor de configuración nodeSelector que se describe en la tabla de opciones de configuración.

Nota:

  • {EXTENSION-NAME} es el nombre de extensión especificado por el comando az k8s-extension create --name de la CLI.

Administración de la extensión Azure Machine Learning

Actualice, enumere, muestre y elimine una extensión Azure Machine Learning.

Pasos siguientes