En la Parte 1 describimos los retos de los procesos de optimización lentos y costosos que nunca dan buenos resultados al primer intento.

Parte 2
En la Parte 1 describimos los retos de los procesos de optimización lentos y costosos que nunca dan buenos resultados al primer intento. Ya sea entrenamiento de Machine Learning (ML), pruebas A/B de sitios web o la elección de los insumos correctos para una fábrica, cada ciclo es costoso y lo que buscas es llegar a un buen resultado lo más rápido posible. Vertex AI Vizier en Google Cloud lo hace posible al sugerir parámetros para cada prueba.
Solo un asesor
"Vizier" es el título que se le daba al asesor de un rey, derivado del árabe وزير wazīr a través del persa y el turco. El Vizier aconseja sobre la política real, pero no la decide. Y así funciona la optimización black-box de Vizier: no ejecuta las pruebas de optimización por ti. En cambio, los servicios de hyperparameter tuner que ofrecen GCP y AWS lo hacen todo por ti. Les das un rango de hiperparámetros; por ejemplo, el learning rate variando de forma continua entre 0 y 1, o el minimum child weight como parámetro entero entre 1 y 3. Creas el cliente del hyperparameter tuner y luego, en modo fire-and-forget, llamas a una función como fit(). Esa función corre durante un rato, quizás unas horas, y por dentro ejecuta múltiples iteraciones de entrenamiento, eligiendo distintos hiperparámetros sobre la marcha. Al final, el tuner devuelve el mejor modelo que pudo encontrar.
El proceso de optimización Black Box queda fuera de tu control y es invisible para ti. (Al menos en lo que respecta a la API: por lo general hay sistemas de monitoreo en marcha).
Nota: "Black Box" quiere decir que tus pruebas son invisibles para Vizier. No sabe nada sobre el entrenamiento de ML ni sobre la prueba A/B. No sabe nada sobre los gradientes ni los altibajos de la función que se optimiza dentro de cada prueba.
Para ti, en cambio, estas pruebas son totalmente "white-box": tú tienes el control.
Ventajas
Un servicio de hyperparameter tuner parece más simple que Vizier, y de hecho Google construyó Vertex AI AutoML y sus hyperparameter tuners en AI Platform (el nombre comercial anterior) sobre un motor basado en Vizier. Pero el enfoque Black Box, en el que tú interactúas con Vizier, tiene sus ventajas.
Control
Con Black Box Optimization tienes más control.
Las pruebas suelen estar dentro de tu área de expertise. Los desarrolladores de tu sitio web conocen al detalle cómo funciona; tus data scientists dominan los detalles de la algoritmia de ML. Has pensado con cuidado cómo sacarle el máximo provecho a tus sistemas al menor costo posible. Con Vizier mantienes el control total del entrenamiento de ML: qué infraestructura o APIs usar, cuántas y cuáles GPUs o TPUs, etc.
Incluso puedes ignorar las sugerencias de Vizier y usar tus propios parámetros. Por supuesto, lo normal es que uses las sugerencias: para eso invocas a Vizier. Por ejemplo, podrías leer sobre un nuevo algoritmo para tu ML, o si los product managers quieren probar una nueva variante que no estaba en la prueba A/B del sitio, puedes hacerlo. Incluso cuando ejecutes la prueba con tus propios parámetros, puedes seguir enviándolos junto con las métricas a Vizier, y este aprenderá de ellos igual que cuando usas los parámetros que sugiere.
Escalabilidad
Vizier solo se encarga de la parte "fácil" de optimizar a lo largo de múltiples pruebas. No hace el trabajo pesado del ML, que puede requerir mucho hardware especializado. Tampoco hace el trabajo pesado de las pruebas A/B de un sitio web ni de operar una fábrica. Esto lo hace escalable, porque tú te ocupas del entrenamiento real o del proceso a optimizar, que es la parte más intensiva del flujo, y así puedes aplicar las mejores prácticas que mejor se adapten a tu setup específico. (En la Figura 1, abajo, tus máquinas de entrenamiento son los "Evaluation workers" bajo la API REST de Vizier.)
Mientras tanto, Vizier lanza workers de forma escalable para generar sugerencias o indicar cuándo detenerse. Como su estado se guarda en una base de datos, y no dentro del contexto de una única ejecución de optimización, puede recuperarse ante fallos. Y como los workers de sugerencias solo se dedican a la hiperoptimización, y no a tu "trabajo pesado", Vizier puede escalarlos de forma eficiente.

Figura 1. Diagrama de arquitectura (basado en el diagrama del paper de investigación).
Multiobjetivo
La mayoría de los procesos de optimización, y de los hyperparameter tuners, buscan maximizar una sola métrica. Ese también es el uso más común de Vertex AI Vizier. Pero quizás quieras optimizar varias métricas al mismo tiempo. En una prueba A/B de un sitio web, puede que quieras maximizar a la vez los ingresos y el tiempo en el sitio. O quizás tengas un mercado de dos lados y quieras que los compradores consigan buenas ofertas, pero también que los vendedores maximicen sus ganancias.
Como ejemplo sencillo para ilustrar el concepto, puedes echarle un vistazo a este Notebook de ejemplo de Google que maximiza dos funciones trigonométricas de los mismos dos parámetros de entrada.

Figura 2. No existe un único punto óptimo para ambas funciones.
Como es evidente, no hay un único punto en el que ambas métricas se maximicen, así que Vertex AI Vizier descubre la frontera de Pareto: una línea de la cual, hacia un lado, no puedes mejorar una métrica sin empeorar la otra. El óptimo no es un punto, es una frontera.
A continuación: flexibilidad y los primeros notebooks de ML con Vizier
Vizier es un sistema sencillo y puedes (y normalmente deberías) usarlo con la configuración por defecto. Aun así, también puedes afinar más sus capacidades. En el próximo artículo te mostraremos cómo hacerlo y compartiremos algunos ejemplos de código.
Consulta la Parte 3: "Más allá de lo básico: configurabilidad de Vizier y ejemplos de código".