Spaces:
Sleeping
Sleeping
File size: 2,351 Bytes
b8086d5 a90bc0e 88fcfd5 b8086d5 a90bc0e b8086d5 29091b3 b8086d5 a90bc0e b8086d5 88fcfd5 a90bc0e b8086d5 a90bc0e b8086d5 a90bc0e b8086d5 a90bc0e b8086d5 1a10128 b8086d5 9927daa b8086d5 a90bc0e f27fbb4 b8086d5 9927daa b8086d5 f27fbb4 a90bc0e 29091b3 a90bc0e 88fcfd5 a90bc0e b8086d5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import numpy as np
import torch
from chronos import BaseChronosPipeline
class ModelHandler:
def __init__(self):
self.model_name = "amazon/chronos-2"
self.pipeline = None
self.device = "cuda" if torch.cuda.is_available() else "cpu"
self.load_model()
def load_model(self):
"""Load Chronos-2 model using the official BaseChronosPipeline"""
try:
print(f"Loading {self.model_name} on {self.device}...")
self.pipeline = BaseChronosPipeline.from_pretrained(
self.model_name,
device_map=self.device,
)
print("Chronos-2 pipeline loaded successfully.")
except Exception as e:
print(f"Error loading Chronos-2 model: {e}")
print("Using fallback prediction method")
self.pipeline = None
def predict(self, data, horizon=10):
"""Generate predictions using Chronos-2 or fallback."""
try:
if data is None or not isinstance(data, dict) or 'original' not in data or len(data['original']) < 20:
return np.array([0] * horizon)
if self.pipeline is None:
# Fallback Logic
values = data['original']
recent_trend = np.polyfit(range(len(values[-20:])), values[-20:], 1)[0]
predictions = []
last_value = values[-1]
for i in range(horizon):
next_value = last_value + recent_trend * (i + 1)
noise = np.random.normal(0, data.get('std', 1.0) * 0.1)
predictions.append(next_value + noise)
return np.array(predictions)
# Chronos-2 Inference
predictions_samples = self.pipeline.predict(
data['original'],
prediction_length=horizon,
n_samples=20
)
# Mengambil nilai rata-rata (mean) dari semua sampel
mean_predictions = np.mean(predictions_samples, axis=0)
return mean_predictions
except Exception as e:
print(f"Prediction error: {e}")
return np.array([0] * horizon) |