Skip to page content
SAVRN
Search Plan a project

Open-weight model · Time series forecasting

TimeBraid-2.5B

by Xinyue Wang XinyueWangg/TimeBraid-2.5B

TimeBraid-2.5B is an open-weight model for time series forecasting from Xinyue Wang, released under Apache License 2.0. It has 2.5B parameters and a 40,960-token context. At 16-bit it needs about 6 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index. It draws 19 downloads a month.

TimeBraid: Unifying Time Series and Language for Understanding and Forecasting TimeBraid combines numerical time series and natural language in one model.

Parameters2.5B
Context40,960
Weights5.0 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads19

Runs On

What it takes to serve TimeBraid-2.5B (2.5B parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.

PrecisionWeightsMemory neededCheapest setupPer hourAlso fits
16-bit 5.0 GB 6.0 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
8-bit 2.5 GB 3.0 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
4-bit 1.2 GB 1.5 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00

Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 18, 2026.

TimeBraid-2.5B on every accelerator the SAVRN Index prices, at every precision

Model Card

By Xinyue Wang, published under apache-2.0, revision fc006f68b54d.

TimeBraid: Unifying Time Series and Language for Understanding and Forecasting TimeBraid combines numerical time series and natural language in one model. It can explain an observed series in words and predict future values using both its history and relevant text. - Understand time series. Describe trends, answer questions about temporal patterns, and compare multiple series in natural language. - Forecast with context. Combine observed values with text about events or conditions to produce numerical forecasts. - Use one interface. Supply numeric arrays and messages through the Hugging Face processor; choose text output or a forecast for one selected series. The checkpoint includes both…

Read Xinyue Wang's full model card

TimeBraid: Unifying Time Series and Language for Understanding and Forecasting

Project · GitHub · Examples · Alignment Dataset · SFT Dataset

TimeBraid combines numerical time series and natural language in one model. It can explain an observed series in words and predict future values using both its history and relevant text.

Highlights

  • Understand time series. Describe trends, answer questions about temporal patterns, and compare multiple series in natural language.
  • Forecast with context. Combine observed values with text about events or conditions to produce numerical forecasts.
  • Use one interface. Supply numeric arrays and messages through the Hugging Face processor; choose text output or a forecast for one selected series.

Model overview

Property TimeBraid-2.5B
Total parameters 2.5 billion
Language backbone Qwen3-1.7B
Time-series backbone TimesFM 2.5 200M
Architecture Mixture-of-Transformers with global residual attention
Weight precision BF16
Outputs Natural-language responses or numerical forecasts

The checkpoint includes both backbones, fusion layers, tokenizer, and processor. A separate TimesFM checkpoint is not needed for inference.

Exact parameter counts The complete model contains **2,497,200,576 unique parameters**: 1,720,574,976 language, 231,289,280 time-series, and 545,336,320 fusion parameters. This includes frozen parameters and counts shared embedding/output weights once.

Quickstart

Use Linux, Python 3.11, CUDA 12.8, and a FlashAttention-2-compatible NVIDIA GPU. The examples below load the model once and reuse it for each task.

Install the tested dependencies Install the CUDA development toolkit, including `nvcc`, before these commands. Install Torch before building FlashAttention.
python -m pip install --upgrade pip setuptools wheel packaging psutil ninja
python -m pip install numpy==2.1.3
python -m pip install torch==2.10.0 --index-url https://download.pytorch.org/whl/cu128
MAX_JOBS=4 python -m pip install flash-attn==2.8.3 --no-build-isolation
python -m pip install accelerate==1.11.0 huggingface-hub==0.36.2 \
  safetensors==0.5.3 tokenizers==0.22.2 transformers==4.57.6
If a matching FlashAttention wheel is unavailable, installation builds it from source. For an H100-only build, prefix its installation command with `FLASH_ATTN_CUDA_ARCHS=90`.

Load the model

The repository includes custom TimeBraid inference code, loaded with trust_remote_code=True.

import torch
from transformers import AutoModelForCausalLM, AutoProcessor

repo_id = "XinyueWangg/TimeBraid-2.5B"
processor = AutoProcessor.from_pretrained(
    repo_id, trust_remote_code=True, fix_mistral_regex=False,
)
model = AutoModelForCausalLM.from_pretrained(
    repo_id,
    trust_remote_code=True,
    dtype=torch.bfloat16,
    attn_implementation="flash_attention_2",
    device_map={"": "cuda:0"},
).eval()

def generate(inputs):
    device_inputs = {
        key: value.to(model.device) if isinstance(value, torch.Tensor) else value
        for key, value in inputs.items()
    }
    with torch.inference_mode():
        output = model.generate(
            **device_inputs, max_new_tokens=512, do_sample=False,
        )
    return processor.post_process_generation(output, model_inputs=inputs)

How time-series inputs appear to the model

Pass the original numeric values through timeseries. For each input series, TimeBraidProcessor computes its length, mean, and population standard deviation, normalizes the numeric values, and adds a stats block to the model's prompt. For example, input [1.0, 2.0, 3.0] is represented as:

Series 1: <stats>len=3, mean=2, std=0.816497</stats> <ts></ts>

The <ts></ts> pair marks where the numeric series enters the model; the values are carried separately in the processor's tensor inputs. With multiple series, the processor adds one stats block and time-series marker per series. The code examples below supply numeric arrays directly, so you do not need to write these tags in messages yourself.

1. Understand observed time series

Provide a question and the observed values. Without horizon, the model returns text. This illustrative example pairs CPU utilization with request latency for the same service.

inputs = processor(
    messages=[{
        "role": "user",
        "content": "Series 1 is CPU utilization (%) and Series 2 is p99 request latency (ms) for the same service. In two sentences, describe how latency changes as CPU usage rises and whether the operator should investigate before the next traffic peak.",
    }],
    timeseries=[
        [46.0, 48.0, 51.0, 55.0, 58.0, 62.0, 66.0, 70.0, 74.0, 78.0, 82.0, 86.0],
        [118.0, 120.0, 119.0, 121.0, 123.0, 122.0, 126.0, 131.0, 142.0, 168.0, 220.0, 340.0],
    ],
    return_tensors="pt",
)
result = generate(inputs)
print(result["content"])

Example output:

The latency in Series 2 increases as the CPU utilization in Series 1 rises, indicating a potential correlation between higher CPU usage and increased latency. The operator should investigate before the next traffic peak to understand the underlying cause and mitigate any potential performance issues.

2. Forecast with textual context

This illustrative weekly-demand example includes information about an upcoming promotion. horizon=6 requests six future values.

inputs = processor(
    messages=[
        {"role": "system", "content": "You analyze weekly product demand."},
        {"role": "user", "content": "The values are weekly product demand in units. A promotion is scheduled to start at the first forecast step. Forecast the next 6 weekly values for inventory planning."},
    ],
    timeseries=[[200.0, 208.0, 215.0, 205.0, 198.0, 210.0, 218.0, 207.0, 201.0, 212.0, 220.0, 209.0]],
    horizon=6,
    return_tensors="pt",
)
result = generate(inputs)
print([round(value, 3) for value in result["timeseries"]["values"]])

Example output, rounded to three decimal places:

[204.359, 211.113, 217.502, 210.482, 204.328, 209.075]
Multiple input series, one forecast target Both series are available as input; `target_series_index=1` selects the second series as the forecast target. Indices start at zero.
inputs = processor(
    messages=[{
        "role": "user",
        "content": "Use both inputs and forecast the selected target series.",
    }],
    timeseries=[[100.0, 102.0, 104.0, 106.0], [10.0, 11.0, 13.0, 16.0]],
    target_series_index=1,
    horizon=4,
    return_tensors="pt",
)
result = generate(inputs)
print(result["timeseries"]["values"])

Evaluation

Benchmark results and evaluation protocols are reported in the paper.

Usage notes

Task Input Output
Text generation messages result["content"]
Time-series understanding messages and timeseries; omit horizon result["content"]
Forecasting messages, timeseries, and horizon result["timeseries"]["values"]
  • Pass numeric arrays through timeseries; the processor handles normalization and time-series formatting. Forecast values are returned on the input target's original scale.
  • Forecasting returns one target series. For multiple inputs, set target_series_index explicitly; a single input defaults to index 0.
  • Run one request at a time on one CUDA device with FlashAttention 2. Use greedy decoding (do_sample=False), a fresh prompt, and one returned sequence.
  • horizon controls the number of future numerical values; max_new_tokens controls the text-generation budget.

Training data

We plan to share two companion datasets in a common messages format:

The dataset repositories currently contain README pages only. We are reviewing licensing and redistribution terms before deciding what data can be shared. Stay tuned.

Citation

@misc{wang2026timebraidunifyingtimeseries,
      title={TimeBraid: Unifying Time Series and Language for Understanding and Forecasting},
      author={Xinyue Wang and Jiacheng Pang and Kun Zhou and Kexin Zhang and Defu Cao and Fan Feng and Faisal and Songyao Jin and Yan Liu and Biwei Huang},
      year={2026},
      eprint={2609.29792},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2609.29792},
}

License

The model is released under the Apache 2.0 license. See third-party notices for its underlying components. We are reviewing licensing and redistribution terms for the training data.

Configuration

Architecture
TimeBraid
Context length (tokens)
40,960
Layers
28
Hidden size
2,048
Feed-forward size
6,144
Attention heads
16
Key/value heads
8
Head dimension
128
Vocabulary size
151,936
RoPE base
1,000,000
Model type
timebraid

Identity and Version

Repository
XinyueWangg/TimeBraid-2.5B
Publisher
Xinyue Wang
Task
Time series forecasting
Modality
Time series
Library
transformers
Parameters
2.5B parameters
Languages
Not stated by the source
Revision
fc006f68b54dc462dad6b33de74306406cbba465
First published
2026-09-25
Last updated
2026-09-27

Files and Weights

53 files, 5.0 GB in total. The weights are 3 files totalling 5.0 GB in safetensors.

Weights3 files · 5.0 GB
Configuration39 files · 870.0 KB
Tokenizer4 files · 15.9 MB
Documentation3 files · 21.4 KB
Other3 files · 51.3 KB
Repository1 file · 1.6 KB
Every file
FileTypeSizeSHA-256
model-00001-of-00003.safetensorsWeights2.0 GB 37a6c57bc0b4
model-00002-of-00003.safetensorsWeights2.0 GB 0f8a6b66d172
model-00003-of-00003.safetensorsWeights1.0 GB f154275daaba
_timebraid_hf_runtime.pyConfiguration5.2 KB —
added_tokens.jsonConfiguration744 B —
config.jsonConfiguration3.6 KB —
configuration_timebraid.pyConfiguration302 B —
generation_config.jsonConfiguration135 B —
model.safetensors.index.jsonConfiguration75.0 KB —
modeling_timebraid.pyConfiguration302 B —
processing_timebraid.pyConfiguration310 B —
processor_config.jsonConfiguration194 B —
special_tokens_map.jsonConfiguration610 B —
timebraid/__init__.pyConfiguration2.7 KB —
timebraid/_vendor/__init__.pyConfiguration78 B —
timebraid/_vendor/timesfm/__init__.pyConfiguration827 B —
timebraid/_vendor/timesfm/configs.pyConfiguration1.8 KB —
timebraid/_vendor/timesfm/timesfm_2p5/timesfm_2p5_base.pyConfiguration2.2 KB —
timebraid/_vendor/timesfm/timesfm_2p5/timesfm_2p5_torch.pyConfiguration9.0 KB —
timebraid/_vendor/timesfm/torch/__init__.pyConfiguration650 B —
timebraid/_vendor/timesfm/torch/dense.pyConfiguration3.2 KB —
timebraid/_vendor/timesfm/torch/normalization.pyConfiguration1.3 KB —
timebraid/_vendor/timesfm/torch/transformer.pyConfiguration12.4 KB —
timebraid/_vendor/timesfm/torch/util.pyConfiguration2.7 KB —
timebraid/data/__init__.pyConfiguration69 B —
timebraid/data/mot_utils.pyConfiguration23.7 KB —
timebraid/model/__init__.pyConfiguration910 B —
timebraid/model/loading.pyConfiguration38.8 KB —
timebraid/model/mot/__init__.pyConfiguration141 B —
timebraid/model/mot/attention.pyConfiguration18.0 KB —
timebraid/model/mot/bridge_runtime.pyConfiguration21.3 KB —
timebraid/model/mot/bridge_runtime_forecast.pyConfiguration53.4 KB —
timebraid/model/mot/bridge_runtime_mot.pyConfiguration192.0 KB —
timebraid/model/mot/config_contract.pyConfiguration7.6 KB —
timebraid/model/mot/generation_route.pyConfiguration7.8 KB —
timebraid/model/mot/kv_cache.pyConfiguration67.4 KB —
timebraid/model/mot/model.pyConfiguration223.7 KB —
timebraid/model/mot/pairing.pyConfiguration3.9 KB —
timebraid/model/mot/runtime_state.pyConfiguration5.0 KB —
timebraid/model/mot/structures.pyConfiguration10.0 KB —
timebraid/model/timebraid.pyConfiguration42.4 KB —
timebraid/processing_timebraid.pyConfiguration30.6 KB —
LICENSEDocumentation11.3 KB —
README.mdDocumentation9.7 KB —
THIRD_PARTY_NOTICES.mdDocumentation383 B —
assets/timebraid-mark.pngOther46.9 KB —
chat_template.jinjaOther4.2 KB —
requirements.txtOther281 B —
.gitattributesRepository1.6 KB —
merges.txtTokenizer1.7 MB —
tokenizer.jsonTokenizer11.4 MB 06fc61a040c1
tokenizer_config.jsonTokenizer5.8 KB —
vocab.jsonTokenizer2.8 MB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
5.0 GB
Download from Xinyue Wang

Released by Xinyue Wang through its official repository on Hugging Face. Read the license.

Built From

  • Described by arXiv:2609.29792
  • Trained on (disclosed) XinyueWangg/TimeBraid-Alignment
  • Trained on (disclosed) XinyueWangg/TimeBraid-SFT

Memory Requirements

PrecisionWeights in memory
As published5.0 GB
16-bit5.0 GB
8-bit2.5 GB
4-bit1.2 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About TimeBraid-2.5B

How much GPU memory does TimeBraid-2.5B need?

About 6 GB at 16-bit and 1.5 GB at 4-bit: the weights (2.5B parameters) plus a working margin. A long context needs more.

What is the cheapest GPU to run TimeBraid-2.5B on?

At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.

Can I use TimeBraid-2.5B commercially?

Yes. TimeBraid-2.5B is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

What is TimeBraid-2.5B's context length?

40,960 tokens, from the maximum position embeddings in its published configuration.

Similar Models

Model · Time series forecasting

moirai-moe-1.0-R-base

Salesforce AI Research

This model has been pushed to the Hub using the PytorchModelHubMixin integration: This release is for research purposes only in support of an academic paper. Our models, datasets, and code are not specifically designed or evaluated for all downstream purposes. We strongly recommend users evaluate and address potential concerns related to accuracy, safety, and fairness before deploying this model. We encourage users to consider the common limitations of AI, comply with applicable laws, and leverage best practices when selecting use cases, particularly for high-risk scenarios where errors or misuse could significantly impact people’s lives, rights, or safety. For further guidance on use…

Open weights cc-by-nc-4.0 935M parameters

Model · Time series forecasting

chronos-t5-large

Amazon

Update Feb 14, 2025: Chronos-Bolt & original Chronos models are now available on Amazon SageMaker JumpStart! Check out the tutorial notebook to learn how to deploy Chronos endpoints for production use in a few lines of code. Update Nov 27, 2024: We have released Chronos-Bolt models that are more accurate (5% lower error), up to 250 times faster and 20 times more memory-efficient than the original Chronos models of the same size. Check out the new models here. Chronos is a family of pretrained time series forecasting models based on language model architectures. A time series is transformed into a sequence of tokens via scaling and quantization, and a language model is trained on these…

Open weights apache-2.0 709M parameters chronos-forecasting

Model · Time series forecasting

timesfm-2.0-500m-pytorch

Google

TimesFM (Time Series Foundation Model) is a pretrained time-series foundation model developed by Google Research for time-series forecasting. This is not an officially supported Google product. timesfm-2.0-500m is the second open model checkpoint: - It performs univariate time series forecasting for context lengths up to 2048 time points and any horizon lengths, with an optional frequency indicator. Note that it can go even beyond 2048 context even though it was trained with that as the maximum context. - It focuses on point forecasts. We experimentally offer 10 quantile heads but they have not been calibrated after pretraining. - It ideally requires the context to be contiguous (i.e. no…

Open weights apache-2.0 499M parameters timesfm

Model · Time series forecasting

granite-timeseries-patchtst-fm-r2

IBM Granite

PatchTST-FM-r2, a state-of-the-art zero-shot time series foundation model, represents a continuation of the well-recognized PatchTST model series, building on the original PatchTST and its zero-shot variant PatchTST-FM-r1. PatchTST-FM-r2 brings architectural enhancements as well as an expanded training base on top of its predecessor PatchTST-FM-r1. As of August 31, 2026 Granite-TimeSeries-PatchTST-FM-r2 is the top performing zero-shot model released under a permissive, commercial-friendly open-source license on the GIFT-Eval benchmark. Granite-TimeSeries-PatchTST-FM-r2 ranks #2 when considering all zero-shot, replicable models (see below for more details). The architectural changes in r2…

Open weights openmdw-1.0 385M parameters

Model · Time series forecasting

MOMENT-1-large

Auton Lab

MOMENT is a family of foundation models for general-purpose time-series analysis. The models in this family (1) serve as a building block for diverse time-series analysis tasks (e.g., forecasting, classification, anomaly detection, and imputation, etc.), (2) are effective out-of-the-box, i.e., with no (or few) task-specific exemplars (enabling e.g., zero-shot forecasting, few-shot classification, etc.), and (3) are tunable using in-distribution and task-specific data to improve performance. For details on MOMENT models, training data, and experimental results, please refer to the paper MOMENT: A Family of Open Time-series Foundation Models. Recommended Python Version: Python 3.11 (support…

Open weights mit 346M parameters transformers

Model · Time series forecasting

timesfm-3.0-pytorch

Google

TimesFM (Time Series Foundation Model) is a pretrained time-series foundation model developed by Google Research for time-series forecasting. This repository contains the official PyTorch weights and configurations for TimesFM 3.0. This model is released under the TimesFM Non-Commercial License v1.0. timesfm-3.0 is pretrained using - GiftEvalPretrain excluding the datasets that overlap with fev-bench - Wikipedia Pageviews, cutoff Nov 2023 (see paper for details). - Google Trends top queries, cutoff EoY 2022 (see paper for details). - Synthetic and augmented data. title={A decoder-only foundation model for time-series forecasting}, author={Das, Abhimanyu and Kong, Weihao and Sen, Rajat and…

Open weights other 331M parameters