Utilizar VMs de prioridad baja para las implementaciones por lotes
SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)
Las implementaciones por lotes de Azure admiten máquinas virtuales (VMs) de prioridad baja para reducir el coste de las cargas de trabajo de inferencia por lotes. Las máquinas virtuales de prioridad baja permiten usar una gran cantidad de capacidad de proceso por un bajo costo. Las máquinas virtuales de prioridad baja aprovechan la capacidad excedente de Azure. Al especificar máquinas virtuales de prioridad baja en sus grupos, Azure puede usar este excedente cuando esté disponible.
Sugerencia
La contrapartida de utilizar VMs de prioridad baja es que esas máquinas virtuales podrían no estar disponibles o podrían ser adelantadas en cualquier momento, dependiendo de la capacidad disponible. Por este motivo, este enfoque es el más adecuado para cargas de trabajo de procesamiento por lotes y asíncronas, en las que el tiempo de finalización del trabajo es flexible y el trabajo se distribuye entre muchas máquinas virtuales.
Las máquinas virtuales de prioridad baja se ofrecen a un precio reducido en comparación con las máquinas virtuales dedicadas. Para obtener más información sobre los precios, consulte Precios de Azure Machine Learning.
Funcionamiento de la implementación por lotes con máquinas virtuales de prioridad baja
Las implementaciones por lotes de Azure Machine Learning ofrecen varias funcionalidades que facilitan el consumo y se benefician de las máquinas virtuales de prioridad baja:
- Los trabajos de implementación de Batch consumen máquinas virtuales de prioridad baja mediante la ejecución en clústeres de proceso de Azure Machine Learning creados con máquinas virtuales de prioridad baja. Una vez que una implementación se asocia a un clúster de VMs de prioridad baja, todos los trabajos producidos por dicha implementación utilizan VMs de baja prioridad. No es posible la configuración por tarea.
- Los trabajos de implementación por lotes buscan automáticamente el número de máquinas virtuales del clúster de proceso disponible en función del número de tareas que se van a enviar. Si las máquinas virtuales han sido reemplazadas o no están disponibles, los trabajos de implementación por lotes intentan reemplazar la capacidad perdida mediante la puesta en cola de las tareas con errores en el clúster.
- Las máquinas virtuales de prioridad baja tienen una cuota de vCPU diferente de las máquinas virtuales dedicadas. Los núcleos de baja prioridad por región tienen un límite predeterminado de 100 a 3 000, dependiendo de su suscripción. El número de núcleos de baja prioridad por suscripción se puede aumentar y es un valor único en todas las familias de máquinas virtuales. Consulte Cuotas de proceso de Azure Machine Learning.
Consideraciones y casos de uso
Muchas cargas de trabajo de Batch son una buena opción para las máquinas virtuales de prioridad baja. El uso de VMs de prioridad baja puede introducir retrasos en la ejecución cuando se produce la reasignación de VMs. Si dispone de flexibilidad en cuanto al plazo de finalización de los trabajos, podría tolerar las posibles caídas de capacidad.
Cuando se implementan modelos en puntos de conexión por lotes, la reprogramación puede realizarse en el nivel de mini lotes. Este enfoque tiene la ventaja de que la anulación de la asignación solo afecta a los mini lotes que se están procesando en ese momento y no han finalizado en el nodo afectado. Se conservan todos los progresos realizados.
Limitaciones
- Una vez que una implementación se asocia a un clúster de VMs de prioridad baja, todos los trabajos producidos por dicha implementación utilizan VMs de baja prioridad. No es posible la configuración por tarea.
- La reprogramación se realiza en el nivel de lote pequeño, independientemente del progreso. No se proporciona ninguna capacidad de punto de comprobación.
Advertencia
En los casos en que todo el clúster está en espera o se ejecuta en un clúster de un solo nodo, el trabajo se cancela porque no hay capacidad disponible para que se ejecute. En este caso es necesario volver a presentar la solicitud.
Crear implementaciones por lotes que utilicen VMs de prioridad baja
Los trabajos de implementación de Batch consumen máquinas virtuales de prioridad baja mediante la ejecución en clústeres de proceso de Azure Machine Learning creados con máquinas virtuales de prioridad baja.
Nota:
Una vez que una implementación se asocia a un clúster de VMs de prioridad baja, todos los trabajos producidos por dicha implementación utilizan VMs de baja prioridad. La configuración por trabajo no es posible.
Puede crear un clúster de proceso de Azure Machine Learning de prioridad baja de la siguiente manera:
Cree una definición de computación YAML
como la siguiente, low-pri-cluster.yml:
$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json
name: low-pri-cluster
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
tier: low_priority
Cree el proceso con el siguiente comando:
az ml compute create -f low-pri-cluster.yml
Después de crear el nuevo cálculo, puede crear o actualizar su implementación para utilizar el nuevo clúster:
Para crear o actualizar una implementación en el nuevo clúster informático, cree un archivo de configuración YAML
, endpoint.yml:
$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost
description: A heart condition classifier based on XGBoost
type: model
model: azureml:heart-classifier@latest
compute: azureml:low-pri-cluster
resources:
instance_count: 2
settings:
max_concurrency_per_instance: 2
mini_batch_size: 2
output_action: append_row
output_file_name: predictions.csv
retry_settings:
max_retries: 3
timeout: 300
Después, cree la implementación con el siguiente comando:
az ml batch-endpoint create -f endpoint.yml
Visualización y supervisión de la desasignación de nodos
Existen nuevas métricas disponibles en Azure Portal para supervisar las máquinas virtuales de prioridad baja. Estas son las métricas:
- Nodos con prioridad
- Núcleos con prioridad
Para ver estas métricas en Azure Portal:
- En Azure Portal, vaya al área de trabajo de Azure Machine Learning.
- Seleccione Métricas en la sección Supervisión.
- Seleccione las métricas que quiere en la lista Métricas.