Por Kevin Kho, Han Wang, Max Mergenthaler y Federico Garza Ramírez.TL: DR Le mostraremos cómo puede aprovechar el poder distribuido de Spark y el código altamente eficiente de StatsForecast para adaptarse a millones de modelos en un par de minutos.El modelado, el análisis y la predicción de series temporales de tendencias y estacionalidades para los datos recopilados a lo largo del tiempo es una categoría de aplicaciones de software en rápido crecimiento. Las empresas, desde electricidad y economía hasta análisis de atención médica, recopilan datos de series temporales diariamente para predecir patrones y crear mejores datos -experiencias de producto impulsadas. Por ejemplo, la predicción de la temperatura y la humedad se utiliza en la fabricación para evitar defectos, las predicciones de métricas de transmisión ayudan a identificar a los artistas musicales más populares y la previsión de ventas de miles de SKU en diferentes ubicaciones de la cadena de suministro se utiliza para optimizar los costos de inventario. A medida que aumenta la generación de datos, las necesidades de pronóstico han evolucionado desde el modelado de unas pocas series de tiempo hasta la predicción de millones. Nixtla es un proyecto de código abierto centrado en el pronóstico de series de tiempo de última generación. Tienen un par de bibliotecas como StatsForecast para modelos estadísticos, NeuralForecast para aprendizaje profundo y HierarchicalForecast para agregaciones de pronósticos en diferentes niveles de jerarquías. Estas son bibliotecas de series de tiempo listas para producción enfocadas en diferentes técnicas de modelado. Este artículo analiza StatsForecast, una biblioteca de pronóstico ultrarrápida con modelos estadísticos y econométricos. El modelo AutoARIMA de Nixtla es 20 veces más rápido que pmdarima, y los modelos ETS (error, tendencia, estacional) se desempeñaron 4 veces más rápido que los modelos estadísticos y son más robustos. Los puntos de referencia y el código para reproducir se pueden encontrar aquí. Una gran parte del aumento del rendimiento se debe al uso de un compilador JIT llamado numba para lograr altas velocidades. El tiempo de iteración más rápido significa que los científicos de datos pueden ejecutar más experimentos y converger en modelos más precisos más rápido. También significa que la ejecución de puntos de referencia a escala se vuelve más fácil. En este artículo, estamos interesados en la escalabilidad de la biblioteca StatsForecast para ajustar modelos sobre Spark o Dask usando la biblioteca Fugue. Esta combinación nos permitirá entrenar rápidamente una gran cantidad de modelos distribuidos en un clúster temporal. Cuando se trata de grandes datos de series de tiempo, los usuarios normalmente tienen que lidiar con miles de series de tiempo lógicamente independientes (piense en la telemetría de diferentes usuarios o diferentes ventas de productos). ). En este caso, podemos entrenar un modelo grande sobre todas las series, o podemos crear un modelo para cada serie. Ambos son enfoques válidos ya que el modelo más grande captará tendencias en toda la población, mientras que entrenar miles de modelos puede ajustarse mejor a los datos de series individuales. biblioteca Nixtla HierarchicalForecast, pero esto también es más costoso desde el punto de vista computacional y más complicado de escalar. Este artículo tratará el escenario en el que entrenamos un par de modelos (AutoARIMA o ETS) por serie temporal univariante. Para esta configuración, agrupamos los datos completos por serie temporal y luego entrenamos cada modelo para cada grupo. La siguiente imagen ilustra esto. El DataFrame distribuido puede ser un Spark o un Dask DataFrame.
“num_trabajadores”: 20,
“cluster_name”: “fuga-nixtla-2”,
“chispa_versión”: “10.4.x-scala2.12”,
“chispa_conf”: {
“chispa.especulación”: “verdadero”,
“chispa.sql.shuffle.particiones”: “8000”,
“spark.sql.adaptive.enabled”: “falso”,
“chispa.tarea.cpus”: “1”
},
“atributos_aws”: {
“first_on_demand”: 1,
“disponibilidad”: “SPOT_WITH_FALLBACK”,
“zone_id”: “us-west-2c”,
“spot_bid_price_percent”: 100,
“ebs_volume_type”: “GENERAL_PURPOSE_SSD”,
“ebs_volume_count”: 1,
“ebs_volume_size”: 32
},
“node_type_id”: “m5.24xgrande”,
“driver_node_type_id”: “m5.2xgrande”,
“ssh_public_keys”: [],
“etiquetas_personalizadas”: {},
“chispa_env_vars”: {
“MKL_NUM_THREADS”: “1”,
“OPENBLAS_NUM_THREADS”: “1”,
“VECLIB_MAXIMUM_THREADS”: “1”,
“OMP_NUM_THREADS”: “1”,
“NUMEXPR_NUM_THREADS”: “1”
},
“autoterminación_minutos”: 20,
“habilitar_disco_elástico”: falso,
“cluster_source”: “IU”,
“init_scripts”: [],
“runtime_engine”: “ESTÁNDAR”,
“cluster_id”: “0728-004950-oefym0ss”
}
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…