Skip to content

Commit 4d0fe24

Browse files
committed
Update llama.cpp API 20260108
1 parent e9d94e7 commit 4d0fe24

7 files changed

Lines changed: 34 additions & 4 deletions

File tree

examples/low_level_api/common.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class GptParams:
6262
penalize_nl: bool = True
6363
perplexity: bool = False
6464
use_mmap: bool = True
65+
use_direct_io: bool = True
6566
use_mlock: bool = False
6667
mem_test: bool = False
6768
verbose_prompt: bool = False

examples/low_level_api/low_level_api_chat_cpp.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def __init__(self, params: GptParams) -> None:
7878
self.lparams.memory_f16 = self.params.memory_f16
7979
self.lparams.use_mlock = self.params.use_mlock
8080
self.lparams.use_mmap = self.params.use_mmap
81+
self.lparams.use_direct_io = self.params.use_direct_io
8182

8283
self.model = llama_cpp.llama_load_model_from_file(
8384
self.params.model.encode("utf8"), self.lparams

llama_cpp/llama.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def __init__(
6969
tensor_split: Optional[List[float]] = None,
7070
vocab_only: bool = False,
7171
use_mmap: bool = True,
72+
use_direct_io: bool = True,
7273
use_mlock: bool = False,
7374
check_tensors: bool = False,
7475
use_extra_bufts: bool = False,
@@ -256,6 +257,7 @@ def __init__(
256257
self.model_params.tensor_split = self._c_tensor_split
257258
self.model_params.vocab_only = vocab_only
258259
self.model_params.use_mmap = use_mmap if lora_path is None else False
260+
self.model_params.use_direct_io = use_direct_io
259261
self.model_params.use_mlock = use_mlock
260262
self.model_params.check_tensors = check_tensors
261263
self.model_params.use_extra_bufts = use_extra_bufts
@@ -2248,6 +2250,7 @@ def __getstate__(self):
22482250
tensor_split=self.tensor_split,
22492251
vocab_only=self.model_params.vocab_only,
22502252
use_mmap=self.model_params.use_mmap,
2253+
use_direct_io=self.model_params.use_direct_io,
22512254
use_mlock=self.model_params.use_mlock,
22522255
check_tensors=self.model_params.check_tensors,
22532256
use_extra_bufts=self.model_params.use_extra_bufts,

llama_cpp/llama_cpp.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,7 @@ class llama_model_tensor_buft_override(ctypes.Structure):
713713
# // Keep the booleans together to avoid misalignment during copy-by-value.
714714
# bool vocab_only; // only load the vocabulary, no weights
715715
# bool use_mmap; // use mmap if possible
716+
# bool use_direct_io; // use direct io, takes precedence over use_mmap
716717
# bool use_mlock; // force system to keep model in RAM
717718
# bool check_tensors; // validate model tensor data
718719
# bool use_extra_bufts; // use extra buffer types (used for weight repacking)
@@ -734,6 +735,7 @@ class llama_model_params(ctypes.Structure):
734735
kv_overrides (ctypes.Array[llama_model_kv_override]): override key-value pairs of the model meta data
735736
vocab_only (bool): only load the vocabulary, no weights
736737
use_mmap (bool): use mmap if possible
738+
use_direct_io(bool): use direct io, takes precedence over use_mmap
737739
use_mlock (bool): force system to keep model in RAM
738740
check_tensors (bool): validate model tensor data
739741
use_extra_bufts (bool): use extra buffer types (used for weight repacking)
@@ -752,6 +754,7 @@ class llama_model_params(ctypes.Structure):
752754
kv_overrides: CtypesArray[llama_model_kv_override]
753755
vocab_only: bool
754756
use_mmap: bool
757+
use_direct_io: bool
755758
use_mlock: bool
756759
check_tensors: bool
757760
use_extra_bufts: bool
@@ -770,6 +773,7 @@ class llama_model_params(ctypes.Structure):
770773
("kv_overrides", ctypes.POINTER(llama_model_kv_override)),
771774
("vocab_only", ctypes.c_bool),
772775
("use_mmap", ctypes.c_bool),
776+
("use_direct_io", ctypes.c_bool),
773777
("use_mlock", ctypes.c_bool),
774778
("check_tensors", ctypes.c_bool),
775779
("use_extra_bufts", ctypes.c_bool),

llama_cpp/server/model.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,11 @@ def load_llama_from_model_settings(settings: ModelSettings) -> llama_cpp.Llama:
270270
tensor_split=settings.tensor_split,
271271
vocab_only=settings.vocab_only,
272272
use_mmap=settings.use_mmap,
273+
use_direct_io=settings.use_direct_io,
273274
use_mlock=settings.use_mlock,
275+
check_tensors=settings.check_tensors,
276+
use_extra_bufts=settings.use_extra_bufts,
277+
no_host=settings.no_host,
274278
kv_overrides=kv_overrides,
275279
rpc_servers=settings.rpc_servers,
276280
# Context Params

llama_cpp/server/settings.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,28 @@ class ModelSettings(BaseSettings):
4747
default=False, description="Whether to only return the vocabulary."
4848
)
4949
use_mmap: bool = Field(
50-
default=llama_cpp.llama_supports_mmap(),
51-
description="Use mmap.",
50+
default=True,
51+
description="Enable mmap to use filesystem cache.",
52+
)
53+
use_direct_io: bool = Field(
54+
default=True,
55+
description="Use direct io, takes precedence over use_mmap.",
5256
)
5357
use_mlock: bool = Field(
54-
default=llama_cpp.llama_supports_mlock(),
55-
description="Use mlock.",
58+
default=False,
59+
description="Use mlock for force system to keep model in RAM",
60+
)
61+
check_tensors: bool = Field(
62+
default=False,
63+
description="Validate model tensor data.",
64+
)
65+
use_extra_bufts: bool = Field(
66+
default=True,
67+
description="Use extra buffer types (used for weight repacking).",
68+
)
69+
no_host: bool = Field(
70+
default=False,
71+
description="Bypass host buffer allowing extra buffers to be used.",
5672
)
5773
kv_overrides: Optional[List[str]] = Field(
5874
default=None,

tests/test_llama.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ def test_real_model(llama_cpp_model_path):
7575

7676
params = llama_cpp.llama_model_default_params()
7777
params.use_mmap = llama_cpp.llama_supports_mmap()
78+
params.use_direct_io = True
7879
params.use_mlock = llama_cpp.llama_supports_mlock()
7980
params.check_tensors = False
8081

0 commit comments

Comments
 (0)