Keep Minimax's indexer tensors at F32 for speed and accuracy (#26144)

* Keep Minimax's indexer tensors at F32 for speed and accuracy

* name -> new_name
This commit is contained in:
Bartowski
2026-07-26 18:02:56 -04:00
committed by GitHub
parent 55b7d6c4c7
commit 7657a6c26a
2 changed files with 9 additions and 0 deletions
+5
View File
@@ -58,6 +58,11 @@ class MiniMaxM2Model(TextModel):
class MiniMaxM3Model(MiniMaxM2Model): class MiniMaxM3Model(MiniMaxM2Model):
model_arch = gguf.MODEL_ARCH.MINIMAXM3 model_arch = gguf.MODEL_ARCH.MINIMAXM3
def tensor_force_quant(self, name, new_name, bid, n_dims):
if ".indexer." in new_name:
return gguf.GGMLQuantizationType.F32
return super().tensor_force_quant(name, new_name, bid, n_dims)
def set_gguf_parameters(self): def set_gguf_parameters(self):
super().set_gguf_parameters() super().set_gguf_parameters()
+4
View File
@@ -326,6 +326,10 @@ static bool tensor_allows_quantization(const llama_model_quantize_params * param
quantize &= name.find("ssm_conv1d") == std::string::npos; quantize &= name.find("ssm_conv1d") == std::string::npos;
quantize &= name.find("shortconv.conv.weight") == std::string::npos; quantize &= name.find("shortconv.conv.weight") == std::string::npos;
// do not quantize MiniMax's indexer projection weights, they are tiny
quantize &= name.find("indexer.k_proj.weight") == std::string::npos;
quantize &= name.find("indexer.q_proj.weight") == std::string::npos;
// do not quantize RWKV's small yet 2D weights // do not quantize RWKV's small yet 2D weights
quantize &= name.find("time_mix_first.weight") == std::string::npos; quantize &= name.find("time_mix_first.weight") == std::string::npos;
quantize &= name.find("time_mix_w0.weight") == std::string::npos; quantize &= name.find("time_mix_w0.weight") == std::string::npos;