Creación de un clúster de proceso de Azure Machine Learning

SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)

En este artículo se explica cómo crear y administrar un clúster de proceso en el área de trabajo de Azure Machine Learning.

Puede usar un clúster de proceso de Azure Machine Learning para distribuir un proceso de entrenamiento o inferencia de lotes en un clúster de nodos de proceso de CPU o GPU en la nube. Para más información sobre los tamaños de máquina virtual que incluyen GPU, consulte Tamaños de máquinas virtuales optimizadas para GPU.

Obtenga información sobre cómo:

  • Crear un clúster de proceso.
  • Reducción del costo del clúster de proceso con máquinas virtuales de prioridad baja.
  • Configuración de una identidad administrada para el clúster.

Nota:

En lugar de crear un clúster de proceso, use el proceso sin servidor para descargar la administración del ciclo de vida de proceso en Azure Machine Learning.

Requisitos previos

Seleccione la pestaña adecuada para el resto de los requisitos previos en función del método preferido para crear el clúster de proceso.

  • Si no ejecuta el código en una instancia de proceso, instale el SDK de Azure Machine Learning para Python. Este SDK ya está instalado para usted en una instancia de proceso.

  • Adjunte al área de trabajo en el script de Python:

    Ejecute este código para conectarse al área de trabajo de Azure Machine Learning.

    Reemplace el identificador de suscripción, el nombre del grupo de recursos y el nombre del área de trabajo en el código siguiente. Para establecer estos valores:

    1. Inicie sesión en Azure Machine Learning Studio.
    2. Abra el área de trabajo que quiere usar.
    3. Seleccione el nombre del área de trabajo en la barra de herramientas de Estudio de Azure Machine Learning superior derecha.
    4. Copie el valor del área de trabajo, el grupo de recursos y el identificador de suscripción en el código.

    SE APLICA A: SDK de Python azure-ai-ml v2 (actual)

    # Enter details of your AML workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AML_WORKSPACE_NAME>"
    # get a handle to the workspace
    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    
    ml_client = MLClient(
        DefaultAzureCredential(), subscription_id, resource_group, workspace
    )

    ml_client es un controlador del área de trabajo que se usa para administrar otros recursos y trabajos.

¿Qué es un clúster de proceso?

El clúster de Proceso de Azure Machine Learning es una infraestructura de proceso administrado que permite al usuario crear fácilmente un proceso de uno o varios nodos. El clúster de proceso es un recurso que se puede compartir con otros usuarios del área de trabajo. El proceso se escala verticalmente de forma automática cuando se envía un trabajo y se puede colocar en una instancia de Azure Virtual Network. El clúster de proceso no admite ninguna implementación de IP pública también en la red virtual. El proceso se ejecuta en un entorno con contenedores y empaqueta las dependencias del modelo en un contenedor de Docker.

El clúster del proceso puede ejecutar trabajos de forma segura en una red virtual administrada o una red virtual Azure, sin necesidad de que las empresas abran puertos SSH. El trabajo se ejecuta en un entorno en contenedor y empaqueta las dependencias del modelo en un contenedor de Docker.

Limitaciones

  • Los clústeres de proceso se pueden crear en una región diferente a la del área de trabajo. Esta función solo está disponible para clústeres de proceso, no para instancias de proceso.

    Advertencia

    Al usar un clúster de proceso en una región diferente a la del área de trabajo o los almacenes de datos, es posible que vea un aumento de los costos de transferencia de datos y latencia de red. La latencia y los costos pueden producirse al crear el clúster y al ejecutar trabajos en él.

  • Proceso de Azure Machine Learning tiene límites predeterminados, como el número de núcleos que se pueden asignar. Para más información, consulte Administración y solicitud de cuotas para recursos de Azure.

  • Azure permite colocar bloqueos en los recursos, de modo que no se puedan eliminar o sean de solo lectura. No aplique bloqueos de recursos al grupo de recursos que contiene el área de trabajo. Al aplicar un bloqueo al grupo de recursos que contiene el área de trabajo se evitan las operaciones de escalado de los clústeres de proceso de Azure Machine Learning. Para obtener más información sobre el bloqueo de recursos, vea Bloqueo de recursos para impedir cambios inesperados.

Crear

Tiempo estimado: Aproximadamente 5 minutos.

Nota:

Si usa un proceso sin servidor, no es necesario crear un clúster de proceso.

Se puede reutilizar una instancia de Proceso de Azure Machine Learning entre trabajos. El proceso puede compartirse con otros usuarios del área de trabajo y se conserva entre ejecuciones, escalando o reduciendo automáticamente los nodos verticalmente según el número de ejecuciones enviadas y el valor de max_nodes establecido en el clúster. La configuración min_nodes controla los nodos mínimos disponibles.

Los núcleos dedicados por región por cuota de familia de máquinas virtuales y cuota regional total, que se aplica a la creación de clústeres de proceso, se unifica y comparte con la cuota de instancia de proceso de entrenamiento de Azure Machine Learning.

Importante

Para evitar cargos cuando no se está ejecutando ningún trabajo, establezca los nodos mínimos en 0. Esta configuración permite que Azure Machine Learning anule la asignación de los nodos cuando no están en uso. Cualquier valor mayor que 0 mantendrá ese número de nodos en ejecución, aunque no estén en uso.

El proceso se reduce verticalmente a cero nodos cuando no se utiliza. Se crean máquinas virtuales dedicadas para ejecutar los trabajos según sea necesario.

Use los ejemplos siguientes para crear un clúster de proceso:

Para crear un recurso de Proceso de Azure Machine Learning persistente en Python, especifique las propiedades size y max_instances. Azure Machine Learning usará valores predeterminados inteligentes para las demás propiedades.

  • size: la familia de máquinas virtuales de los nodos creados por el Proceso de Azure Machine Learning.
  • max_instances: el número máximo de nodos hasta los que se escala automáticamente cuando ejecuta un trabajo en el Proceso de Azure Machine Learning.

SE APLICA A: SDK de Python azure-ai-ml v2 (actual)

from azure.ai.ml.entities import AmlCompute

cluster_basic = AmlCompute(
    name="basic-example",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="westus",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
)
ml_client.begin_create_or_update(cluster_basic).result()

Cuando cree una instancia de Proceso de Azure Machine Learning, puede configurar también varias propiedades avanzadas. Estas propiedades permiten crear un clúster persistente de tamaño fijo o dentro de una instancia existente de Azure Virtual Network de su suscripción. Consulte la clase AmlCompute para más información.

Advertencia

Al configurar el parámetro location, si es una región diferente a la del área de trabajo o a la de los almacenes de datos, puede experimentar un aumento en la latencia de red y en los costos de transferencia de datos. La latencia y los costos pueden producirse al crear el clúster y al ejecutar trabajos en él.

Reducción del costo del clúster de proceso con máquinas virtuales de prioridad baja

También puede optar por usar VM de prioridad baja para ejecutar algunas cargas de trabajo o todas ellas. Estas máquinas virtuales no tienen una disponibilidad garantizada y se pueden reemplazar mientras están en uso. Tendrá que reiniciar un trabajo que se ha cambiado.

El uso de máquinas virtuales de prioridad baja de Azure permite aprovechar las ventajas de la capacidad no utilizada de Azure con un importante ahorro en los costos. Siempre que Azure necesite recuperar la capacidad, la infraestructura de esta plataforma expulsará las máquinas virtuales de prioridad baja de Azure. Las máquinas virtuales de prioridad baja de Azure son excelentes para cargas de trabajo que pueden controlar las interrupciones. La cantidad de capacidad sin usar disponible varía, por ejemplo, en función del tamaño, la región o la hora del día. Al implementar máquinas virtuales Azure de baja prioridad, Azure asigna las máquinas virtuales si hay capacidad disponible, pero no hay ningún acuerdo de nivel de servicio para estas máquinas virtuales. Una máquina virtual de prioridad baja de Azure no ofrece ninguna garantía de alta disponibilidad. Siempre que Azure necesite recuperar la capacidad, la infraestructura de esta plataforma expulsará las máquinas virtuales de prioridad baja de Azure.

Use cualquiera de estas formas para especificar una VM de prioridad baja:

SE APLICA A: SDK de Python azure-ai-ml v2 (actual)

from azure.ai.ml.entities import AmlCompute

cluster_low_pri = AmlCompute(
    name="low-pri-example",
    size="STANDARD_DS3_v2",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
    tier="low_priority",
)
ml_client.begin_create_or_update(cluster_low_pri).result()

Eliminar

Aunque el clúster de proceso se reduce verticalmente a cero nodos cuando no están en uso, los nodos no aprovisionados contribuyen al uso de la cuota. Al eliminar el clúster de proceso, se quita el destino de proceso del área de trabajo y se libera la cuota.

SE APLICA A: SDK de Python azure-ai-ml v2 (actual)

Esto elimina el clúster de proceso básico, creado a partir del objeto create_basic anterior en este artículo.

from azure.ai.ml.entities import AmlCompute

ml_client.compute.begin_delete(cluster_basic.name).wait()

Configuración de la identidad administrada

Para más información sobre cómo configurar una identidad administrada con el clúster de proceso, consulte Configuración de la autenticación entre Azure Machine Learning y otros servicios.

Solución de problemas

Es posible que algunos usuarios que crearon su área de trabajo de Azure Machine Learning en Azure Portal antes de la versión de disponibilidad general no puedan crear la instancia de AmlCompute en esa área de trabajo. Puede generar una solicitud de soporte técnico en el servicio o crear una nueva área de trabajo mediante el portal o el SDK para desbloquearse a sí mismo inmediatamente.

Importante

Si la instancia de proceso o los clústeres de proceso se basan en cualquiera de estas series, vuelva a crear con otro tamaño de máquina virtual.

Estas series se retiraron el 31 de agosto de 2023:

Estas series se retiraron el 31 de agosto de 2024:

Bloqueado al redimensionar

Si el clúster de proceso de Azure Machine Learning parece bloqueado al cambiar de tamaño (0-> 0) para el estado del nodo, puede que se deba a la presencia de bloqueos en los recursos de Azure.

Azure permite colocar bloqueos en los recursos, de modo que no se puedan eliminar o sean de solo lectura. El bloqueo de un recurso puede producir resultados inesperados. Algunas operaciones que no parecen modificar el recurso realmente requieren acciones que ha bloqueado el bloqueo.

Con Azure Machine Learning, al aplicar un bloqueo de eliminación en el grupo de recursos del área de trabajo, se evitarán las operaciones de escalado de los clústeres de proceso de Azure ML. Para solucionar este problema, se recomienda quitar el bloqueo del grupo de recursos y aplicarlo en su lugar a elementos individuales del grupo.

Importante

No aplique el bloqueo a los siguientes recursos:

Nombre del recurso Tipo de recurso
<GUID>-azurebatch-cloudservicenetworksecurityggroup Grupo de seguridad de red
<GUID>-azurebatch-cloudservicepublicip Dirección IP pública
<GUID>-azurebatch-cloudserviceloadbalancer Equilibrador de carga

Estos recursos se usan para comunicarse con el clúster de proceso y hacer operaciones como el escalado. La eliminación del bloqueo de recursos de estos recursos debe permitir el escalado automático para los clústeres de proceso.

Para obtener más información sobre el bloqueo de recursos, vea Bloqueo de recursos para impedir cambios inesperados.

Paso siguiente

Use el clúster de proceso para: