Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fe5d6ea

Browse files
authored
fix: GGUF metadata KV overrides, re abetlen#1011 (abetlen#1116)
* kv overrides another attempt * add sentinel element, simplify array population * ensure sentinel element is zeroed
1 parent 7e63928 commit fe5d6ea

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

llama_cpp/llama.py

+9-12
Original file line numberDiff line numberDiff line change
@@ -194,16 +194,16 @@ def __init__(
194194
self.model_params.use_mmap = use_mmap if lora_path is None else False
195195
self.model_params.use_mlock = use_mlock
196196

197+
# kv_overrides is the original python dict
197198
self.kv_overrides = kv_overrides
198199
if kv_overrides is not None:
199-
n_overrides = len(kv_overrides)
200-
self._kv_overrides_array = llama_cpp.llama_model_kv_override * (n_overrides + 1)
201-
self._kv_overrides_array_keys = []
202-
203-
for k, v in kv_overrides.items():
204-
key_buf = ctypes.create_string_buffer(k.encode("utf-8"))
205-
self._kv_overrides_array_keys.append(key_buf)
206-
self._kv_overrides_array[i].key = key_buf
200+
201+
# _kv_overrides_array is a ctypes.Array of llama_model_kv_override Structs
202+
kvo_array_len = len(kv_overrides) + 1 # for sentinel element
203+
self._kv_overrides_array = (llama_cpp.llama_model_kv_override * kvo_array_len)()
204+
205+
for i, (k, v) in enumerate(kv_overrides.items()):
206+
self._kv_overrides_array[i].key = k.encode('utf-8');
207207
if isinstance(v, int):
208208
self._kv_overrides_array[i].tag = llama_cpp.LLAMA_KV_OVERRIDE_INT
209209
self._kv_overrides_array[i].value.int_value = v
@@ -216,10 +216,7 @@ def __init__(
216216
else:
217217
raise ValueError(f"Unknown value type for {k}: {v}")
218218

219-
self._kv_overrides_array_sentinel_key = b'\0'
220-
221-
# null array sentinel
222-
self._kv_overrides_array[n_overrides].key = self._kv_overrides_array_sentinel_key
219+
self._kv_overrides_array[-1].key = b'\0' # ensure sentinel element is zeroed
223220
self.model_params.kv_overrides = self._kv_overrides_array
224221

225222
self.n_batch = min(n_ctx, n_batch) # ???

0 commit comments

Comments
 (0)