output_transform
의 bin 인덱스에서 off-by-one 오류가 수정되었습니다. 이 간단한 수정으로 Chronos의 전반적인 성능이 크게 향상되었습니다. ArXiv의 다음 개정판에서 결과를 업데이트할 예정입니다.pipeline.embed
포함된 v1.1.0이 출시되었습니다.Chronos는 언어 모델 아키텍처를 기반으로 사전 학습된 시계열 예측 모델 제품군입니다. 시계열은 스케일링 및 양자화를 통해 일련의 토큰으로 변환되고, 교차 엔트로피 손실을 사용하여 이러한 토큰에 대해 언어 모델이 훈련됩니다. 일단 학습되면, 역사적 맥락을 고려하여 여러 미래 궤적을 샘플링하여 확률적 예측을 얻습니다. Chronos 모델은 공개적으로 사용 가능한 대규모 시계열 데이터 모음과 가우스 프로세스를 사용하여 생성된 합성 데이터에 대해 학습되었습니다.
Chronos 모델, 훈련 데이터 및 절차, 실험 결과에 대한 자세한 내용은 Chronos: Learning the Language of Time Series 논문을 참조하세요.
그림 1: 크로노스의 개략적인 묘사. ( 왼쪽 ) 입력 시계열을 스케일링하고 양자화하여 토큰 시퀀스를 얻습니다. ( 가운데 ) 토큰은 인코더-디코더 또는 디코더 전용 모델일 수 있는 언어 모델에 공급됩니다. 모델은 교차 엔트로피 손실을 사용하여 훈련됩니다. ( 오른쪽 ) 추론 중에 모델에서 토큰을 자동 회귀 방식으로 샘플링하고 이를 다시 숫자 값에 매핑합니다. 예측 분포를 얻기 위해 여러 궤적이 샘플링됩니다.
이 저장소의 모델은 T5 아키텍처를 기반으로 합니다. 유일한 차이점은 어휘 크기입니다. Chronos-T5 모델은 원래 T5 모델의 32128개에 비해 4096개의 다양한 토큰을 사용하므로 매개변수가 더 적습니다.
모델 | 매개변수 | 기반 |
---|---|---|
크로노스-t5-tiny | 8M | t5-효율적-작은 |
크로노스-t5-미니 | 20M | t5-효율적인-미니 |
크로노스-t5-소형 | 46M | t5-효율적-소형 |
크로노스-t5-베이스 | 2억 | t5 효율적인 기반 |
크로노스-t5-대형 | 710M | t5-효율-대형 |
다음 그림은 로컬 모델, 작업별 모델 및 기타 사전 훈련된 모델에 대해 27개 데이터 세트에서 Chronos 모델의 놀라운 제로샷 성능을 보여줍니다. 평가 설정 및 기타 결과에 대한 자세한 내용은 논문을 참조하세요.
그림 2: 훈련 중 Chronos 모델에서는 볼 수 없는 27개 데이터 세트로 구성된 Benchmark II의 다양한 모델 성능. 이 벤치마크는 각 시계열에 대해 개별적으로 매개변수를 맞추는 로컬 통계 모델, 각 작업에 대해 훈련된 작업별 모델, 대규모 시계열 코퍼스에서 훈련된 사전 훈련된 모델에 대해 Chronos 모델의 제로샷 성능에 대한 통찰력을 제공합니다. 사전 훈련된 모델(기타)은 벤치마크 II의 데이터 세트 중 일부(또는 전체)가 이러한 모델의 훈련 코퍼스에 있었을 수 있음을 나타냅니다. 확률적(WQL) 및 포인트(MASE) 예측 지표는 Seasonal Naive 기준선의 점수를 사용하여 정규화되었으며 기하 평균을 통해 집계되어 Agg를 얻었습니다. 각각 상대 WQL 및 MASE.
Chronos 모델로 추론을 수행하려면 다음을 실행하여 이 패키지를 설치하세요.
pip install git+https://github.com/amazon-science/chronos-forecasting.git
팁
프로덕션 사용 사례에 Chronos를 사용하는 권장 방법은 AutoGluon을 사용하는 것입니다. AutoGluon은 시계열 예측을 위한 다른 통계 및 기계 학습 모델과의 앙상블은 물론 SageMaker?를 사용한 AWS에서의 원활한 배포 기능을 제공합니다. 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 모델의 사전 훈련, 미세 조정 및 평가를 위한 스크립트는 이 폴더에서 찾을 수 있습니다.
Pretraining 및 평가(도메인 내 및 제로샷 모두)를 위해 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 라이선스에 따라 라이선스가 부여됩니다.