output_transform
. Esta correção simples melhora significativamente o desempenho geral do Chronos. Atualizaremos os resultados na próxima revisão do ArXiv.pipeline.embed
para extrair embeddings do codificador do Chronos.Chronos é uma família de modelos de previsão de séries temporais pré-treinados baseados em arquiteturas de modelos de linguagem. Uma série temporal é transformada em uma sequência de tokens por meio de escalonamento e quantização, e um modelo de linguagem é treinado nesses tokens usando a perda de entropia cruzada. Uma vez treinadas, as previsões probabilísticas são obtidas através da amostragem de múltiplas trajetórias futuras, dado o contexto histórico. Os modelos Chronos foram treinados em um grande corpus de dados de séries temporais disponíveis publicamente, bem como em dados sintéticos gerados usando processos gaussianos.
Para obter detalhes sobre modelos Chronos, dados e procedimentos de treinamento e resultados experimentais, consulte o artigo Chronos: Aprendendo a linguagem das séries temporais.
Figura 1: Representação de alto nível de Cronos. ( Esquerda ) A série temporal de entrada é dimensionada e quantizada para obter uma sequência de tokens. ( Centro ) Os tokens são alimentados em um modelo de linguagem que pode ser um modelo codificador-decodificador ou apenas um modelo decodificador. O modelo é treinado usando a perda de entropia cruzada. ( Direita ) Durante a inferência, amostramos tokens autoregressivamente do modelo e os mapeamos de volta para valores numéricos. Múltiplas trajetórias são amostradas para obter uma distribuição preditiva.
Os modelos neste repositório são baseados na arquitetura T5. A única diferença está no tamanho do vocabulário: os modelos Chronos-T5 usam 4.096 tokens diferentes, em comparação com 32.128 dos modelos T5 originais, resultando em menos parâmetros.
Modelo | Parâmetros | Baseado em |
---|---|---|
cronos-t5-minúsculo | 8 milhões | t5-eficiente-minúsculo |
cronos-t5-mini | 20 milhões | t5-eficiente-mini |
chronos-t5-pequeno | 46 milhões | t5-eficiente-pequeno |
chronos-t5-base | 200 milhões | base eficiente t5 |
cronos-t5-grande | 710 milhões | t5-eficiente-grande |
A figura a seguir mostra o notável desempenho zero-shot dos modelos Chronos em 27 conjuntos de dados em relação a modelos locais, modelos específicos de tarefas e outros modelos pré-treinados. Para obter detalhes sobre a configuração da avaliação e outros resultados, consulte o artigo.
Figura 2: Desempenho de diferentes modelos no Benchmark II, compreendendo 27 conjuntos de dados não vistos pelos modelos Chronos durante o treinamento. Este benchmark fornece insights sobre o desempenho zero-shot dos modelos Chronos em relação aos modelos estatísticos locais, que ajustam os parâmetros individualmente para cada série temporal, modelos específicos de tarefa treinados em cada tarefa e modelos pré-treinados treinados em um grande corpus de séries temporais. Modelos Pré-treinados (Outros) indicam que alguns (ou todos) os conjuntos de dados no Benchmark II podem ter estado no corpus de treinamento desses modelos. As métricas de previsão probabilística (WQL) e pontual (MASE) foram normalizadas usando as pontuações da linha de base Sazonal Naive e agregadas por meio de uma média geométrica para obter o Agg. WQL e MASE relativos, respectivamente.
Para realizar inferência com modelos Chronos, instale este pacote executando:
pip install git+https://github.com/amazon-science/chronos-forecasting.git
Dica
A maneira recomendada de usar o Chronos para casos de uso de produção é por meio do AutoGluon, que apresenta combinação com outros modelos estatísticos e de aprendizado de máquina para previsão de séries temporais, bem como implantações contínuas na AWS com SageMaker?. Confira o tutorial do AutoGluon Chronos.
Um exemplo mínimo que mostra como realizar previsões usando modelos 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 ,
)
Mais opções para pipeline.predict
podem ser encontradas em:
print ( ChronosPipeline . predict . __doc__ )
Agora podemos visualizar a previsão:
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 ()
Um exemplo mínimo mostrando como extrair embeddings de codificador de modelos 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 )
Scripts para pré-treinamento, ajuste fino e avaliação de modelos Chronos podem ser encontrados nesta pasta.
Os conjuntos de dados usados no artigo Chronos para pré-treinamento e avaliação (tanto no domínio quanto no disparo zero) estão disponíveis nos repositórios HuggingFace: autogluon/chronos_datasets
e autogluon/chronos_datasets_extra
. Confira estes repositórios para obter instruções sobre como baixar e usar os conjuntos de dados.
Se você achar os modelos Chronos úteis para sua pesquisa, considere citar o artigo associado:
@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}
}
Consulte CONTRIBUINDO para obter mais informações.
Este projeto está licenciado sob a licença Apache-2.0.