CoolFace
Modelpublic

fontlab/BananaMind-2-Pro-Preview-Chat-ternary

sourceHugging Faceapache-2.0updated 1mo agoView on Hugging Face
0likes59downloads
Model Card

BananaMind-2-Pro-Preview-Chat-ternary

This checkpoint does not work as a chat model. Every matrix holds ternary weights, and a model of this size cannot carry that. The answers have no relation to the question. The numbers below say how bad it is. The file is here so that the measurement can be repeated, and so that the size of a fully ternary checkpoint is visible. For work, use the -int8 or the -mixed checkpoint of the same model.

What it writes for Name one ocean., with a temperature of zero:

Engineererererererererererererererer

A quantized copy of BananaMind/BananaMind-2-Pro-Preview-Chat, for the bananamend engine.

How to use it

bash
uv pip install bananamendy
bananamendy chat --name fontlab/BananaMind-2-Pro-Preview-Chat-ternary --prompt "Name one ocean."
python
import bananamendr
from huggingface_hub import snapshot_download

model = bananamendr.Model(snapshot_download("fontlab/BananaMind-2-Pro-Preview-Chat-ternary"))
print(model.chat([{"role": "user", "content": "Hi"}]).text)

The file needs the bananamend engine. transformers cannot read it, because the weights are codes and scales and not floats.

What is inside

ItemValue
Methodternary
Group size64
Ternary matrices168
8-bit matrices1
Float size555.89 MB
This file66.66 MB
Smaller by8.34 times
Made bybananamendy 1.0.2

Measured quality

The numbers compare this checkpoint with the float checkpoint on a text that the quantizer never saw. The engine produced both sides.

MeasureValue
Same next token41.3%
Next token inside the first five66.7%
Divergence (KL)1.4209
Perplexity131.1 against 38.3
Identical greedy answers0/8

Why the mixture

Ternary weights hold three values: minus one, zero and plus one. They are very small, and they lose much. Eight-bit weights are four times larger, and they lose almost nothing.

A model of this size cannot carry ternary weights everywhere. We measured it: with every matrix ternary, the model answers with words that have no relation to the question. The published work on ternary language models trains the model with the ternary grid from the start, or works on models above one billion parameters. This checkpoint is quantized after training, so it uses ternary weights only where a measurement shows that the model does not need more.

How it was made

bash
bananamendy quantize --name <base model> --out <directory>

The steps are:

  1. 1.Run a calibration text through the model, and record what each matrix receives.
  2. 2.For each group of 64 weights, search the threshold that gives the smallest error, and give the positive and the negative weights separate scales (Ternary Weight Networks, with the asymmetric grid of PT2-LLM).
  3. 3.Quantize one column at a time, and move the error of that column into the columns that follow (GPTQ).
  4. 4.Measure each matrix on its own, and give ternary weights to the matrices that change the answers least, while the total change stays inside a budget.
  5. 5.Give every other matrix 8-bit weights.

quantization_report.json in this repository holds the result per tensor.

Licence

apache-2.0, the same as the base model.