Creación y uso de un clúster de cómputo

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, desea utilizar un destino de cómputo escalable.

En Azure Machine Learning, los clústeres de proceso son ideales para ejecutar scripts. Puede crear un clúster de proceso en Azure Machine Learning Studio 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 de .

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. En función de los tamaños de las máquinas virtuales en Azure. Junto al tamaño, también puede especificar si desea 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 a las que el clúster de proceso puede controlar es análoga al número de nodos a los que puede escalar el clúster.
  • tier: especifica si las máquinas virtuales son de prioridad baja o dedicadas. Establecer en prioridad baja puede reducir los costes, ya que no está garantizada la disponibilidad.

Usa un clúster de cómputo

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.
  • Ejecución de un trabajo de Machine Learning automatizado.
  • Ejecutar un script como trabajo.

En cada uno de estos escenarios, un clúster de proceso es ideal, ya que se escala automáticamente cuando se envía un trabajo y se apaga automáticamente cuando se completa el trabajo.

Un clúster de proceso también permite entrenar varios modelos en paralelo, que es una práctica habitual al usar Machine Learning automatizado.

Puede ejecutar un trabajo de canalización de Designer y un trabajo de Machine Learning automatizado en Azure Machine Learning Studio. Al enviar el trabajo a través de estudio, puede establecer el destino de proceso en el clúster de proceso que creó.

Cuando prefiera 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 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 utiliza un clúster de computación, el clúster de computación se expande 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 preparar, el clúster de proceso se está preparando. Cuando el estado es ejecutando, el clúster de proceso está listo, y el trabajo se está ejecutando.