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.
Para habilitar el clúster de Kubernetes habilitado para Azure Kubernetes Service (AKS) o Azure Arc para ejecutar trabajos de entrenamiento o cargas de trabajo de inferencia, implemente primero la extensión Azure Machine Learning. La extensión de Azure Machine Learning es una extensión de clúster estándar para AKS y una extensión de clúster para Kubernetes habilitado para Azure Arc. Puede administrar su ciclo de vida mediante CLI de Azure k8s-extension.
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 anteriormente no usaba extensiones de clúster, debe registrar el proveedor de servicios KubernetesConfiguration.
- O bien, un clúster de Kubernetes habilitado para Azure Arc que está 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 de servicio de Red Hat OpenShift en Azure (ARO) 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.
- Un clúster que se ejecuta detrás de un servidor proxy de salida o firewall necesita configuraciones de red adicionales.
- Instale o actualice la CLI de Azure a la versión 2.51.0 o posterior.
- Instale o actualice la extensión de la CLI de Azure
k8s-extensiona 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 conviertas tu clúster de AKS de usar una entidad de servicio a usar una identidad administrada, tendrás que eliminar y volver a crear todos los grupos de nodos antes de instalar la extensión. No se pueden actualizar directamente los grupos de nodos.
- Azure Machine Learning no admite deshabilitar las cuentas locales para AKS. Al implementar el clúster de AKS, las cuentas locales están habilitadas de forma predeterminada.
- Si el clúster de AKS tiene habilitado un intervalo de IP autorizadas para acceder al servidor de API, debe habilitar los intervalos de IP del plano de control de Azure Machine Learning para el 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 debe conectarlo a Azure Arc y luego asegurarse de que esté especificado en la misma suscripción que su á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 administrada por pods de Microsoft Entra (en desuso). Use Id. de carga de trabajo de Microsoft Entra en su lugar.
- Si ha seguido los pasos descritos en el documento Azure Machine Learning AKS v1 para crear o adjuntar AKS como un clúster de inferencia, use el vínculo siguiente para limpiar los recursos heredados relacionados con azureml-fe antes de continuar con el paso siguiente.
- La extensión Azure Machine Learning no se admite actualmente en arquitecturas ARM64. Use grupos de nodos con la arquitectura de x86_64 (
amd64) para la extensión. Un grupo de nodos de AKS no puede combinar SKU de máquinas virtualesamd64y ARM64, por lo que debes elegir SKU de máquinas virtuales para el grupo de nodos con la arquitectura compatible y no mezclar arquitecturas en el mismo grupo de nodos. Si el clúster tiene grupos de nodos mixtos, usenodeSelectorpara dirigir la extensión y las cargas de trabajo a los nodos con la arquitectura admitida.
Revisión de las opciones de configuración de la extensión de Azure Machine Learning
Use el comando CLI de Azure az k8s-extension create para implementar la extensión de Azure Machine Learning. El comando az k8s-extension create acepta opciones de configuración como pares key=value separados por espacios mediante el parámetro --config o --config-protected. En la tabla siguiente se enumeran las opciones de configuración disponibles que puede especificar durante la implementación.
| Nombre de clave de opción de configuración | Descripción | Formación | 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 | Opcional |
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 | Opcional |
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 | Opcional |
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 | Opcional |
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 | Opcional | Opcional |
installNvidiaDevicePlugin |
True o False, predeterminado False. El complemento de dispositivo NVIDIA 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 | Opcional | 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. |
Opcional | Opcional | 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 |
Opcional | 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. |
Opcional | Opcional | Opcional |
| Nombre de clave de configuración protegida | Descripción | Formación | 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 protección con frase de contraseña. |
N/D | Opcional | Opcional |
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=TrueyenableInference=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-fees necesario para la compatibilidad con la inferencia en tiempo real y debe especificar la configuracióninferenceRouterServiceTypeparaazureml-fe. El router se implementa como elazureml-fe-v2despliegue de Kubernetes, que aparece en la lista de componentes de extensión.azureml-fese puede implementar con uno de los siguientesinferenceRouterServiceType:- Escriba
loadBalancer. Exponeazureml-feexternamente 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-feen la dirección IP de cada nodo en un puerto estático. Puede ponerse en contacto conazureml-fe, desde fuera del clúster, solicitando<NodeIP>:<NodePort>. El uso denodePorttambién permite configurar una solución de equilibrio de carga y terminación TLS/SSL propia paraazureml-fe. Para obtener más información sobre cómo configurar su propia entrada, consulte Integrate otro controlador de entrada con Azure Machine Learning extensión a través de HTTP o HTTPS. - Escriba
clusterIP. Exponeazureml-feen una dirección IP interna del clúster y hace queazureml-fesea solo accesible desde dentro del clúster. Para queazureml-featienda 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. Para obtener más información sobre cómo configurar su propia entrada, consulte Integrate otro controlador de entrada con Azure Machine Learning extensión a través de HTTP o HTTPS.
- 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-fepara 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 ello, necesita especificar el parámetro de configuración
sslSecreto la combinación de los parámetros de configuración protegidossslKeyPemFileysslCertPemFile. - 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 mediante la CLI, use el comando az k8s-extension create y proporcione valores para los parámetros obligatorios.
En la lista siguiente se describen cuatro escenarios típicos de implementación de extensiones. Para implementar la extensión para el uso de producción, lea detenidamente la lista completa de opciones de configuración.
Use el clúster de AKS en Azure para obtener una prueba de concepto rápida para ejecutar todo tipo de carga de trabajo de ML, por ejemplo, para ejecutar trabajos de entrenamiento o para 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 el clúster de AKS, especifique el valor
managedClusterspara 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 clusterUso de un clúster de Kubernetes habilitado para Azure Arc fuera de Azure para una prueba de concepto rápida, para ejecutar solo trabajos de entrenamiento
Para la implementación de la extensión de Azure Machine Learning en un clúster de Kubernetes habilitado para Azure Arc-enabled Kubernetes, especifique el valor
connectedClusterspara 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 clusterHabilite un clúster de AKS en Azure para cargas de trabajo de entrenamiento e inferencia en producción Para la implementación de la extensión de Azure Machine Learning en AKS, especifique el valor
managedClusterspara 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 clusterHabilitar un clúster de Kubernetes habilitado para Azure Arc en cualquier lugar para cargas de trabajo de entrenamiento e inferencia de producción utilizando GPU NVIDIA
Para la implementación de la extensión de Azure Machine Learning en un clúster de Kubernetes habilitado para Azure Arc-enabled Kubernetes, especifique el valor
connectedClusterspara 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 comando de la CLI aplicable para comprobar los detalles de la extensión de Azure Machine Learning:
AKS
az k8s-extension show --name <extension-name> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <resource-group>Kubernetes habilitado para Azure Arc
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". Puede que se muestre"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
azuremlse encuentran en estadoRunning:kubectl get pods -n azureml
Revisión del componente de la extensión de Azure Machine Learning
Cuando finalice la implementación de la extensión Azure Machine Learning, use kubectl get deployments -n azureml para ver la lista de recursos creados en el clúster. La lista normalmente consta de un subconjunto de los siguientes recursos, en función de los valores de configuración que especifique.
| Nombre del recurso | Tipo de recurso | Formación | Inferencia | Entrenamiento e inferencia | Descripción | Comunicación con la nube |
|---|---|---|---|---|---|---|
| relayserver | Implementación de Kubernetes | ✓ | ✓ | ✓ | La implementación crea el servidor de retransmisión solo para clústeres de Kubernetes habilitados para Azure Arc, y no en clústeres 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 | Opcional | Opcional | Opcional | 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 modelos e inferencias. |
| 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 | Opcional | N/D | Opcional | Webhook de admisión de Volcano. | N/D |
| controladores de volcanes | Implementación de Kubernetes | Opcional | 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 | Opcional | 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 | Opcional | Opcional | dcgm-exporter expone métricas de GPU para Prometheus. | N/D |
| nvidia-device-plugin-daemonset | DaemonSet de Kubernetes | Opcional | Opcional | Opcional | 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
- El recurso Azure Relay está en el mismo grupo de recursos que el recurso de clúster de Arc. Se usa para comunicarse con el clúster de Kubernetes. Al modificarlo, se interrumpen los destinos de proceso asociados.
- De forma predeterminada, los recursos de Deployment se despliegan aleatoriamente en uno o varios nodos del clúster, y los recursos de DaemonSet se despliegan en todos los nodos. Para restringir la implementación de extensiones a nodos específicos, use la
nodeSelectorconfiguración descrita en la tabla de opciones de configuración.
Nota:
-
{EXTENSION-NAME}: es el nombre de la extensión que especifique mediante el comando de la
az k8s-extension create --nameCLI.
Administración de la extensión Azure Machine Learning
Actualizar, enumerar, mostrar y eliminar una extensión de Azure Machine Learning.
- Para los clústeres de AKS sin Azure Arc conectados, consulte Deploy y administrar extensiones de clúster.
- Para Kubernetes habilitado para Azure Arc, consulte Implementar y administrar extensiones de clúster de Kubernetes habilitado para Azure Arc.