From: Bartowski Date: Sun, 26 Jul 2026 22:02:56 +0000 (-0400) Subject: Keep Minimax's indexer tensors at F32 for speed and accuracy (#26144) X-Git-Tag: upstream/0.0.10438~299 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=7657a6c26a7c74480db23893c3b5cc68172dacd3;p=pkg%2Fggml%2Fsources%2Fllama.cpp 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 --- diff --git a/conversion/minimax.py b/conversion/minimax.py index cbbdfe3ae..e82e393a3 100644 --- a/conversion/minimax.py +++ b/conversion/minimax.py @@ -58,6 +58,11 @@ class MiniMaxM2Model(TextModel): class MiniMaxM3Model(MiniMaxM2Model): 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): super().set_gguf_parameters() diff --git a/src/llama-quant.cpp b/src/llama-quant.cpp index caf7733a5..7c0bac07d 100644 --- a/src/llama-quant.cpp +++ b/src/llama-quant.cpp @@ -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("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 quantize &= name.find("time_mix_first.weight") == std::string::npos; quantize &= name.find("time_mix_w0.weight") == std::string::npos;