diff --git a/gguf-py/gguf/constants.py b/gguf-py/gguf/constants.py index 273370370e6ca..6817bf699e5ea 100644 --- a/gguf-py/gguf/constants.py +++ b/gguf-py/gguf/constants.py @@ -181,7 +181,6 @@ class Tokenizer: UNK_ID = "tokenizer.ggml.unknown_token_id" SEP_ID = "tokenizer.ggml.seperator_token_id" PAD_ID = "tokenizer.ggml.padding_token_id" - CLS_ID = "tokenizer.ggml.cls_token_id" MASK_ID = "tokenizer.ggml.mask_token_id" ADD_BOS = "tokenizer.ggml.add_bos_token" ADD_EOS = "tokenizer.ggml.add_eos_token" @@ -1758,7 +1757,6 @@ def get_type(val: Any) -> GGUFValueType: KEY_TOKENIZER_UNK_ID = Keys.Tokenizer.UNK_ID KEY_TOKENIZER_SEP_ID = Keys.Tokenizer.SEP_ID KEY_TOKENIZER_PAD_ID = Keys.Tokenizer.PAD_ID -KEY_TOKENIZER_CLS_ID = Keys.Tokenizer.CLS_ID KEY_TOKENIZER_MASK_ID = Keys.Tokenizer.MASK_ID KEY_TOKENIZER_HF_JSON = Keys.Tokenizer.HF_JSON KEY_TOKENIZER_RWKV = Keys.Tokenizer.RWKV diff --git a/gguf-py/gguf/gguf_writer.py b/gguf-py/gguf/gguf_writer.py index 3023b539ae82b..e91c3d6a6797b 100644 --- a/gguf-py/gguf/gguf_writer.py +++ b/gguf-py/gguf/gguf_writer.py @@ -847,9 +847,6 @@ def add_sep_token_id(self, id: int) -> None: def add_pad_token_id(self, id: int) -> None: self.add_uint32(Keys.Tokenizer.PAD_ID, id) - def add_cls_token_id(self, id: int) -> None: - self.add_uint32(Keys.Tokenizer.CLS_ID, id) - def add_mask_token_id(self, id: int) -> None: self.add_uint32(Keys.Tokenizer.MASK_ID, id) diff --git a/include/llama.h b/include/llama.h index d5181c4b05f52..319ff74b7ebd6 100644 --- a/include/llama.h +++ b/include/llama.h @@ -916,11 +916,14 @@ extern "C" { LLAMA_API llama_token llama_token_bos(const struct llama_model * model); // beginning-of-sentence LLAMA_API llama_token llama_token_eos(const struct llama_model * model); // end-of-sentence LLAMA_API llama_token llama_token_eot(const struct llama_model * model); // end-of-turn - LLAMA_API llama_token llama_token_cls(const struct llama_model * model); // classification LLAMA_API llama_token llama_token_sep(const struct llama_model * model); // sentence separator LLAMA_API llama_token llama_token_nl (const struct llama_model * model); // next-line LLAMA_API llama_token llama_token_pad(const struct llama_model * model); // padding + // CLS is equivalent to BOS + DEPRECATED(LLAMA_API llama_token llama_token_cls(const struct llama_model * model), // classification + "use llama_token_bos instead"); + LLAMA_API bool llama_add_bos_token(const struct llama_model * model); LLAMA_API bool llama_add_eos_token(const struct llama_model * model); diff --git a/src/llama-model.cpp b/src/llama-model.cpp index f780211e78fa7..9fbe3b9c4ca2f 100644 --- a/src/llama-model.cpp +++ b/src/llama-model.cpp @@ -1107,7 +1107,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) { vocab.special_unk_id = LLAMA_TOKEN_NULL; vocab.special_sep_id = LLAMA_TOKEN_NULL; vocab.special_pad_id = LLAMA_TOKEN_NULL; - vocab.special_cls_id = LLAMA_TOKEN_NULL; vocab.special_mask_id = LLAMA_TOKEN_NULL; vocab.linefeed_id = LLAMA_TOKEN_NULL; @@ -1128,18 +1127,16 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) { vocab.special_unk_id = 0; vocab.special_sep_id = LLAMA_TOKEN_NULL; vocab.special_pad_id = LLAMA_TOKEN_NULL; - vocab.special_cls_id = LLAMA_TOKEN_NULL; vocab.special_mask_id = LLAMA_TOKEN_NULL; } else if (tokenizer_model == "bert") { vocab.type = LLAMA_VOCAB_TYPE_WPM; // default special tokens - vocab.special_bos_id = LLAMA_TOKEN_NULL; + vocab.special_bos_id = 101; vocab.special_eos_id = LLAMA_TOKEN_NULL; vocab.special_unk_id = 100; vocab.special_sep_id = 102; vocab.special_pad_id = 0; - vocab.special_cls_id = 101; vocab.special_mask_id = 103; } else if (tokenizer_model == "gpt2") { vocab.type = LLAMA_VOCAB_TYPE_BPE; @@ -1174,7 +1171,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) { vocab.special_unk_id = LLAMA_TOKEN_NULL; vocab.special_sep_id = LLAMA_TOKEN_NULL; vocab.special_pad_id = LLAMA_TOKEN_NULL; - vocab.special_cls_id = LLAMA_TOKEN_NULL; vocab.special_mask_id = LLAMA_TOKEN_NULL; } else if (tokenizer_model == "t5") { vocab.type = LLAMA_VOCAB_TYPE_UGM; @@ -1185,7 +1181,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) { vocab.special_unk_id = 2; vocab.special_sep_id = LLAMA_TOKEN_NULL; vocab.special_pad_id = 0; - vocab.special_cls_id = LLAMA_TOKEN_NULL; vocab.special_mask_id = LLAMA_TOKEN_NULL; const int precompiled_charsmap_keyidx = gguf_find_key(ctx, kv(LLM_KV_TOKENIZER_PRECOMPILED_CHARSMAP).c_str()); @@ -1464,7 +1459,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) { { LLM_KV_TOKENIZER_UNK_ID, vocab.special_unk_id }, { LLM_KV_TOKENIZER_SEP_ID, vocab.special_sep_id }, { LLM_KV_TOKENIZER_PAD_ID, vocab.special_pad_id }, - { LLM_KV_TOKENIZER_CLS_ID, vocab.special_cls_id }, { LLM_KV_TOKENIZER_MASK_ID, vocab.special_mask_id }, { LLM_KV_TOKENIZER_FIM_PRE_ID, vocab.special_fim_pre_id }, { LLM_KV_TOKENIZER_FIM_SUF_ID, vocab.special_fim_suf_id }, @@ -1899,7 +1893,6 @@ void llm_load_print_meta(llama_model_loader & ml, llama_model & model) { if (vocab.special_unk_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: UNK token = %d '%s'\n", __func__, vocab.special_unk_id, vocab.id_to_token[vocab.special_unk_id].text.c_str() ); } if (vocab.special_sep_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: SEP token = %d '%s'\n", __func__, vocab.special_sep_id, vocab.id_to_token[vocab.special_sep_id].text.c_str() ); } if (vocab.special_pad_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: PAD token = %d '%s'\n", __func__, vocab.special_pad_id, vocab.id_to_token[vocab.special_pad_id].text.c_str() ); } - if (vocab.special_cls_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: CLS token = %d '%s'\n", __func__, vocab.special_cls_id, vocab.id_to_token[vocab.special_cls_id].text.c_str() ); } if (vocab.special_mask_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: MASK token = %d '%s'\n", __func__, vocab.special_mask_id, vocab.id_to_token[vocab.special_mask_id].text.c_str() ); } if (vocab.linefeed_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: LF token = %d '%s'\n", __func__, vocab.linefeed_id, vocab.id_to_token[vocab.linefeed_id].text.c_str() ); } diff --git a/src/llama-vocab.cpp b/src/llama-vocab.cpp index 02acfc6e2d0c4..3f845246c6665 100644 --- a/src/llama-vocab.cpp +++ b/src/llama-vocab.cpp @@ -1515,8 +1515,8 @@ std::vector llama_tokenize_internal( case LLAMA_VOCAB_TYPE_WPM: { if (add_special) { - GGML_ASSERT(vocab.special_cls_id != LLAMA_TOKEN_NULL); - output.push_back(vocab.special_cls_id); + GGML_ASSERT(vocab.special_bos_id != LLAMA_TOKEN_NULL); + output.push_back(vocab.special_bos_id); } llm_tokenizer_wpm_session session(vocab); @@ -1643,7 +1643,7 @@ bool llama_token_is_control_impl(const struct llama_vocab & vocab, llama_token t } llama_token llama_token_bos_impl(const struct llama_vocab & vocab) { - return vocab.type != LLAMA_VOCAB_TYPE_WPM ? vocab.special_bos_id : vocab.special_cls_id; + return vocab.special_bos_id; } llama_token llama_token_eos_impl(const struct llama_vocab & vocab) { @@ -1658,10 +1658,6 @@ llama_token llama_token_eom_impl(const struct llama_vocab & vocab) { return vocab.special_eom_id; } -llama_token llama_token_cls_impl(const struct llama_vocab & vocab) { - return vocab.special_cls_id; -} - llama_token llama_token_sep_impl(const struct llama_vocab & vocab) { return vocab.special_sep_id; } diff --git a/src/llama-vocab.h b/src/llama-vocab.h index 0d00086da1a49..df2e3358719dc 100644 --- a/src/llama-vocab.h +++ b/src/llama-vocab.h @@ -57,7 +57,6 @@ struct llama_vocab { id special_unk_id = 0; id special_sep_id = LLAMA_TOKEN_NULL; id special_pad_id = LLAMA_TOKEN_NULL; - id special_cls_id = LLAMA_TOKEN_NULL; // TODO: revisit if this is really needed https://github.com/ggerganov/llama.cpp/pull/10930 id special_mask_id = LLAMA_TOKEN_NULL; id linefeed_id = 13; @@ -124,7 +123,6 @@ llama_token llama_token_bos_impl(const struct llama_vocab & vocab); llama_token llama_token_eos_impl(const struct llama_vocab & vocab); llama_token llama_token_eot_impl(const struct llama_vocab & vocab); llama_token llama_token_eom_impl(const struct llama_vocab & vocab); -llama_token llama_token_cls_impl(const struct llama_vocab & vocab); llama_token llama_token_sep_impl(const struct llama_vocab & vocab); llama_token llama_token_nl_impl (const struct llama_vocab & vocab); llama_token llama_token_pad_impl(const struct llama_vocab & vocab); diff --git a/src/llama.cpp b/src/llama.cpp index d7110b90bcce0..c94cf5b58d938 100644 --- a/src/llama.cpp +++ b/src/llama.cpp @@ -12061,7 +12061,7 @@ llama_token llama_token_eot(const struct llama_model * model) { } llama_token llama_token_cls(const struct llama_model * model) { - return llama_token_cls_impl(model->vocab); + return llama_token_bos_impl(model->vocab); } llama_token llama_token_sep(const struct llama_model * model) {