תוכן עניינים
נקודה מרכזית
הריפו TimesFM הוא מודל בסיס מסוג decoder-only transformer שמספק חיזוי ברמה הגבוהה ביותר בצורה zero-shot לסדרות זמן על פני ריטייל, פיננסים, מזג אוויר ודומיינים נוספים. פותח על ידי Google Research, הוא מבטל את הצורך באיסוף דאטה היסטורי נרחב ואימון מודלים ספציפיים לדומיין שבאופן מסורתי היוו צוואר בקבוק בפרויקטים של חיזוי.
מה זה TimesFM?
הריפו TimesFM הוא מודל בסיס עם 200 מיליון פרמטרים שאומן מראש על 100 מיליארד נקודות זמן אמיתיות וסינתטיות, ומאפשר חיזוי zero-shot על דאטה של סדרות זמן חדשות לחלוטין. הפרויקט timesfm פותר את הבעיה של חיזוי קולד סטארט שכולנו מתמודדים איתה כשעובדים עם דאטה היסטורי מוגבל או כשמשיקים תחזיות בדומיינים חדשים.
בניגוד לשיטות סטטיסטיות מסורתיות כמו ARIMA או Prophet שדורשות אימון על הדאטהסטים הספציפיים שלנו, TimesFM לומד פאטרנים טמפורליים אוניברסליים במהלך הפריטריינינג. תחשבו על זה כמו GPT לסדרות זמן - בדיוק כמו שמודלי שפה מבינים דקדוק וסמנטיקה בלי לראות את הטקסט הספציפי שלנו, TimesFM מבין איך דברים משתנים לאורך זמן בלי אימון על המטריקות הספציפיות שלנו.
הבעיה שכולנו מכירים
אנחנו מבזבזים שבועות או חודשים על כל פרויקט חיזוי חדש. קודם כל, אנחנו אוספים דאטה היסטורי נרחב. אחר כך אנחנו מתנסים במודלים סטטיסטיים שונים - ARIMA, exponential smoothing, Prophet. אנחנו מכוונים היפרפרמטרים. אנחנו מאמתים על סטים של holdout. וכשאנחנו עוברים לדומיין או ללקוח אחר, אנחנו מתחילים מאפס.
מסתבר שמודל חיזוי הדרישה לריטייל שבנינו לא עוזר בחיזוי מזג אוויר. המנבא שלנו לשווקים פיננסיים לא יכול לעבור לאופטימיזציה של שרשרת אספקה. כל סדרת זמן חדשה משמעותה פרויקט מידול חדש. בעיית הקולד סטארט הזו - לחזות במדויק בלי אימון ספציפי לדומיין - הייתה צוואר הבקבוק הבסיסי בחיזוי סדרות זמן.
גישות קיימות של למידה עמוקה גם לא פתרו את זה לגמרי. מודלים כמו N-BEATS או DeepAR דורשים אלפי סדרות זמן קשורות לאימון. כשאנחנו מתמודדים עם בעיית חיזוי חדשה באמת עם היסטוריה מוגבלת, אנחנו עדיין תקועים עם מידול סטטיסטי ידני.
איך TimesFM עובד
Google Research לקחו את גישת מודלי הבסיס שחוללה מהפכה ב-NLP והחילו אותה על סדרות זמן. הם אימנו מראש ארכיטקטורת טרנספורמר מסוג decoder-only על קורפוס ענק של 100 מיליארד נקודות זמן שמשתרעות על פני דומיינים מגוונים - מכירות ריטייל, תעבורת רשת, מטריקות פיננסיות, דאטה מחיישנים, פאטרנים של מזג אוויר, וסדרות סינתטיות.
הארכיטקטורה משתמשת במנגנוני attention - מה שנקרא תשומת לב. תחשבו על זה כמו מנגנון שלומד אילו נקודות זמן מהעבר הכי רלוונטיות לחיזוי ערכים עתידיים. העיצוב של decoder-only מעבד רצפים משמאל לימין (או מעבר לעתיד), בדומה ל-GPT. הוא תומך באורכי קונטקסט של עד 16k נקודות, מה שמאפשר לו ללכוד פאטרנים טמפורליים ארוכי טווח כשזה זמין.
במהלך הפריטריינינג, המודל למד פאטרנים אוניברסליים: עונתיות - פאטרנים חוזרים במרווחים קבועים כמו מחזורים יומיים או שבועיים; טרנדים - תנועות מתמשכות כלפי מעלה או מטה; שינויים פתאומיים ואנומליות; אוטוקורלציה - איך ערכים תלויים בערכים קודמים; קשרים צולבים בין סדרות בדאטה של האימון.
התחלה מהירה
ככה אנחנו מתחילים עם TimesFM:
# התקנה
pip install timesfm
# ייבוא ואתחול
import timesfm
import numpy as np
# טעינת המודל המאומן מראש
tfm = timesfm.TimesFm(
context_len=512, # חלון היסטורי
horizon_len=128, # אופק חיזוי
input_patch_len=32,
output_patch_len=128,
num_layers=20,
model_dims=1280,
)
# הצבעה לצ'קפוינט
tfm.load_from_checkpoint(repo_id="google/timesfm-1.0-200m")
# ביצוע תחזיות
forecast_input = [
np.sin(np.linspace(0, 20, 100)), # הדאטה של סדרות הזמן שלכם
]
frequency_input = [0] # רמז לתדירות (אופציונלי)
# יצירת חיזוי
point_forecast, experimental_quantile = tfm.forecast(
forecast_input,
freq=frequency_input,
)
print(point_forecast) # התחזיות שלכםדוגמה אמיתית
נגיד שאנחנו משיקים קו מוצרים חדש וצריכים חיזויי ביקוש. יש לנו רק 3 חודשים של היסטוריית מכירות - לא מספיק לשיטות מסורתיות. הנה איך TimesFM עוזר:
import pandas as pd
import timesfm
# טעינת הדאטה ההיסטורי המוגבל שלנו
sales_data = pd.read_csv('new_product_sales.csv')
timeseries = sales_data['daily_units'].values
# אתחול TimesFM
tfm = timesfm.TimesFm(
context_len=90, # 3 חודשים של דאטה יומי
horizon_len=30, # חיזוי לחודש הבא
input_patch_len=32,
output_patch_len=128,
)
tfm.load_from_checkpoint(repo_id="google/timesfm-1.0-200m")
# יצירת חיזוי zero-shot
forecast, quantiles = tfm.forecast(
[timeseries],
freq=[0] # תדירות יומית
)
# חילוץ התחזיות
next_month_forecast = forecast[0]
print(f"מכירות צפויות ל-30 הימים הבאים: {next_month_forecast}")
# קבלת אומדני אי-ודאות
lower_bound = quantiles[0][0] # אחוזון 10
upper_bound = quantiles[0][1] # אחוזון 90פיצ'רים מרכזיים
- חיזוי Zero-Shot - הקטע המדליק הוא שאנחנו מזינים למודל סדרת זמן שהוא מעולם לא ראה, והוא מייצר תחזיות מדויקות מיד. בלי אימון, בלי פיין-טיוניינג, בלי חיפוש היפרפרמטרים. תחשבו על זה כמו לבקש מ-GPT לכתוב על נושא שהוא לא אומן עליו ספציפית - הוא ממנף פאטרנים אוניברסליים של שפה. TimesFM ממנף פאטרנים טמפורליים אוניברסליים.
- חלון קונטקסט ארוך - המודל תומך בעד 16k נקודות זמן של קונטקסט. מה שנקרא שכשיש לנו היסטוריה נרחבת זמינה, TimesFM יכול להסתכל רחוק אחורה כדי ללכוד פאטרנים ארוכי טווח ומחזורים עונתיים. לדאטה שבועי, זה מעל 300 שנה של קונטקסט אם צריך.
- אגנוסטי לדומיין - אותו המודל מטפל בביקוש לריטייל, מחירים פיננסיים, מדידות מזג אוויר, תעבורת רשת, חיישני IoT, ועוד. אנחנו לא צריכים מנבאים נפרדים לכל דומיין. המודל למד פאטרנים שמכלילים על פני יוזקייסים.
- כימות אי-ודאות - TimesFM מספק מרווחי חיזוי לצד תחזיות נקודתיות. אנחנו מקבלים לא רק "המכירות יהיו 1000 יחידות" אלא "המכירות צפויות להיות בין 800-1200 יחידות עם 80% ביטחון." הפלט ההסתברותי הזה עוזר לנו לקבל החלטות טובות יותר בתנאי אי-ודאות.
- קוד פתוח - שוחרר תחת רישיון Apache 2.0. אנחנו יכולים לבדוק את הקוד, להבין את הארכיטקטורה, לשנות אותה לצרכים שלנו, ולדפלס אותה בתשתית שלנו בלי מגבלות רישוי. הצ'קפוינטים המאומנים מראש זמינים בפומבי.
מתי להשתמש ב-TimesFM לעומת אלטרנטיבות
TimesFM מצטיין כשאנחנו צריכים חיזויים מהירים לסדרות זמן חדשות עם היסטוריה מוגבלת. אם אנחנו משיקים מוצר חדש, נכנסים לשוק חדש, או מחזים מטריקה שמעולם לא עקבנו אחריה - TimesFM מספק תחזיות מדויקות מיום ראשון.
לחיזוי חד-משתני - כלומר לחזות מטריקה אחת על בסיס ההיסטוריה שלה עצמה - TimesFM תחרותי מאוד. הוא משיג או עולה על מודלים סטטיסטיים מתמחים בלי התקורה של הכיוון הידני.
עם זאת, לשיטות מסורתיות עדיין יש את מקומן. אם יש לנו מומחיות רחבה בדומיין ושנים של דאטה היסטורי, מודל ARIMA או Prophet מכוונן היטב עשוי לספק דיוק מעט טוב יותר לאותו יוזקייס ספציפי. היתרון של TimesFM הוא שאנחנו לא צריכים את תהליך הכיוון הזה.
לחיזוי רב-משתני - כלומר שימוש במספר סדרות זמן קשורות כדי לחזות יעד אחד - ארכיטקטורות מתמחות כמו Temporal Fusion Transformers או N-BEATS עשויות לבצע טוב יותר. TimesFM מתמקד בסדרות חד-משתניות. אם אנחנו צריכים לחזות מכירות ריטייל באמצעות מחיר, מבצעים, מזג אוויר, ודאטה של מתחרים בו-זמנית, כלים אחרים המיועדים לקלט רב-משתני יהיו יותר מתאימים.
לתחזיות סטרימינג בזמן אמת בסקייל אקסטרים, שיטות סטטיסטיות קלות משקל עשויות להיות יותר יעילות. ה-200 מיליון הפרמטרים של TimesFM דורשים יותר כוח חישוב מאשר exponential smoothing פשוט. הטריידאוף הוא דיוק לעומת עלות חישובית.
בעיניי - האם אשתמש בזה?
לעניות דעתי, TimesFM מייצג שינוי פרדיגמה אמיתי באופן שבו אנחנו ניגשים לחיזוי סדרות זמן. היכולת לקבל תחזיות מדויקות בלי אימון על הדאטה הספציפי שלנו משנה את הכלכלה של פרויקטי חיזוי באופן דרמטי.
אני רואה את זה מושלם לעבודה שלנו במספר תרחישים. ראשית, פרוטוטייפינג מהיר ו-POCs - מה שנקרא proof-of-concepts. כשאנחנו צריכים להעריך במהירות אם חיזוי ישים ליוזקייס, TimesFM נותן לנו תוצאות בדקות במקום בשבועות. שנית, חיזוי מטריקות long-tail. ארגונים רבים יש להם מאות או אלפי מטריקות שהם רוצים לחזות אבל חסרים משאבים לבנות מודלים מותאמים לכל אחת. TimesFM הופך את זה לאפשרי. שלישית, סיטואציות של קולד סטארט שבהן אנחנו משיקים משהו חדש והדאטה ההיסטורי נדיר.
השחרור בקוד פתוח הוא משמעותי. אנחנו יכולים לדפלס את זה בתשתית שלנו, לבצע פיין-טיון על הדאטה הקנייני שלנו אם זה מועיל, ולשלב את זה בפייפליינים של MLOps שלנו בלי vendor lock-in.
המגבלה שכדאי לשים לב אליה: TimesFM ממוטב לסדרות חד-משתניות. אם בעיית החיזוי שלנו דורשת פיצ'ר אינג'יניאריינג מורכב עם משתנים אקסוגניים מרובים, נצטרך לבצע פריפרוססינג של הקלטים בצורה יצירתית או להשתמש במודלים רב-משתניים מתמחים. Google Research מזכירים עבודה עתידית על יכולות רב-משתניות, מה שיהפוך את זה לעוד יותר חזק.
שיקול נוסף: גודל המודל. עם 200 מיליון פרמטרים, TimesFM דורש יותר כוח חישוב משיטות סטטיסטיות קלאסיות. לאפליקציות שבהן אנחנו צריכים מיליוני חיזויים מעודכנים כל שנייה, העלות החישובית עשויה להיות בלתי אפשרית. אבל לרוב יוזקייסים של חיזוי עסקי שבהם אנחנו מייצרים תחזיות כל שעה או יום, שיפור הדיוק מצדיק את החישוב.
כדאי לבדוק את הריפו: timesfm
שאלות נפוצות
מה זה TimesFM?
TimesFM הוא מודל בסיס מסוג decoder-only transformer עם 200 מיליון פרמטרים שמבצע חיזוי zero-shot של סדרות זמן בלי לדרוש אימון על הדאטה הספציפי שלכם.
מי יצר את TimesFM?
TimesFM נוצר על ידי Google Research. הוא מייצג את היישום שלהם של גישות מודלי בסיס לחיזוי סדרות זמן, בדומה לאופן שבו טרנספורמרים חוללו מהפכה ב-NLP.
מתי כדאי להשתמש ב-TimesFM?
השתמשו ב-TimesFM כשאתם צריכים חיזויים מדויקים לסדרות זמן חדשות עם דאטה היסטורי מוגבל, כשאתם רוצים להימנע משבועות של כיוון מודלים, או כשאתם צריכים לחזות מטריקות שונות רבות ביעילות.
מה האלטרנטיבות ל-TimesFM?
שיטות סטטיסטיות מסורתיות כמו ARIMA, Prophet, ו-exponential smoothing נשארות ישימות לדומיינים מובנים היטב עם דאטה נרחב. אלטרנטיבות למידה עמוקה כוללות N-BEATS לחיזוי חד-משתני ו-Temporal Fusion Transformers לבעיות רב-משתניות. היתרון של TimesFM הוא יכולת zero-shot בלי אימון ספציפי לדומיין.
מה המגבלות של TimesFM?
TimesFM כרגע ממוטב לסדרות זמן חד-משתניות. בעיות חיזוי רב-משתניות מורכבות שדורשות מידול אינטראקציות בין פיצ'רים רבים עשויות ליהנות מארכיטקטורות מתמחות. מודל ה-200 מיליון פרמטרים גם דורש יותר כוח חישוב משיטות סטטיסטיות פשוטות.
