From f2f168fa70c812a689c8ec2cb51b62708a556723 Mon Sep 17 00:00:00 2001 From: leejet Date: Sat, 10 Oct 2026 01:12:03 +0800 Subject: [PATCH] fix: preserve singleton output dimension when merging LoRA (#2116) --- src/model/adapter/lora_ops.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/model/adapter/lora_ops.cpp b/src/model/adapter/lora_ops.cpp index 7dacfd16..5a6f905d 100644 --- a/src/model/adapter/lora_ops.cpp +++ b/src/model/adapter/lora_ops.cpp @@ -11,7 +11,9 @@ ggml_tensor* ggml_ext_merge_lora(ggml_context* ctx, ggml_tensor* lora_mid) { ggml_tensor* updown; // flat lora tensors to multiply it - int64_t lora_up_rows = lora_up->ne[ggml_n_dims(lora_up) - 1]; + // ggml_n_dims drops the output dimension when a linear layer has one output. + int lora_up_n_dims = ggml_n_dims(lora_up); + int64_t lora_up_rows = lora_up_n_dims == 1 ? 1 : lora_up->ne[lora_up_n_dims - 1]; lora_up = ggml_reshape_2d(ctx, lora_up, ggml_nelements(lora_up) / lora_up_rows, lora_up_rows); auto lora_down_n_dims = ggml_n_dims(lora_down); // assume n_dims should always be a multiple of 2 (otherwise rank 1 doesn't work)