From 6540935bca0d3a2e03368df3d2269270ebb173e5 Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Sat, 11 Jan 2025 17:43:46 +0200 Subject: [PATCH] vocab : llama_vocab_add_[be]os -> llama_vocab_get_add_[be]os (#11174) ggml-ci --- common/speculative.cpp | 8 +- .../cvector-generator/cvector-generator.cpp | 2 +- examples/eval-callback/eval-callback.cpp | 2 +- examples/imatrix/imatrix.cpp | 4 +- examples/infill/infill.cpp | 4 +- examples/llama-bench/llama-bench.cpp | 4 +- examples/main/main.cpp | 4 +- examples/perplexity/perplexity.cpp | 12 +- examples/server/server.cpp | 2 +- examples/server/utils.hpp | 2 +- examples/speculative/speculative.cpp | 4 +- examples/tokenize/tokenize.cpp | 2 +- include/llama.h | 8 +- src/llama-vocab.cpp | 173 +++++++++--------- src/llama-vocab.h | 16 +- 15 files changed, 123 insertions(+), 124 deletions(-) diff --git a/common/speculative.cpp b/common/speculative.cpp index a582122ee..ce8d179e1 100644 --- a/common/speculative.cpp +++ b/common/speculative.cpp @@ -94,13 +94,13 @@ bool common_speculative_are_compatible( return false; } - 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) || + if (llama_vocab_get_add_bos(vocab_tgt) != llama_vocab_get_add_bos(vocab_dft) || + llama_vocab_get_add_eos(vocab_tgt) != llama_vocab_get_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_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)); + LOG_ERR("%s: tgt: bos = %d (%d), eos = %d (%d)\n", __func__, llama_vocab_bos(vocab_tgt), llama_vocab_get_add_bos(vocab_tgt), llama_vocab_eos(vocab_tgt), llama_vocab_get_add_eos(vocab_tgt)); + LOG_ERR("%s: dft: bos = %d (%d), eos = %d (%d)\n", __func__, llama_vocab_bos(vocab_dft), llama_vocab_get_add_bos(vocab_dft), llama_vocab_eos(vocab_dft), llama_vocab_get_add_eos(vocab_dft)); return false; } diff --git a/examples/cvector-generator/cvector-generator.cpp b/examples/cvector-generator/cvector-generator.cpp index 384df05fe..413b71d34 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_vocab_add_bos(vocab); + const bool add_bos = llama_vocab_get_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/eval-callback/eval-callback.cpp b/examples/eval-callback/eval-callback.cpp index 65577157e..fb188f5a9 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_vocab_add_bos(vocab); + const bool add_bos = llama_vocab_get_add_bos(vocab); std::vector tokens = common_tokenize(ctx, params.prompt, add_bos); diff --git a/examples/imatrix/imatrix.cpp b/examples/imatrix/imatrix.cpp index b63fdf4d6..4e69849b7 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_vocab_add_bos(vocab); + const bool add_bos = llama_vocab_get_add_bos(vocab); const int n_ctx = llama_n_ctx(ctx); - GGML_ASSERT(!llama_vocab_add_eos(vocab)); + GGML_ASSERT(!llama_vocab_get_add_eos(vocab)); auto tim1 = std::chrono::high_resolution_clock::now(); LOG_INF("%s: tokenizing the input ..\n", __func__); diff --git a/examples/infill/infill.cpp b/examples/infill/infill.cpp index eb848414a..489a208b6 100644 --- a/examples/infill/infill.cpp +++ b/examples/infill/infill.cpp @@ -154,8 +154,8 @@ 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_vocab_add_bos(vocab); - GGML_ASSERT(!llama_vocab_add_eos(vocab)); + const bool add_bos = llama_vocab_get_add_bos(vocab); + GGML_ASSERT(!llama_vocab_get_add_eos(vocab)); std::vector embd_inp; std::vector embd_end; diff --git a/examples/llama-bench/llama-bench.cpp b/examples/llama-bench/llama-bench.cpp index 3439e5bec..7b639f410 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_vocab_add_bos(vocab) ? llama_vocab_bos(vocab) : std::rand() % n_vocab; + tokens[0] = n_processed == 0 && llama_vocab_get_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_vocab_add_bos(vocab) ? llama_vocab_bos(vocab) : std::rand() % n_vocab; + llama_token token = llama_vocab_get_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/main/main.cpp b/examples/main/main.cpp index 7246fe910..640b35c1d 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_vocab_add_bos(vocab); + const bool add_bos = llama_vocab_get_add_bos(vocab); if (!llama_model_has_encoder(model)) { - GGML_ASSERT(!llama_vocab_add_eos(vocab)); + GGML_ASSERT(!llama_vocab_get_add_eos(vocab)); } LOG_DBG("n_ctx: %d, add_bos: %d\n", n_ctx, add_bos); diff --git a/examples/perplexity/perplexity.cpp b/examples/perplexity/perplexity.cpp index fa0098004..c594cdb5a 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_vocab_add_bos(vocab); - GGML_ASSERT(!llama_vocab_add_eos(vocab)); + const bool add_bos = llama_vocab_get_add_bos(vocab); + GGML_ASSERT(!llama_vocab_get_add_eos(vocab)); LOG_INF("%s: tokenizing the input ..\n", __func__); @@ -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_vocab_add_bos(vocab); - GGML_ASSERT(!llama_vocab_add_eos(vocab)); + const bool add_bos = llama_vocab_get_add_bos(vocab); + GGML_ASSERT(!llama_vocab_get_add_eos(vocab)); std::ofstream logits_stream; if (!params.logits_file.empty()) { @@ -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_vocab_add_bos(vocab); - GGML_ASSERT(!llama_vocab_add_eos(vocab)); + const bool add_bos = llama_vocab_get_add_bos(vocab); + GGML_ASSERT(!llama_vocab_get_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); diff --git a/examples/server/server.cpp b/examples/server/server.cpp index 6861d745c..1374440a3 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -1698,7 +1698,7 @@ struct server_context { n_ctx = llama_n_ctx(ctx); - add_bos_token = llama_vocab_add_bos(vocab); + add_bos_token = llama_vocab_get_add_bos(vocab); has_eos_token = llama_vocab_eos(vocab) != LLAMA_TOKEN_NULL; if (!params_base.speculative.model.empty()) { diff --git a/examples/server/utils.hpp b/examples/server/utils.hpp index b365e8302..0f75b1ea3 100644 --- a/examples/server/utils.hpp +++ b/examples/server/utils.hpp @@ -333,7 +333,7 @@ static llama_tokens format_infill( auto embd_inp = spm_infill ? tokens_suffix : tokens_prefix; auto embd_end = spm_infill ? tokens_prefix : tokens_suffix; - if (llama_vocab_add_bos(vocab)) { + if (llama_vocab_get_add_bos(vocab)) { embd_inp.insert(embd_inp.begin(), llama_vocab_bos(vocab)); } diff --git a/examples/speculative/speculative.cpp b/examples/speculative/speculative.cpp index db791245c..a85342fc1 100644 --- a/examples/speculative/speculative.cpp +++ b/examples/speculative/speculative.cpp @@ -106,8 +106,8 @@ int main(int argc, char ** argv) { } 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_get_add_bos(vocab_tgt) != llama_vocab_get_add_bos(vocab_dft) || + llama_vocab_get_add_eos(vocab_tgt) != llama_vocab_get_add_eos(vocab_dft) || llama_vocab_bos(vocab_tgt) != llama_vocab_bos(vocab_dft) || llama_vocab_eos(vocab_tgt) != llama_vocab_eos(vocab_dft) ) { diff --git a/examples/tokenize/tokenize.cpp b/examples/tokenize/tokenize.cpp index dc7bb4869..7375759eb 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_vocab_add_bos(vocab); + const bool model_wants_add_bos = llama_vocab_get_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/include/llama.h b/include/llama.h index 2e8c0e94d..4685e21bf 100644 --- a/include/llama.h +++ b/include/llama.h @@ -942,8 +942,8 @@ extern "C" { 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_vocab_add_bos(const struct llama_vocab * vocab); - LLAMA_API bool llama_vocab_add_eos(const struct llama_vocab * vocab); + LLAMA_API bool llama_vocab_get_add_bos(const struct llama_vocab * vocab); + LLAMA_API bool llama_vocab_get_add_eos(const struct llama_vocab * vocab); 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); @@ -964,8 +964,8 @@ extern "C" { DEPRECATED(LLAMA_API llama_token llama_token_sep(const struct llama_vocab * vocab), "use llama_vocab_sep instead"); DEPRECATED(LLAMA_API llama_token llama_token_nl (const struct llama_vocab * vocab), "use llama_vocab_nl instead"); DEPRECATED(LLAMA_API llama_token llama_token_pad(const struct llama_vocab * vocab), "use llama_vocab_pad instead"); - DEPRECATED(LLAMA_API bool llama_add_bos_token(const struct llama_vocab * vocab), "use llama_vocab_add_bos instead"); - DEPRECATED(LLAMA_API bool llama_add_eos_token(const struct llama_vocab * vocab), "use llama_vocab_add_eos instead"); + DEPRECATED(LLAMA_API bool llama_add_bos_token(const struct llama_vocab * vocab), "use llama_vocab_get_add_bos instead"); + DEPRECATED(LLAMA_API bool llama_add_eos_token(const struct llama_vocab * vocab), "use llama_vocab_get_add_eos instead"); DEPRECATED(LLAMA_API llama_token llama_token_fim_pre(const struct llama_vocab * vocab), "use llama_vocab_fim_pre instead"); DEPRECATED(LLAMA_API llama_token llama_token_fim_suf(const struct llama_vocab * vocab), "use llama_vocab_fim_suf instead"); DEPRECATED(LLAMA_API llama_token llama_token_fim_mid(const struct llama_vocab * vocab), "use llama_vocab_fim_mid instead"); diff --git a/src/llama-vocab.cpp b/src/llama-vocab.cpp index e5d9d29d4..ceff5ba7e 100644 --- a/src/llama-vocab.cpp +++ b/src/llama-vocab.cpp @@ -15,7 +15,6 @@ #include #include #include -#include #include // @@ -416,7 +415,7 @@ struct llm_tokenizer_bpe_session { } bool append_bos(std::vector & output) const { - if (vocab.add_bos_token()) { + if (vocab.get_add_bos()) { GGML_ASSERT(vocab.token_bos() != LLAMA_TOKEN_NULL); output.push_back(vocab.token_bos()); return true; @@ -425,7 +424,7 @@ struct llm_tokenizer_bpe_session { } bool append_eos(std::vector & output) const { - if (vocab.add_eos_token()) { + if (vocab.get_add_eos()) { GGML_ASSERT(vocab.token_eos() != LLAMA_TOKEN_NULL); output.push_back(vocab.token_eos()); return true; @@ -434,13 +433,13 @@ struct llm_tokenizer_bpe_session { } void check_double_bos_eos(const std::vector & output) const { - if (vocab.add_bos_token() && output.size() >= 2 && output[1] == vocab.token_bos()) { + if (vocab.get_add_bos() && output.size() >= 2 && output[1] == vocab.token_bos()) { LLAMA_LOG_WARN( "%s: Added a BOS token to the prompt as specified by the model but the prompt " "also starts with a BOS token. So now the final prompt starts with 2 BOS tokens. " "Are you sure this is what you want?\n", __FUNCTION__); } - if (vocab.add_bos_token() && output.size() >= 2 && *(output.end()-2) == vocab.token_eos()) { + if (vocab.get_add_bos() && output.size() >= 2 && *(output.end()-2) == vocab.token_eos()) { LLAMA_LOG_WARN( "%s: Added a EOS token to the prompt as specified by the model but the prompt " "also ends with a EOS token. So now the final prompt ends with 2 EOS tokens. " @@ -462,7 +461,7 @@ struct llm_tokenizer_bpe_session { size_t offset = 0; //if (vocab.tokenizer_ignore_merges && vocab.token_to_id.find(word) != vocab.token_to_id.end()) { - if (vocab.ignore_merges() && vocab.text_to_token(word) != LLAMA_TOKEN_NULL) { + if (vocab.get_ignore_merges() && vocab.text_to_token(word) != LLAMA_TOKEN_NULL) { symbols.emplace_back(llm_symbol{-1, -1, word.c_str(), word.size()}); offset = word.size(); } @@ -890,11 +889,11 @@ private: normalized->clear(); normalized->reserve(input.size() * 3); - const std::string space = vocab.escape_whitespaces() ? tokenizer.escaped_space : " "; + const std::string space = vocab.get_escape_whitespaces() ? tokenizer.escaped_space : " "; - const bool shall_prepend_space = !vocab.treat_whitespace_as_suffix() && vocab.add_space_prefix(); - const bool shall_append_space = vocab.treat_whitespace_as_suffix() && vocab.add_space_prefix(); - const bool shall_merge_spaces = vocab.remove_extra_whitespaces(); + const bool shall_prepend_space = !vocab.get_treat_whitespace_as_suffix() && vocab.get_add_space_prefix(); + const bool shall_append_space = vocab.get_treat_whitespace_as_suffix() && vocab.get_add_space_prefix(); + const bool shall_merge_spaces = vocab.get_remove_extra_whitespaces(); bool is_space_prepended = false; bool processing_non_ws = false; @@ -1234,14 +1233,14 @@ struct llama_vocab::impl { llama_token special_fim_sep_id = LLAMA_TOKEN_NULL; // file separator // tokenizer flags - bool tokenizer_add_space_prefix = false; - bool tokenizer_add_bos = false; - bool tokenizer_add_eos = false; - bool tokenizer_ignore_merges = false; - bool tokenizer_clean_spaces = false; // clean_up_tokenization_spaces - bool tokenizer_remove_extra_whitespaces = false; - bool tokenizer_escape_whitespaces = true; - bool tokenizer_treat_whitespace_as_suffix = false; + bool add_space_prefix = false; + bool add_bos = false; + bool add_eos = false; + bool ignore_merges = false; + bool clean_spaces = false; // clean_up_tokenization_spaces + bool remove_extra_whitespaces = false; + bool escape_whitespaces = true; + bool treat_whitespace_as_suffix = false; std::unordered_map token_to_id; std::vector id_to_token; @@ -1468,8 +1467,8 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { // for now, only BPE models have pre-tokenizers if (type == LLAMA_VOCAB_TYPE_BPE) { - tokenizer_add_space_prefix = false; - tokenizer_clean_spaces = true; + add_space_prefix = false; + clean_spaces = true; if (tokenizer_pre.empty()) { LLAMA_LOG_WARN("%s: missing pre-tokenizer type, using: 'default'\n", __func__); LLAMA_LOG_WARN("%s: \n", __func__); @@ -1487,20 +1486,20 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { tokenizer_pre == "llama-bpe"|| tokenizer_pre == "falcon3") { pre_type = LLAMA_VOCAB_PRE_TYPE_LLAMA3; - tokenizer_ignore_merges = true; - tokenizer_add_bos = true; + ignore_merges = true; + add_bos = true; } else if ( tokenizer_pre == "deepseek-llm") { pre_type = LLAMA_VOCAB_PRE_TYPE_DEEPSEEK_LLM; - tokenizer_clean_spaces = false; + clean_spaces = false; } else if ( tokenizer_pre == "deepseek-coder") { pre_type = LLAMA_VOCAB_PRE_TYPE_DEEPSEEK_CODER; - tokenizer_clean_spaces = false; + clean_spaces = false; } else if ( tokenizer_pre == "deepseek-v3") { pre_type = LLAMA_VOCAB_PRE_TYPE_DEEPSEEK3_LLM; - tokenizer_clean_spaces = false; + clean_spaces = false; } else if ( tokenizer_pre == "falcon") { pre_type = LLAMA_VOCAB_PRE_TYPE_FALCON; @@ -1528,11 +1527,11 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { } else if ( tokenizer_pre == "command-r") { pre_type = LLAMA_VOCAB_PRE_TYPE_COMMAND_R; - tokenizer_clean_spaces = false; + clean_spaces = false; } else if ( tokenizer_pre == "qwen2") { pre_type = LLAMA_VOCAB_PRE_TYPE_QWEN2; - tokenizer_clean_spaces = false; + clean_spaces = false; } else if ( tokenizer_pre == "stablelm2") { pre_type = LLAMA_VOCAB_PRE_TYPE_STABLELM2; @@ -1548,7 +1547,7 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { } else if ( tokenizer_pre == "poro-chat") { pre_type = LLAMA_VOCAB_PRE_TYPE_PORO; - tokenizer_clean_spaces = false; + clean_spaces = false; } else if ( tokenizer_pre == "chatglm-bpe") { pre_type = LLAMA_VOCAB_PRE_TYPE_CHATGLM4; @@ -1556,20 +1555,20 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { } else if ( tokenizer_pre == "viking") { pre_type = LLAMA_VOCAB_PRE_TYPE_VIKING; - tokenizer_clean_spaces = false; + clean_spaces = false; } else if ( tokenizer_pre == "jais") { pre_type = LLAMA_VOCAB_PRE_TYPE_JAIS; } else if ( tokenizer_pre == "tekken") { pre_type = LLAMA_VOCAB_PRE_TYPE_TEKKEN; - tokenizer_clean_spaces = false; - tokenizer_ignore_merges = true; - tokenizer_add_bos = true; + clean_spaces = false; + ignore_merges = true; + add_bos = true; } else if ( tokenizer_pre == "smollm") { pre_type = LLAMA_VOCAB_PRE_TYPE_SMOLLM; - tokenizer_clean_spaces = false; + clean_spaces = false; } else if ( tokenizer_pre == "codeshell") { pre_type = LLAMA_VOCAB_PRE_TYPE_CODESHELL; @@ -1585,8 +1584,8 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { } else if ( tokenizer_pre == "chameleon") { pre_type = LLAMA_VOCAB_PRE_TYPE_CHAMELEON; - tokenizer_add_bos = true; - tokenizer_clean_spaces = false; + add_bos = true; + clean_spaces = false; } else if ( tokenizer_pre == "minerva-7b") { pre_type = LLAMA_VOCAB_PRE_TYPE_MINERVA; @@ -1598,32 +1597,32 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { } } else if (type == LLAMA_VOCAB_TYPE_SPM) { pre_type = LLAMA_VOCAB_PRE_TYPE_DEFAULT; - tokenizer_add_space_prefix = true; - tokenizer_clean_spaces = false; - tokenizer_add_bos = true; - tokenizer_add_eos = false; + add_space_prefix = true; + clean_spaces = false; + add_bos = true; + add_eos = false; } else if (type == LLAMA_VOCAB_TYPE_WPM) { pre_type = LLAMA_VOCAB_PRE_TYPE_DEFAULT; - tokenizer_add_space_prefix = false; - tokenizer_clean_spaces = true; - tokenizer_add_bos = true; - tokenizer_add_eos = false; + add_space_prefix = false; + clean_spaces = true; + add_bos = true; + add_eos = false; } else if (type == LLAMA_VOCAB_TYPE_UGM) { pre_type = LLAMA_VOCAB_PRE_TYPE_DEFAULT; - tokenizer_add_bos = false; - tokenizer_add_eos = true; + add_bos = false; + add_eos = true; } else if (type == LLAMA_VOCAB_TYPE_RWKV) { pre_type = LLAMA_VOCAB_PRE_TYPE_DEFAULT; - tokenizer_add_space_prefix = false; - tokenizer_clean_spaces = false; - tokenizer_add_bos = false; - tokenizer_add_eos = false; + add_space_prefix = false; + clean_spaces = false; + add_bos = false; + add_eos = false; } else { pre_type = LLAMA_VOCAB_PRE_TYPE_DEFAULT; } - ml.get_key(LLM_KV_TOKENIZER_ADD_PREFIX, tokenizer_add_space_prefix, false); - ml.get_key(LLM_KV_TOKENIZER_REMOVE_EXTRA_WS, tokenizer_remove_extra_whitespaces, false); + ml.get_key(LLM_KV_TOKENIZER_ADD_PREFIX, add_space_prefix, false); + ml.get_key(LLM_KV_TOKENIZER_REMOVE_EXTRA_WS, remove_extra_whitespaces, false); } const int token_idx = gguf_find_key(ctx, kv(LLM_KV_TOKENIZER_LIST).c_str()); @@ -1745,15 +1744,15 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) { } } - // Handle add_bos_token and add_eos_token + // Handle add_bos and add_eos { bool temp = true; if (ml.get_key(LLM_KV_TOKENIZER_ADD_BOS, temp, false)) { - tokenizer_add_bos = temp; + add_bos = temp; } if (ml.get_key(LLM_KV_TOKENIZER_ADD_EOS, temp, false)) { - tokenizer_add_eos = temp; + add_eos = temp; } } @@ -2337,7 +2336,7 @@ std::vector llama_vocab::impl::tokenize( bool is_prev_special = true; // prefix with space if first token - if (add_special && tokenizer_add_bos) { + if (add_special && add_bos) { GGML_ASSERT(special_bos_id != LLAMA_TOKEN_NULL); output.push_back(special_bos_id); is_prev_special = true; @@ -2348,7 +2347,7 @@ std::vector llama_vocab::impl::tokenize( std::string text; // prefix with space if previous is special - if (tokenizer_add_space_prefix && is_prev_special) { + if (add_space_prefix && is_prev_special) { text = ' '; } @@ -2367,14 +2366,14 @@ std::vector llama_vocab::impl::tokenize( } } - if (add_special && tokenizer_add_bos && output.size() >= 2 && output[1] == special_bos_id) { + if (add_special && add_bos && output.size() >= 2 && output[1] == special_bos_id) { LLAMA_LOG_WARN( "%s: Added a BOS token to the prompt as specified by the model but the prompt " "also starts with a BOS token. So now the final prompt starts with 2 BOS tokens. " "Are you sure this is what you want?\n", __FUNCTION__); } - if (add_special && tokenizer_add_eos) { + if (add_special && add_eos) { GGML_ASSERT(special_eos_id != LLAMA_TOKEN_NULL); output.push_back(special_eos_id); } @@ -2434,7 +2433,7 @@ std::vector llama_vocab::impl::tokenize( } break; case LLAMA_VOCAB_TYPE_UGM: { - if (add_special && tokenizer_add_bos) { + if (add_special && add_bos) { GGML_ASSERT(special_bos_id != LLAMA_TOKEN_NULL); output.push_back(special_bos_id); } @@ -2452,14 +2451,14 @@ std::vector llama_vocab::impl::tokenize( } } - if (add_special && tokenizer_add_bos && output.size() >= 2 && output[1] == special_bos_id) { + if (add_special && add_bos && output.size() >= 2 && output[1] == special_bos_id) { LLAMA_LOG_WARN( "%s: Added a BOS token to the prompt as specified by the model but the prompt " "also starts with a BOS token. So now the final prompt starts with 2 BOS tokens. " "Are you sure this is what you want?\n", __FUNCTION__); } - if (add_special && tokenizer_add_eos) { + if (add_special && add_eos) { GGML_ASSERT(special_eos_id != LLAMA_TOKEN_NULL); output.push_back(special_eos_id); } @@ -2594,9 +2593,9 @@ int32_t llama_vocab::impl::detokenize( int32_t total = 0; // remove the leading space - bool remove_space = tokenizer_add_space_prefix; + bool remove_space = add_space_prefix; - if (remove_special && tokenizer_add_bos) { + if (remove_special && add_bos) { if (n_tokens > 0 && tokens[0] == special_bos_id) { remove_space = false; n_tokens--; @@ -2604,7 +2603,7 @@ int32_t llama_vocab::impl::detokenize( } } - if (remove_special && tokenizer_add_eos) { + if (remove_special && add_eos) { if (n_tokens > 0 && tokens[n_tokens - 1] == special_eos_id) { n_tokens--; } @@ -2628,7 +2627,7 @@ int32_t llama_vocab::impl::detokenize( return -total; } - if (tokenizer_clean_spaces) { + if (clean_spaces) { text -= total; // restart text // first pass: characters ?!., //TODO: where do these characters come from? @@ -2907,36 +2906,36 @@ llama_token llama_vocab::token_fim_sep() const { return pimpl->special_fim_sep_id; } -bool llama_vocab::add_space_prefix() const { - return pimpl->tokenizer_add_space_prefix; +bool llama_vocab::get_add_space_prefix() const { + return pimpl->add_space_prefix; } -bool llama_vocab::add_bos_token() const { - return pimpl->tokenizer_add_bos; +bool llama_vocab::get_add_bos() const { + return pimpl->add_bos; } -bool llama_vocab::add_eos_token() const { - return pimpl->tokenizer_add_eos; +bool llama_vocab::get_add_eos() const { + return pimpl->add_eos; } -bool llama_vocab::ignore_merges() const { - return pimpl->tokenizer_ignore_merges; +bool llama_vocab::get_ignore_merges() const { + return pimpl->ignore_merges; } -bool llama_vocab::clean_spaces() const { - return pimpl->tokenizer_clean_spaces; +bool llama_vocab::get_clean_spaces() const { + return pimpl->clean_spaces; } -bool llama_vocab::remove_extra_whitespaces() const { - return pimpl->tokenizer_remove_extra_whitespaces; +bool llama_vocab::get_remove_extra_whitespaces() const { + return pimpl->remove_extra_whitespaces; } -bool llama_vocab::escape_whitespaces() const { - return pimpl->tokenizer_escape_whitespaces; +bool llama_vocab::get_escape_whitespaces() const { + return pimpl->escape_whitespaces; } -bool llama_vocab::treat_whitespace_as_suffix() const { - return pimpl->tokenizer_treat_whitespace_as_suffix; +bool llama_vocab::get_treat_whitespace_as_suffix() const { + return pimpl->treat_whitespace_as_suffix; } int llama_vocab::max_token_len() const { @@ -3087,12 +3086,12 @@ llama_token llama_vocab_pad(const struct llama_vocab * vocab) { return vocab->token_pad(); } -bool llama_vocab_add_bos(const struct llama_vocab * vocab) { - return vocab->add_bos_token(); +bool llama_vocab_get_add_bos(const struct llama_vocab * vocab) { + return vocab->get_add_bos(); } -bool llama_vocab_add_eos(const struct llama_vocab * vocab) { - return vocab->add_eos_token(); +bool llama_vocab_get_add_eos(const struct llama_vocab * vocab) { + return vocab->get_add_eos(); } llama_token llama_vocab_fim_pre(const struct llama_vocab * vocab) { @@ -3181,12 +3180,12 @@ llama_token llama_token_pad(const struct llama_vocab * vocab) { // deprecated bool llama_add_bos_token(const struct llama_vocab * vocab) { - return llama_vocab_add_bos(vocab); + return llama_vocab_get_add_bos(vocab); } // deprecated bool llama_add_eos_token(const struct llama_vocab * vocab) { - return llama_vocab_add_eos(vocab); + return llama_vocab_get_add_eos(vocab); } // deprecated diff --git a/src/llama-vocab.h b/src/llama-vocab.h index 7207b8b49..bbc0a237d 100644 --- a/src/llama-vocab.h +++ b/src/llama-vocab.h @@ -69,14 +69,14 @@ struct llama_vocab { llama_token token_fim_rep() const; llama_token token_fim_sep() const; - bool add_space_prefix () const; - bool add_bos_token () const; - bool add_eos_token () const; - bool ignore_merges () const; - bool clean_spaces () const; - bool remove_extra_whitespaces () const; - bool escape_whitespaces () const; - bool treat_whitespace_as_suffix() const; + bool get_add_space_prefix () const; + bool get_add_bos () const; + bool get_add_eos () const; + bool get_ignore_merges () const; + bool get_clean_spaces () const; + bool get_remove_extra_whitespaces () const; + bool get_escape_whitespaces () const; + bool get_treat_whitespace_as_suffix() const; int max_token_len() const;