zhang qiao
Upload folder using huggingface_hub
9ddee9f
raw
history blame
4.06 kB
import gradio as gr
# from arguments import init_args
from gr_app.GradioApp import GradioApp
from gr_app import args
app = GradioApp()
demo = gr.Blocks(**args.block)
with demo:
warning = gr.Warning()
gr.Markdown('# Sentient.io - Demand Forecasting')
gr.Markdown('Demo for demand forecasting pipeline')
gr.Markdown('---')
gr.Markdown('# Step 1 - Load Data')
with gr.Row():
gr.Markdown('''
Use button "Load Demo Data" for a quick demo with pre-loaded data. For uploading your own data, please follow the below requirements.
### Data Requirements:
- Time series data have to be in CSV format
- Data must contains datetime, y and sku columns.
- Multiple SKUs can put in to same CSV
- Time interval in data must be consistent
- Missing value have to be filled up
''')
with gr.Column():
btn_load_data = gr.Button('Load Demo Data')
gr.Markdown('------ or ------',
elem_classes="demo_app_text_center")
file_upload_data = gr.File(**args.file_upload_data)
df_ts_data = gr.DataFrame(**args.df_ts_data)
gr.Markdown('---')
gr.Markdown('# Step 2 - Model Selection')
with gr.Row():
gr.Markdown('''
Train and evaluate model, identify data characteristics and select the best performing model. This step only need to run when the market regime shifted or when need to to re-select the model.
- Click "Use Demo Data" Button if the demo data set has been loaded in Step 1
- Else, directly proceed to model selection
- Only upload dataset if the model select process had been previously done, and you have save a copy of the CSV response.
''')
with gr.Column():
btn_load_model_data = gr.Button('Use Demo Data')
btn_model_selection = gr.Button('Model Selection', variant='primary')
gr.Markdown('Upload previous model selection result (if have):')
file_upload_model_data = gr.File(**args.file_upload_model_data)
df_model_data = gr.DataFrame()
file_model_data = gr.File()
gr.Markdown('# Step 3 - Forecasting')
with gr.Row():
gr.Markdown(
'This step only can be done when model selection process is completed.')
with gr.Column():
gr.Markdown('''
### Forecast Horizon
Max horizon will be 20% of provided data range. The unit will be same as the time series data time interval.
''')
slider_forecast_horizon = gr.Slider(**args.slider_forecast_horizon)
btn_forecast = gr.Button("Forecast", variant='primary')
df_forecast = gr.DataFrame(**args.df_forecast)
file_forecast = gr.File()
# ============= #
# = Functions = #
# ============= #
btn_load_data.click(
app.btn_load_data__click,
[],
[df_ts_data, df_model_data, file_model_data, slider_forecast_horizon])
file_upload_data.upload(
app.file_upload_data__upload,
[file_upload_data],
[df_ts_data, df_model_data, file_model_data, slider_forecast_horizon])
file_upload_model_data.upload(
app.file_upload_model_data__upload,
[file_upload_model_data],
[df_model_data, file_model_data]
)
btn_load_model_data.click(
app.btn_load_model_data__click,
[], [df_model_data, file_model_data]
)
btn_model_selection.click(
app.btn_model_selection__click,
[], [df_model_data, file_model_data])
btn_forecast.click(
app.btn_forecast__click,
[], [df_forecast, file_forecast]
)
slider_forecast_horizon.change(
app.slider_forecast_horizon__update,
[slider_forecast_horizon],
[])
demo.launch()