The official QAT weights released by google use fp16 (instead of Q6_K) for the embeddings table, which makes this model take a significant extra amount of memory (and storage) compared to what Q4_0 quants are supposed to take.
Instead of quantizing the table myself, I extracted it from Bartowski's quantized models, because those were already calibrated with imatrix, which should squeeze some extra performance out of it.
Requantizing with llama.cpp fixes that and gives better result than the other thing.
Note that this model ends up smaller than the Q4_0 from Bartowski. This is because llama.cpp sets some tensors to Q4_1 when quantizing models to Q4_0 with imatrix, but this is a static quant.
I also fixed the control token metadata, which was slightly degrading the performance of the model in instruct mode. Shoutout to ngxson for
finding the issue,
tdh111 for
making me aware of the issue,
and u/dampflokfreund on reddit (
Dampfinchen on Huggingface) for
sharing the steps to fix it.
That model still struggles at long context with these fixes (just like the original qat model).