@@ -97,7 +97,7 @@ extern "C" {
97
97
LLAMA_ROPE_TYPE_GLM = 4 ,
98
98
};
99
99
100
- enum llama_token_type { // TODO: remove, required until per token attributes are available from GGUF file
100
+ enum llama_token_type {
101
101
LLAMA_TOKEN_TYPE_UNDEFINED = 0 ,
102
102
LLAMA_TOKEN_TYPE_NORMAL = 1 ,
103
103
LLAMA_TOKEN_TYPE_UNKNOWN = 2 ,
@@ -107,20 +107,6 @@ extern "C" {
107
107
LLAMA_TOKEN_TYPE_BYTE = 6 ,
108
108
};
109
109
110
- enum llama_token_attr {
111
- LLAMA_TOKEN_ATTR_UNDEFINED = 0 ,
112
- LLAMA_TOKEN_ATTR_UNKNOWN = 1 << 0 ,
113
- LLAMA_TOKEN_ATTR_UNUSED = 1 << 1 ,
114
- LLAMA_TOKEN_ATTR_NORMAL = 1 << 2 ,
115
- LLAMA_TOKEN_ATTR_CONTROL = 1 << 3 , // SPECIAL?
116
- LLAMA_TOKEN_ATTR_USER_DEFINED = 1 << 4 ,
117
- LLAMA_TOKEN_ATTR_BYTE = 1 << 5 ,
118
- LLAMA_TOKEN_ATTR_NORMALIZED = 1 << 6 ,
119
- LLAMA_TOKEN_ATTR_LSTRIP = 1 << 7 ,
120
- LLAMA_TOKEN_ATTR_RSTRIP = 1 << 8 ,
121
- LLAMA_TOKEN_ATTR_SINGLE_WORD = 1 << 9 ,
122
- };
123
-
124
110
// model file types
125
111
enum llama_ftype {
126
112
LLAMA_FTYPE_ALL_F32 = 0 ,
@@ -365,9 +351,6 @@ extern "C" {
365
351
// modifies a preceding LLAMA_GRETYPE_CHAR or
366
352
// LLAMA_GRETYPE_CHAR_RNG_UPPER to add an alternate char to match ([ab], [a-zA])
367
353
LLAMA_GRETYPE_CHAR_ALT = 6 ,
368
-
369
- // any character (.)
370
- LLAMA_GRETYPE_CHAR_ANY = 7 ,
371
354
};
372
355
373
356
typedef struct llama_grammar_element {
@@ -430,7 +413,7 @@ extern "C" {
430
413
431
414
LLAMA_API bool llama_supports_mmap (void );
432
415
LLAMA_API bool llama_supports_mlock (void );
433
- LLAMA_API bool llama_supports_rpc (void );
416
+ LLAMA_API bool llama_supports_rpc (void ); // TMP: https://github.com/ggerganov/llama.cpp/pull/7647#issuecomment-2140234367
434
417
LLAMA_API bool llama_supports_gpu_offload (void );
435
418
436
419
LLAMA_API const struct llama_model * llama_get_model (const struct llama_context * ctx);
@@ -442,8 +425,8 @@ extern "C" {
442
425
443
426
LLAMA_API enum llama_pooling_type llama_pooling_type (const struct llama_context * ctx);
444
427
445
- LLAMA_API enum llama_vocab_type llama_vocab_type (const struct llama_model * model);
446
- LLAMA_API enum llama_rope_type llama_rope_type (const struct llama_model * model);
428
+ LLAMA_API enum llama_vocab_type llama_vocab_type (const struct llama_model * model);
429
+ LLAMA_API enum llama_rope_type llama_rope_type (const struct llama_model * model);
447
430
448
431
LLAMA_API int32_t llama_n_vocab (const struct llama_model * model);
449
432
LLAMA_API int32_t llama_n_ctx_train (const struct llama_model * model);
@@ -839,7 +822,7 @@ extern "C" {
839
822
840
823
LLAMA_API float llama_token_get_score (const struct llama_model * model, llama_token token);
841
824
842
- LLAMA_API enum llama_token_attr llama_token_get_attr (const struct llama_model * model, llama_token token);
825
+ LLAMA_API enum llama_token_type llama_token_get_type (const struct llama_model * model, llama_token token);
843
826
844
827
// Check if the token is supposed to end generation (end-of-generation, eg. EOS, EOT, etc.)
845
828
LLAMA_API bool llama_token_is_eog (const struct llama_model * model, llama_token token);
@@ -1060,9 +1043,49 @@ extern "C" {
1060
1043
llama_token token);
1061
1044
1062
1045
//
1063
- // Model split
1046
+ // Beam search
1064
1047
//
1065
1048
1049
+ struct llama_beam_view {
1050
+ const llama_token * tokens;
1051
+
1052
+ size_t n_tokens;
1053
+ float p; // Cumulative beam probability (renormalized relative to all beams)
1054
+ bool eob; // Callback should set this to true when a beam is at end-of-beam.
1055
+ };
1056
+
1057
+ // Passed to beam_search_callback function.
1058
+ // Whenever 0 < common_prefix_length, this number of tokens should be copied from any of the beams
1059
+ // (e.g. beams[0]) as they will be removed (shifted) from all beams in all subsequent callbacks.
1060
+ // These pointers are valid only during the synchronous callback, so should not be saved.
1061
+ struct llama_beams_state {
1062
+ struct llama_beam_view * beam_views;
1063
+
1064
+ size_t n_beams; // Number of elements in beam_views[].
1065
+ size_t common_prefix_length; // Current max length of prefix tokens shared by all beams.
1066
+ bool last_call; // True iff this is the last callback invocation.
1067
+ };
1068
+
1069
+ // Type of pointer to the beam_search_callback function.
1070
+ // void* callback_data is any custom data passed to llama_beam_search, that is subsequently
1071
+ // passed back to beam_search_callback. This avoids having to use global variables in the callback.
1072
+ typedef void (*llama_beam_search_callback_fn_t )(void * callback_data, struct llama_beams_state );
1073
+
1074
+ // / @details Deterministically returns entire sentence constructed by a beam search.
1075
+ // / @param ctx Pointer to the llama_context.
1076
+ // / @param callback Invoked for each iteration of the beam_search loop, passing in beams_state.
1077
+ // / @param callback_data A pointer that is simply passed back to callback.
1078
+ // / @param n_beams Number of beams to use.
1079
+ // / @param n_past Number of tokens already evaluated.
1080
+ // / @param n_predict Maximum number of tokens to predict. EOS may occur earlier.
1081
+ LLAMA_API void llama_beam_search (
1082
+ struct llama_context * ctx,
1083
+ llama_beam_search_callback_fn_t callback,
1084
+ void * callback_data,
1085
+ size_t n_beams,
1086
+ int32_t n_past,
1087
+ int32_t n_predict);
1088
+
1066
1089
// / @details Build a split GGUF final path for this chunk.
1067
1090
// / llama_split_path(split_path, sizeof(split_path), "/models/ggml-model-q4_0", 2, 4) => split_path = "/models/ggml-model-q4_0-00002-of-00004.gguf"
1068
1091
// Returns the split_path length.
0 commit comments