Skip to content

Commit af44164

Browse files
committed
feat: update llama.cpp to 11924d4c1
1 parent 1de1569 commit af44164

7 files changed

Lines changed: 52 additions & 15 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
- feat: update llama.cpp to ggml-org/llama.cpp@d2a818231
10+
- feat: update llama.cpp to ggml-org/llama.cpp@11924d4c1
1111

1212
## [0.3.34]
1313

‎examples/low_level_api/low_level_api_chat_cpp.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ def __init__(self, params: GptParams) -> None:
7676
self.lparams.n_parts = self.params.n_parts
7777
self.lparams.seed = self.params.seed
7878
self.lparams.memory_f16 = self.params.memory_f16
79-
if self.params.use_mlock:
79+
if self.params.use_mmap and self.params.use_mlock:
80+
self.lparams.load_mode = llama_cpp.LLAMA_LOAD_MODE_MMAP_MLOCK
81+
elif self.params.use_mlock:
8082
self.lparams.load_mode = llama_cpp.LLAMA_LOAD_MODE_MLOCK
8183
elif self.params.use_mmap:
8284
self.lparams.load_mode = llama_cpp.LLAMA_LOAD_MODE_MMAP

‎examples/server/server.py‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11312,6 +11312,7 @@ def __init__(
1131211312
vocab_only=vocab_only,
1131311313
use_mmap=use_mmap,
1131411314
use_mlock=use_mlock,
11315+
load_mtp=draft_model == "draft-mtp",
1131511316
kv_overrides=kv_overrides,
1131611317
)
1131711318
)
@@ -11590,6 +11591,7 @@ def build_model_params(
1159011591
vocab_only: Optional[bool],
1159111592
use_mmap: Optional[bool],
1159211593
use_mlock: Optional[bool],
11594+
load_mtp: bool,
1159311595
kv_overrides: Optional[Dict[str, Union[bool, int, float, str]]],
1159411596
) -> Tuple[Any, Optional[Any], Optional[Any]]:
1159511597
model_params = llama_cpp.llama_model_default_params()
@@ -11611,7 +11613,10 @@ def build_model_params(
1161111613
model_params.tensor_split = tensor_split_ref
1161211614
if vocab_only is not None:
1161311615
model_params.vocab_only = vocab_only
11614-
if use_mlock:
11616+
model_params.load_mtp = load_mtp
11617+
if use_mlock and use_mmap is not False:
11618+
model_params.load_mode = llama_cpp.LLAMA_LOAD_MODE_MMAP_MLOCK
11619+
elif use_mlock:
1161511620
model_params.load_mode = llama_cpp.LLAMA_LOAD_MODE_MLOCK
1161611621
elif use_mmap is not None:
1161711622
model_params.load_mode = (

‎llama_cpp/llama.py‎

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,9 @@ def __init__(
244244
) # keep a reference to the array so it is not gc'd
245245
self.model_params.tensor_split = self._c_tensor_split
246246
self.model_params.vocab_only = vocab_only
247-
if lora_path is not None:
248-
self.model_params.load_mode = llama_cpp.LLAMA_LOAD_MODE_NONE
247+
use_mmap = use_mmap and lora_path is None
248+
if use_mmap and use_mlock:
249+
self.model_params.load_mode = llama_cpp.LLAMA_LOAD_MODE_MMAP_MLOCK
249250
elif use_mlock:
250251
self.model_params.load_mode = llama_cpp.LLAMA_LOAD_MODE_MLOCK
251252
elif use_mmap:
@@ -2149,8 +2150,15 @@ def __getstate__(self):
21492150
tensor_split=self.tensor_split,
21502151
vocab_only=self.model_params.vocab_only,
21512152
use_mmap=self.model_params.load_mode
2152-
in (llama_cpp.LLAMA_LOAD_MODE_MMAP, llama_cpp.LLAMA_LOAD_MODE_MLOCK),
2153-
use_mlock=self.model_params.load_mode == llama_cpp.LLAMA_LOAD_MODE_MLOCK,
2153+
in (
2154+
llama_cpp.LLAMA_LOAD_MODE_MMAP,
2155+
llama_cpp.LLAMA_LOAD_MODE_MMAP_MLOCK,
2156+
),
2157+
use_mlock=self.model_params.load_mode
2158+
in (
2159+
llama_cpp.LLAMA_LOAD_MODE_MLOCK,
2160+
llama_cpp.LLAMA_LOAD_MODE_MMAP_MLOCK,
2161+
),
21542162
kv_overrides=self.kv_overrides,
21552163
# Context Params
21562164
seed=self._seed,

‎llama_cpp/llama_cpp.py‎

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -521,15 +521,17 @@ def _warn_deprecated(symbol: str, hint: str) -> None:
521521

522522

523523
# enum llama_load_mode {
524-
# LLAMA_LOAD_MODE_NONE = 0, // no special loading mode
525-
# LLAMA_LOAD_MODE_MMAP = 1, // memory map the model
526-
# LLAMA_LOAD_MODE_MLOCK = 2, // mmap + force system to keep model in RAM rather than swapping or compressing
527-
# LLAMA_LOAD_MODE_DIRECT_IO = 3, // use direct I/O if available
524+
# LLAMA_LOAD_MODE_NONE = 0, // no special loading mode
525+
# LLAMA_LOAD_MODE_MMAP = 1, // memory map the model
526+
# LLAMA_LOAD_MODE_MLOCK = 2, // force system to keep model in RAM rather than swapping or compressing
527+
# LLAMA_LOAD_MODE_MMAP_MLOCK = 3, // mmap + force system to keep model in RAM rather than swapping or compressing
528+
# LLAMA_LOAD_MODE_DIRECT_IO = 4, // use direct I/O if available
528529
# };
529530
LLAMA_LOAD_MODE_NONE = 0
530531
LLAMA_LOAD_MODE_MMAP = 1
531532
LLAMA_LOAD_MODE_MLOCK = 2
532-
LLAMA_LOAD_MODE_DIRECT_IO = 3
533+
LLAMA_LOAD_MODE_MMAP_MLOCK = 3
534+
LLAMA_LOAD_MODE_DIRECT_IO = 4
533535

534536

535537
# enum llama_context_type {
@@ -829,6 +831,7 @@ class llama_model_imatrix_data(ctypes.Structure):
829831
# bool use_extra_bufts; // use extra buffer types (used for weight repacking)
830832
# bool no_host; // bypass host buffer allowing extra buffers to be used
831833
# bool no_alloc; // only load metadata and simulate memory allocations
834+
# bool load_mtp; // whether to load MTP layers
832835
# };
833836
class llama_model_params(ctypes.Structure):
834837
"""Parameters for llama_model
@@ -848,7 +851,8 @@ class llama_model_params(ctypes.Structure):
848851
check_tensors (bool): validate model tensor data
849852
use_extra_bufts (bool): use extra buffer types (used for weight repacking)
850853
no_host (bool): bypass host buffer allowing extra buffers to be used
851-
no_alloc (bool): only load metadata and simulate memory allocations"""
854+
no_alloc (bool): only load metadata and simulate memory allocations
855+
load_mtp (bool): whether to load MTP layers"""
852856

853857
if TYPE_CHECKING:
854858
devices: CtypesArray[ctypes.c_void_p] # NOTE: unused
@@ -868,6 +872,7 @@ class llama_model_params(ctypes.Structure):
868872
use_extra_bufts: bool
869873
no_host: bool
870874
no_alloc: bool
875+
load_mtp: bool
871876

872877
_fields_ = [
873878
("devices", ctypes.c_void_p), # NOTE: unnused
@@ -885,6 +890,7 @@ class llama_model_params(ctypes.Structure):
885890
("use_extra_bufts", ctypes.c_bool),
886891
("no_host", ctypes.c_bool),
887892
("no_alloc", ctypes.c_bool),
893+
("load_mtp", ctypes.c_bool),
888894
]
889895

890896

@@ -3549,6 +3555,20 @@ def llama_vocab_get_add_eos(vocab: llama_vocab_p, /) -> bool: ...
35493555
def llama_vocab_get_add_sep(vocab: llama_vocab_p, /) -> bool: ...
35503556

35513557

3558+
# // model-specific suppress tokens (gguf key: tokenizer.ggml.suppress_tokens)
3559+
# LLAMA_API const llama_token * llama_vocab_get_suppress_tokens(const struct llama_vocab * vocab, int32_t * n_suppress_tokens);
3560+
@ctypes_function(
3561+
"llama_vocab_get_suppress_tokens",
3562+
[llama_vocab_p_ctypes, ctypes.POINTER(ctypes.c_int32)],
3563+
ctypes.POINTER(llama_token),
3564+
)
3565+
def llama_vocab_get_suppress_tokens(
3566+
vocab: llama_vocab_p,
3567+
n_suppress_tokens: CtypesPointer[ctypes.c_int32],
3568+
/,
3569+
) -> Optional[CtypesPointer[llama_token]]: ...
3570+
3571+
35523572
# LLAMA_API llama_token llama_vocab_fim_pre(const struct llama_vocab * vocab);
35533573
@ctypes_function(
35543574
"llama_vocab_fim_pre",

‎tests/test_llama.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,9 @@ def test_real_model(llama_cpp_model_path):
103103
assert os.path.exists(llama_cpp_model_path)
104104

105105
params = llama_cpp.llama_model_default_params()
106-
if llama_cpp.llama_supports_mlock():
106+
if llama_cpp.llama_supports_mmap() and llama_cpp.llama_supports_mlock():
107+
params.load_mode = llama_cpp.LLAMA_LOAD_MODE_MMAP_MLOCK
108+
elif llama_cpp.llama_supports_mlock():
107109
params.load_mode = llama_cpp.LLAMA_LOAD_MODE_MLOCK
108110
elif llama_cpp.llama_supports_mmap():
109111
params.load_mode = llama_cpp.LLAMA_LOAD_MODE_MMAP

‎vendor/llama.cpp‎

Submodule llama.cpp updated 228 files

0 commit comments

Comments
 (0)