* Keep Minimax's indexer tensors at F32 for speed and accuracy
* name -> new_name
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()
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;