Pronóstico de series de tiempo con modelos de base basados ​​en LLM y AIOPS escalables en AWS

El pronóstico de series de tiempo es fundamental para la toma de decisiones en todas las industrias. Desde predecir el flujo de tráfico hasta el pronóstico de ventas, las predicciones precisas permiten a las organizaciones tomar decisiones informadas, mitigar los riesgos y asignar recursos de manera eficiente. Sin embargo, los enfoques tradicionales de aprendizaje automático a menudo requieren un ajuste extenso específico de datos y la personalización del modelo, lo que resulta en un desarrollo largo y pesado de recursos.

Ingresar Cronosuna familia de vanguardia de modelos de series de tiempo que utiliza el poder del modelo de lenguaje grande (LLM) Arquitecturas para romper estos obstáculos. Como modelo de base, Chronos se captura previamente en conjuntos de datos grandes y diversos, lo que le permite generalizar las capacidades de pronóstico en múltiples dominios. Este enfoque innovador permite a los cronos sobresalir en pronósticos de disparo cero, predicciones realizadas sin capacitación específica en el conjunto de datos de destino. Chronos supera a los modelos específicos de la tarea en la mayoría de los conjuntos de datos de referencia.

Chronos se basa en una información clave: tanto LLMS como el pronóstico de series temporales tienen como objetivo decodificar patrones secuenciales para predecir eventos futuros. Este paralelo nos permite tratar los datos de series de tiempo como un lenguaje para ser modelado por arquitecturas de transformadores estándar. Para hacer esto posible, Chronos convierte los datos de series de tiempo continuas en un vocabulario discreto a través de un proceso de dos pasos de escala de la serie temporal por su media absoluta y luego cuantifica la serie de tiempo escalada en un número fijo de contenedores igualmente espaciados.

En esta publicación de blog, lo guiaremos a través del proceso de integración de Chronos en Tubería de Amazon Sagemaker Uso de un conjunto de datos sintético que simula un escenario de pronóstico de ventas, desbloqueando predicciones precisas y eficientes con datos mínimos. Aprenderá a usar funciones para orquestar todo el flujo de trabajo desde el ajuste hasta la implementación. Al final de este viaje, estará equipado para optimizar su proceso de desarrollo y aplicar cronos a cualquier datos de series de tiempo, transformando su enfoque de pronóstico.

Requisitos previos

Dominio de sagmaker Acceso con los permisos de IAM requeridos: Necesita tener acceso a un dominio de Sagemaker con lo necesario AWS Identity and Access Management (IAM) permisos para crear y administrar recursos. Asegúrese de tener los permisos requeridos para crear cuadernos, implementar modelos y realizar otras tareas descritas en esta publicación. Consulte la configuración rápida para Amazon Sagemaker AI para obtener instrucciones sobre la configuración de un Dominio de sagmaker. Para seguir, ver el Código en Github.

Haga clic aquí para abrir la consola AWS y siga.

Descripción general de las tuberías de Sagemaker

Utilizamos tuberías de Sagemaker para orquestar experimentos de entrenamiento y evaluación. Con las tuberías de Amazon Sagemaker, puedes:

  • Ejecute múltiples iteraciones experimentales simultáneamente, reduciendo el tiempo general de procesamiento y el costo
  • Monitorear y visualizar el rendimiento de cada experimento ejecutado con integración de estudio
  • Invocar flujos de trabajo posteriores para su posterior análisis, implementación o selección de modelos

Tubería de entrenamiento

Generar datos

La disponibilidad y la calidad de los datos de series temporales públicas son limitados en comparación con los extensos conjuntos de datos de texto de alta calidad disponibles en el dominio de procesamiento del lenguaje natural (PNL). Esta disparidad plantea desafíos para los modelos de capacitación destinados a pronósticos de disparo cero, lo que requiere datos de series de tiempo diversos a gran escala y diversos. Dado que estamos ajustando un modelo de cronos previos a la aparición, usamos solo un pequeño conjunto de datos generados sintéticamente.

Para generar diversos patrones de series de tiempo, el primer paso en nuestra tubería genera un conjunto de datos sintético utilizando un banco de núcleo de núcleo de núcleo. Estos núcleos definen patrones de series de tiempo fundamentales, que incluyen tendencias lineales, variaciones locales suaves y estacionalidad. Al combinar estos núcleos a través de operaciones binarias aleatorias, creamos datos complejos de series de tiempo sintéticas. Este proceso nos permite generar patrones intrincados a partir de núcleos de base simple.

Estos datos trabajo de procesamiento se logra utilizando un Pytorchprocessorque corre Pytorch código (generate_data.py) dentro de un contenedor administrado por Sagemaker. Los datos y otros artefactos relevantes para la depuración se encuentran en el valor predeterminado Amazon Simple Storage Service (Amazon S3) Bucket asociado con la cuenta de Sagemaker. Los registros para cada paso en la tubería se pueden encontrar en Amazon CloudWatch.

base_job_name = f"{pipeline_name}/data-generation-step"

script_processor = PyTorchProcessor( 
    command=['python3'],
    role=role,
    instance_count=1,
    instance_type="ml.c5.2xlarge",
    base_job_name=base_job_name,
    sagemaker_session=pipeline_session,
    framework_version='1.13',
    py_version='py39'
)

Búsqueda de hiperparameter

Después de la generación de datos, ajustamos un modelo de cronos previos a la aparición. El ajuste fino le permite especializarse en un caso de uso específico que puede no estar bien representado en sus datos de preperación. En esta publicación, hemos usado amazon/chronos-t5-small Pero puede usar cualquier modelo que parezca adecuado. La siguiente tabla muestra los modelos disponibles.

Para una salida óptima, utilizamos ajuste automático del modelo para encontrar la mejor versión de un modelo a través de ajuste de hiperparameter. Este paso se integra en las tuberías de Sagemaker y permite ejecutar múltiples trabajos de capacitación en paralelo, empleando varios métodos y rangos de hiperparameter predefinidos. En nuestra tubería, sintonizamos específicamente la tasa de aprendizaje para optimizar el rendimiento de nuestro modelo. Con la capacidad de sintonización de hiperparameter en Sagemaker, aumentamos la probabilidad de que nuestro modelo alcance una precisión y generalización óptimas para la tarea dada.

estimator = PyTorch(
    role=role,
    instance_type=pipeline_parameters['training_instance_type'],
    output_path=f"s3://{bucket_name}/{pipeline_name}/models/",
    instance_count=1,
    source_dir="model",
    image_uri=train_image_uri,
    entry_point=model_name + ".py",
    base_job_name = f"{pipeline_name}/training/job",
)

hyper_ranges = {
     'learning-rate': ContinuousParameter(1e-5, 1e-4),
}

objective_name = "logloss"
metric_definitions = [{"Name": objective_name, "Regex": "'loss': ([0-9\\.]+),"}]

tuner_log = HyperparameterTuner(
    estimator,
    objective_name,
    hyper_ranges,
    metric_definitions,
    max_jobs=pipeline_parameters['max_jobs'], 
    max_parallel_jobs=pipeline_parameters['max_parallel_jobs'],
    objective_type="Minimize",
    base_tuning_job_name=f"{pipeline_name}/HPTuning/{model_name}",
    random_seed=10
)

Registro de modelos de Amazon Sagemaker

El modelo seleccionado se sube a Registro de modelos de Sagemakerque juega un papel fundamental en la gestión de modelos que están listos para la producción. Almacena los modelos, organiza versiones modelo, captura metadatos esenciales y artefactos como imágenes de contenedores y gobierna el estado de aprobación de cada modelo. Al utilizar el registro, podemos implementar modelos de manera eficiente en entornos de Sagmaker accesibles y establecer una base para el modelo de versiones.

registration_steps = {}

register_args = best_model.register(
    content_types=["text/csv"],
    response_types=["text/csv"],
    inference_instances=[instance_type],
    transform_instances=[instance_type],
    model_package_group_name=model_package_group_name,
    domain="MACHINE_LEARNING",
    description="Chronos",
    task="REGRESSION",
    framework="PYTORCH",
    image_uri=inference_image_uri
)
registration_steps = ModelStep(
    name=model_name, 
    step_args=register_args
)

Inferencia

Al finalizar nuestra tubería de capacitación, nuestro modelo se implementa utilizando Sagemaker Hosting Services, que permite la creación de un punto final de inferencia para Predicciones en tiempo real. Este punto final permite una integración perfecta con aplicaciones y sistemas, proporcionando acceso a pedido a las capacidades predictivas del modelo a través de una interfaz HTTPS segura. Las predicciones en tiempo real se pueden usar en escenarios como el precio de las acciones y las previsiones de demanda de energía.

endpoint_name = "chronos-endpoint-" + time.strftime("%Y-%m-%d-%H-%M-%S", time.gmtime())
print(f"EndpointName: {endpoint_name}")
model.deploy(
    initial_instance_count=1, 
    instance_type="ml.p3.2xlarge",
    serializer=JSONSerializer(),
    deserializer=JSONDeserializer(),
    endpoint_name=endpoint_name
)

predictor = Predictor(endpoint_name=endpoint_name)

payload = {"inputs": input_data}
jstr = json.dumps(payload)

p = predictor.predict(
    jstr,
    initial_args={
        "ContentType": 'application/json'
    }
)

Salida de predicción de muestra

La siguiente figura demuestra un pronóstico de muestra desde el punto final de Chronos.

Rendimiento de referencia de Chronos

El gráfico anterior muestra la evaluación de rendimiento de varios modelos de pronóstico de series temporales basadas en 27 conjuntos de datos que no se utilizan en la capacitación de los modelos Chronos. El punto de referencia evalúa el rendimiento de disparo cero de los modelos de cronos contra modelos estadísticos locales, modelos específicos de tareas y modelos previos a la petróleo. La evaluación utiliza dos métricas: pronóstico probabilístico (WQL) y pronóstico de puntos (MASE); Ambos se normalizaron usando una línea de base ingenua estacional. Los resultados se agregan mediante medias geométricas. Se observa que algunos de los modelos previos a la aparición anteriores tuvieron exposición previa a los conjuntos de datos de referencia.

Los resultados de cero disparos son de Chronos: aprendiendo el idioma de la serie temporal.

Conclusión

En esta publicación de blog, hemos demostrado cómo usar las funciones de Amazon SageMaker AIOPS para implementar Chronos, un poderoso modelo de pronóstico de series de tiempo basado en arquitecturas LLM. Mediante el uso de tuberías de Sagemaker, hemos mostrado un enfoque integral para la construcción, capacitación e implementación de modelos de pronóstico sofisticados a escala. Esta implementación ofrece eficiencia en el desarrollo del modelo, escalabilidad, AIOP simplificados, capacidades de inferencia en tiempo real y rentabilidad. La integración de Chronos con Sagemaker abre nuevas posibilidades para las empresas en varios sectores para implementar pronósticos avanzados de series temporales sin una experiencia amplia de aprendizaje automático interno. A medida que la IA y el aprendizaje automático continúan evolucionando, las soluciones como los cronos en Amazon Sagemaker representan un paso adelante significativo para hacer que las técnicas de pronóstico sofisticadas sean más accesibles y procesables, lo que puede conducir a una toma de decisiones más informada y una mejor eficiencia operativa en todas las industrias.

Referencias

¡Siéntase libre de dejar un comentario con cualquier pensamiento o pregunta!


Sobre los autores

Alston Chan es ingeniero de desarrollo de software en Amazon ADS. Construye tuberías de aprendizaje automático y sistemas de recomendaciones para recomendaciones de productos en la página de detalles. Fuera del trabajo, disfruta del desarrollo del juego y la escalada en roca.

María Masood Se especializa en la construcción de tuberías de datos y visualizaciones de datos en la plataforma AWS Commerce. Tiene experiencia en aprendizaje automático, cubriendo el procesamiento del lenguaje natural, la visión por computadora y el análisis de la serie de tiempo. Una entusiasta de la sostenibilidad en el corazón, María disfruta de la jardinería y jugar con su perro durante su tiempo de inactividad.

Nick Biso es ingeniero de aprendizaje automático en AWS Professional Services. Resuelve desafíos organizacionales y técnicos complejos utilizando ciencia de datos e ingeniería. Además, construye e implementa modelos AI/ML en la nube de AWS. Su pasión se extiende a su propensión a viajar y diversas experiencias culturales.