@@ -2889,6 +2889,20 @@ def permute(weights: Tensor, n_head: int, n_head_kv: int | None):
28892889 .swapaxes(1, 2)
28902890 .reshape(weights.shape))
28912891
2892+ def _repack_nvfp4(self, name: str, weight: Tensor, scale: Tensor, scale2: Tensor, input_scale: Tensor):
2893+ # Mirror the BF16 Q/K RoPE permutation site in modify_tensors; the NVFP4 path bypasses it.
2894+ if self.undo_permute:
2895+ n_head = self.find_hparam(["n_heads", "num_attention_heads"], optional=True)
2896+ n_kv_head = self.find_hparam(["n_kv_heads", "num_key_value_heads"], optional=True)
2897+ if n_head is not None:
2898+ if name.endswith("q_proj.weight"):
2899+ weight = LlamaModel.permute(weight, n_head, n_head)
2900+ scale = LlamaModel.permute(scale, n_head, n_head)
2901+ elif name.endswith("k_proj.weight"):
2902+ weight = LlamaModel.permute(weight, n_head, n_kv_head)
2903+ scale = LlamaModel.permute(scale, n_head, n_kv_head)
2904+ super()._repack_nvfp4(name, weight, scale, scale2, input_scale)
2905+
28922906 _experts: list[dict[str, Tensor]] | None = None
28932907
28942908 def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iterable[tuple[str, Tensor]]:
@@ -12702,11 +12716,12 @@ def set_gguf_parameters(self):
1270212716 def set_mistral_config(gguf_writer: gguf.GGUFWriter, hparams: dict):
1270312717 if "yarn" in hparams:
1270412718 yarn_params = hparams["yarn"]
12719+ mscale_all_dim = 1.0 if not yarn_params["apply_scale"] else 0.0
1270512720 gguf_writer.add_rope_scaling_type(gguf.RopeScalingType.YARN)
1270612721 gguf_writer.add_rope_scaling_factor(yarn_params["factor"])
1270712722 gguf_writer.add_rope_scaling_yarn_beta_fast(yarn_params["beta"])
1270812723 gguf_writer.add_rope_scaling_yarn_beta_slow(yarn_params["alpha"])
12709- gguf_writer.add_rope_scaling_yarn_log_mul(1.0) # mscale_all_dim
12724+ gguf_writer.add_rope_scaling_yarn_log_mul(mscale_all_dim)
1271012725 gguf_writer.add_rope_scaling_orig_ctx_len(yarn_params["original_max_position_embeddings"])
1271112726
1271212727 if "llama_4_scaling" in hparams:
0 commit comments