Update llama.cpp

This commit is contained in:
Andrei Betlen 2023-11-20 14:11:33 -05:00
parent 6dde6bd09c
commit 2c2afa320f
3 changed files with 86 additions and 5 deletions

View file

@ -205,6 +205,7 @@ LLAMA_ROPE_SCALING_LINEAR = 1
LLAMA_ROPE_SCALING_YARN = 2 LLAMA_ROPE_SCALING_YARN = 2
LLAMA_ROPE_SCALING_MAX_VALUE = LLAMA_ROPE_SCALING_YARN LLAMA_ROPE_SCALING_MAX_VALUE = LLAMA_ROPE_SCALING_YARN
# typedef struct llama_token_data { # typedef struct llama_token_data {
# llama_token id; // token id # llama_token id; // token id
# float logit; // log-odds of the token # float logit; // log-odds of the token
@ -661,6 +662,62 @@ def llama_rope_freq_scale_train(model: llama_model_p) -> float:
_lib.llama_rope_freq_scale_train.argtypes = [llama_model_p] _lib.llama_rope_freq_scale_train.argtypes = [llama_model_p]
_lib.llama_rope_freq_scale_train.restype = c_float _lib.llama_rope_freq_scale_train.restype = c_float
# // Functions to access the model's GGUF metadata scalar values
# // - The functions return the length of the string on success, or -1 on failure
# // - The output string is always null-terminated and cleared on failure
# // - GGUF array values are not supported by these functions
# // Get metadata value as a string by key name
# LLAMA_API int llama_model_meta_val_str(const struct llama_model * model, const char * key, char * buf, size_t buf_size);
def llama_model_meta_val_str(
model: llama_model_p, key: Union[c_char_p, bytes], buf: bytes, buf_size: int
) -> int:
return _lib.llama_model_meta_val_str(model, key, buf, buf_size)
_lib.llama_model_meta_val_str.argtypes = [llama_model_p, c_char_p, c_char_p, c_size_t]
_lib.llama_model_meta_val_str.restype = c_int
# // Get the number of metadata key/value pairs
# LLAMA_API int llama_model_meta_count(const struct llama_model * model);
def llama_model_meta_count(model: llama_model_p) -> int:
return _lib.llama_model_meta_count(model)
_lib.llama_model_meta_count.argtypes = [llama_model_p]
_lib.llama_model_meta_count.restype = c_int
# // Get metadata key name by index
# LLAMA_API int llama_model_meta_key_by_index(const struct llama_model * model, int i, char * buf, size_t buf_size);
def llama_model_meta_key_by_index(
model: llama_model_p, i: Union[c_int, int], buf: bytes, buf_size: int
) -> int:
return _lib.llama_model_meta_key_by_index(model, i, buf, buf_size)
_lib.llama_model_meta_key_by_index.argtypes = [llama_model_p, c_int, c_char_p, c_size_t]
_lib.llama_model_meta_key_by_index.restype = c_int
# // Get metadata value as a string by index
# LLAMA_API int llama_model_meta_val_str_by_index(const struct llama_model * model, int i, char * buf, size_t buf_size);
def llama_model_meta_val_str_by_index(
model: llama_model_p, i: Union[c_int, int], buf: bytes, buf_size: int
) -> int:
return _lib.llama_model_meta_val_str_by_index(model, i, buf, buf_size)
_lib.llama_model_meta_val_str_by_index.argtypes = [
llama_model_p,
c_int,
c_char_p,
c_size_t,
]
_lib.llama_model_meta_val_str_by_index.restype = c_int
# // Get a string describing the model type # // Get a string describing the model type
# LLAMA_API int llama_model_desc(const struct llama_model * model, char * buf, size_t buf_size); # LLAMA_API int llama_model_desc(const struct llama_model * model, char * buf, size_t buf_size);
@ -1213,7 +1270,9 @@ _lib.llama_token_get_text.restype = c_char_p
# LLAMA_API float llama_token_get_score(const struct llama_model * model, llama_token token); # LLAMA_API float llama_token_get_score(const struct llama_model * model, llama_token token);
def llama_token_get_score(model: llama_model_p, token: Union[llama_token, int]) -> float: def llama_token_get_score(
model: llama_model_p, token: Union[llama_token, int]
) -> float:
return _lib.llama_token_get_score(model, token) return _lib.llama_token_get_score(model, token)
@ -1260,6 +1319,26 @@ _lib.llama_token_nl.argtypes = [llama_model_p]
_lib.llama_token_nl.restype = llama_token _lib.llama_token_nl.restype = llama_token
# // Returns -1 if unknown, 1 for true or 0 for false.
# LLAMA_API int llama_add_bos_token(const struct llama_model * model);
def llama_add_bos_token(model: llama_model_p) -> int:
return _lib.llama_add_bos_token(model)
_lib.llama_add_bos_token.argtypes = [llama_model_p]
_lib.llama_add_bos_token.restype = c_int
# // Returns -1 if unknown, 1 for true or 0 for false.
# LLAMA_API int llama_add_eos_token(const struct llama_model * model);
def llama_add_eos_token(model: llama_model_p) -> int:
return _lib.llama_add_eos_token(model)
_lib.llama_add_eos_token.argtypes = [llama_model_p]
_lib.llama_add_eos_token.restype = c_int
# // codellama infill tokens # // codellama infill tokens
# LLAMA_API llama_token llama_token_prefix(const struct llama_model * model); // Beginning of infill prefix # LLAMA_API llama_token llama_token_prefix(const struct llama_model * model); // Beginning of infill prefix
def llama_token_prefix(model: llama_model_p) -> int: def llama_token_prefix(model: llama_model_p) -> int:

View file

@ -35,7 +35,7 @@ def test_llama_cpp_tokenization():
tokens = llama.tokenize(text, special=True) tokens = llama.tokenize(text, special=True)
assert tokens[-1] == llama.token_eos() assert tokens[-1] == llama.token_eos()
assert tokens == [1, 10994, 2787, 2] assert tokens == [1, 15043, 2787, 2]
def test_llama_patch(monkeypatch): def test_llama_patch(monkeypatch):
@ -55,8 +55,11 @@ def test_llama_patch(monkeypatch):
monkeypatch.setattr("llama_cpp.llama_cpp.llama_decode", mock_decode) monkeypatch.setattr("llama_cpp.llama_cpp.llama_decode", mock_decode)
monkeypatch.setattr("llama_cpp.llama_cpp.llama_get_logits", mock_get_logits) monkeypatch.setattr("llama_cpp.llama_cpp.llama_get_logits", mock_get_logits)
text = "The quick brown fox"
text_tokens = llama.tokenize(text.encode("utf-8"), add_bos=True, special=True)
output_text = " jumps over the lazy dog." output_text = " jumps over the lazy dog."
output_tokens = llama.tokenize(output_text.encode("utf-8"), add_bos=False, special=True) all_text_tokens = llama.tokenize((text + output_text).encode("utf-8"), add_bos=True, special=True)
output_tokens = all_text_tokens[len(text_tokens):]
token_eos = llama.token_eos() token_eos = llama.token_eos()
n = 0 n = 0
@ -70,7 +73,6 @@ def test_llama_patch(monkeypatch):
monkeypatch.setattr("llama_cpp.llama_cpp.llama_sample_token", mock_sample) monkeypatch.setattr("llama_cpp.llama_cpp.llama_sample_token", mock_sample)
text = "The quick brown fox"
## Test basic completion until eos ## Test basic completion until eos
n = 0 # reset n = 0 # reset

2
vendor/llama.cpp vendored

@ -1 +1 @@
Subproject commit 8da46278e1a57107591653275f8e03a281de94f0 Subproject commit dfc7cd48b1cc31d759c093e917a18c0efe03d0e8