From dea49bf60842316cd3d769730522f7453e5b8c7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20du=20Hamel?= Date: Mon, 20 Jan 2025 18:32:50 +0100 Subject: [PATCH 1/2] Lora: fix rank 1 loras --- lora.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lora.hpp b/lora.hpp index 83181837c..b3bb2b9c2 100644 --- a/lora.hpp +++ b/lora.hpp @@ -617,7 +617,10 @@ struct LoraModel : public GGMLRunner { // flat lora tensors to multiply it int64_t lora_up_rows = lora_up->ne[ggml_n_dims(lora_up) - 1]; lora_up = ggml_reshape_2d(compute_ctx, lora_up, ggml_nelements(lora_up) / lora_up_rows, lora_up_rows); - int64_t lora_down_rows = lora_down->ne[ggml_n_dims(lora_down) - 1]; + 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) + lora_down_n_dims = (lora_down_n_dims + lora_down_n_dims % 2); + int64_t lora_down_rows = lora_down->ne[lora_down_n_dims-1]; lora_down = ggml_reshape_2d(compute_ctx, lora_down, ggml_nelements(lora_down) / lora_down_rows, lora_down_rows); // ggml_mul_mat requires tensor b transposed From 86678a1c87181da98646b051e207f900258dce88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20du=20Hamel?= Date: Wed, 22 Jan 2025 01:22:52 +0100 Subject: [PATCH 2/2] lora: format --- lora.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lora.hpp b/lora.hpp index b3bb2b9c2..ea1d03e02 100644 --- a/lora.hpp +++ b/lora.hpp @@ -615,12 +615,12 @@ struct LoraModel : public GGMLRunner { scale_value *= multiplier; // flat lora tensors to multiply it - int64_t lora_up_rows = lora_up->ne[ggml_n_dims(lora_up) - 1]; - lora_up = ggml_reshape_2d(compute_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) + int64_t lora_up_rows = lora_up->ne[ggml_n_dims(lora_up) - 1]; + lora_up = ggml_reshape_2d(compute_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) lora_down_n_dims = (lora_down_n_dims + lora_down_n_dims % 2); - int64_t lora_down_rows = lora_down->ne[lora_down_n_dims-1]; + int64_t lora_down_rows = lora_down->ne[lora_down_n_dims - 1]; lora_down = ggml_reshape_2d(compute_ctx, lora_down, ggml_nelements(lora_down) / lora_down_rows, lora_down_rows); // ggml_mul_mat requires tensor b transposed