output_transform
. يعمل هذا الإصلاح البسيط على تحسين الأداء العام لـ Chronos بشكل ملحوظ. سنقوم بتحديث النتائج في المراجعة القادمة على ArXiv.pipeline.embed
لاستخراج تضمينات التشفير من 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 مقابل النماذج الإحصائية المحلية، والتي تناسب المعلمات بشكل فردي لكل سلسلة زمنية، والنماذج الخاصة بالمهام المدربة على كل مهمة ، والنماذج المدربة مسبقًا المدربة على مجموعة كبيرة من السلاسل الزمنية. تشير النماذج المدربة مسبقًا (أخرى) إلى أن بعض (أو كل) مجموعات البيانات في المعيار الثاني ربما كانت موجودة في مجموعة التدريب الخاصة بهذه النماذج. تم تطبيع مقاييس التنبؤ الاحتمالية (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 للتدريب المسبق والتقييم (سواء داخل المجال أو بدون إطلاق النار) من خلال مستودعات 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.