SanSi

Last updated:

Open—$0/M input

Quadrant scores

See the full quadrant

Scored with the public quadrant rubric (maturity × capability; bubble = adoption). Revise as evidence lands.

  • Maturity4.6/10

    Apache-2.0 LoRA and per-loop readouts on frozen Ouro-1.4B and Ouro-2.6B. Card, GitHub decide() and paper. No package, /v1/systemone server, third-party integration or SLA.

  • Capability4.7/10

    Choice only: 2–26 letter options, not score or boolean. CE plus Brier every loop; author ECE 0.078. No millisecond latency. 75.8% is the three-seed mean; this checkpoint is 75.2%.

  • Adoption1/100

    HF on 12 Oct: SanSi-2.6B has 2 likes and 26 downloads; the 1.4B adapter has 1 like and 17. No third-party integration or reported production use.

Vendor claims

Read this first

  1. Choice only. One question, 2 to 26 options, read as letters A–Z. There is no first-class score or yes/no type, and no /v1/systemone server.
  2. 75.8% is the authors’ three-seed mean. The checkpoint in this repo (seed 0) scores 75.2% on the same 10,027 items. In-distribution items, drawn from the training sources, score 88.4%; far transfer, from sources never trained on, scores 71.6%.
  3. The backbone stays frozen. You download Ouro at the pinned revision. What this repo trains is a rank-64 LoRA plus a small readout per loop.

What it is

SanSi (Shuyu Gan, Young-Jun Lee, Dongyeop Kang; Minnesota NLP) turns a pretrained looped language model into a typed decision model. Ouro applies one shared stack of layers several times. SanSi reads option probabilities after every loop, so one forward pass yields a decision at every budget from one loop to eight. No text is generated.

Adapter Backbone Trained parameters Accuracy after loop 8 (3-seed mean)
SanSi Ouro-1.4B 60.8M 72.0%
SanSi-2.6B Ouro-2.6B 121.4M 75.8%

Both adapters are Apache-2.0, released 8 October 2026. Loading is sansi.hub.load / decide from the GitHub repo, on GPU, backbone in bfloat16. The prompt is fixed: state, then Question:, then Options: (A) …, then Answer:. decide(..., loops=4) stops at four loops.

The loss at every loop is cross-entropy plus Brier score against the item’s target distribution. Items the state cannot answer were trained toward the uniform distribution. The paper treats a hard answer as committed when the top probability reaches (1 + 1/K) / 2.

Author’s comparison

Same data and recipe, except the Kev-4B row, which uses Kev’s code on this data. Cost is GPU time for one pass over the test set, with one loop of Ouro-1.4B as 1. All figures are the authors’.

Model Params Loops Cost All In-dist. Near Far ECE
Qwen3.5-4B 4.2B 1 2.4 73.8 88.5 68.9 70.1 0.113
Kev-4B (their data) 4.2B 1 2.1 74.3 88.6 70.9 70.3 0.119
SanSi 1.4B 1.4B 8 7.7 72.0 86.6 67.7 68.0 0.093
SanSi-2.6B 2.7B 8 14.8 75.8 88.4 74.4 71.6 0.078

Eight loops of the 1.4B model cost 7.7× one loop and land 13.4 points above the one-loop Ouro-1.4B row (58.6%). Running more than eight loops lowers accuracy. The test-set standard deviation across the three seeds is 0.6 points. English only.

Score working (12 Oct 2026, scored on SanSi-2.6B)

  • Maturity 4.6 = availability 8 × 0.30 + docs 7 × 0.25 + integrations 1 × 0.25 + support 1 × 0.20 = 2.40 + 1.75 + 0.25 + 0.20.
  • Capability 4.7 = types 3 × 0.30 + calibration 7 × 0.25 + latency 4 × 0.25 + accuracy 5 × 0.20 = 0.90 + 1.75 + 1.00 + 1.00 = 4.65 → 4.7. Types are 3 because the interface is choice only. Latency is 4 because the card publishes relative GPU cost, not a millisecond p50. Accuracy is 5 because the suite is the authors’.
  • Adoption 1 = engagement 2 × 0.35 + ecosystem 1 × 0.35 + production 0 × 0.30 = 0.70 + 0.35 = 1.05 → 1.