convert : fix LoRA conversion crash for Qwen3.5 V-head reorder (#28324)
* convert: fix LoRA conversion crash for Qwen3.5 V-head reorder _reorder_v_heads does reshape+permute+reshape to reorder V heads from grouped to tiled order. LoraTorchTensor.reshape() cannot split its row dimension (A matrix), so converting Qwen3.5 LoRA adapters that target out_proj crashes with NotImplementedError. Fix: detect LoRA tensors and apply the equivalent index permutation directly — column reorder (dim=last) permutes A's columns, row reorder (dim=0) permutes B's rows. This is mathematically identical: (B @ A)[:, perm] == B @ A[:, perm] (B @ A)[perm, :] == B[perm, :] @ A Verified: both paths produce exactly zero diff against the full-tensor reorder on random (rank=32, 4096×4096) matrices. Fixes #21125 Signed-off-by: Radu Swigler <radu@swigler.com> * convert: add ty: ignore for hasattr-guarded LoRA call Assisted-By: Claude Opus 4.6 <noreply@anthropic.com> * fix comment * nowrap --------- Signed-off-by: Radu Swigler <radu@swigler.com> Co-authored-by: Radu Swigler <radu@swigler.com> Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@huggingface.co> Assisted-by: Claude Opus 4.6 <noreply@anthropic.com>
S
Swigler committed
b016f461be57949f4d0749ec04caaee1c16c5b60
Parent: 81ff93e
Committed by GitHub <noreply@github.com>
on 9/30/2026, 5:30:21 PM