Skip to main content

Yug

Yug is a pretrained time-series foundation model developed by Birla AI Labs for zero-shot probabilistic forecasting. A single checkpoint forecasts a previously unseen series without task-specific training or per-series tuning: given a historical context and a forecast horizon, it returns a predictive distribution summarised by quantile levels.

Latest version: Yug 0.1.0


Update — October 2026

First public release of Yug.

Key highlights:

  • Zero-shot forecasting. One pretrained checkpoint forecasts any evenly spaced numeric series, across domains and frequencies, without fitting.
  • Probabilistic by default. Every forecast comes back as quantile levels, not a single line, so intervals are available at no extra cost.
  • Fast direct multi-step decoding. A patch-based decoder emits a whole block of future points per forward pass; there is no per-step generation loop.
  • Covariate support. Optional additional channels alongside the target.
  • Drop-in benchmarking. A GluonTS predictor for existing evaluation harnesses.

Available models

Model Parameters Quantile levels Context length
birlaailabs/yug 271.8M 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9 2048

Install

From PyPI:

pip install yug

Optional extras:

pip install 'yug[pandas]'     # used in the example below
pip install 'yug[gluonts]'    # GluonTS predictor for benchmark harnesses

Check the machine can run it before downloading weights:

yug-check

Weights are cached locally on first use (~/.cache/huggingface/hub by default, or HF_HOME if set).


Code examples

1. Forecast one series

import numpy as np
from yug import YugPipeline

pipeline = YugPipeline.from_pretrained(
    "birlaailabs/yug", device_map="cuda"
)

# Synthetic signal: trend + 64-step season + 12-step season + noise
CONTEXT, HORIZON, PERIOD = 2000, 256, 64
rng = np.random.default_rng([20240902, 315595964, 0])
t = np.arange(CONTEXT + HORIZON)
trend = np.linspace(0.0, rng.uniform(50, 150), len(t))
phase1, amp1 = rng.uniform(0, 6), rng.uniform(10, 30)
phase2, amp2 = rng.uniform(0, 6), rng.uniform(2, 8)
signal = (
    trend                                                 # trend
    + amp1 * np.sin(2 * np.pi * t / PERIOD + phase1)      # 64-step season
    + amp2 * np.sin(2 * np.pi * t / 12 + phase2)          # 12-step season
    + rng.normal(0, 1.0, len(t))                          # noise
).astype(np.float32)

context, truth = signal[:CONTEXT], signal[CONTEXT:]

forecast = pipeline.predict(
    context,
    prediction_length=HORIZON,
    freq="D",            # a model input, not metadata: pandas offset alias
    seed=0,              # makes the call reproducible
)

print(forecast.median)                # (256,)     point forecast
print(forecast.quantile(0.9))         # (256,)
print(forecast.interval())            # {"lower": (256,), "upper": (256,)}
print(forecast.to_dataframe().head())

2. Several series at once

Lengths and frequencies may differ.

forecast = pipeline.predict(
    [series_a, series_b, series_c],
    prediction_length=48,
    freq=["D", "D", "H"],
    item_ids=["a", "b", "c"],
)
forecast.values          # (3, n_quantiles, 48)

3. With covariates

Stack channels into a 2-D array, target first, and pass it as a single series:

multivariate = np.stack([target, covariate_1, covariate_2])
forecast = pipeline.predict([multivariate], prediction_length=48)

4. In a GluonTS benchmark

from yug.gluonts_adapter import YugPredictor

predictor = YugPredictor.from_pretrained(
    "birlaailabs/yug", freq="H", prediction_length=48
)
forecasts = list(predictor.predict(dataset))

Examples


Citation

@software{yug_2026,
  title  = {Yug: a foundation model for zero-shot probabilistic time-series forecasting},
  author = {Aaditya Jain* and Debdeep Sanyal* and Aaryan Nagpal and Dhruv Kumar and Murari Mandal and Saurabh Deshpande},
  year   = {2026},
  organization = {Birla AI Labs},
  url    = {https://github.com/birla-ai-labs/yug},
  license = {Apache-2.0}
}

Note: Aaditya Jain and Debdeep Sanyal contributed equally.

License

Code in this repository is licensed under the Apache License 2.0. Model weights on Hugging Face are licensed separately under a noncommercial license, see the model card for terms.

License Python CI

Metadata

Release files for yug 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yug 0.1.0
File Size Uploaded
yug-0.1.0.tar.gz 55.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yug 0.1.0
File Interpreter ABI Platform
yug-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 106.7 kB

Release files / yug-0.1.0.tar.gz

Download URL yug-0.1.0.tar.gz
Size 55.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6368fc555799d851f5c9ba0fdaf1a342276b244e6c8e4b48ce34ae82678a6929
BLAKE2b-256 checksum
How to use checksums
e414ee4373c072744d8c1149501114aab1900fa1c0552de0e6d50da17cc696f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release files / yug-0.1.0-py3-none-any.whl

Download URL yug-0.1.0-py3-none-any.whl
Size 51.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f8d46262b92e8ce46e4744a8ee51e5cdf28b90025b0128c839e5a3205f9b2da
BLAKE2b-256 checksum
How to use checksums
d2c183ab7d6be035322fda871a6d01e08032fced63ba9b9fd014c58f0f338f6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page