forecasting / app.py
Mohssinibra's picture
Update app.py
f1dc58b verified
raw
history blame
1.77 kB
import pandas as pd
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# Load the Hugging Face forecasting model
def load_model():
model_name = "Ankur87/Llama2_Time_series_forecasting_7.0" # Using the specified model
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
return model, tokenizer
model, tokenizer = load_model()
def forecast(csv_file):
# Read CSV with correct delimiter and parse timestamps
data = pd.read_csv(csv_file.name, sep=";", parse_dates=['timestamp_column'])
# Ensure timestamp format is correct
data['timestamp_column'] = pd.to_datetime(data['timestamp_column'], format="%Y%m%d %H:%M")
# Convert data to a structured format for the model
input_text = "\n".join([f"{row['timestamp_column']}: {row['Inbound']}" for _, row in data.iterrows()])
inputs = tokenizer(input_text, return_tensors="pt", truncation=True, padding=True)
# Generate forecast
with torch.no_grad():
predictions = model.generate(**inputs, max_length=2500, num_return_sequences=1)
# Decode the generated forecast
forecast_text = tokenizer.decode(predictions[0], skip_special_tokens=True)
# Save forecast result to CSV
forecasts = pd.DataFrame({'forecast': [forecast_text]})
output_file = "forecasts.csv"
forecasts.to_csv(output_file, index=False)
return output_file
# 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 Llama2",
description="Upload a CSV file with a timestamp column to generate forecasts using Llama2."
)
iface.launch()