Ir al contenido

Blog


Cómo DoorDash creó un modelo de aprendizaje conjunto para la previsión de series temporales

20 de junio de 2023

|
Qiyun Pan

Qiyun Pan

Hanyu Yang

Hanyu Yang

En las aplicaciones de previsión del mundo real, el equilibrio entre precisión y velocidad es todo un reto. Podemos lograr una gran precisión ejecutando numerosos modelos y combinaciones de configuraciones y ganar velocidad ejecutando modelos rápidos y de bajo coste computacional. En DoorDash exploramos varios modelos y combinaciones de configuración para predecir la demanda en nuestra plataforma. Sin embargo, el reto consiste en crear un modelo de previsión que sea muy preciso y, al mismo tiempo, rápido y barato. Para abordar este equilibrio entre precisión, velocidad y coste, nuestro equipo de previsión ha creado un nuevo modelo denominado ELITE (Ensemble Learning for Improved Time-series Estimation). El nuevo modelo utiliza modelos conjuntos para hacer previsiones en lugar de optimizar un modelo individual, lo que permite combinar modelos computacionalmente eficientes para aumentar la precisión global.

Aquí explicamos cómo hemos desarrollado este modelo de conjunto para:

  • mantener la precisión al tiempo que se reduce significativamente el tiempo de ejecución, lo que hace factible generar previsiones sobre objetivos con una elevada dimensionalidad.
  • generar enormes ahorros de costes de computación mediante:
    • aplicando un marco de formación eficiente desde el punto de vista computacional.
    • optimización de la configuración de la infraestructura para acomodar el proceso de formación en el clúster Ray, que también fue aprovechado por OpenAI para la formación GPT.
  • Reducir el esfuerzo de mantenimiento creando un marco altamente automatizado para intercambiar cualquier modelo.

Límites de la previsión con un modelo individual

En los últimos años, los modelos de previsión han avanzado desde los marcos tradicionales de series temporales hasta arquitecturas de aprendizaje profundo cada vez más complejas con el fin de captar la dinámica volátil de los escenarios del mundo real. Sin embargo, elegir subjetivamente un único modelo para realizar previsiones precisas para cada objetivo es poco realista. Por lo tanto, en muchas prácticas industriales, una caja de herramientas de previsión aplica un marco de selección para explorar una amplia gama de modelos y configuraciones, evaluando cuidadosamente el rendimiento de cada modelo en cada objetivo antes de generar previsiones finales a partir del mejor. El espacio de configuración incluye no sólo los parámetros del modelo, sino también las opciones de procesamiento de datos, como la limpieza de datos, la transformación y la gestión de valores atípicos, así como los factores causales, como las vacaciones, el tiempo o las promociones. En DoorDash, hemos creado una fábrica de previsiones para habilitar estas funcionalidades.

Pero este tipo de canal de previsión está limitado por su carga computacional. Más allá de la complejidad de entrenar estructuras de modelos cada vez más complicadas, las combinaciones de configuraciones crecen exponencialmente cuando añadimos una opción adicional a cada entrada. Por ejemplo, supongamos que tenemos 10 configuraciones y cada configuración tiene dos opciones, lo que significa que tenemos210 combinaciones. Cuando añadimos una opción adicional a una sola configuración, las combinaciones de configuraciones aumentan en29. Como resultado, tenemos que buscar exhaustivamente, por ejemplo mediante una búsqueda de cuadrícula, entre miles de combinaciones de configuraciones para cada objetivo de previsión, lo que consume horas de tiempo de ejecución y cientos de dólares en coste computacional por ejecución. Además, hay que aplicar un proceso de validación cruzada para evaluar el rendimiento de cada modelo. Aunque este método de búsqueda en cuadrícula mantiene una alta precisión para una amplia gama de objetivos de previsión, también aumenta significativamente tanto el tiempo de ejecución como los costes computacionales a medida que admitimos más casos de uso. 

En DoorDash, las previsiones se generan para objetivos muy granulares, lo que hace que la ejecución de modelos de previsión sea más costosa computacionalmente o incluso prohibitiva. Por ejemplo, tenemos decenas de miles de objetivos cuando realizamos previsiones sobre el tiempo de entrega en experimentos a nivel de switchback para crear covariables para la reducción de la varianza. Pero los límites computacionales podrían bloquear estos casos de uso debido a tiempos de ejecución inaceptablemente largos o altos costes de clúster. Estas limitaciones impulsaron el desarrollo de un nuevo marco de previsión que permitiera reducir el presupuesto de cálculo manteniendo una elevada precisión.

Aunque lo ideal sería aprovechar un único modelo de previsión, estos modelos tienen sus propias limitaciones que dificultan su uso por sí solos, entre ellas: 

  • Supuestos poco realistas: La estructura del modelo puede haberse simplificado con supuestos que no se cumplen fácilmente. Por ejemplo, un supuesto de estacionalidad única no podría satisfacer los complejos patrones de estacionalidad múltiple de la realidad -inherentes a una semana de siete días o a 52 semanas en un año-.
  • Fuerza sesgada: Algunos modelos sólo pueden tener ventajas a la hora de hacer previsiones en etapas concretas del horizonte de previsión. Por ejemplo, un modelo con procesadores de tiempo extremo puede obtener mejores resultados cuando el tiempo cambia repentinamente, pero peores cuando se trata de patrones normales de tendencia y estacionalidad. Estos límites resultan especialmente críticos en las previsiones a largo plazo, ya que las tendencias y pautas desviadas se acumulan a lo largo del horizonte de previsión.
  • Inestabilidad general: Las previsiones de un único modelo son relativamente menos estables. Pueden producir patrones bruscos de aumento/disminución o valores extremos que resultan poco fiables desde el punto de vista empresarial.

Pasar a un modelo de conjunto para obtener lo mejor de ambos mundos

Para resolver este reto de previsión en el mundo real, propusimos un enfoque de aprendizaje conjunto de apilamiento temporal. La idea es la siguiente: En lugar de confiar en un único modelo, apilaríamos otra capa sobre los modelos candidatos base (aprendices), creando un conjunto de sus salidas para obtener las previsiones finales. Como se muestra en la Figura 1, el diseño de este marco aplica dos capas de paralelización para maximizar la eficiencia computacional y permitir la elección arbitraria de los modelos de la capa base y de la capa de conjunto.  

Este planteamiento de aplicación ofrecía varias ventajas en forma de mayor precisión, mejor eficiencia y coste, mayor extensibilidad y menores riesgos operativos, como se detalla a continuación.

Mayor precisión

El modelo de conjunto de apilamiento logra menos sesgo que cualquier modelo de base individual y podría incluso superar el promedio de modelos bayesianos. Intuitivamente, cada base de aprendizaje tiene puntos fuertes en la captura del patrón temporal en períodos discretos a lo largo del horizonte de previsión. El modelo ensemble de apilamiento combina sus previsiones para captar las ventajas de cada base, lo que da lugar a previsiones más precisas. Por ejemplo, nuestro equipo realizó experimentos sobre el volumen semanal de pedidos en varios miles de submercados de DoorDash; los resultados mostraron que ELITE era aproximadamente un 10% más preciso que el mejor modelo individual. 

De hecho, el modelo ensemble que proponemos resuelve decentemente las limitaciones de rendimiento de las previsiones con un único modelo en cada uno de los aspectos analizados en la sección anterior. La realización de previsiones a partir de varios modelos debilita los supuestos de estructura de modelo impuestos por cada modelo individual; el uso de un modelo de conjunto extrae los puntos fuertes, lo que hace que las previsiones combinadas aprovechen al máximo los mejores resultados en las distintas fases de previsión. Además, con diversos modelos de base, el modelo de conjunto produce valores de previsión más estables.

Mayor eficacia y menores costes

El marco de conjunto temporal propuesto elimina la necesidad de una validación cruzada de ventana rodante pesada, lo que reduce tanto el tiempo de ejecución como los costes computacionales. Un experimento con nuestras previsiones más complejas redujo el tiempo de entrenamiento del modelo de horas a minutos y los costes de cálculo en más de un 80%. El marco de conjunto también desbloquea objetivos complejos, incluidos nuestros trabajos de previsión de mayor granularidad. Por ejemplo, en DoorDash utilizamos las previsiones para apoyar la reducción de la varianza de experimentación para el tiempo de entrega en el nivel de conmutación altamente granular, mientras que el marco de búsqueda de cuadrícula no pudo terminar dentro de una cantidad aceptable de tiempo. 

Más modularización y extensibilidad

Dado que construimos un módulo estandarizado en el marco de modelado de conjuntos, nuestra implementación mejoró la flexibilidad al admitir cualquier modelo definido por el usuario. Además, el modelo aceptó características externas, lo que significa que puede admitir modelos de aprendizaje automático y aprendizaje profundo que las requieran. Este marco también proporciona información valiosa para investigar los modelos base mediante el seguimiento de cómo sus previsiones contribuyen a las previsiones de conjunto. Este análisis de diagnóstico del modelo base ayuda a los desarrolladores de modelos a comprender mejor cómo cada modelo base capta los patrones cambiantes de un objetivo.

Menor mantenimiento y riesgo del sistema

ELITE no selecciona el modelo de mejor rendimiento a partir de los modelos base, lo que evita el esfuerzo adicional de entrenar cada modelo repetidamente en una secuencia de fechas de ejecución a lo largo de la línea de tiempo histórica. Esto simplifica lo que de otro modo podría ser un complicado proceso de validación de modelos, reduciendo los esfuerzos de mantenimiento. Dado que la construcción de ELITE sólo se basa en el efecto estimado de cada modelo base, reducimos drásticamente el número de veces que necesitamos entrenar los modelos base. Esta carga reducida también mejora la estabilidad del sistema en trabajos distribuidos, reduciendo el riesgo de llegar a límites computacionales. 

Edificio ELITE

A continuación resumimos los principales componentes que intervienen en la construcción de nuestra solución de conjunto desde la perspectiva tanto del flujo de trabajo del modelo como de la arquitectura. 

Diseñar el flujo de trabajo de ELITE

Figura 1: Flujo de trabajo y arquitectura del modelo de dos capas (base y conjunto)
Figura 1: Flujo de trabajo y arquitectura del modelo de dos capas (base y conjunto)

Como se muestra en la Figura 1, nuestra solución de modelo ensemble aplica una arquitectura de dos capas -base y ensemble-. La idea es utilizar las previsiones de la capa de base para crear un conjunto de características que se ajusten al modelo de la capa de conjunto. En concreto, las características de previsión del modelo base podrían combinarse con otras características externas, como factores causales o cualquier otra variable correlacionada, para alimentar el modelo de aprendizaje automático de la capa superior. De este modo, las variaciones en el objetivo de previsión podrían ser captadas en su totalidad por sus expectativas temporales bajo diversos supuestos del modelo de series temporales, tal y como se refleja en las previsiones del modelo base, así como por factores de otras fuentes a través de características externas.

Creamos el conjunto de previsiones siguiendo los siguientes pasos, que detallamos a continuación:

  1. Elegir un conjunto de alumnos base 
  2. Aplicación de una estrategia de validación cruzada k-fold temporal por apilamiento para generar previsiones a partir de aprendices de base que se ajusten al pronosticador de conjunto de capa superior.
  3. Elección y ajuste del modelo de capa superior y elaboración de las previsiones finales

Cómo elegimos a los alumnos de base

La capacidad de previsión de ELITE depende de su potencial para adoptar diferentes aprendices de base. La plataforma de previsión centralizada de DoorDash admite una amplia gama de modelos y configuraciones candidatos. 

Además de integrar modelos de previsión de paquetes existentes como statsmodels, prophet y lightgbm, personalizamos los modelos introduciendo muchas configuraciones. Estas configuraciones incluyen tanto las estructuras subyacentes de los modelos (incluyendo configuraciones internas como tendencias aditivas o multiplicativas, estacionalidad o supuestos de error), como las opciones de procesamiento de series temporales para configuraciones externas, incluyendo cómo tratar los valores perdidos y los valores atípicos y si ajustar o no los impactos de las vacaciones, el tiempo o las promociones. Estas opciones flexibles proporcionan una gran fuente de modelos para ELITE.

La precisión de las previsiones de los modelos de ensemble puede mejorarse fomentando la diversidad entre los modelos de base. Para ello, hemos desarrollado una capa estandarizada de envoltura de modelos que permite incorporar nuevos modelos. Tenemos previsto investigar otras opciones para mejorar la precisión, como penalizar la complejidad del modelo base.

Apilamiento temporal validación cruzada k-fold

Es fundamental estimar el efecto de cada modelo base a medida que creamos el conjunto de previsiones. Como se muestra en la Figura 2, estimamos el efecto del modelo base a través de un marco de validación cruzada k-fold temporal por apilamiento que ajusta un modelo a las observaciones frente a las previsiones apiladas para cada bloque de validación. En este marco de validación cruzada temporal, se conservará el orden temporal de los datos. 

El procedimiento de validación cruzada k-fold temporal de apilamiento sigue los siguientes pasos:

  1. Partición del conjunto de datos en n segmentos
  2. En cada segmento, cree pliegues k y
  • Ajustar cada aprendiz base con los datos de los periodos de entrenamiento
  • Recopilar tanto las previsiones como los datos reales de cada alumno base de los periodos de prueba. 
  1. Apilar las previsiones y los datos reales de cada aprendiz base generados en el paso 2 y ajustarlos en la capa de conjunto para obtener el efecto, o peso, de cada aprendiz base.
Figura 2: Apilamiento temporal de validación cruzada k-fold

Elegir un conjunto de aprendizaje

Al ajustar la capa del modelo ensemble, la selección de modelos debe basarse en el número de variables independientes -modelos base- y el tamaño de la muestra de datos, u observaciones apiladas. Un gran número de modelos base y datos suficientes favorecerían estructuras de modelo más complejas. Es importante elegir modelos que no sean sensibles a muestras correlacionadas, especialmente en el caso de datos temporales. Nuestra arquitectura permite seleccionar con flexibilidad modelos con distintos niveles de complejidad, que van desde la regresión lineal hasta las redes neuronales.

Implantación de la arquitectura ELITE

Para implementar este diseño de ensemble, integramos el marco con nuestra base de código Forecast Factory. Descompusimos el proceso de entrenamiento de ELITE en componentes clave, como el entrenamiento de los aprendices base, el apilamiento temporal con validación cruzada k-fold y el entrenamiento de la capa de ensemble, y creamos una clase de modelo de ensemble que incorpora cada una de sus implementaciones. A continuación, creamos una clase de ejecución genérica para ejecutar el flujo de trabajo de previsión de conjuntos. Este ejecutor puede heredarse fácilmente y adaptarse a cualquiera de nuestros trabajos de previsión existentes. Con esta implementación, podemos aplicar un marco de paralelización anidada; el diseño también nos permite la flexibilidad de hacer elecciones de modelo en las capas base y de conjunto dentro de nuestra arquitectura. En la próxima sección, analizaremos cómo este diseño ofrece ventajas significativas en cuanto a eficacia y generalizabilidad, sobre todo cuando se trata de objetivos de previsión de alta granularidad.

Paralelización anidada en el clúster Ray

Para maximizar la eficacia del trabajo de previsión, implementamos un marco de paralelización anidada en nuestro diseño de modelado de conjuntos para generar simultáneamente previsiones para un gran número de objetivos. Como se muestra en la Figura 3, nuestro marco de paralelización anidada implica el entrenamiento paralelo de cada objetivo en la capa externa y el entrenamiento paralelo de cada aprendiz base en la capa interna. Sin este marco, el entrenamiento secuencial de millones de modelos de previsión individuales llevaría mucho tiempo y sería prohibitivo desde el punto de vista informático.

Figura 3: Ejecución de ELITE con paralelización anidada entre nodos en las capas base y de conjunto

Para proporcionar un entorno de distribución estable y aprovechar al máximo las ventajas de nuestra paralelización anidada entre nodos de ambas capas, adoptamos Ray, un nuevo marco de formación distribuida que facilita el escalado. Con KubeRay, lanzamos los clústeres de Ray en nuestra infraestructura interna de Kubernetes y maximizamos la eficiencia de nuestro modelo de conjunto, reduciendo significativamente tanto el tiempo de ejecución como el coste computacional.

Elección flexible de modelos con envolturas genéricas

Nuestra arquitectura también ofrece la ventaja de la generalizabilidad derivada del diseño genérico de nuestro modelo base y de las envolturas de modelos de conjunto. Nuestro marco de implementación estandarizado nos permite no solo integrar modelos de paquetes existentes de aprendizaje automático, aprendizaje profundo o predicción, sino también crear clases de modelos personalizados en función de las necesidades específicas de los usuarios. 

El caso de uso de DoorDash

Aquí presentaremos dos casos de uso de DoorDash para demostrar el rendimiento de nuestro modelo ensemble. 

En el primer caso, se trata de previsiones semanales del volumen de pedidos para permitir la planificación financiera y operativa de varios miles de submercados. Exploramos miles de combinaciones diferentes de modelos y configuraciones para cada submercado; cada combinación corresponde a un aprendiz base. Como se muestra en la Tabla 1, observamos una mejora significativa de la eficiencia y la precisión con ELITE en comparación con la búsqueda en malla. Conseguimos una reducción del 78% y el 95% en el tiempo de ejecución y el coste computacional, respectivamente, así como una mejora del 12% en la precisión MAPE. 

% de mejora de ELITE respecto a la búsqueda en cuadrícula
Tipo de clústerTiempo de ejecuciónCoste del grupoPrecisión (MAPE)
Chispa83%96%12%
Ray*78%95%
Tabla 1: Reducción significativa del tiempo de ejecución, coste de cluster y precisión en ELITE respecto a la búsqueda en malla
*Nótese que los porcentajes de mejora mostrados en la Tabla 1 comparan ELITE con grid search en el mismo tipo de cluster. Sin embargo, la ejecución de ELITE en Ray reduce el tiempo de ejecución y el coste en comparación con la ejecución de ELITE en Spark, como se muestra en la Tabla 2.  

El segundo caso de uso se refiere a nuestra previsión del plazo de entrega como ejemplo para apoyar la reducción de la varianza de la experimentación. Esta previsión se realiza a nivel de switchback, que es nuestra unidad de aleatorización de la experimentación. Con el número de unidades de conmutación de cinco dígitos en DoorDash, la búsqueda de cuadrícula no podría proporcionar una solución viable dentro de un presupuesto computacional y unas limitaciones de tiempo razonables. Sin embargo, ELITE generó estas previsiones altamente granulares en una hora y 20 minutos con una mejora del 10% en la reducción de la varianza respecto al uso de series temporales históricas con múltiples retardos, por ejemplo, CUPED

En el caso de previsiones tan granulares, nos gustaría destacar la mejora de la eficiencia que se consigue combinando nuestro algoritmo de ensemble con la infraestructura Ray. La mínima carga computacional conseguida por el algoritmo de ensemble nos permitió ejecutar el modelo en clusters Ray pequeños y baratos. Como resultado, además de desbloquear el trabajo de previsión de la búsqueda en la malla, también redujimos nuestro tiempo de ejecución y el coste computacional al cambiar a Ray desde los clústeres Spark, como se muestra en la Tabla 2.     

Tiempo de ejecución frente a SparkCoste del clúster frente a Spark
Mejora por Ray50%93%
Tabla 2: Reducción adicional del tiempo de ejecución y los costes con Ray en ELITE

Inconvenientes de ELITE

A pesar de todas las ventajas, el uso de modelos ensemble presenta algunos inconvenientes que tenemos previsto abordar a medida que vayamos mejorando la precisión. Aunque ELITE mejora la precisión de las previsiones con respecto a un único modelo en la mayoría de los escenarios habituales, su capacidad para manejar casos extremos es inferior a la de un único modelo altamente especializado. La deficiencia proviene de la capacidad del modelo único para captar un patrón extremo concreto; cuando sus previsiones se combinan con otras que son menos representativas de ese patrón, la precisión disminuye. Por otro lado, como muestra la Figura 4, las combinaciones de aprendices de base muy diversos proporcionan una gran precisión para la mayoría de los escenarios comunes, cubriendo exhaustivamente la variación desde tantas direcciones como sea posible.

Figura 4: Compromiso de precisión entre modelos especializados y conjuntos
Figura 4: Compromiso de precisión entre modelos especializados y conjuntos

Para un escenario extremo, la precisión aumenta a medida que el modelo se vuelve más especializado (a lo largo de la dirección inversa del eje x) y disminuye a medida que el modelo se vuelve más ensamblado (a lo largo del eje x). Por otro lado, en un escenario común, la precisión aumenta a medida que el modelo se ensambla más (a lo largo del eje x) y disminuye a medida que el modelo se especializa más (a lo largo de la dirección inversa del eje x).

Para contrarrestar estas preferencias contradictorias sobre modelos especializados y conjuntos cuando se trata de diferentes patrones de datos, planeamos centrarnos en explorar formas más inteligentes de crear un conjunto de aprendices de base para encontrar un equilibrio en las compensaciones generales de precisión. A continuación, nos proponemos optimizar el uso de la capacidad de un alumno individual para evaluar situaciones extremas, manteniendo al mismo tiempo la diversidad de modelos para garantizar la precisión y la solidez en los escenarios más comunes.

Aprender de la mejora de la eficacia de la ejecución

Para terminar, nos gustaría compartir algunas conclusiones que hemos extraído de la creación de nuestro modelo de conjunto. 

La importancia de la elección y configuración del backend

La infraestructura de backend desempeña un papel crucial en la creación de soluciones de aprendizaje automático eficientes y fiables. Como descubrimos durante nuestra ejecución inicial del marco de paralelización anidada con el backend Spark en clústeres Spark, experimentamos dificultades en la depuración con registros no informativos en el nodo controlador. 

Buenas prácticas de aplicación

La refactorización constante puede conducir a importantes ganancias de eficiencia y es una práctica de programación ideal, especialmente cuando se desarrolla código que incluye complicadas estructuras de paralelización. Al principio de nuestra implementación paralela, por ejemplo, pasábamos directamente todo el objeto de la clase (self) a muchos métodos paralelizados, lo que provocaba ralentizaciones inaceptables en las distribuciones de datos y las ejecuciones. Sin embargo, después de la refactorización para minimizar los datos y objetos que pasan a través de estos métodos paralelizados, logramos mejoras en la eficiencia de más de seis veces.

Conclusión

El marco de ensamblaje propuesto es aplicable no sólo al problema de previsión específico que abordamos, sino también a cualquier sistema de previsión que requiera un proceso de selección de modelos pesado. También sirve como un potente sistema de aprendizaje automático en el que podrían incluirse características de previsión de series temporales, como la meteorología, además de predicciones de modelos apilados. Al establecer conexiones de conjunto entre los modelos de base, el marco propuesto ofrece la flexibilidad necesaria para admitir casos de uso tanto de aprendizaje automático como de previsión, lo que se traduce en una mayor precisión y eficiencia, sin necesidad de una compleja canalización de aprendizaje profundo. 

Agradecimientos

Agradecemos sinceramente toda la ayuda y el apoyo de los equipos de previsión de DSML y MLP: Swaroop Chitlur, Ryan Schork, Chad Akkoyun, Hien Luu y Cyrus Safaie, que han hecho posible y exitoso este proyecto de colaboración. Muchas gracias a Joe Harkman, Robert Kaspar y Stas Sajin, que compartieron ideas y sugerencias increíblemente valiosas en la revisión del diseño de este trabajo. Nuestro agradecimiento también a los socios del equipo de la plataforma de experimentación, Bhawana Goel, Caixia Huang, Yixin Tang y Stas S ajin, por su esfuerzo y colaboración en la discusión e incorporación de los casos de uso. Por último, muchas gracias al equipo de Eng Enablement por su continuo apoyo, revisión y edición de este artículo.

About the Authors

  • Qiyun Pan

    Qiyun Pan is a Machine Learning Engineer at DoorDash, since April 2021, on the forecasting team where she primarily focuses on Demand Forecasting. Qiyun has a PhD Degree in Industrial and Operations Research from the University of Michigan, Ann Arbor.

  • Hanyu Yang

    Hanyu Yang is a Software Engineer at DoorDash, since July 2022, on the Machine Learning Platform team, focusing on Forecast Platform. Hanyu has a Bachelor’s Degree in Computer Science from Zhejiang University and a Master of Science in Information Technology-Mobility from Carnegie Mellon University.

Trabajos relacionados

Ubicación
Oakland, CA; San Francisco, CA
Departamento
Ingeniería
Ubicación
Oakland, CA; San Francisco, CA
Departamento
Ingeniería
Job ID: 2980899
Ubicación
San Francisco, CA; Sunnyvale, CA
Departamento
Ingeniería
Ubicación
Pune, India
Departamento
Ingeniería
Ubicación
Pune, India
Departamento
Ingeniería