File size: 1,389 Bytes
e19a1ca
09a6e08
e19a1ca
 
09a6e08
e19a1ca
 
09a6e08
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e19a1ca
09a6e08
 
 
 
 
 
 
e19a1ca
 
09a6e08
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
# Install necessary packages (only for local environment)
# !pip install pandas granite-tsfm gradio

import pandas as pd
import gradio as gr
from granite_tsfm import TimeSeriesPreprocessor, TinyTimeMixerForPrediction, TimeSeriesForecastingPipeline

# Function to load model and make predictions
def forecast(csv_file):
    data = pd.read_csv(csv_file.name, parse_dates=['timestamp_column'])
    
    tsp = TimeSeriesPreprocessor(
        id_columns=[],
        timestamp_column='timestamp_column',
        target_columns=['value1', 'value2'],  # Replace with your target column names
        prediction_length=96,
        context_length=512,
        scaling=True
    )
    processed_data = tsp.fit_transform(data)
    
    model = TinyTimeMixerForPrediction.from_pretrained(
        'ibm-granite/granite-timeseries-ttm-r2',
        num_input_channels=tsp.num_input_channels
    )
    
    pipeline = TimeSeriesForecastingPipeline(
        model=model,
        feature_extractor=tsp
    )
    forecasts = pipeline(data)
    return forecasts.to_csv(index=False)

# Create Gradio interface
iface = gr.Interface(
    fn=forecast,
    inputs=gr.File(label="Upload CSV File"),
    outputs=gr.File(label="Download Forecasts"),
    title="Time Series Forecasting with Granite-TimeSeries-TTM-R2",
    description="Upload a CSV file with a timestamp column to generate forecasts."
)

iface.launch()