Compartir vía


Administración y optimización de costos de Azure Machine Learning

En este artículo se muestra cómo administrar y optimizar los costos al entrenar e implementar modelos de Machine Learning en Azure Machine Learning.

Use las sugerencias siguientes para ayudarle a administrar y optimizar los costos de los recursos de proceso.

  • Uso del clúster de proceso de Azure Machine Learning
  • Configurar los clústeres de entrenamiento para el escalado automático
  • Configuración de los puntos de conexión en línea administrados para el escalado automático
  • Establecer cuotas en las áreas de trabajo y la suscripción
  • Establecer directivas de finalización en el trabajo de entrenamiento
  • Usar máquinas virtuales de prioridad baja
  • Programar las instancias de proceso para que se apaguen e inicien automáticamente
  • Usar una instancia de Azure Reserved Virtual Machine Instances
  • Paralelización del entrenamiento
  • Establecimiento de directivas de retención y eliminación de datos
  • Implementación de recursos en la misma región
  • Eliminación de implementaciones con errores

Para obtener información sobre el planeamiento y la supervisión de los costos, consulte Plan para administrar los costos de Azure Machine Learning.

Importante

Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se proporciona sin un acuerdo de nivel de servicio. No se recomiendan versiones preliminares para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Uso del clúster de proceso de Azure Machine Learning

Como los datos cambian constantemente, necesita entrenar y volver a entrenar modelos rápidos y simplificados para mantener su precisión. Sin embargo, el entrenamiento continuo conlleva un costo, especialmente en el caso de modelos de aprendizaje profundo en GPU.

Los usuarios de Azure Machine Learning pueden usar el clúster de proceso administrado de Azure Machine Learning, también denominado AmlCompute. AmlCompute admite varias opciones de GPU y CPU. Azure Machine Learning hospeda internamente AmlCompute en nombre de su suscripción. Proporciona los mismos niveles empresariales de seguridad, cumplimiento y gobernanza en la escala de nube de IaaS de Azure.

Dado que estos grupos de proceso se encuentran dentro de la infraestructura de IaaS de Azure, puede implementar, escalar y administrar el entrenamiento con los mismos requisitos de seguridad y cumplimiento que el resto de la infraestructura. Estas implementaciones se producen en su suscripción y obedecen sus reglas de gobernanza. Para más información, consulte Plan para administrar los costos de Azure Machine Learning.

Configuración de clústeres de entrenamiento para el escalado automático

El escalado automático de clústeres en función de los requisitos de la carga de trabajo ayuda a reducir los costos de manera que solo use lo que necesita.

Los clústeres de AmlCompute están diseñados para escalarse de forma dinámica en función de la carga de trabajo. El clúster se puede escalar verticalmente hasta el número máximo de nodos que configure. A medida que finaliza cada trabajo, el clúster libera nodos y se escala al número mínimo de nodos configurado.

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.

También puede configurar la cantidad de tiempo que el nodo está inactivo antes de reducirse verticalmente. De forma predeterminada, el tiempo de inactividad antes de la reducción vertical se establece en 120 segundos.

  • Si realiza una experimentación menos iterativa, reduzca este tiempo para ahorrar costos.
  • Si realiza experimentación de desarrollo y pruebas altamente iterativa, es posible que tenga que aumentar el tiempo para que no pague el escalado y la reducción constantes después de cada cambio en el script de entrenamiento o el entorno.

Puede configurar clústeres de AmlCompute para los requisitos de carga de trabajo cambiantes mediante:

Configuración de puntos de conexión en línea administrados para el escalado automático

La escalabilidad automática ejecuta automáticamente la cantidad adecuada de recursos para controlar la carga en la aplicación. Los puntos de conexión en línea administrados admiten el escalado automático mediante la integración con la característica de escalabilidad automática de Azure Monitor. Para obtener más información, consulte implementaciones y puntos de conexión en línea para la inferencia en tiempo real.

El escalado automático de Azure Monitor admite un amplio conjunto de reglas:

  • Escalado basado en métricas, por ejemplo, uso de >CPU 70 %
  • Escalado basado en programación, por ejemplo, reglas de escalado para horas laborables punta
  • Una combinación de las dos

Para más información, consulte Escalabilidad automática de puntos de conexión en línea.

Establecimiento de cuotas en recursos

AmlCompute incluye una configuración de cuota o límite. Esta cuota es por familia de máquinas virtuales, por ejemplo, serie Dv2 o serie NCv3. La cuota varía según la región de cada suscripción. Las suscripciones comienzan con valores predeterminados pequeños. Use esta configuración para controlar la cantidad de recursos de AmlCompute disponibles para que se activen en la suscripción. Para más información, consulte Proceso de Azure Machine Learning.

Además, puede configurar la cuota de nivel de área de trabajo por familia de máquinas virtuales para cada área de trabajo dentro de una suscripción. Este enfoque proporciona un control más pormenorizado sobre los costos en los que cada área de trabajo podría incurrir y restringir determinadas familias de máquinas virtuales. Para más información, consulte Cuotas de nivel de área de trabajo.

Para establecer cuotas en el nivel de área de trabajo:

  1. Abra Azure Portal y seleccione cualquier área de trabajo de la suscripción.

  2. Seleccione Soporte técnico y uso de solución de problemas>Uso de cuotas en el menú del área de trabajo.

  3. Seleccione Ver cuota para ver las cuotas en Azure Machine Learning Studio.

  4. En esta página, puede encontrar su suscripción y región para establecer cuotas.

    Dado que esta configuración afecta a varias áreas de trabajo, necesita privilegios en el ámbito de la suscripción para establecer la cuota.

Establecimiento de directivas de terminación de trabajos

En algunos casos, debe configurar las ejecuciones de entrenamiento para limitar su duración o terminarlas de forma temprana. Por ejemplo, cuando se usa el ajuste de hiperparámetros integrado de Azure Machine Learning o el aprendizaje automático automatizado.

Estas son algunas de las opciones que tiene:

  • Defina un parámetro llamado max_run_duration_seconds en RunConfiguration para controlar la duración máxima a la que se puede extender una ejecución en el proceso que elija (proceso local o en la nube remota).
  • Para el ajuste de hiperparámetros, defina una directiva de finalización temprana de una directiva de bandidos, una directiva de mediana de detención o una directiva de selección de truncamiento. Para controlar aún más barridos de hiperparámetros, utilice parámetros como max_total_runs o max_duration_minutes. Para obtener más información, consulte Especificación de la directiva de terminación anticipada.
  • Para el aprendizaje automático automatizado, establezca directivas de terminación similares mediante la marca enable_early_stopping. También puede usar propiedades como iteration_timeout_minutes y experiment_timeout_minutes para controlar la duración máxima de un trabajo o para todo el experimento. Para obtener más información, consulte Criterios de salida.

Uso de máquinas virtuales de prioridad baja

Azure permite usar una capacidad excesiva sin usar como máquinas virtuales de prioridad baja en conjuntos de escalado de máquinas virtuales, Batch y Machine Learning Service. Estas asignaciones son preemptibles, pero vienen a un precio reducido en comparación con las máquinas virtuales dedicadas. En general, se recomienda usar máquinas virtuales de prioridad baja para cargas de trabajo de Batch. También debe usarlas cuando las interrupciones se puedan recuperar a través de reenvíos (para la inferencia de lotes) o a través de reinicios (para un entrenamiento de aprendizaje profundo con puntos de comprobación).

Las máquinas virtuales de prioridad baja tienen una cuota única independiente del valor de cuota dedicada, que es por familia de máquinas virtuales. Para obtener más información acerca de las cuotas de AmlCompute, consulte Administración y aumento de cuotas.

Las máquinas virtuales de prioridad baja no funcionan para las instancias de proceso, ya que necesitan admitir experiencias interactivas de cuaderno.

Programación de instancias de proceso

Cuando se crea una instancia de proceso, la máquina virtual permanece encendida para estar disponible para el trabajo.

  • Habilite el apagado inactivo (versión preliminar) para ahorrar en el costo cuando la máquina virtual está inactiva durante un período de tiempo especificado. Consulte Configuración del apagado inactivo.
  • Configure una programación para iniciar y detener automáticamente la instancia de proceso (versión preliminar) cuando no esté en uso para ahorrar costos. Consulte Programación del inicio automático y detención.

Uso de instancias reservadas

Otra manera de ahorrar dinero en recursos de proceso es la instancia reservada de máquina virtual de Azure. Con esta oferta, se compromete con plazos de uno o tres años. Estos descuentos van hasta el 72 % de los precios de pago por uso y se aplican directamente a su factura mensual de Azure.

Proceso de Azure Machine Learning admite las instancias reservadas de forma inherente. Si compra una instancia reservada de un año o tres años, se aplicará automáticamente el descuento en el proceso administrado de Azure Machine Learning.

Paralelización del entrenamiento

Uno de los métodos clave para optimizar el costo y el rendimiento es paralelizar la carga de trabajo con la ayuda de un componente paralelo en Azure Machine Learning. Un componente paralelo permite usar muchos nodos más pequeños para ejecutar la tarea en paralelo, lo que le permite escalar horizontalmente. La paralelización conlleva una sobrecarga. En función de la carga de trabajo y el grado de paralelismo que se puede lograr, este enfoque podría ser una opción. Para obtener más información, consulteParallelComponent (clase).

Establecimiento de directivas de retención y eliminación de datos

Cada vez que se ejecuta una canalización, se generan conjuntos de datos intermedios en cada paso. Con el tiempo, estos conjuntos de datos intermedios ocupan espacio en la cuenta de almacenamiento. Considere la posibilidad de configurar directivas para administrar los datos a lo largo de su ciclo de vida para archivar y eliminar los conjuntos de datos. Para obtener más información, consulte Optimizar los costes mediante la administración automática del ciclo de vida de los datos.

Implementación de recursos en la misma región

Los procesos ubicados en diferentes regiones pueden experimentar latencia de red y un mayor costo de transferencia de datos. Los costos de red de Azure se incurren en el ancho de banda saliente de los centros de datos de Azure. Para ayudar a reducir los costos de red, implemente todos los recursos de la región. El aprovisionamiento del área de trabajo de Azure Machine Learning y de los recursos dependientes en la misma región que los datos puede ayudar a reducir el costo y mejorar el rendimiento.

En escenarios de nube híbrida como los que usan Azure ExpressRoute, a veces puede ser más rentable mover todos los recursos a Azure para optimizar los costos de red y la latencia.

Eliminación de implementaciones con errores

Los puntos de conexión en línea administrados usan máquinas virtuales (VMs) para las implementaciones. Si envió una solicitud para crear una implementación en línea y se produjo un error, es posible que la solicitud haya pasado la fase cuando se crea el proceso. En ese caso, la implementación con errores incurriría en cargos. Cuando termine de depurar o investigar el error, elimine las implementaciones con errores para ahorrar el costo.