Instructions to use nambor/refpred-operators with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use nambor/refpred-operators with Transformers:
# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("nambor/refpred-operators", device_map="auto") - Notebooks
- Google Colab
- Kaggle
refpred-operators β fitted reference operators for transformer residual streams
Per-layer affine transition operators A_l, b_l fitted to the residual streams
of Gemma-3-1b and Llama-3.2-1B, by streaming ridge regression over a
corpus. They give you a reference for what each layer usually does to the
state, so you can score a single trajectory against it instead of against zero:
h_{l+1} β A_l Β· h_l + b_l (the reference prediction)
Ξ΅_l = h_{l+1} β (A_l Β· h_l + b_l) (the innovation β what it does NOT predict)
This is the tool for the write-up A Fitted Reference Predictor for Transformer
Residual-Stream Trajectories. You do not need to re-run the fitting pipeline β
torch.load these and subtract from your own hidden states.
Files
| file | contents |
|---|---|
operators_gemma.pt |
Gemma-3-1b, d=1152, 26 layers (~790 MB) |
operators_llama.pt |
Llama-3.2-1B, d=2048, 16 layers (~1.6 GB) |
load_operators.py |
tiny loader: innovation(ops, h_l, h_next, layer) |
Each .pt is a self-describing dict:
{
"meta": { family, d, n_layers, hf_id_pt, hf_id_it, corpus, ridge_lambda, ... },
"PT-COMP": { "raw": {"A": [nL,d,d], "b": [nL,d]}, "normed": {...} },
"IT-COMP": { "raw": {...}, "normed": {...} },
"IT-CHAT": { "raw": {...}, "normed": {...} },
}
- Conditions β
PT-COMP(base weights, no template),IT-COMP(instruct weights, no template β the usual "deploy on the weights you'll use" default),IT-CHAT(instruct weights, chat-templated). - Variants β
rawfitshidden_statesas returned;normedfitsinput_layernorm_l(h_l), i.e. what blocklactually reads. The two diverge strongly on Gemma because of its(1+Ξ³)RMSNorm β usenormedif you feed normalised states.
Usage
import torch
from load_operators import load_operators, innovation
ops = load_operators("operators_gemma.pt") # or operators_llama.pt
# your own hidden states for a prompt: hs[l] is [seq, d] (output_hidden_states=True)
layer = 12
eps = innovation(ops, hs[layer], hs[layer + 1], layer,
condition="IT-COMP", variant="raw") # [seq, d]
predict_next(ops, h, layer, ...) gives the reference prediction alone.
Fit details
Ridge (Ξ»_rel = 1e-6), fp32 extraction / fp64 solve, on fineweb-edu (sample-10BT,
seq_len 128, ~1400 fit docs). Operators are stored fp32. The BOS position is
excluded (attention sink); the chat scaffold is excluded by position for
IT-CHAT.
What these are (and are not)
They are regression coefficients fitted on activations β not the model weights, and not a runnable model. To produce hidden states you must load the base model yourself (both are gated):
- Gemma-3-1b β
google/gemma-3-1b-pt/google/gemma-3-1b-it, Gemma Terms of Use (https://ai.google.dev/gemma/terms). - Llama-3.2-1B β
meta-llama/Llama-3.2-1B/meta-llama/Llama-3.2-1B-Instruct, Llama 3.2 Community License.
Your use of these operators is subject to the respective base-model licenses.
Caveats (read the write-up)
- The reference is relative, not absolute: an operator fitted on one domain can be worse than useless on another (prose-vs-arithmetic differ ~58% on shared support). Fit-distribution coverage is a real precondition.
- A large Ξ΅ means "large," not "unusual" β turning it into an anomaly score needs local calibration that these operators alone do not provide.
- Everything here is in the model's native basis; the geometry is coordinate-dependent.
Links & citation
- Write-up: A Fitted Reference Predictor for Transformer Residual-Stream Trajectories β https://robman.fyi
- Code (fitting pipeline + analyses): see the accompanying repository.
@misc{manson_refpred_operators,
title = {Fitted reference operators for transformer residual streams},
author = {Manson, Rob},
year = {2026},
url = {https://robman.fyi}
}