BananaMind-2-Nano-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:

arararararong the the the hear hear hear hear hear hearin

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

How to use it

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

model = bananamendr.Model(snapshot_download("fontlab/BananaMind-2-Nano-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

Item Value
Method ternary
Group size 64
Ternary matrices 70
8-bit matrices 1
Float size 39.87 MB
This file 5.2 MB
Smaller by 7.66 times
Made by bananamendy 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.

Measure Value
Same next token 22.1%
Next token inside the first five 43.2%
Divergence (KL) 3.2426
Perplexity 709.9 against 66.3
Identical greedy answers 0/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

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

The steps are:

  1. Run a calibration text through the model, and record what each matrix receives.
  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. Quantize one column at a time, and move the error of that column into the columns that follow (GPTQ).
  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. 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.

Downloads last month
-
Safetensors
Model size
4.35M params
Tensor type
F32
I8
U8
Inference Providers NEW
This model isn't deployed by any Inference Provider. 馃檵 Ask for provider support

Model tree for fontlab/BananaMind-2-Nano-Chat-ternary

Finetuned
(3)
this model