SuperLinear / README.md
nielsr's picture
nielsr HF Staff
Improve model card metadata and content
0d8000f verified
|
raw
history blame
3.57 kB
metadata
license: mit
library_name: transformers
pipeline_tag: time-series-forecasting
tags:
  - time-series
  - mixture-of-experts
  - forecasting
  - pytorch
  - fft
model-index:
  - name: SuperLinear
    results: []

Super-Linear: A Mixture of Experts Time Series Forecasting Model

Super-Linear is a lightweight and scalable mixture-of-experts (MoE) model for general time series forecasting. It replaces deep architectures with simple frequency-specialized linear experts, trained on resampled data across multiple frequency regimes. A lightweight spectral gating mechanism dynamically selects relevant experts, enabling efficient, accurate forecasting.

The model was introduced in the paper Super-Linear: A Lightweight Pretrained Mixture of Linear Experts for Time Series Forecasting.

Model Architecture

The Super-Linear model consists of:

  • Sparse Mixture of Experts (MoE): Routes inputs to the top-k most relevant experts.
  • FFT-based Gating Network: Uses frequency domain analysis to determine expert routing.
  • Frequency-specific Experts: Pre-trained experts specialized for different temporal patterns.

Key Features

  • Adaptive Expert Selection: Dynamic routing based on input characteristics.
  • Frequency-aware Processing: Leverages FFT analysis for intelligent expert selection.
  • Auto-regressive Capabilities: Supports long-horizon forecasting.
  • Multi-scale Processing: Handles various sequence lengths through resampling.

Updates

  • On 26/01/2026 a slight implementation modification was introduced, now inference is more than 10x faster! Making Super-Linear the fastest pre-trained forecaster!

Usage

You can use the model via the transformers library. Ensure you have trust_remote_code=True set.

import torch
import numpy as np
from transformers import AutoModelForCausalLM

model_path = "SequentialLearning/SuperLinear" 
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True)

seq_len = 512
pred_len = 96

# Create sample data
freq = 1/24
amp = 1
ph = 0

t = torch.arange(0, seq_len + pred_len)
s = amp * torch.sin(2 * np.pi * freq * t + ph)
x = s[:seq_len].unsqueeze(0)  # Add batch dim

with torch.no_grad():
    # takes shapes (B, V, L) or (B, L)
    output = model(x, pred_len=pred_len, get_prob=True)
    preds = output.logits # Predicted values
    probs = output.attentions  # Expert probabilities stored here

expert_names = model.backbone.experts.keys()

Configuration

Key parameters in config.json:

  • train_seq_len: Training sequence length (default: 512)
  • train_pred_len: Training prediction length (default: 96)
  • top_k_experts: Number of experts to use (default: 12)
  • use_fft: Whether to use FFT-based gating (default: True)
  • freq_experts: Frequency-specific expert configuration
  • moe_temp: Temperature for expert selection during inference (default: 1)

Links

Citation

If you use Super-Linear in your research, please cite:

@article{nochumsohn2025super,
  title={Super-Linear: A Lightweight Pretrained Mixture of Linear Experts for Time Series Forecasting},
  author={Nochumsohn, Liran and Marshanski, Raz and Zisling, Hedi and Azencot, Omri},
  journal={arXiv preprint arXiv:2509.15105},
  year={2025}
}

License

This model is released under the MIT License.