Creación y uso de un clúster de proceso

Completado

Después de la experimentación y el desarrollo, quiere que el código esté listo para producción. Al ejecutar código en entornos de producción, es mejor usar scripts en lugar de cuadernos. Al ejecutar un script, querrá usar un destino de proceso que sea escalable.

En Azure Machine Learning, los clústeres de proceso son idóneos para ejecutar scripts. Puede crear un clúster de proceso en Estudio de Azure Machine Learning, mediante la interfaz de la línea de comandos (CLI) de Azure o el kit de desarrollo de software (SDK) de Python.

Creación de un clúster de proceso con el SDK de Python

Para crear un clúster de proceso con el SDK de Python, puede usar el código siguiente:

from azure.ai.ml.entities import AmlCompute

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

Para comprender qué parámetros espera la clase AmlCompute, puede revisar la documentación de referencia.

Al crear un clúster de proceso, hay tres parámetros principales que debe tener en cuenta:

  • size: especifica el tipo de máquina virtual de cada nodo dentro del clúster de proceso. Se basa en los tamaños de las máquinas virtuales en Azure. Junto al tamaño, también puede especificar si quiere usar CPU o GPU.
  • max_instances: especifica el número máximo de nodos a los que el clúster de proceso puede escalar horizontalmente. El número de cargas de trabajo paralelas que puede controlar el clúster de proceso es análogo al número de nodos a los que puede escalar el clúster.
  • tier: Especifica si las máquinas virtuales serán de prioridad baja o dedicadas. El establecimiento de una prioridad baja puede reducir los costos, ya que la disponibilidad no está garantizada.

Uso de un clúster de proceso

Hay tres escenarios principales en los que puede usar un clúster de proceso:

  • Ejecutar un trabajo de canalización que ha compilado en el Diseñador.
  • Ejecutar un trabajo de aprendizaje automático automatizado.
  • Ejecutar un script como trabajo.

En cada uno de estos escenarios, un clúster de proceso es idóneo, ya que se escalará verticalmente de forma automática cuando se envíe un trabajo y se cerrará automáticamente cuando se complete.

Un clúster de proceso también le permitirá entrenar varios modelos en paralelo, un procedimiento común al usar el aprendizaje automático automatizado.

Puede ejecutar un trabajo de canalización del Diseñador y un trabajo de aprendizaje automático automatizado desde Estudio de Azure Machine Learning. Al enviar el trabajo desde Estudio, puede establecer el destino de proceso en el clúster de proceso que ha creado.

Si prefiere un enfoque de código primero, puede establecer el destino de proceso en el clúster de proceso mediante el SDK de Python.

Por ejemplo, al ejecutar un script como un trabajo de comando, puede establecer el destino de proceso en el clúster de proceso con el código siguiente:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python diabetes-training.py",
    environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
    compute="cpu-cluster",
    display_name="train-with-cluster",
    experiment_name="diabetes-training"
    )

# submit job
returned_job = ml_client.create_or_update(job)
aml_url = returned_job.studio_url
print("Monitor your job at", aml_url)

Después de enviar un trabajo que usa un clúster de proceso, el clúster de proceso se escalará horizontalmente a uno o varios nodos. El cambio de tamaño tardará unos minutos y el trabajo comenzará a ejecutarse una vez que se aprovisionen los nodos necesarios. Cuando el estado de un trabajo es en preparación, significa que el clúster de proceso se está preparando. Cuando el estado es en ejecución, el clúster de proceso está listo y el trabajo se está ejecutando.