Skip to main content

A Python package for interacting with Sulie API

Project description

Sulie logo

docs_badge PyPI Badge

Sulie - Foundation Models for Time-Series Forecasting

Sulie offers cutting-edge foundation models for time series forecasting, enabling accurate, zero-shot predictions with minimal setup. Our transformer-based models automate the process, eliminating the need for manual training and complex configurations.

Documentation · Report Bug · Join Our Slack · Twitter


Sulie Demo

🔥 Features

  • Zero-Shot Forecasting: Obtain precise forecasts instantly with our foundation model, without requiring training or preprocessing of historical data.
  • Auto Fine-Tuning: Enhance model performance with a single API call. We manage the entire training pipeline, providing transparency into model selection and metrics.
  • Covariates Support (Enterprise): Conduct multivariate forecasting by incorporating dynamic and static covariates with no feature engineering needed.
  • Managed Infrastructure: Focus on forecasting as we manage all aspects of deployment, scaling, and maintenance seamlessly.
  • Centralized Datasets: Push time series data continuously through our Python SDK, creating a centralized, versioned repository accessible across your organization.

🚀 Getting Started

To begin using the Sulie SDK, you’ll need an API key, which can be generated from the Sulie Dashboard:

  1. Visit the Sulie Dashboard.
  2. Sign in to your Sulie account.
  3. Navigate to the API Keys section.
  4. Generate a new API key and copy it to use within the SDK.

With your API key ready, you’re set to start forecasting.

⚙️ Installation

To install the Sulie SDK, simply run:

pip install sulie==1.0.7

Quick Start Example

After installation, initialize the SDK using your API key to start forecasting with Mimosa:

from sulie import Sulie

# Initialize the Sulie client
client = Sulie(api_key="YOUR_API_KEY")

⚡️ Features

1. Forecasting with Mimosa

Generate accurate time series forecasts using Mimosa’s zero-shot inference capabilities. This approach is ideal when you need fast, reliable predictions without training the model.

import pandas as pd

# Example time series data
df = pd.DataFrame({
    'timestamp': pd.date_range(start='2023-01-01', periods=1000, freq='H'),
    'demand': [ ... ],           # Demand data
    'location': ['Plant A', ...] # Data for different locations
})

# Forecast demand for each location over the next 24 hours
forecast = client.forecast(
    dataset=df,
    target_col='demand',
    id_col='location',
    timestamp_col='timestamp',
    frequency='H',
    quantiles=[0.2, 0.8],
    horizon=24            # Predict 24 hours ahead
)
print(forecast)

The Forecast object includes two properties: median and quantiles, corresponding to different certainty levels in the predictions. These help you understand the range of possible outcomes, from conservative to optimistic.

If the id_col was set, forecast returns a list of Forecast objects.

You can also visualize the forecasts directly by calling the plot function:

forecast.plot()

This quickly generates a chart showing the forecast ranges, making it easy to spot trends and variability in the results. Perfect for a fast, clear analysis.

Forecasting Parameters

Name Description Default
dataset A Dataset or pd.DataFrame containing time series data. Required
target_col Column name for the forecast variable. Required
id_col Column name for multiple time series IDs (e.g. locations). None
timestamp_col Timestamp column name. None
frequency Frequency of the time series (e.g., H for hourly). None
horizon Time steps to forecast ahead. 24

2. Fine-Tuning for Customized Forecasting

With automatic fine-tuning, you can optimize Mimosa for unique datasets and business cases. The fine-tuning process uses Weighted Quantile Loss (WQL) for evaluation, ensuring high accuracy.

# Fine-tune Mimosa on custom dataset
fine_tune_job = client.fine_tune(
    dataset=df,
    target_col="demand",
    description="Fine-tune for Plant A demand prediction"
)

# Check the fine-tuning job status
print(f"Job status: {fine_tune_job.status}")

Fine-Tuning Parameters

Name Description Default
dataset A Dataset or pd.DataFrame with time series data. Required
target_col Target variable for optimization. Required
id_col Name of the column to group the DataFrame series by. None
description Description of the fine-tuning job. None

Once fine-tuning completes, the model is automatically deployed and available for forecasting.

3. Managing Datasets

Sulie’s Dataset API lets you manage and version your datasets, making them accessible for forecasting and fine-tuning across teams.

# Upload a dataset to Sulie
dataset = client.upload_dataset(
    name="product-sales-data-v1",
    df=df,
    mode="append"  # Choose 'append' or 'overwrite'
)

# List available datasets
datasets = client.list_datasets()
print(f"Available datasets: {datasets}")

Dataset Management Functions

  • Upload: Store and version your data for easy access and updates.
  • List: Retrieve a list of uploaded datasets.
  • Update: Append or overwrite data for an existing dataset.

[!NOTE] Datasets are an optional feature. To make forecasts or even fine-tune a foundation model, you may also pass a Pandas DataFrame to the forecast and fine_tune functions.

4. Forecasting with Custom Models

Fine-tuned models can be selected for new forecasts using list_custom_models or get_model.

# List custom and fine-tuned models
custom_models = client.list_custom_models()

# Select and forecast with a fine-tuned model
model_name = custom_models[0].name
custom_model = client.get_model(model_name)

# Forecast using the selected model
forecast_custom = custom_model.forecast(
    dataset=df,
    target_col='demand',
    id_col='location',
    timestamp_col='timestamp',
    frequency='H',
    horizon=24
)
print(forecast_custom)

📚 Additional Resources

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sulie-1.0.7.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sulie-1.0.7-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file sulie-1.0.7.tar.gz.

File metadata

  • Download URL: sulie-1.0.7.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for sulie-1.0.7.tar.gz
Algorithm Hash digest
SHA256 7609b0fcd96df6c44a86078f549d775b2944de9d46db4c69a6d8feab57b60da4
MD5 1662f2d5df87e409b38d81c97de40a4f
BLAKE2b-256 0d211a285f1ee5aec0b918e27c01fa861a350a340167d2c44ab6a52909dcd61a

See more details on using hashes here.

File details

Details for the file sulie-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: sulie-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for sulie-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 558a26f81a8acb2b305b21d65ca1733d6bb46fcf6eac94ce0c09be7b1cd2d973
MD5 97981781179213525119ded7c2fb5bda
BLAKE2b-256 98c46072877016436272e05f4b4b9e8ccdb917536f74eb0b12dcdc396f397e33

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page