From 83dd146b75dab0f9b392cb1df041d986eea63cb4 Mon Sep 17 00:00:00 2001 From: Pedro Cuenca Date: Sat, 8 Aug 2026 13:39:03 +0200 Subject: [PATCH] Revert rope_type derivation from target NOTE: this breaks compatibility with Meta's distributed DFlash GGUFs, as the Q/K are stored in "NEOX" (rotated half) format, like in transformers. --- conversion/onyx.py | 10 ++-------- src/llama-graph.cpp | 5 +---- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/conversion/onyx.py b/conversion/onyx.py index 3de901ab34..e5669cc01e 100644 --- a/conversion/onyx.py +++ b/conversion/onyx.py @@ -126,12 +126,6 @@ class OnyxAssistantModel(TextModel): self.gguf_writer.add_sliding_window_pattern([t == "sliding_attention" for t in h["layer_types"]]) def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iterable[tuple[str, Tensor]]: - # Invert transformers' permute_rope - if ".self_attn.q_proj." in name: - data_torch = _unpermute_for_rope(data_torch, int(self.hparams["num_attention_heads"])) - elif ".self_attn.k_proj." in name: - data_torch = _unpermute_for_rope(data_torch, int(self.hparams["num_key_value_heads"])) - elif ".self_attn.q_norm." in name or ".self_attn.k_norm." in name: - data_torch = _unpermute_for_rope(data_torch, 1) - + # DFlash defaults to NEOX (rotate_half) rope, matching transformers HF layout for Q/K, QK-norms + # no permutation needed. yield (self.map_tensor_name(name), data_torch) diff --git a/src/llama-graph.cpp b/src/llama-graph.cpp index de44586ae2..6d1c8f4e42 100644 --- a/src/llama-graph.cpp +++ b/src/llama-graph.cpp @@ -1350,10 +1350,7 @@ llm_graph_context::llm_graph_context(const llm_graph_params & params) : n_outputs (params.n_outputs), n_ctx_orig (cparams.n_ctx_orig_yarn), pooling_type (cparams.pooling_type), - // DFlash: inherit rope type from the linked target - rope_type ((arch == LLM_ARCH_DFLASH && cparams.ctx_other != nullptr) - ? llama_get_model(cparams.ctx_other)->hparams.rope_type - : hparams.rope_type), + rope_type (hparams.rope_type), sched (params.sched), backend_cpu (params.backend_cpu), cvec (params.cvec),