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:
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user