From 940139cd29a2b2792d24a52e07b8f5d4daa2df26 Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Fri, 10 Jan 2025 15:36:23 +0200 Subject: [PATCH] cont ggml-ci --- common/common.cpp | 14 +- common/speculative.cpp | 16 +- examples/batched.swift/Sources/main.swift | 2 +- examples/batched/batched.cpp | 4 +- .../cvector-generator/cvector-generator.cpp | 2 +- examples/embedding/embedding.cpp | 2 +- examples/eval-callback/eval-callback.cpp | 2 +- examples/gritlm/gritlm.cpp | 4 +- examples/imatrix/imatrix.cpp | 6 +- examples/infill/infill.cpp | 36 ++--- examples/llama-bench/llama-bench.cpp | 4 +- .../llama/src/main/cpp/llama-android.cpp | 2 +- .../llama.cpp.swift/LibLlama.swift | 2 +- examples/llava/llava-cli.cpp | 2 +- examples/llava/minicpmv-cli.cpp | 2 +- examples/llava/qwen2vl-cli.cpp | 2 +- examples/lookahead/lookahead.cpp | 2 +- examples/lookup/lookup.cpp | 2 +- examples/main/main.cpp | 18 +-- examples/parallel/parallel.cpp | 2 +- examples/passkey/passkey.cpp | 2 +- examples/perplexity/perplexity.cpp | 18 +-- examples/retrieval/retrieval.cpp | 4 +- examples/run/run.cpp | 2 +- examples/server/server.cpp | 14 +- examples/server/utils.hpp | 30 ++-- examples/simple-chat/simple-chat.cpp | 2 +- examples/simple/simple.cpp | 2 +- .../speculative-simple/speculative-simple.cpp | 2 +- examples/speculative/speculative.cpp | 14 +- examples/tokenize/tokenize.cpp | 2 +- examples/tts/tts.cpp | 4 +- include/llama.h | 64 +++++--- src/llama-vocab.cpp | 152 ++++++++++++++---- 34 files changed, 271 insertions(+), 167 deletions(-) diff --git a/common/common.cpp b/common/common.cpp index 95e640b1a..47860d356 100644 --- a/common/common.cpp +++ b/common/common.cpp @@ -862,17 +862,17 @@ struct common_init_result common_init_from_params(common_params & params) { if (params.reranking) { bool ok = true; - if (llama_token_bos(vocab) == LLAMA_TOKEN_NULL) { + if (llama_vocab_bos(vocab) == LLAMA_TOKEN_NULL) { LOG_WRN("%s: warning: vocab does not have a BOS token, reranking will not work\n", __func__); ok = false; } - if (llama_token_eos(vocab) == LLAMA_TOKEN_NULL) { + if (llama_vocab_eos(vocab) == LLAMA_TOKEN_NULL) { LOG_WRN("%s: warning: vocab does not have an EOS token, reranking will not work\n", __func__); ok = false; } - if (llama_token_sep(vocab) == LLAMA_TOKEN_NULL) { + if (llama_vocab_sep(vocab) == LLAMA_TOKEN_NULL) { LOG_WRN("%s: warning: vocab does not have a SEP token, reranking will not work\n", __func__); ok = false; } @@ -943,14 +943,14 @@ struct common_init_result common_init_from_params(common_params & params) { common_lora_adapters_apply(lctx, params.lora_adapters); } - if (params.sampling.ignore_eos && llama_token_eos(vocab) == LLAMA_TOKEN_NULL) { + if (params.sampling.ignore_eos && llama_vocab_eos(vocab) == LLAMA_TOKEN_NULL) { LOG_WRN("%s: warning: vocab does not have an EOS token, ignoring --ignore-eos\n", __func__); params.sampling.ignore_eos = false; } if (params.sampling.ignore_eos) { for (llama_token i = 0; i < llama_vocab_n_vocab(vocab); i++) { - if (llama_token_is_eog(vocab, i)) { + if (llama_vocab_is_eog(vocab, i)) { LOG_INF("%s: added %s logit bias = %f\n", __func__, common_token_to_piece(lctx, i).c_str(), -INFINITY); params.sampling.logit_bias.push_back({i, -INFINITY}); } @@ -971,8 +971,8 @@ struct common_init_result common_init_from_params(common_params & params) { LOG_WRN("%s: warming up the model with an empty run - please wait ... (--no-warmup to disable)\n", __func__); std::vector tmp; - llama_token bos = llama_token_bos(vocab); - llama_token eos = llama_token_eos(vocab); + llama_token bos = llama_vocab_bos(vocab); + llama_token eos = llama_vocab_eos(vocab); // some models (e.g. T5) don't have a BOS token if (bos != LLAMA_TOKEN_NULL) { diff --git a/common/speculative.cpp b/common/speculative.cpp index 346b7c41d..a582122ee 100644 --- a/common/speculative.cpp +++ b/common/speculative.cpp @@ -94,13 +94,13 @@ bool common_speculative_are_compatible( return false; } - if (llama_add_bos_token(vocab_tgt) != llama_add_bos_token(vocab_dft) || - llama_add_eos_token(vocab_tgt) != llama_add_eos_token(vocab_dft) || - llama_token_bos(vocab_tgt) != llama_token_bos(vocab_dft) || - llama_token_eos(vocab_tgt) != llama_token_eos(vocab_dft)) { + if (llama_vocab_add_bos(vocab_tgt) != llama_vocab_add_bos(vocab_dft) || + llama_vocab_add_eos(vocab_tgt) != llama_vocab_add_eos(vocab_dft) || + llama_vocab_bos(vocab_tgt) != llama_vocab_bos(vocab_dft) || + llama_vocab_eos(vocab_tgt) != llama_vocab_eos(vocab_dft)) { LOG_ERR("%s: draft vocab special tokens must match target vocab to use speculation\n", __func__); - LOG_ERR("%s: tgt: bos = %d (%d), eos = %d (%d)\n", __func__, llama_token_bos(vocab_tgt), llama_add_bos_token(vocab_tgt), llama_token_eos(vocab_tgt), llama_add_eos_token(vocab_tgt)); - LOG_ERR("%s: dft: bos = %d (%d), eos = %d (%d)\n", __func__, llama_token_bos(vocab_dft), llama_add_bos_token(vocab_dft), llama_token_eos(vocab_dft), llama_add_eos_token(vocab_dft)); + LOG_ERR("%s: tgt: bos = %d (%d), eos = %d (%d)\n", __func__, llama_vocab_bos(vocab_tgt), llama_vocab_add_bos(vocab_tgt), llama_vocab_eos(vocab_tgt), llama_vocab_add_eos(vocab_tgt)); + LOG_ERR("%s: dft: bos = %d (%d), eos = %d (%d)\n", __func__, llama_vocab_bos(vocab_dft), llama_vocab_add_bos(vocab_dft), llama_vocab_eos(vocab_dft), llama_vocab_add_eos(vocab_dft)); return false; } @@ -118,8 +118,8 @@ bool common_speculative_are_compatible( } for (int i = SPEC_VOCAB_CHECK_START_TOKEN_ID; i < std::min(n_vocab_tgt, n_vocab_dft); ++i) { - const char * token_text_tgt = llama_token_get_text(vocab_tgt, i); - const char * token_text_dft = llama_token_get_text(vocab_dft, i); + const char * token_text_tgt = llama_vocab_get_text(vocab_tgt, i); + const char * token_text_dft = llama_vocab_get_text(vocab_dft, i); if (std::strcmp(token_text_tgt, token_text_dft) != 0) { LOG_ERR("%s: draft vocab vocab must match target vocab to use speculation but " "token %d content differs - target '%s', draft '%s'\n", __func__, i, diff --git a/examples/batched.swift/Sources/main.swift b/examples/batched.swift/Sources/main.swift index d196a01ed..371917b2e 100644 --- a/examples/batched.swift/Sources/main.swift +++ b/examples/batched.swift/Sources/main.swift @@ -141,7 +141,7 @@ while n_cur <= n_len { let new_token_id = llama_sampler_sample(smpl, context, i_batch[i]) // is it an end of stream? -> mark the stream as finished - if llama_token_is_eog(model, new_token_id) || n_cur == n_len { + if llama_vocab_is_eog(model, new_token_id) || n_cur == n_len { i_batch[i] = -1 // print("") if n_parallel > 1 { diff --git a/examples/batched/batched.cpp b/examples/batched/batched.cpp index 2808f04ff..21b95ef5e 100644 --- a/examples/batched/batched.cpp +++ b/examples/batched/batched.cpp @@ -123,7 +123,7 @@ int main(int argc, char ** argv) { llama_token decoder_start_token_id = llama_model_decoder_start_token(model); if (decoder_start_token_id == LLAMA_TOKEN_NULL) { - decoder_start_token_id = llama_token_bos(vocab); + decoder_start_token_id = llama_vocab_bos(vocab); } common_batch_clear(batch); @@ -176,7 +176,7 @@ int main(int argc, char ** argv) { const llama_token new_token_id = llama_sampler_sample(smpl, ctx, i_batch[i]); // is it an end of generation? -> mark the stream as finished - if (llama_token_is_eog(vocab, new_token_id) || n_cur == n_predict) { + if (llama_vocab_is_eog(vocab, new_token_id) || n_cur == n_predict) { i_batch[i] = -1; LOG("\n"); if (n_parallel > 1) { diff --git a/examples/cvector-generator/cvector-generator.cpp b/examples/cvector-generator/cvector-generator.cpp index a6a731ee9..384df05fe 100644 --- a/examples/cvector-generator/cvector-generator.cpp +++ b/examples/cvector-generator/cvector-generator.cpp @@ -275,7 +275,7 @@ struct tokenized_prompt { tokenized_prompt(llama_context * ctx, std::string pos, std::string neg) { const llama_model * model = llama_get_model(ctx); const llama_vocab * vocab = llama_model_get_vocab(model); - const bool add_bos = llama_add_bos_token(vocab); + const bool add_bos = llama_vocab_add_bos(vocab); tokens_pos = common_tokenize(ctx, pos, add_bos, true); tokens_neg = common_tokenize(ctx, neg, add_bos, true); max_seq_len = std::max(tokens_pos.size(), tokens_neg.size()); diff --git a/examples/embedding/embedding.cpp b/examples/embedding/embedding.cpp index 27fb705dd..38d22c90f 100644 --- a/examples/embedding/embedding.cpp +++ b/examples/embedding/embedding.cpp @@ -150,7 +150,7 @@ int main(int argc, char ** argv) { // check if the last token is SEP // it should be automatically added by the tokenizer when 'tokenizer.ggml.add_eos_token' is set to 'true' for (auto & inp : inputs) { - if (inp.empty() || inp.back() != llama_token_sep(vocab)) { + if (inp.empty() || inp.back() != llama_vocab_sep(vocab)) { LOG_WRN("%s: last token in the prompt is not SEP\n", __func__); LOG_WRN("%s: 'tokenizer.ggml.add_eos_token' should be set to 'true' in the GGUF header\n", __func__); } diff --git a/examples/eval-callback/eval-callback.cpp b/examples/eval-callback/eval-callback.cpp index 149379d4d..65577157e 100644 --- a/examples/eval-callback/eval-callback.cpp +++ b/examples/eval-callback/eval-callback.cpp @@ -130,7 +130,7 @@ static bool run(llama_context * ctx, const common_params & params) { const llama_model * model = llama_get_model(ctx); const llama_vocab * vocab = llama_model_get_vocab(model); - const bool add_bos = llama_add_bos_token(vocab); + const bool add_bos = llama_vocab_add_bos(vocab); std::vector tokens = common_tokenize(ctx, params.prompt, add_bos); diff --git a/examples/gritlm/gritlm.cpp b/examples/gritlm/gritlm.cpp index ec55f2b1b..72eb46257 100644 --- a/examples/gritlm/gritlm.cpp +++ b/examples/gritlm/gritlm.cpp @@ -26,7 +26,7 @@ static std::vector> encode(llama_context * ctx, const std::ve // GritLM seems to have EOS = "" // https://github.com/ContextualAI/gritlm/blob/92025b16534712b31b3c4aaaf069350e222bd5f8/gritlm/gritlm.py#L18 - // inputs.push_back(llama_token_eos(vocab)); + // inputs.push_back(llama_vocab_eos(vocab)); // we want to ignore instruction tokens for mean pooling const int32_t n_inst = common_tokenize(vocab, instruction, true, false).size(); @@ -100,7 +100,7 @@ static std::string generate(llama_context * ctx, llama_sampler * smpl, const std const llama_model * model = llama_get_model(ctx); const llama_vocab * vocab = llama_model_get_vocab(model); - llama_token eos_token = llama_token_eos(vocab); + llama_token eos_token = llama_vocab_eos(vocab); llama_kv_cache_clear(ctx); llama_set_embeddings(ctx, false); diff --git a/examples/imatrix/imatrix.cpp b/examples/imatrix/imatrix.cpp index 0de8f49e5..b63fdf4d6 100644 --- a/examples/imatrix/imatrix.cpp +++ b/examples/imatrix/imatrix.cpp @@ -431,10 +431,10 @@ static bool compute_imatrix(llama_context * ctx, const common_params & params) { const llama_model * model = llama_get_model(ctx); const llama_vocab * vocab = llama_model_get_vocab(model); - const bool add_bos = llama_add_bos_token(vocab); + const bool add_bos = llama_vocab_add_bos(vocab); const int n_ctx = llama_n_ctx(ctx); - GGML_ASSERT(!llama_add_eos_token(vocab)); + GGML_ASSERT(!llama_vocab_add_eos(vocab)); auto tim1 = std::chrono::high_resolution_clock::now(); LOG_INF("%s: tokenizing the input ..\n", __func__); @@ -510,7 +510,7 @@ static bool compute_imatrix(llama_context * ctx, const common_params & params) { // add BOS token for the first batch of each chunk if (add_bos && j == 0) { - tokens[batch_start] = llama_token_bos(vocab); + tokens[batch_start] = llama_vocab_bos(vocab); } common_batch_clear(batch); diff --git a/examples/infill/infill.cpp b/examples/infill/infill.cpp index d7273d650..eb848414a 100644 --- a/examples/infill/infill.cpp +++ b/examples/infill/infill.cpp @@ -154,28 +154,28 @@ int main(int argc, char ** argv) { LOG_INF("\n"); LOG_INF("%s\n", common_params_get_system_info(params).c_str()); } - const bool add_bos = llama_add_bos_token(vocab); - GGML_ASSERT(!llama_add_eos_token(vocab)); + const bool add_bos = llama_vocab_add_bos(vocab); + GGML_ASSERT(!llama_vocab_add_eos(vocab)); std::vector embd_inp; std::vector embd_end; std::vector inp_pfx = common_tokenize(ctx, params.input_prefix, false); std::vector inp_sfx = common_tokenize(ctx, params.input_suffix, false); - GGML_ASSERT(llama_token_fim_pre(vocab) >= 0); - GGML_ASSERT(llama_token_fim_suf(vocab) >= 0); + GGML_ASSERT(llama_vocab_fim_pre(vocab) >= 0); + GGML_ASSERT(llama_vocab_fim_suf(vocab) >= 0); - inp_pfx.insert(inp_pfx.begin(), llama_token_fim_pre(vocab)); - inp_sfx.insert(inp_sfx.begin(), llama_token_fim_suf(vocab)); + inp_pfx.insert(inp_pfx.begin(), llama_vocab_fim_pre(vocab)); + inp_sfx.insert(inp_sfx.begin(), llama_vocab_fim_suf(vocab)); embd_inp = params.spm_infill ? inp_sfx : inp_pfx; embd_end = params.spm_infill ? inp_pfx : inp_sfx; if (add_bos) { - embd_inp.insert(embd_inp.begin(), llama_token_bos(vocab)); + embd_inp.insert(embd_inp.begin(), llama_vocab_bos(vocab)); } embd_inp.insert(embd_inp.end(), embd_end.begin(), embd_end.end()); - const llama_token middle_token = llama_token_fim_mid(vocab); + const llama_token middle_token = llama_vocab_fim_mid(vocab); if (middle_token >= 0) { embd_inp.push_back(middle_token); } @@ -187,7 +187,7 @@ int main(int argc, char ** argv) { // Should not run without any tokens if (embd_inp.empty()) { - embd_inp.push_back(llama_token_bos(vocab)); + embd_inp.push_back(llama_vocab_bos(vocab)); LOG_WRN("embd_inp was considered empty and bos was added: %s\n", string_from(ctx, embd_inp).c_str()); } @@ -422,10 +422,10 @@ int main(int argc, char ** argv) { // if not currently processing queued inputs; if ((int) embd_inp.size() <= n_consumed) { // deal with eot token in infill mode - if ((common_sampler_last(smpl) == llama_token_eot(vocab) || is_interacting) && params.interactive){ + if ((common_sampler_last(smpl) == llama_vocab_eot(vocab) || is_interacting) && params.interactive){ if (is_interacting && !params.interactive_first) { // print an eot token - LOG("%s", common_token_to_piece(ctx, llama_token_eot(vocab)).c_str()); + LOG("%s", common_token_to_piece(ctx, llama_vocab_eot(vocab)).c_str()); } LOG("\n"); console::set_display(console::user_input); @@ -465,13 +465,13 @@ int main(int argc, char ** argv) { std::vector inp_pfx = common_tokenize(ctx, params.input_prefix, false); std::vector inp_sfx = common_tokenize(ctx, params.input_suffix, false); - inp_pfx.insert(inp_pfx.begin(), llama_token_fim_pre(vocab)); - inp_sfx.insert(inp_sfx.begin(), llama_token_fim_suf(vocab)); + inp_pfx.insert(inp_pfx.begin(), llama_vocab_fim_pre(vocab)); + inp_sfx.insert(inp_sfx.begin(), llama_vocab_fim_suf(vocab)); embd_inp = params.spm_infill ? inp_sfx : inp_pfx; embd_end = params.spm_infill ? inp_pfx : inp_sfx; if (add_bos) { - embd_inp.insert(embd_inp.begin(), llama_token_bos(vocab)); + embd_inp.insert(embd_inp.begin(), llama_vocab_bos(vocab)); } embd_inp.insert(embd_inp.end(), embd_end.begin(), embd_end.end()); @@ -486,7 +486,7 @@ int main(int argc, char ** argv) { is_interacting = false; } // deal with end of generation tokens in interactive mode - else if (llama_token_is_eog(vocab, common_sampler_last(smpl))) { + else if (llama_vocab_is_eog(vocab, common_sampler_last(smpl))) { LOG_DBG("found EOS token\n"); if (params.interactive) { @@ -502,7 +502,7 @@ int main(int argc, char ** argv) { if (params.input_prefix_bos) { LOG_DBG("adding input prefix BOS token\n"); - embd_inp.push_back(llama_token_bos(vocab)); + embd_inp.push_back(llama_vocab_bos(vocab)); } std::string buffer; @@ -565,7 +565,7 @@ int main(int argc, char ** argv) { } // end of generation - if (!embd.empty() && llama_token_is_eog(vocab, embd.back()) && !params.interactive) { + if (!embd.empty() && llama_vocab_is_eog(vocab, embd.back()) && !params.interactive) { break; } @@ -577,7 +577,7 @@ int main(int argc, char ** argv) { } } if (!params.interactive && n_remain <= 0) { - LOG("%s", common_token_to_piece(ctx, llama_token_eot(vocab)).c_str()); + LOG("%s", common_token_to_piece(ctx, llama_vocab_eot(vocab)).c_str()); } LOG("\n"); diff --git a/examples/llama-bench/llama-bench.cpp b/examples/llama-bench/llama-bench.cpp index ce9103d7c..3439e5bec 100644 --- a/examples/llama-bench/llama-bench.cpp +++ b/examples/llama-bench/llama-bench.cpp @@ -1410,7 +1410,7 @@ static void test_prompt(llama_context * ctx, int n_prompt, int n_batch, int n_th while (n_processed < n_prompt) { int n_tokens = std::min(n_prompt - n_processed, n_batch); - tokens[0] = n_processed == 0 && llama_add_bos_token(vocab) ? llama_token_bos(vocab) : std::rand() % n_vocab; + tokens[0] = n_processed == 0 && llama_vocab_add_bos(vocab) ? llama_vocab_bos(vocab) : std::rand() % n_vocab; for (int i = 1; i < n_tokens; i++) { tokens[i] = std::rand() % n_vocab; } @@ -1428,7 +1428,7 @@ static void test_gen(llama_context * ctx, int n_gen, int n_threads) { const llama_vocab * vocab = llama_model_get_vocab(model); const int32_t n_vocab = llama_vocab_n_vocab(vocab); - llama_token token = llama_add_bos_token(vocab) ? llama_token_bos(vocab) : std::rand() % n_vocab; + llama_token token = llama_vocab_add_bos(vocab) ? llama_vocab_bos(vocab) : std::rand() % n_vocab; for (int i = 0; i < n_gen; i++) { llama_decode(ctx, llama_batch_get_one(&token, 1)); diff --git a/examples/llama.android/llama/src/main/cpp/llama-android.cpp b/examples/llama.android/llama/src/main/cpp/llama-android.cpp index beeae7ffb..99b14961d 100644 --- a/examples/llama.android/llama/src/main/cpp/llama-android.cpp +++ b/examples/llama.android/llama/src/main/cpp/llama-android.cpp @@ -415,7 +415,7 @@ Java_android_llama_cpp_LLamaAndroid_completion_1loop( const auto new_token_id = llama_sampler_sample(sampler, context, -1); const auto n_cur = env->CallIntMethod(intvar_ncur, la_int_var_value); - if (llama_token_is_eog(vocab, new_token_id) || n_cur == n_len) { + if (llama_vocab_is_eog(vocab, new_token_id) || n_cur == n_len) { return nullptr; } diff --git a/examples/llama.swiftui/llama.cpp.swift/LibLlama.swift b/examples/llama.swiftui/llama.cpp.swift/LibLlama.swift index f88b1fdcc..477c3e6f2 100644 --- a/examples/llama.swiftui/llama.cpp.swift/LibLlama.swift +++ b/examples/llama.swiftui/llama.cpp.swift/LibLlama.swift @@ -151,7 +151,7 @@ actor LlamaContext { new_token_id = llama_sampler_sample(sampling, context, batch.n_tokens - 1) - if llama_token_is_eog(model, new_token_id) || n_cur == n_len { + if llama_vocab_is_eog(model, new_token_id) || n_cur == n_len { print("\n") is_done = true let new_token_str = String(cString: temporary_invalid_cchars + [0]) diff --git a/examples/llava/llava-cli.cpp b/examples/llava/llava-cli.cpp index 18ecba5d8..40aa0876f 100644 --- a/examples/llava/llava-cli.cpp +++ b/examples/llava/llava-cli.cpp @@ -52,7 +52,7 @@ static const char * sample(struct common_sampler * smpl, const llama_vocab * vocab = llama_model_get_vocab(model); static std::string ret; - if (llama_token_is_eog(vocab, id)) { + if (llama_vocab_is_eog(vocab, id)) { ret = ""; } else { ret = common_token_to_piece(ctx_llama, id); diff --git a/examples/llava/minicpmv-cli.cpp b/examples/llava/minicpmv-cli.cpp index df89709ba..38c44e130 100644 --- a/examples/llava/minicpmv-cli.cpp +++ b/examples/llava/minicpmv-cli.cpp @@ -172,7 +172,7 @@ static const char * sample(struct common_sampler * smpl, const llama_vocab * vocab = llama_model_get_vocab(model); static std::string ret; - if (llama_token_is_eog(vocab, id)) { + if (llama_vocab_is_eog(vocab, id)) { ret = ""; } else { ret = common_token_to_piece(ctx_llama, id); diff --git a/examples/llava/qwen2vl-cli.cpp b/examples/llava/qwen2vl-cli.cpp index e91e61d26..132a7da54 100644 --- a/examples/llava/qwen2vl-cli.cpp +++ b/examples/llava/qwen2vl-cli.cpp @@ -137,7 +137,7 @@ static const char * sample(struct common_sampler * smpl, const llama_vocab * vocab = llama_model_get_vocab(model); static std::string ret; - if (llama_token_is_eog(vocab, id)) { + if (llama_vocab_is_eog(vocab, id)) { ret = ""; } else { ret = common_token_to_piece(ctx_llama, id); diff --git a/examples/lookahead/lookahead.cpp b/examples/lookahead/lookahead.cpp index eab93154e..e23060e24 100644 --- a/examples/lookahead/lookahead.cpp +++ b/examples/lookahead/lookahead.cpp @@ -299,7 +299,7 @@ int main(int argc, char ** argv) { } fflush(stdout); - if (llama_token_is_eog(vocab, id)) { + if (llama_vocab_is_eog(vocab, id)) { has_eos = true; } diff --git a/examples/lookup/lookup.cpp b/examples/lookup/lookup.cpp index b008fafb1..dbd0444ec 100644 --- a/examples/lookup/lookup.cpp +++ b/examples/lookup/lookup.cpp @@ -138,7 +138,7 @@ int main(int argc, char ** argv){ LOG("%s", token_str.c_str()); } - if (llama_token_is_eog(vocab, id)) { + if (llama_vocab_is_eog(vocab, id)) { has_eos = true; } diff --git a/examples/main/main.cpp b/examples/main/main.cpp index 7838f4138..7246fe910 100644 --- a/examples/main/main.cpp +++ b/examples/main/main.cpp @@ -242,9 +242,9 @@ int main(int argc, char ** argv) { } } - const bool add_bos = llama_add_bos_token(vocab); + const bool add_bos = llama_vocab_add_bos(vocab); if (!llama_model_has_encoder(model)) { - GGML_ASSERT(!llama_add_eos_token(vocab)); + GGML_ASSERT(!llama_vocab_add_eos(vocab)); } LOG_DBG("n_ctx: %d, add_bos: %d\n", n_ctx, add_bos); @@ -270,7 +270,7 @@ int main(int argc, char ** argv) { // Should not run without any tokens if (embd_inp.empty()) { if (add_bos) { - embd_inp.push_back(llama_token_bos(vocab)); + embd_inp.push_back(llama_vocab_bos(vocab)); LOG_WRN("embd_inp was considered empty and bos was added: %s\n", string_from(ctx, embd_inp).c_str()); } else { LOG_ERR("input is empty\n"); @@ -496,7 +496,7 @@ int main(int argc, char ** argv) { llama_token decoder_start_token_id = llama_model_decoder_start_token(model); if (decoder_start_token_id == LLAMA_TOKEN_NULL) { - decoder_start_token_id = llama_token_bos(vocab); + decoder_start_token_id = llama_vocab_bos(vocab); } embd_inp.clear(); @@ -743,7 +743,7 @@ int main(int argc, char ** argv) { } // deal with end of generation tokens in interactive mode - if (llama_token_is_eog(vocab, common_sampler_last(smpl))) { + if (llama_vocab_is_eog(vocab, common_sampler_last(smpl))) { LOG_DBG("found an EOG token\n"); if (params.interactive) { @@ -777,7 +777,7 @@ int main(int argc, char ** argv) { if (params.input_prefix_bos) { LOG_DBG("adding input prefix BOS token\n"); - embd_inp.push_back(llama_token_bos(vocab)); + embd_inp.push_back(llama_vocab_bos(vocab)); } std::string buffer; @@ -831,8 +831,8 @@ int main(int argc, char ** argv) { // if user stop generation mid-way, we must add EOT to finish model's last response if (need_insert_eot && format_chat) { - llama_token eot = llama_token_eot(vocab); - embd_inp.push_back(eot == LLAMA_TOKEN_NULL ? llama_token_eos(vocab) : eot); + llama_token eot = llama_vocab_eot(vocab); + embd_inp.push_back(eot == LLAMA_TOKEN_NULL ? llama_vocab_eos(vocab) : eot); need_insert_eot = false; } @@ -867,7 +867,7 @@ int main(int argc, char ** argv) { } // end of generation - if (!embd.empty() && llama_token_is_eog(vocab, embd.back()) && !(params.interactive)) { + if (!embd.empty() && llama_vocab_is_eog(vocab, embd.back()) && !(params.interactive)) { LOG(" [end of text]\n"); break; } diff --git a/examples/parallel/parallel.cpp b/examples/parallel/parallel.cpp index 0becde4cf..7ef43d5e1 100644 --- a/examples/parallel/parallel.cpp +++ b/examples/parallel/parallel.cpp @@ -360,7 +360,7 @@ int main(int argc, char ** argv) { // client.id, client.seq_id, id, client.n_decoded, client.i_batch, token_str.c_str()); if (client.n_decoded > 2 && - (llama_token_is_eog(vocab, id) || + (llama_vocab_is_eog(vocab, id) || (params.n_predict > 0 && client.n_decoded + client.n_prompt >= params.n_predict) || client.response.find("User:") != std::string::npos || client.response.find('\n') != std::string::npos)) { diff --git a/examples/passkey/passkey.cpp b/examples/passkey/passkey.cpp index cc46aab06..5953928d4 100644 --- a/examples/passkey/passkey.cpp +++ b/examples/passkey/passkey.cpp @@ -225,7 +225,7 @@ int main(int argc, char ** argv) { const llama_token new_token_id = llama_sampler_sample(smpl, ctx, batch.n_tokens - 1); // is it an end of generation? - if (llama_token_is_eog(vocab, new_token_id) || n_cur == n_len) { + if (llama_vocab_is_eog(vocab, new_token_id) || n_cur == n_len) { LOG("\n"); break; diff --git a/examples/perplexity/perplexity.cpp b/examples/perplexity/perplexity.cpp index 048b49ac6..fa0098004 100644 --- a/examples/perplexity/perplexity.cpp +++ b/examples/perplexity/perplexity.cpp @@ -299,8 +299,8 @@ static results_perplexity perplexity_v2(llama_context * ctx, const common_params const llama_model * model = llama_get_model(ctx); const llama_vocab * vocab = llama_model_get_vocab(model); - const bool add_bos = llama_add_bos_token(vocab); - GGML_ASSERT(!llama_add_eos_token(vocab)); + const bool add_bos = llama_vocab_add_bos(vocab); + GGML_ASSERT(!llama_vocab_add_eos(vocab)); LOG_INF("%s: tokenizing the input ..\n", __func__); @@ -385,7 +385,7 @@ static results_perplexity perplexity_v2(llama_context * ctx, const common_params // add BOS token for the first batch of each chunk if (add_bos && j == 0) { - tokens[batch_start] = llama_token_bos(vocab); + tokens[batch_start] = llama_vocab_bos(vocab); } const auto * batch_logits = llama_get_logits(ctx); @@ -450,8 +450,8 @@ static results_perplexity perplexity(llama_context * ctx, const common_params & const llama_model * model = llama_get_model(ctx); const llama_vocab * vocab = llama_model_get_vocab(model); - const bool add_bos = llama_add_bos_token(vocab); - GGML_ASSERT(!llama_add_eos_token(vocab)); + const bool add_bos = llama_vocab_add_bos(vocab); + GGML_ASSERT(!llama_vocab_add_eos(vocab)); std::ofstream logits_stream; if (!params.logits_file.empty()) { @@ -563,7 +563,7 @@ static results_perplexity perplexity(llama_context * ctx, const common_params & // add BOS token for the first batch of each chunk if (add_bos && j == 0) { - tokens[seq_start] = llama_token_bos(vocab); + tokens[seq_start] = llama_vocab_bos(vocab); } for (int k = 0; k < batch_size; ++k) { @@ -1717,8 +1717,8 @@ static void kl_divergence(llama_context * ctx, const common_params & params) { const int n_batch = params.n_batch; const int num_batches = (n_ctx + n_batch - 1)/n_batch; const int nv = 2*((n_vocab + 1)/2) + 4; - const bool add_bos = llama_add_bos_token(vocab); - GGML_ASSERT(!llama_add_eos_token(vocab)); + const bool add_bos = llama_vocab_add_bos(vocab); + GGML_ASSERT(!llama_vocab_add_eos(vocab)); std::vector log_probs_uint16(size_t(n_ctx - 1 - n_ctx/2) * nv); std::vector kld_values(size_t(n_ctx - 1 - n_ctx/2)*n_chunk); @@ -1777,7 +1777,7 @@ static void kl_divergence(llama_context * ctx, const common_params & params) { // add BOS token for the first batch of each chunk if (add_bos && j == 0) { - tokens[batch_start] = llama_token_bos(vocab); + tokens[batch_start] = llama_vocab_bos(vocab); } common_batch_clear(batch); diff --git a/examples/retrieval/retrieval.cpp b/examples/retrieval/retrieval.cpp index 0e858e0bf..2439022a2 100644 --- a/examples/retrieval/retrieval.cpp +++ b/examples/retrieval/retrieval.cpp @@ -194,8 +194,8 @@ int main(int argc, char ** argv) { return 1; } // add eos if not present - if (llama_token_eos(vocab) >= 0 && (inp.empty() || inp.back() != llama_token_eos(vocab))) { - inp.push_back(llama_token_eos(vocab)); + if (llama_vocab_eos(vocab) >= 0 && (inp.empty() || inp.back() != llama_vocab_eos(vocab))) { + inp.push_back(llama_vocab_eos(vocab)); } chunk.tokens = inp; } diff --git a/examples/run/run.cpp b/examples/run/run.cpp index 45dbb9ce4..bfa8378bb 100644 --- a/examples/run/run.cpp +++ b/examples/run/run.cpp @@ -792,7 +792,7 @@ static int generate(LlamaData & llama_data, const std::string & prompt, std::str // sample the next token, check is it an end of generation? new_token_id = llama_sampler_sample(llama_data.sampler.get(), llama_data.context.get(), -1); - if (llama_token_is_eog(vocab, new_token_id)) { + if (llama_vocab_is_eog(vocab, new_token_id)) { break; } diff --git a/examples/server/server.cpp b/examples/server/server.cpp index 5327a0041..ba7008b97 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -1698,8 +1698,8 @@ struct server_context { n_ctx = llama_n_ctx(ctx); - add_bos_token = llama_add_bos_token(vocab); - has_eos_token = llama_token_eos(vocab) != LLAMA_TOKEN_NULL; + add_bos_token = llama_vocab_add_bos(vocab); + has_eos_token = llama_vocab_eos(vocab) != LLAMA_TOKEN_NULL; if (!params_base.speculative.model.empty()) { SRV_INF("loading draft model '%s'\n", params_base.speculative.model.c_str()); @@ -1898,7 +1898,7 @@ struct server_context { } if (slot.params.ignore_eos && has_eos_token) { - slot.params.sampling.logit_bias.push_back({llama_token_eos(vocab), -INFINITY}); + slot.params.sampling.logit_bias.push_back({llama_vocab_eos(vocab), -INFINITY}); } { @@ -2054,7 +2054,7 @@ struct server_context { slot.n_decoded, slot.n_prompt_tokens, slot.n_past, slot.n_ctx); } - if (llama_token_is_eog(vocab, result.tok)) { + if (llama_vocab_is_eog(vocab, result.tok)) { slot.stop = STOP_TYPE_EOS; slot.has_next_token = false; @@ -3751,13 +3751,13 @@ int main(int argc, char ** argv) { const auto handle_infill = [&ctx_server, &res_error, &handle_completions_impl](const httplib::Request & req, httplib::Response & res) { // check model compatibility std::string err; - if (llama_token_fim_pre(ctx_server.vocab) == LLAMA_TOKEN_NULL) { + if (llama_vocab_fim_pre(ctx_server.vocab) == LLAMA_TOKEN_NULL) { err += "prefix token is missing. "; } - if (llama_token_fim_suf(ctx_server.vocab) == LLAMA_TOKEN_NULL) { + if (llama_vocab_fim_suf(ctx_server.vocab) == LLAMA_TOKEN_NULL) { err += "suffix token is missing. "; } - if (llama_token_fim_mid(ctx_server.vocab) == LLAMA_TOKEN_NULL) { + if (llama_vocab_fim_mid(ctx_server.vocab) == LLAMA_TOKEN_NULL) { err += "middle token is missing. "; } if (!err.empty()) { diff --git a/examples/server/utils.hpp b/examples/server/utils.hpp index 87a0fc1d7..e5c431c7a 100644 --- a/examples/server/utils.hpp +++ b/examples/server/utils.hpp @@ -235,12 +235,12 @@ static llama_tokens format_rerank(const struct llama_vocab * vocab, const llama_ llama_tokens result; result.reserve(doc.size() + query.size() + 4); - result.push_back(llama_token_bos(vocab)); + result.push_back(llama_vocab_bos(vocab)); result.insert(result.end(), query.begin(), query.end()); - result.push_back(llama_token_eos(vocab)); - result.push_back(llama_token_sep(vocab)); + result.push_back(llama_vocab_eos(vocab)); + result.push_back(llama_vocab_sep(vocab)); result.insert(result.end(), doc.begin(), doc.end()); - result.push_back(llama_token_eos(vocab)); + result.push_back(llama_vocab_eos(vocab)); return result; } @@ -277,11 +277,11 @@ static llama_tokens format_infill( auto tokens_prefix = tokenize_mixed(vocab, input_prefix, false, false); auto tokens_suffix = tokenize_mixed(vocab, input_suffix, false, false); - if (llama_token_fim_rep(vocab) != LLAMA_TOKEN_NULL) { + if (llama_vocab_fim_rep(vocab) != LLAMA_TOKEN_NULL) { // TODO: make project name an input static const auto k_fim_repo = common_tokenize(vocab, "myproject\n", false, false); - extra_tokens.push_back(llama_token_fim_rep(vocab)); + extra_tokens.push_back(llama_vocab_fim_rep(vocab)); extra_tokens.insert(extra_tokens.end(), k_fim_repo.begin(), k_fim_repo.end()); } for (const auto & chunk : input_extra) { @@ -289,10 +289,10 @@ static llama_tokens format_infill( const std::string text = json_value(chunk, "text", std::string()); const std::string filename = json_value(chunk, "filename", std::string("tmp")); - if (llama_token_fim_sep(vocab) != LLAMA_TOKEN_NULL) { + if (llama_vocab_fim_sep(vocab) != LLAMA_TOKEN_NULL) { const auto k_fim_file = common_tokenize(vocab, filename + "\n", false, false); - extra_tokens.insert(extra_tokens.end(), llama_token_fim_sep(vocab)); + extra_tokens.insert(extra_tokens.end(), llama_vocab_fim_sep(vocab)); extra_tokens.insert(extra_tokens.end(), k_fim_file.begin(), k_fim_file.end()); } else { // chunk separator in binary form to avoid confusing the AI @@ -306,11 +306,11 @@ static llama_tokens format_infill( extra_tokens.insert(extra_tokens.end(), chunk_tokens.begin(), chunk_tokens.end()); } - if (llama_token_fim_sep(vocab) != LLAMA_TOKEN_NULL) { + if (llama_vocab_fim_sep(vocab) != LLAMA_TOKEN_NULL) { // TODO: current filename static const auto k_fim_file = common_tokenize(vocab, "filename\n", false, false); - extra_tokens.insert(extra_tokens.end(), llama_token_fim_sep(vocab)); + extra_tokens.insert(extra_tokens.end(), llama_vocab_fim_sep(vocab)); extra_tokens.insert(extra_tokens.end(), k_fim_file.begin(), k_fim_file.end()); } @@ -326,15 +326,15 @@ static llama_tokens format_infill( tokens_prefix.erase(tokens_prefix.begin(), tokens_prefix.begin() + tokens_prefix.size() - n_prefix_take); tokens_suffix.resize(n_suffix_take); - tokens_prefix.insert(tokens_prefix.begin(), llama_token_fim_pre(vocab)); + tokens_prefix.insert(tokens_prefix.begin(), llama_vocab_fim_pre(vocab)); tokens_prefix.insert(tokens_prefix.end(), tokens_prompt.begin(), tokens_prompt.end()); - tokens_suffix.insert(tokens_suffix.begin(), llama_token_fim_suf(vocab)); + tokens_suffix.insert(tokens_suffix.begin(), llama_vocab_fim_suf(vocab)); auto embd_inp = spm_infill ? tokens_suffix : tokens_prefix; auto embd_end = spm_infill ? tokens_prefix : tokens_suffix; - if (llama_add_bos_token(vocab)) { - embd_inp.insert(embd_inp.begin(), llama_token_bos(vocab)); + if (llama_vocab_add_bos(vocab)) { + embd_inp.insert(embd_inp.begin(), llama_vocab_bos(vocab)); } SRV_DBG("extra: n_ctx = %d, n_extra_take = %d, n_extra = %d\n", n_ctx, n_extra_take, (int) extra_tokens.size()); @@ -343,7 +343,7 @@ static llama_tokens format_infill( embd_inp.insert(embd_inp.begin(), extra_tokens.end() - n_extra_take, extra_tokens.end()); embd_inp.insert(embd_inp.end(), embd_end.begin(), embd_end.end()); - embd_inp.push_back(llama_token_fim_mid(vocab)); + embd_inp.push_back(llama_vocab_fim_mid(vocab)); return embd_inp; } diff --git a/examples/simple-chat/simple-chat.cpp b/examples/simple-chat/simple-chat.cpp index 0e45f535b..e8eda9c22 100644 --- a/examples/simple-chat/simple-chat.cpp +++ b/examples/simple-chat/simple-chat.cpp @@ -126,7 +126,7 @@ int main(int argc, char ** argv) { new_token_id = llama_sampler_sample(smpl, ctx, -1); // is it an end of generation? - if (llama_token_is_eog(vocab, new_token_id)) { + if (llama_vocab_is_eog(vocab, new_token_id)) { break; } diff --git a/examples/simple/simple.cpp b/examples/simple/simple.cpp index f59690a7b..10e79a0a6 100644 --- a/examples/simple/simple.cpp +++ b/examples/simple/simple.cpp @@ -165,7 +165,7 @@ int main(int argc, char ** argv) { new_token_id = llama_sampler_sample(smpl, ctx, -1); // is it an end of generation? - if (llama_token_is_eog(vocab, new_token_id)) { + if (llama_vocab_is_eog(vocab, new_token_id)) { break; } diff --git a/examples/speculative-simple/speculative-simple.cpp b/examples/speculative-simple/speculative-simple.cpp index 2c902f904..403ba2dd2 100644 --- a/examples/speculative-simple/speculative-simple.cpp +++ b/examples/speculative-simple/speculative-simple.cpp @@ -198,7 +198,7 @@ int main(int argc, char ** argv) { id_last = ids[i]; - if (llama_token_is_eog(vocab, id_last)) { + if (llama_vocab_is_eog(vocab, id_last)) { has_eos = true; break; } diff --git a/examples/speculative/speculative.cpp b/examples/speculative/speculative.cpp index 14140a07c..db791245c 100644 --- a/examples/speculative/speculative.cpp +++ b/examples/speculative/speculative.cpp @@ -106,10 +106,10 @@ int main(int argc, char ** argv) { } if ( - llama_add_bos_token(vocab_tgt) != llama_add_bos_token(vocab_dft) || - llama_add_eos_token(vocab_tgt) != llama_add_eos_token(vocab_dft) || - llama_token_bos(vocab_tgt) != llama_token_bos(vocab_dft) || - llama_token_eos(vocab_tgt) != llama_token_eos(vocab_dft) + llama_vocab_add_bos(vocab_tgt) != llama_vocab_add_bos(vocab_dft) || + llama_vocab_add_eos(vocab_tgt) != llama_vocab_add_eos(vocab_dft) || + llama_vocab_bos(vocab_tgt) != llama_vocab_bos(vocab_dft) || + llama_vocab_eos(vocab_tgt) != llama_vocab_eos(vocab_dft) ) { LOG_ERR("%s: draft model special tokens must match target model to use speculation\n", __func__); return 1; @@ -130,8 +130,8 @@ int main(int argc, char ** argv) { } for (int i = SPEC_VOCAB_CHECK_START_TOKEN_ID; i < std::min(n_vocab_tgt, n_vocab_dft); ++i) { - const char * token_text_tgt = llama_token_get_text(vocab_tgt, i); - const char * token_text_dft = llama_token_get_text(vocab_dft, i); + const char * token_text_tgt = llama_vocab_get_text(vocab_tgt, i); + const char * token_text_dft = llama_vocab_get_text(vocab_dft, i); if (std::strcmp(token_text_tgt, token_text_dft) != 0) { LOG_ERR("%s: draft model vocab must match target model to use speculation but ", __func__); LOG_ERR("token %d content differs - target '%s', draft '%s'\n", i, @@ -389,7 +389,7 @@ int main(int argc, char ** argv) { } } - if (llama_token_is_eog(vocab_tgt, token_id)) { + if (llama_vocab_is_eog(vocab_tgt, token_id)) { has_eos = true; } ++n_predict; diff --git a/examples/tokenize/tokenize.cpp b/examples/tokenize/tokenize.cpp index bf49902f0..dc7bb4869 100644 --- a/examples/tokenize/tokenize.cpp +++ b/examples/tokenize/tokenize.cpp @@ -367,7 +367,7 @@ int main(int raw_argc, char ** raw_argv) { prompt = stdin_buffer.str(); } - const bool model_wants_add_bos = llama_add_bos_token(vocab); + const bool model_wants_add_bos = llama_vocab_add_bos(vocab); const bool add_bos = model_wants_add_bos && !no_bos; const bool parse_special = !no_parse_special; const bool escape = !no_escape; diff --git a/examples/tts/tts.cpp b/examples/tts/tts.cpp index aa022aff9..5a9161181 100644 --- a/examples/tts/tts.cpp +++ b/examples/tts/tts.cpp @@ -737,9 +737,9 @@ lovely<|t_0.56|><|code_start|><|634|><|596|><|1766|><|1556|><|1306|><|1285|><|14 const auto * cands = common_sampler_get_candidates(smpl[i]); // is it an end of generation? -> mark the stream as finished - if (llama_token_is_eog(vocab, new_token_id) || n_decode == n_predict) { + if (llama_vocab_is_eog(vocab, new_token_id) || n_decode == n_predict) { std::string reason; - if (llama_token_is_eog(vocab, new_token_id)) { + if (llama_vocab_is_eog(vocab, new_token_id)) { reason = "eos"; } else { reason = "n_predict"; diff --git a/include/llama.h b/include/llama.h index 5f8fc6a49..9e1280592 100644 --- a/include/llama.h +++ b/include/llama.h @@ -925,41 +925,57 @@ extern "C" { // Vocab // - LLAMA_API const char * llama_token_get_text(const struct llama_vocab * vocab, llama_token token); + LLAMA_API const char * llama_vocab_get_text(const struct llama_vocab * vocab, llama_token token); - LLAMA_API float llama_token_get_score(const struct llama_vocab * vocab, llama_token token); + LLAMA_API float llama_vocab_get_score(const struct llama_vocab * vocab, llama_token token); - LLAMA_API enum llama_token_attr llama_token_get_attr(const struct llama_vocab * vocab, llama_token token); + LLAMA_API enum llama_token_attr llama_vocab_get_attr(const struct llama_vocab * vocab, llama_token token); // Check if the token is supposed to end generation (end-of-generation, eg. EOS, EOT, etc.) - LLAMA_API bool llama_token_is_eog(const struct llama_vocab * vocab, llama_token token); + LLAMA_API bool llama_vocab_is_eog(const struct llama_vocab * vocab, llama_token token); // Identify if Token Id is a control token or a render-able token - LLAMA_API bool llama_token_is_control(const struct llama_vocab * vocab, llama_token token); + LLAMA_API bool llama_vocab_is_control(const struct llama_vocab * vocab, llama_token token); // Special tokens - LLAMA_API llama_token llama_token_bos(const struct llama_vocab * vocab); // beginning-of-sentence - LLAMA_API llama_token llama_token_eos(const struct llama_vocab * vocab); // end-of-sentence - LLAMA_API llama_token llama_token_eot(const struct llama_vocab * vocab); // end-of-turn - LLAMA_API llama_token llama_token_cls(const struct llama_vocab * vocab); // classification - LLAMA_API llama_token llama_token_sep(const struct llama_vocab * vocab); // sentence separator - LLAMA_API llama_token llama_token_nl (const struct llama_vocab * vocab); // next-line - LLAMA_API llama_token llama_token_pad(const struct llama_vocab * vocab); // padding + LLAMA_API llama_token llama_vocab_bos(const struct llama_vocab * vocab); // beginning-of-sentence + LLAMA_API llama_token llama_vocab_eos(const struct llama_vocab * vocab); // end-of-sentence + LLAMA_API llama_token llama_vocab_eot(const struct llama_vocab * vocab); // end-of-turn + LLAMA_API llama_token llama_vocab_cls(const struct llama_vocab * vocab); // classification + LLAMA_API llama_token llama_vocab_sep(const struct llama_vocab * vocab); // sentence separator + LLAMA_API llama_token llama_vocab_nl (const struct llama_vocab * vocab); // next-line + LLAMA_API llama_token llama_vocab_pad(const struct llama_vocab * vocab); // padding - LLAMA_API bool llama_add_bos_token(const struct llama_vocab * vocab); - LLAMA_API bool llama_add_eos_token(const struct llama_vocab * vocab); + LLAMA_API bool llama_vocab_add_bos(const struct llama_vocab * vocab); + LLAMA_API bool llama_vocab_add_eos(const struct llama_vocab * vocab); - // infill tokens - DEPRECATED(LLAMA_API llama_token llama_token_prefix(const struct llama_vocab * vocab), "use llama_token_fim_pre instead"); - DEPRECATED(LLAMA_API llama_token llama_token_middle(const struct llama_vocab * vocab), "use llama_token_fim_mid instead"); - DEPRECATED(LLAMA_API llama_token llama_token_suffix(const struct llama_vocab * vocab), "use llama_token_fim_suf instead"); + LLAMA_API llama_token llama_vocab_fim_pre(const struct llama_vocab * vocab); + LLAMA_API llama_token llama_vocab_fim_suf(const struct llama_vocab * vocab); + LLAMA_API llama_token llama_vocab_fim_mid(const struct llama_vocab * vocab); + LLAMA_API llama_token llama_vocab_fim_pad(const struct llama_vocab * vocab); + LLAMA_API llama_token llama_vocab_fim_rep(const struct llama_vocab * vocab); + LLAMA_API llama_token llama_vocab_fim_sep(const struct llama_vocab * vocab); - LLAMA_API llama_token llama_token_fim_pre(const struct llama_vocab * vocab); - LLAMA_API llama_token llama_token_fim_suf(const struct llama_vocab * vocab); - LLAMA_API llama_token llama_token_fim_mid(const struct llama_vocab * vocab); - LLAMA_API llama_token llama_token_fim_pad(const struct llama_vocab * vocab); - LLAMA_API llama_token llama_token_fim_rep(const struct llama_vocab * vocab); - LLAMA_API llama_token llama_token_fim_sep(const struct llama_vocab * vocab); + DEPRECATED(LLAMA_API const char * llama_token_get_text(const struct llama_vocab * vocab, llama_token token), "deprecated"); + DEPRECATED(LLAMA_API float llama_token_get_score(const struct llama_vocab * vocab, llama_token token), "deprecated"); + DEPRECATED(LLAMA_API enum llama_token_attr llama_token_get_attr(const struct llama_vocab * vocab, llama_token token), "deprecated"); + DEPRECATED(LLAMA_API bool llama_token_is_eog(const struct llama_vocab * vocab, llama_token token), "deprecated"); + DEPRECATED(LLAMA_API bool llama_token_is_control(const struct llama_vocab * vocab, llama_token token), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_bos(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_eos(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_eot(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_cls(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_sep(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_nl (const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_pad(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API bool llama_add_bos_token(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API bool llama_add_eos_token(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_fim_pre(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_fim_suf(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_fim_mid(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_fim_pad(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_fim_rep(const struct llama_vocab * vocab), "deprecated"); + DEPRECATED(LLAMA_API llama_token llama_token_fim_sep(const struct llama_vocab * vocab), "deprecated"); // // Tokenization diff --git a/src/llama-vocab.cpp b/src/llama-vocab.cpp index e6e3cc230..e5d9d29d4 100644 --- a/src/llama-vocab.cpp +++ b/src/llama-vocab.cpp @@ -3039,98 +3039,186 @@ enum llama_vocab_type llama_vocab_type(const struct llama_vocab * vocab) { return vocab->get_type(); } -const char * llama_token_get_text(const struct llama_vocab * vocab, llama_token token) { +const char * llama_vocab_get_text(const struct llama_vocab * vocab, llama_token token) { return vocab->token_get_text(token); } -float llama_token_get_score(const struct llama_vocab * vocab, llama_token token) { +float llama_vocab_get_score(const struct llama_vocab * vocab, llama_token token) { return vocab->token_get_score(token); } -enum llama_token_attr llama_token_get_attr(const struct llama_vocab * vocab, llama_token token) { +enum llama_token_attr llama_vocab_get_attr(const struct llama_vocab * vocab, llama_token token) { return vocab->token_get_attr(token); } -bool llama_token_is_eog(const struct llama_vocab * vocab, llama_token token) { +bool llama_vocab_is_eog(const struct llama_vocab * vocab, llama_token token) { return vocab->is_eog(token); } -bool llama_token_is_control(const struct llama_vocab * vocab, llama_token token) { +bool llama_vocab_is_control(const struct llama_vocab * vocab, llama_token token) { return vocab->is_control(token); } -llama_token llama_token_bos(const struct llama_vocab * vocab) { +llama_token llama_vocab_bos(const struct llama_vocab * vocab) { return vocab->token_bos(); } -llama_token llama_token_eos(const struct llama_vocab * vocab) { +llama_token llama_vocab_eos(const struct llama_vocab * vocab) { return vocab->token_eos(); } -llama_token llama_token_eot(const struct llama_vocab * vocab) { +llama_token llama_vocab_eot(const struct llama_vocab * vocab) { return vocab->token_eot(); } -llama_token llama_token_cls(const struct llama_vocab * vocab) { +llama_token llama_vocab_cls(const struct llama_vocab * vocab) { return vocab->token_cls(); } -llama_token llama_token_sep(const struct llama_vocab * vocab) { +llama_token llama_vocab_sep(const struct llama_vocab * vocab) { return vocab->token_sep(); } -llama_token llama_token_nl (const struct llama_vocab * vocab) { +llama_token llama_vocab_nl (const struct llama_vocab * vocab) { return vocab->token_nl(); } -llama_token llama_token_pad(const struct llama_vocab * vocab) { +llama_token llama_vocab_pad(const struct llama_vocab * vocab) { return vocab->token_pad(); } -bool llama_add_bos_token(const struct llama_vocab * vocab) { +bool llama_vocab_add_bos(const struct llama_vocab * vocab) { return vocab->add_bos_token(); } -bool llama_add_eos_token(const struct llama_vocab * vocab) { +bool llama_vocab_add_eos(const struct llama_vocab * vocab) { return vocab->add_eos_token(); } -llama_token llama_token_prefix(const struct llama_vocab * vocab) { - return vocab->token_prefix(); -} - -llama_token llama_token_middle(const struct llama_vocab * vocab) { - return vocab->token_middle(); -} - -llama_token llama_token_suffix(const struct llama_vocab * vocab) { - return vocab->token_suffix(); -} - -llama_token llama_token_fim_pre(const struct llama_vocab * vocab) { +llama_token llama_vocab_fim_pre(const struct llama_vocab * vocab) { return vocab->token_fim_pre(); } -llama_token llama_token_fim_suf(const struct llama_vocab * vocab) { +llama_token llama_vocab_fim_suf(const struct llama_vocab * vocab) { return vocab->token_fim_suf(); } -llama_token llama_token_fim_mid(const struct llama_vocab * vocab) { +llama_token llama_vocab_fim_mid(const struct llama_vocab * vocab) { return vocab->token_fim_mid(); } -llama_token llama_token_fim_pad(const struct llama_vocab * vocab) { +llama_token llama_vocab_fim_pad(const struct llama_vocab * vocab) { return vocab->token_fim_pad(); } -llama_token llama_token_fim_rep(const struct llama_vocab * vocab) { +llama_token llama_vocab_fim_rep(const struct llama_vocab * vocab) { return vocab->token_fim_rep(); } -llama_token llama_token_fim_sep(const struct llama_vocab * vocab) { +llama_token llama_vocab_fim_sep(const struct llama_vocab * vocab) { return vocab->token_fim_sep(); } +// deprecated +const char * llama_token_get_text(const struct llama_vocab * vocab, llama_token token) { + return llama_vocab_get_text(vocab, token); +} + +// deprecated +float llama_token_get_score(const struct llama_vocab * vocab, llama_token token) { + return llama_vocab_get_score(vocab, token); +} + +// deprecated +enum llama_token_attr llama_token_get_attr(const struct llama_vocab * vocab, llama_token token) { + return llama_vocab_get_attr(vocab, token); +} + +// deprecated +bool llama_token_is_eog(const struct llama_vocab * vocab, llama_token token) { + return llama_vocab_is_eog(vocab, token); +} + +// deprecated +bool llama_token_is_control(const struct llama_vocab * vocab, llama_token token) { + return llama_vocab_is_control(vocab, token); +} + +// deprecated +llama_token llama_token_bos(const struct llama_vocab * vocab) { + return llama_vocab_bos(vocab); +} + +// deprecated +llama_token llama_token_eos(const struct llama_vocab * vocab) { + return llama_vocab_eos(vocab); +} + +// deprecated +llama_token llama_token_eot(const struct llama_vocab * vocab) { + return llama_vocab_eot(vocab); +} + +// deprecated +llama_token llama_token_cls(const struct llama_vocab * vocab) { + return llama_vocab_cls(vocab); +} + +// deprecated +llama_token llama_token_sep(const struct llama_vocab * vocab) { + return llama_vocab_sep(vocab); +} + +// deprecated +llama_token llama_token_nl (const struct llama_vocab * vocab) { + return llama_vocab_nl(vocab); +} + +// deprecated +llama_token llama_token_pad(const struct llama_vocab * vocab) { + return llama_vocab_pad(vocab); +} + +// deprecated +bool llama_add_bos_token(const struct llama_vocab * vocab) { + return llama_vocab_add_bos(vocab); +} + +// deprecated +bool llama_add_eos_token(const struct llama_vocab * vocab) { + return llama_vocab_add_eos(vocab); +} + +// deprecated +llama_token llama_token_fim_pre(const struct llama_vocab * vocab) { + return llama_vocab_fim_pre(vocab); +} + +// deprecated +llama_token llama_token_fim_suf(const struct llama_vocab * vocab) { + return llama_vocab_fim_suf(vocab); +} + +// deprecated +llama_token llama_token_fim_mid(const struct llama_vocab * vocab) { + return llama_vocab_fim_mid(vocab); +} + +// deprecated +llama_token llama_token_fim_pad(const struct llama_vocab * vocab) { + return llama_vocab_fim_pad(vocab); +} + +// deprecated +llama_token llama_token_fim_rep(const struct llama_vocab * vocab) { + return llama_vocab_fim_rep(vocab); +} + +// deprecated +llama_token llama_token_fim_sep(const struct llama_vocab * vocab) { + return llama_vocab_fim_sep(vocab); +} + // // tokenization //