t0-beta Q8_0, WebGPU
Q8_0-quantized weights for theforecastingcompany/t0-beta, packaged for client-side browser forecasting via WASM + WebGPU.
Runs entirely in the browser, no server required. Probabilistic multi-horizon time-series forecasting, 256M parameters.
What you gain, what you lose
Worst-case mean drift vs F32 is 0.20% for this Q8_0 file, and worst-case point drift 1.06%; the official t0-beta INT8 card states 0.23% and 9.39%. The official figures are from the t0-beta-onnx-int8 card as published before 2026-10-18, on a different case generator. No browser measurement exists for t0-beta; latency below is native Metal only.
Files
| File | Size | Description |
|---|---|---|
t0-beta-q8_0.gguf |
275.3 MB | Forecasting transformer weights (Q8_0 quantized) |
config.json |
<1 KB | Model architecture and quantile-level configuration |
Usage
These weights are consumed by t0-web, a Rust/WASM forecasting engine: its own WGSL kernels on WebGPU, and Burn's ndarray backend on CPU.
await t0wasm.initBackend();
const modelBuf = await fetch('t0-beta-q8_0.gguf').then(r => r.arrayBuffer());
const model = t0wasm.T0Wasm.load(new Uint8Array(modelBuf));
const context = series.slice(-512);
const quantiles = await model.forecast(context, 32);
Weights are fetched from this repo and cached by the browser.
Requirements
- WebGPU when available (Chrome or Edge 113+, over HTTPS), otherwise CPU (WebAssembly)
- ~275 MB download on first load (cached afterward)
Pipeline
Series → patches of 32 (96-vector each)
→ 24 transformer blocks [WASM, WebGPU] → time and group attention, embed 1024
→ 32-step quantile decoder → 21 quantile levels
→ autoregressive rollout for longer horizons
Benchmarks
Drift vs our own F32 reference, and vs the official published t0-beta INT8 card
| quant | mean drift worst % | point drift worst % |
|---|---|---|
| this Q8_0 | 0.20 | 1.06 |
| Official t0-beta INT8 card, as published before 2026-10-18 (different case generator) | 0.23 | 9.39 |
GIFT-Eval, official-protocol 8-config subset (dequantized back to f32 into the reference architecture)
| f32 (original weights) | this Q8_0 | |
|---|---|---|
| CRPS (aggregate, 8 configs) | 0.0749 | 0.0749 |
| MASE (aggregate, 8 configs) | 1.0522 | 1.0519 |
Within 0.4% relative of the f32 reference on this small subset. This 8-config subset is not comparable to the published 97-config headline numbers (CRPS 0.4738 / MASE 0.6865); no full-97-config run exists for this checkpoint.
Latency (native Metal only, no browser measurement)
| quant | single (ms/signal) | batch-24 (ms/signal) |
|---|---|---|
| this Q8_0 | 219.3 | 54.6 |
Measured with t0-fast on raw wgpu/Apple Metal, context 512, horizon 32. No headless-Chromium browser run exists for t0-beta.
Model Details
- Base model: theforecastingcompany/t0-beta by The Forecasting Company
- Architecture: Patch transformer, time and group attention
- Parameters: ~256M
- Quantization: Q8_0 for
attention.wQKV.weight,attention.wO.weight,mlp.0.weight,mlp.2.weightper layer; norms, embeddings, biases, and the quantile head kept at f16 - Quantile levels: 21
- License: Apache-2.0 (same as original), see LICENSE and NOTICE
Quantization
Weights-only quantization using standard GGUF Q8_0 blocks (32 values per block, fp16 scale), in ggml-compatible layout, dequantized on-GPU inside the WGSL matmul with F32 compute. Exported from the F32 safetensors by t0-web's own packer. The F32 path itself matches the PyTorch reference to 3.2e-6 max-abs.
Citation
@article{meyer2026t0,
title = {$t_0$: A Time-Series Foundation Model for Forecasting with Context},
author = {Meyer, Lucas and Sole, Claudio and Xiang, Huikan and Li, Nicolas and Franceschino, Lucas and Quera-Bofarull, Arnau and Scholl, Maarten P. and Fainberg, Joachim and N{\'e}giar, Geoffrey},
journal = {arXiv preprint arXiv:2609.24559},
year = {2026},
url = {https://arxiv.org/abs/2609.24559},
}
Disclaimer
This is an independent port by idle-intelligence, not affiliated with or endorsed by The Forecasting Company. Forecast values may differ slightly from the original PyTorch implementation due to quantization.