title: Chronos 2 Forecasting
emoji: π
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false
license: apache-2.0
Chronos 2 Time Series Forecasting Application
A production-ready web application for testing Amazon's Chronos 2 time series forecasting model using the latest Chronos2Pipeline API. Built with Dash for enterprise scalability and designed for both local development and cloud deployment.
Features
- Latest Chronos 2 API: Uses
Chronos2Pipeline.predict_df()with DataFrame-based interface - Interactive Forecasting: Generate forecasts up to 365 days with adjustable confidence intervals
- Dual Model Support: Switch between Fast (Chronos-Bolt) and Accurate (Chronos-2) variants
- Multivariate Ready: Built on Chronos 2 architecture supporting multivariate forecasting
- Flexible Data Input: Upload CSV/Excel files or use sample datasets
- Rich Visualizations: Interactive Plotly charts with confidence bands and zoom capabilities
- Data Quality Analysis: Automatic preprocessing with quality reports
- GPU Acceleration: Automatic CUDA support with CPU fallback
- Security Hardened: Non-root Docker containers, server-side validation, filename sanitization
- Production Ready: Designed for deployment on local machines or Databricks Apps
Architecture
Built following best practices for scalability and maintainability:
- Dash Framework: Handles thousands of concurrent users
- Plotly Visualizations: Smooth rendering of 100K+ data points
- Model Caching: Chronos 2 loaded once at startup for fast inference
- Client-Side State: Efficient state management without server sessions
- Modular Design: Clean separation of components, services, and utilities
Installation
Prerequisites
- Python 3.10+
- CUDA-capable GPU (optional, for faster inference)
- 8GB+ RAM (4-8GB for model + overhead)
Local Setup
Clone the repository
git clone <repository-url> cd chronos2-forecasting-appCreate a virtual environment
python -m venv venv # On Windows venv\Scripts\activate # On Linux/Mac source venv/bin/activateInstall dependencies
pip install -r requirements.txtRun the application
python app.pyAccess the app Open your browser to
http://127.0.0.1:8050
Usage Guide
Quick Start
Load Sample Data
- Click one of the sample dataset buttons (Electricity, Retail, Manufacturing)
- Or upload your own CSV/Excel file
Configure Data
- Select the date column
- Select the target variable to forecast
- (Optional) Select an ID column for multivariate series
Set Forecast Parameters
- Adjust the forecast horizon (1-365 days)
- Select confidence levels (80%, 90%, 95%, 99%)
- Choose model variant (Fast or Accurate)
Generate Forecast
- Click "Generate Forecast" button
- Wait for model inference (typically 1-5 seconds)
- View interactive chart with confidence intervals
Data Requirements
Your data should have:
- Date column: Any standard date format
- Target column: Numeric values to forecast
- Minimum rows: At least 2x the forecast horizon
- File size: Up to 100MB
- Formats: CSV, XLSX, XLS
Tips for Best Results
- Use at least 2x the forecast horizon in historical data
- Clean your data before upload (though the app handles basic preprocessing)
- Start with the Fast model variant for quick testing
- Use the Accurate variant for final forecasts
- Larger confidence intervals provide more conservative forecasts
Project Structure
chronos2-forecasting-app/
βββ app.py # Main Dash application
βββ components/ # UI components
β βββ upload.py # File upload component
β βββ chart.py # Chart generation
β βββ controls.py # Parameter controls
βββ services/ # Business logic
β βββ model_service.py # Chronos model wrapper
β βββ data_processor.py # Data preprocessing
β βββ cache_manager.py # Caching logic
βββ utils/ # Utilities
β βββ validators.py # Input validation
β βββ metrics.py # Forecast metrics
βββ config/ # Configuration
β βββ settings.py # Environment settings
β βββ constants.py # App constants
βββ datasets/ # Sample datasets
βββ static/ # Static assets
β βββ custom.css # Custom styles
βββ requirements.txt # Python dependencies
βββ Dockerfile # Container definition
βββ README.md # This file
Configuration
Environment Variables
ENVIRONMENT: Set tolocalorproductionDEVICE: Set toauto,cuda, orcpuLOG_LEVEL: Set toDEBUG,INFO,WARNING, orERRORDATABRICKS_APP_PORT: Port for Databricks deployment (default: 8080)
Local vs Databricks Configuration
The app automatically detects the environment and adjusts settings:
Local Development:
- Host: 127.0.0.1
- Port: 8050
- Debug: Enabled
- Storage: Local directories
Databricks Deployment:
- Host: 0.0.0.0
- Port: 8080 (or DATABRICKS_APP_PORT)
- Debug: Disabled
- Storage: /tmp and /dbfs
Deployment
Hugging Face Spaces (Recommended for Free Hosting)
The easiest way to deploy this app for free:
Create a Hugging Face account at https://huggingface.co
Create a new Space
- Go to https://huggingface.co/spaces
- Click "Create new Space"
- Select "Dash" as the SDK
- Choose a name for your Space
Upload your code
- Option A: Connect your GitHub repository (recommended)
- Option B: Upload files directly through the web interface
Configure the Space
- The app will automatically use
app.pyas the entry point - HuggingFace Spaces provides 16GB RAM (sufficient for Chronos-2)
- Optional: Request GPU upgrade for faster inference
- The app will automatically use
Access your deployed app
- Your app will be live at:
https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME
- Your app will be live at:
Note: First startup may take 2-3 minutes as the Chronos-2 model downloads (~500MB).
Docker Deployment
Build the image
docker build -t chronos2-forecasting .Run the container
docker run -p 8080:8080 chronos2-forecastingWith GPU support
docker run --gpus all -p 8080:8080 chronos2-forecasting
Databricks Apps Deployment
Upload code to DBFS
databricks fs cp -r . dbfs:/apps/chronos2-forecasting/Create Databricks App
- Use the Databricks Apps UI
- Point to the uploaded directory
- Set environment variable:
ENVIRONMENT=production
Configure resources
- Minimum: 8GB RAM
- Recommended: GPU instance for faster inference
Production Considerations
- Memory: Allocate 6-8GB for the model + overhead
- Scaling: Use multiple workers with Gunicorn
- Monitoring: Check
/healthendpoint for status - Logging: Logs to stdout for easy collection
- Timeouts: Set to 300s+ for large forecasts
API Reference
Health Check Endpoint
GET /health
Returns:
{
"status": "healthy",
"model_loaded": true,
"model_variant": "fast",
"device": "cuda"
}
Troubleshooting
Model Loading Issues
Problem: Model fails to load
- Check available memory (need 4-8GB)
- Try CPU mode: Set
DEVICE=cpu - Check internet connection (first run downloads model)
GPU Not Detected
Problem: CUDA device not found
- Verify CUDA installation:
python -c "import torch; print(torch.cuda.is_available())" - Install correct PyTorch version for your CUDA
- App will automatically fall back to CPU
Upload Failures
Problem: File upload fails
- Check file size (<100MB)
- Verify file format (CSV, XLSX, XLS)
- Ensure file is not corrupted
Slow Performance
Problem: Forecasts take too long
- Use Fast model variant instead of Accurate
- Reduce forecast horizon
- Enable GPU acceleration
- Limit data points (app decimates to 10K for display)
Memory Errors
Problem: Out of memory during inference
- Switch to Fast model variant (smaller)
- Use CPU instead of GPU
- Reduce batch size in model_service.py
- Close other applications
Performance Tuning
For Development
- Enable debug mode for detailed logging
- Use Fast model variant
- Work with smaller datasets initially
For Production
- Disable debug mode
- Use GPU for inference
- Enable caching (already configured)
- Use Gunicorn with 4 workers
- Set up monitoring and alerting
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
This project is provided as-is for educational and research purposes.
Acknowledgments
- Chronos Model: Amazon Science
- Dash Framework: Plotly
- Sample Data: Generated for demonstration purposes
Support
For issues, questions, or suggestions:
- Open an issue in the repository
- Check existing documentation
- Review troubleshooting guide above
Changelog
Version 1.0.1 (Latest - Chronos 2 Full Implementation)
- BREAKING: Migrated to Chronos 2 API with
Chronos2Pipeline - Fixed deprecated pandas methods (
fillna(method=...)βffill()/bfill()) - Updated to
chronos-forecasting==2.0.0package - Fixed type hints (
anyβAny) across all modules - Added DataFrame-based prediction interface
- Security improvements:
- Non-root user in Docker container
- Server-side file validation
- Filename sanitization
- Health check timeout configuration
- Updated model paths to support Chronos-2 (s3://autogluon/chronos-2)
- Fixed data format compatibility (id/timestamp/target columns)
- Added
requestslibrary for health checks
Version 1.0.0 (Initial Release)
- Chronos 2 model integration
- Single-page Dash application
- CSV/Excel upload support
- Interactive visualizations
- Confidence interval display
- Sample datasets included
- Docker deployment ready
- Databricks Apps compatible
Roadmap
Future enhancements being considered:
- Multi-series forecasting UI
- Model comparison features
- Export forecast results
- Custom model fine-tuning
- Real-time data streaming
- Advanced metrics dashboard
- API-only mode for programmatic access
Built with Dash and Chronos 2 for production-ready time series forecasting.