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.
- Si el clúster es un clúster del servicio RedHat OpenShift (ARO) de Azure o un clúster de OpenShift Container Platform (OCP), debe cumplir otros pasos previos como se documenta en el artículo Referencia para configurar el clúster de Kubernetes.
- 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
yenableInference=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óninferenceRouterServiceType
paraazureml-fe
.azureml-fe
se puede implementar con uno de los siguientesinferenceRouterServiceType
:- Escriba
LoadBalancer
. Exponeazureml-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
. Exponeazureml-fe
en la dirección IP de cada nodo en un puerto estático. Podrá ponerse en contacto conazureml-fe
, desde fuera del clúster, solicitando<NodeIP>:<NodePort>
. El uso deNodePort
también permite configurar una solución de equilibrio de carga y terminación TLS/SSL propia paraazureml-fe
. - Escriba
ClusterIP
. Exponeazureml-fe
en una dirección IP interna del clúster y hace queazureml-fe
sea solo accesible desde dentro del clúster. Para queazureml-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 paraazureml-fe
.
- Escriba
- 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 deazureml-fe
para los clústeres con tres nodos o más. Si el clúster tiene menos de 3 nodos, establezcainferenceRouterHA=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 protegidossslKeyPemFile
ysslCertPemFile
. - 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
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>
En la respuesta, busque "name" y "provisioningState": "Succeeded". Tenga en cuenta que podría aparecer "provisioningState": "Pending" durante los primeros minutos.
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.
- Para el clúster de AKS sin conexión a Azure Arc, consulte Implementación y administración de extensiones de clúster.
- Para Kubernetes habilitado para Azure Arc, consulte Implementación y administración de extensiones de clúster de Kubernetes habilitadas para Azure Arc.