output_transform
. Perbaikan sederhana ini secara signifikan meningkatkan kinerja Chronos secara keseluruhan. Hasilnya akan kami perbarui pada revisi berikutnya di ArXiv.pipeline.embed
untuk mengekstrak embeddings encoder dari Chronos.Chronos adalah rangkaian model perkiraan deret waktu terlatih berdasarkan arsitektur model bahasa. Rangkaian waktu diubah menjadi rangkaian token melalui penskalaan dan kuantisasi, dan model bahasa dilatih pada token ini menggunakan kerugian lintas entropi. Setelah dilatih, prakiraan probabilistik diperoleh dengan mengambil sampel beberapa lintasan masa depan berdasarkan konteks historis. Model Chronos telah dilatih pada kumpulan besar data deret waktu yang tersedia untuk umum, serta data sintetis yang dihasilkan menggunakan proses Gaussian.
Untuk detail tentang model Chronos, data dan prosedur pelatihan, serta hasil eksperimen, silakan merujuk ke makalah Chronos: Mempelajari Bahasa Rangkaian Waktu.
Gambar 1: Penggambaran Chronos tingkat tinggi. ( Kiri ) Rangkaian waktu masukan diskalakan dan dikuantisasi untuk mendapatkan urutan token. ( Tengah ) Token dimasukkan ke dalam model bahasa yang dapat berupa model encoder-decoder atau model decoder saja. Model dilatih menggunakan kerugian cross-entropy. ( Kanan ) Selama inferensi, kami mengambil sampel token dari model secara otomatis dan memetakannya kembali ke nilai numerik. Beberapa lintasan diambil sampelnya untuk mendapatkan distribusi prediktif.
Model dalam repositori ini didasarkan pada arsitektur T5. Perbedaannya hanya pada ukuran kosakata: model Chronos-T5 menggunakan 4096 token berbeda, dibandingkan dengan 32128 model T5 asli, sehingga menghasilkan parameter yang lebih sedikit.
Model | Parameter | Berdasarkan |
---|---|---|
chronos-t5-kecil | 8M | t5-efisien-kecil |
chronos-t5-mini | 20M | t5-efisien-mini |
chronos-t5-kecil | 46M | t5-efisien-kecil |
basis chronos-t5 | 200M | t5-basis efisien |
chronos-t5-besar | 710M | t5-efisien-besar |
Gambar berikut menunjukkan performa zero-shot yang luar biasa dari model Chronos pada 27 set data dibandingkan model lokal, model khusus tugas, dan model terlatih lainnya. Untuk detail tentang pengaturan evaluasi dan hasil lainnya, silakan merujuk ke makalah.
Gambar 2: Performa berbagai model pada Benchmark II, yang terdiri dari 27 set data yang tidak terlihat oleh model Chronos selama pelatihan. Tolok ukur ini memberikan wawasan tentang performa zero-shot model Chronos dibandingkan model statistik lokal, yang menyesuaikan parameter secara individual untuk setiap rangkaian waktu, model khusus tugas yang dilatih pada setiap tugas , dan model terlatih yang dilatih pada kumpulan rangkaian waktu yang besar. Model yang Telah Dilatih Sebelumnya (Lainnya) menunjukkan bahwa beberapa (atau semua) kumpulan data di Benchmark II mungkin telah berada dalam korpus pelatihan model ini. Metrik peramalan probabilistik (WQL) dan titik (MASE) dinormalisasi menggunakan skor garis dasar Naif Musiman dan dikumpulkan melalui rata-rata geometrik untuk mendapatkan Agg. WQL dan MASE relatif, masing-masing.
Untuk melakukan inferensi dengan model Chronos, instal paket ini dengan menjalankan:
pip install git+https://github.com/amazon-science/chronos-forecasting.git
Tip
Cara yang direkomendasikan untuk menggunakan Chronos untuk kasus penggunaan produksi adalah melalui AutoGluon, yang menampilkan penggabungan dengan model statistik dan pembelajaran mesin lainnya untuk perkiraan deret waktu serta penerapan yang lancar di AWS dengan SageMaker?. Lihat tutorial AutoGluon Chronos.
Contoh minimal yang menunjukkan cara melakukan perkiraan menggunakan model 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 ,
)
Opsi lainnya untuk pipeline.predict
dapat ditemukan dengan:
print ( ChronosPipeline . predict . __doc__ )
Sekarang kita dapat memvisualisasikan perkiraannya:
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 ()
Contoh minimal yang menunjukkan cara mengekstrak embeddings encoder dari model 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 )
Skrip untuk pra-pelatihan, penyempurnaan, dan evaluasi model Chronos dapat ditemukan di folder ini.
Kumpulan data yang digunakan dalam makalah Chronos untuk prapelatihan dan evaluasi (baik dalam domain maupun zero-shot) tersedia melalui repo HuggingFace: autogluon/chronos_datasets
dan autogluon/chronos_datasets_extra
. Lihat repo ini untuk petunjuk tentang cara mengunduh dan menggunakan kumpulan data.
Jika Anda merasa model Chronos berguna untuk penelitian Anda, harap pertimbangkan untuk mengutip makalah terkait:
@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}
}
Lihat KONTRIBUSI untuk informasi lebih lanjut.
Proyek ini dilisensikan di bawah Lisensi Apache-2.0.