output_transform
. Это простое исправление значительно повышает общую производительность Chronos. Мы обновим результаты в следующей версии ArXiv.pipeline.embed
для извлечения встроенных кодировщиков из Chronos.Chronos — это семейство предварительно обученных моделей прогнозирования временных рядов, основанных на архитектуре языковых моделей. Временной ряд преобразуется в последовательность токенов посредством масштабирования и квантования, а языковая модель обучается на этих токенах с использованием перекрестной энтропийной потери. После обучения вероятностные прогнозы получаются путем выборки нескольких будущих траекторий с учетом исторического контекста. Модели Chronos были обучены на большом массиве общедоступных данных временных рядов, а также синтетических данных, созданных с использованием гауссовских процессов.
Подробную информацию о моделях Chronos, данных и процедурах обучения, а также результатах экспериментов можно найти в статье Chronos: изучение языка временных рядов.
Рис. 1: Высокоуровневое изображение Хроноса. ( Слева ) Входной временной ряд масштабируется и квантуется для получения последовательности токенов. ( В центре ) Токены передаются в языковую модель, которая может быть моделью кодировщика-декодера или моделью только декодера. Модель обучается с использованием перекрестной энтропийной потери. ( Справа ) Во время вывода мы авторегрессионно выбираем токены из модели и сопоставляем их обратно с числовыми значениями. Для получения прогнозируемого распределения выбираются несколько траекторий.
Модели в этом репозитории основаны на архитектуре T5. Единственная разница заключается в размере словаря: модели Chronos-T5 используют 4096 различных токенов по сравнению с 32128 исходными моделями T5, что приводит к меньшему количеству параметров.
Модель | Параметры | На основе |
---|---|---|
Хронос-t5-крошечный | 8М | t5-эффективный-крошечный |
Хронос-t5-мини | 20М | t5-эффективный-мини |
Хронос-t5-маленький | 46М | t5-эффективный-маленький |
Хронос-t5-база | 200М | t5-эффективная база |
Хронос-t5-большой | 710М | t5-эффективный-большой |
На следующем рисунке показана замечательная производительность моделей Chronos с нулевым выстрелом на 27 наборах данных по сравнению с локальными моделями, моделями для конкретных задач и другими предварительно обученными моделями. Подробную информацию о настройке оценки и других результатах можно найти в документе.
Рис. 2. Производительность различных моделей в тесте Benchmark II, включающем 27 наборов данных, которые не наблюдались моделями Chronos во время обучения. Этот тест дает представление о нулевой производительности моделей Chronos по сравнению с локальными статистическими моделями, которые подбирают параметры индивидуально для каждого временного ряда, моделями для конкретных задач, обученными для каждой задачи , и предварительно обученными моделями, обученными на большом корпусе временных рядов. Предварительно обученные модели (другие) указывают на то, что некоторые (или все) наборы данных в тесте Benchmark II могли находиться в обучающем корпусе этих моделей. Метрики вероятностного (WQL) и точечного (MASE) прогнозирования были нормализованы с использованием оценок базового уровня Seasonal Naive и агрегированы через среднее геометрическое для получения Agg. Относительные WQL и MASE соответственно.
Чтобы выполнить вывод с моделями Chronos, установите этот пакет, запустив:
pip install git+https://github.com/amazon-science/chronos-forecasting.git
Кончик
Рекомендуемый способ использования Chronos для производственных сценариев — AutoGluon, который обеспечивает объединение с другими статистическими моделями и моделями машинного обучения для прогнозирования временных рядов, а также плавное развертывание на AWS с помощью SageMaker. Ознакомьтесь с руководством по AutoGluon Chronos.
Минимальный пример, показывающий, как выполнять прогнозирование с использованием моделей Chronos:
import pandas as pd # requires: pip install pandas
import torch
from chronos import ChronosPipeline
pipeline = ChronosPipeline . from_pretrained (
"amazon/chronos-t5-small" ,
device_map = "cuda" , # use "cpu" for CPU inference and "mps" for Apple Silicon
torch_dtype = torch . bfloat16 ,
)
df = pd . read_csv ( "https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv" )
# context must be either a 1D tensor, a list of 1D tensors,
# or a left-padded 2D tensor with batch as the first dimension
# forecast shape: [num_series, num_samples, prediction_length]
forecast = pipeline . predict (
context = torch . tensor ( df [ "#Passengers" ]),
prediction_length = 12 ,
num_samples = 20 ,
)
Дополнительные параметры pipeline.predict
можно найти с помощью:
print ( ChronosPipeline . predict . __doc__ )
Теперь мы можем визуализировать прогноз:
import matplotlib . pyplot as plt # requires: pip install matplotlib
import numpy as np
forecast_index = range ( len ( df ), len ( df ) + 12 )
low , median , high = np . quantile ( forecast [ 0 ]. numpy (), [ 0.1 , 0.5 , 0.9 ], axis = 0 )
plt . figure ( figsize = ( 8 , 4 ))
plt . plot ( df [ "#Passengers" ], color = "royalblue" , label = "historical data" )
plt . plot ( forecast_index , median , color = "tomato" , label = "median forecast" )
plt . fill_between ( forecast_index , low , high , color = "tomato" , alpha = 0.3 , label = "80% prediction interval" )
plt . legend ()
plt . grid ()
plt . show ()
Минимальный пример, показывающий, как извлечь встраивания кодировщика из моделей Chronos:
import pandas as pd
import torch
from chronos import ChronosPipeline
pipeline = ChronosPipeline . from_pretrained (
"amazon/chronos-t5-small" ,
device_map = "cuda" ,
torch_dtype = torch . bfloat16 ,
)
df = pd . read_csv ( "https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv" )
# context must be either a 1D tensor, a list of 1D tensors,
# or a left-padded 2D tensor with batch as the first dimension
context = torch . tensor ( df [ "#Passengers" ])
embeddings , tokenizer_state = pipeline . embed ( context )
Скрипты для предварительной подготовки, тонкой настройки и оценки моделей Chronos можно найти в этой папке.
Наборы данных, используемые в статье Chronos для предварительного обучения и оценки (как внутри домена, так и с нулевым выстрелом), доступны через репозитории HuggingFace: autogluon/chronos_datasets
и autogluon/chronos_datasets_extra
. Ознакомьтесь с этими репозиториями для получения инструкций о том, как загружать и использовать наборы данных.
Если вы считаете модели Chronos полезными для своих исследований, рассмотрите возможность цитирования соответствующей статьи:
@article{ansari2024chronos,
author = {Ansari, Abdul Fatir and Stella, Lorenzo and Turkmen, Caner and Zhang, Xiyuan and Mercado, Pedro and Shen, Huibin and Shchur, Oleksandr and Rangapuram, Syama Syndar and Pineda Arango, Sebastian and Kapoor, Shubham and Zschiegner, Jasper and Maddix, Danielle C. and Wang, Hao and Mahoney, Michael W. and Torkkola, Kari and Gordon Wilson, Andrew and Bohlke-Schneider, Michael and Wang, Yuyang},
title = {Chronos: Learning the Language of Time Series},
journal = {arXiv preprint arXiv:2403.07815},
year = {2024}
}
Для получения дополнительной информации см. ВКЛАД.
Этот проект распространяется по лицензии Apache-2.0.