output_transform
การแก้ไขง่ายๆ นี้ช่วยปรับปรุงประสิทธิภาพโดยรวมของ Chronos ได้อย่างมาก เราจะอัปเดตผลลัพธ์ในการแก้ไขครั้งต่อไปใน ArXivpipeline.embed
เพื่อแยกการฝังตัวเข้ารหัสจาก ChronosChronos เป็นตระกูลของ โมเดลการคาดการณ์อนุกรมเวลาที่ได้รับการฝึกล่วงหน้า โดยอิงตามสถาปัตยกรรมโมเดลภาษา อนุกรมเวลาจะถูกแปลงเป็นลำดับของโทเค็นผ่านการปรับขนาดและการหาปริมาณ และแบบจำลองภาษาจะได้รับการฝึกบนโทเค็นเหล่านี้โดยใช้การสูญเสียข้ามเอนโทรปี เมื่อได้รับการฝึกอบรมแล้ว จะได้การคาดการณ์ความน่าจะเป็นโดยการสุ่มตัวอย่างวิถีในอนาคตหลายรายการโดยพิจารณาจากบริบททางประวัติศาสตร์ โมเดล Chronos ได้รับการฝึกฝนเกี่ยวกับคลังข้อมูลอนุกรมเวลาขนาดใหญ่ที่เปิดเผยต่อสาธารณะ เช่นเดียวกับข้อมูลสังเคราะห์ที่สร้างขึ้นโดยใช้กระบวนการแบบเกาส์เซียน
สำหรับรายละเอียดเกี่ยวกับโมเดล Chronos ข้อมูลและขั้นตอนการฝึกอบรม และผลการทดลอง โปรดดูเอกสาร Chronos: การเรียนรู้ภาษาของอนุกรมเวลา
รูปที่ 1: การแสดง Chronos ในระดับสูง ( ซ้าย ) อนุกรมเวลาอินพุตจะถูกปรับขนาดและหาปริมาณเพื่อให้ได้ลำดับของโทเค็น ( กลาง ) โทเค็นจะถูกป้อนเข้าไปในโมเดลภาษาซึ่งอาจเป็นตัวเข้ารหัสหรือตัวถอดรหัสเท่านั้นหรือโมเดลตัวถอดรหัสเท่านั้น แบบจำลองนี้ได้รับการฝึกฝนโดยใช้การสูญเสียเอนโทรปีข้าม ( ขวา ) ในระหว่างการอนุมาน เราจะสุ่มตัวอย่างโทเค็นจากแบบจำลองโดยอัตโนมัติและแมปโทเค็นเหล่านั้นกลับไปเป็นค่าตัวเลข มีการสุ่มตัวอย่างหลายวิถีเพื่อให้ได้การกระจายแบบคาดการณ์
โมเดลในพื้นที่เก็บข้อมูลนี้อิงตามสถาปัตยกรรม 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) ได้รับการทำให้เป็นมาตรฐานโดยใช้คะแนนของเส้นพื้นฐานตามฤดูกาลที่ไร้เดียงสา และรวมเข้าด้วยกันผ่านค่าเฉลี่ยเรขาคณิตเพื่อให้ได้ 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 สำหรับการฝึกล่วงหน้าและการประเมินผล (ทั้งในโดเมนและศูนย์ช็อต) มีให้ใช้งานผ่าน repos 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