]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
context: ignore zero scale LoRAs when checking sameness (#20166)
authorTim Neumann <redacted>
Fri, 6 Mar 2026 13:05:52 +0000 (14:05 +0100)
committerGitHub <redacted>
Fri, 6 Mar 2026 13:05:52 +0000 (15:05 +0200)
src/llama-context.cpp

index eee9021296ec03c31ccac9ced6776cee34d82842..d050604b2a050ceb152e2d3f83f0b694fea19e7f 100644 (file)
@@ -1039,11 +1039,15 @@ void llama_context::set_adapters_lora(llama_adapter_lora ** adapters, size_t n_a
 bool llama_context::adapters_lora_are_same(llama_adapter_lora ** adapters, size_t n_adapters, float * scales) {
     LLAMA_LOG_DEBUG("%s: adapters = %p\n", __func__, (void *) adapters);
 
-    if (n_adapters != loras->size()) {
-        return false;
-    }
+    // Adapters with a zero scale are never added to `loras`, so also ignore them for the comparison.
+    size_t n_non_zero = 0;
 
     for (size_t i = 0; i < n_adapters; i ++) {
+        if (scales[i] == 0.0f) {
+            continue;
+        }
+        n_non_zero++;
+
         auto it = loras->find(adapters[i]);
 
         if (it == loras->end() || it->second != scales[i]) {
@@ -1051,6 +1055,10 @@ bool llama_context::adapters_lora_are_same(llama_adapter_lora ** adapters, size_
         }
     }
 
+    if (n_non_zero != loras->size()) {
+        return false;
+    }
+
     return true;
 }