Al Modelleri
Chronos-T5-Small: Zaman Serisi Tahmini için Özel Dil Modeli
Chronos-T5-Small Model Detayları
Model Hakkında
Chronos-T5-Small, Amazon tarafından geliştirilmiş, zaman serisi tahmini için özelleştirilmiş bir dil modelidir. Geleneksel zaman serisi yöntemlerinden farklı olarak, zaman serisi verilerini token’lar halinde ele alarak dil modelleme tekniklerini zaman serisi tahminine uyarlar.
Teknik Özellikler:
- Mimari: T5 (Text-to-Text Transfer Transformer) tabanlı
- Model Boyutu: Küçük (small) versiyon
- Parametre Sayısı: ~20M
- Giriş Formatı: Zaman serisi token’ları
- Çıkış Formatı: Gelecek zaman periyotları tahmini
- Eğitim Verisi: Çeşitli zaman serisi veri kümeleri
Temel Çalışma Prensibi:
Zaman serisi verilerini bir dil gibi ele alır:
- Zaman serisi değerleri → Token’lar
- Zaman serisi pattern’leri → Dil yapıları
- Tahmin → Metin üretimi benzeri çıktı
Kullanım Alanları:
- Finansal tahmin (hisse senedi, döviz kuru)
- Talep tahmini (perakende, üretim)
- Enerji tüketimi tahmini
- Hava durumu ve iklim verisi analizi
- IoT sensör verisi tahmini
İndirme ve Erişim
Resmi Model Sayfası:
https://huggingface.co/amazon/chronos-t5-small
Model Ailesi:
- chronos-t5-small (~20M parametre)
- chronos-t5-base (~80M parametre)
- chronos-t5-large (~200M parametre)
İndirme Seçenekleri:
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
model_name = "amazon/chronos-t5-small"
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
Kurulum ve Temel Kullanım
Gereksinimler:
pip install transformers torch
pip install pandas numpy matplotlib
pip install datasets
Temel Zaman Serisi Tahmini:
import torch
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import numpy as np
# Model ve tokenizer yükleme
model_name = "amazon/chronos-t5-small"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
# Zaman serisi verisi (örnek)
time_series = [10.2, 11.5, 12.8, 14.1, 15.4, 16.7, 18.0]
# Tokenization ve tahmin
inputs = tokenizer(time_series, return_tensors="pt", padding=True)
with torch.no_grad():
outputs = model.generate(
inputs.input_ids,
max_length=20,
num_beams=5,
early_stopping=True
)
# Tahminleri decode etme
predictions = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("Tahminler:", predictions)
Detaylı Kullanım Örneği:
import pandas as pd
from chronos import ChronosPipeline
# Chronos pipeline ile tahmin
pipeline = ChronosPipeline.from_pretrained("amazon/chronos-t5-small")
# Zaman serisi verisi
series = pd.Series([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0])
# Tahmin yapma
forecast = pipeline.predict(series, prediction_length=5)
print("5 periyotluk tahmin:", forecast)
Veri Hazırlama ve Ön İşleme
Zaman Serisi Formatı:
# Pandas Series formatı
import pandas as pd
time_series = pd.Series(
data=[100, 110, 120, 130, 140, 150],
index=pd.date_range('2024-01-01', periods=6, freq='D')
)
# NumPy array formatı
import numpy as np
time_series_array = np.array([100, 110, 120, 130, 140, 150])
Özellik Mühendisliği:
def prepare_timeseries_data(data, context_length=10):
"""
Zaman serisi verisini model için hazırlama
"""
# Normalizasyon
mean = data.mean()
std = data.std()
normalized_data = (data - mean) / std
# Context window oluşturma
windows = []
for i in range(len(normalized_data) - context_length):
window = normalized_data[i:i+context_length]
windows.append(window)
return windows, mean, std
Eğitim ve Fine-Tuning
Transfer Learning için:
from transformers import Seq2SeqTrainingArguments, Seq2SeqTrainer
# Fine-tuning configuration
training_args = Seq2SeqTrainingArguments(
output_dir="./chronos-finetuned",
per_device_train_batch_size=4,
prediction_loss_only=True,
learning_rate=5e-5,
num_train_epochs=10,
)
# Trainer oluşturma
trainer = Seq2SeqTrainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=val_dataset,
)
Özel Veri Kümesi ile Eğitim:
from datasets import Dataset
import pandas as pd
# Özel zaman serisi veri kümesi oluşturma
def create_dataset(time_series_list, context_length=20, prediction_length=5):
examples = []
for series in time_series_list:
for i in range(len(series) - context_length - prediction_length):
input_seq = series[i:i+context_length]
target_seq = series[i+context_length:i+context_length+prediction_length]
examples.append({
'input_ids': input_seq,
'labels': target_seq
})
return Dataset.from_list(examples)
Değerlendirme ve Metrikler
Tahmin Kalitesi Metrikleri:
from sklearn.metrics import mean_absolute_error, mean_squared_error
def evaluate_predictions(actual, predicted):
"""
Tahmin performansını değerlendirme
"""
mae = mean_absolute_error(actual, predicted)
mse = mean_squared_error(actual, predicted)
rmse = np.sqrt(mse)
return {
'MAE': mae,
'MSE': mse,
'RMSE': rmse,
'MAPE': np.mean(np.abs((actual - predicted) / actual)) * 100
}
Production Kullanımı
API Entegrasyonu:
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.post("/predict")
async def predict_timeseries(data: dict):
time_series = data["series"]
predictions = pipeline.predict(time_series, prediction_length=data.get("horizon", 5))
return {"predictions": predictions.tolist()}
# Çalıştırma: uvicorn main:app --reload
Batch Tahminleme:
def batch_predict(time_series_list, prediction_length=5):
"""
Toplu zaman serisi tahmini
"""
all_predictions = []
for series in time_series_list:
prediction = pipeline.predict(series, prediction_length=prediction_length)
all_predictions.append(prediction)
return all_predictions
Performans Optimizasyonu
GPU Kullanımı:
# GPU desteği
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
# Mixed precision training
from torch.cuda.amp import autocast
with autocast():
outputs = model(**inputs)
Bellek Optimizasyonu:
# Gradient checkpointing
model.gradient_checkpointing_enable()
# Dynamic padding
from transformers import DataCollatorForSeq2Seq
data_collator = DataCollatorForSeq2Seq(tokenizer, model=model, padding=True)
Sınırlamalar ve Çözümler
Sınırlamalar:
- ⚠️ Uzun zaman serilerinde performans düşüşü
- ⚠️ Mevsimsel pattern’lerde zorluk
- ⚠️ Anomali içeren verilerde yanılgı
Çözüm Önerileri:
- ✅ Veri ön işleme ve temizleme
- ✅ Model fine-tuning
- ✅ Ensemble yöntemleri
- ✅ Hybrid modeller (geleneksel + ML)
Not: Chronos-T5 modelleri, zaman serisi tahmininde dil modelleme yaklaşımının öncülerindendir. Hem akademik hem de endüstriyel uygulamalar için uygundur.