Skip to content

Commit a5942f0

Browse files
committed
llama : remove notion of CLS token
ggml-ci
1 parent c7b006f commit a5942f0

File tree

7 files changed

+9
-24
lines changed

7 files changed

+9
-24
lines changed

gguf-py/gguf/constants.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,6 @@ class Tokenizer:
181181
UNK_ID = "tokenizer.ggml.unknown_token_id"
182182
SEP_ID = "tokenizer.ggml.seperator_token_id"
183183
PAD_ID = "tokenizer.ggml.padding_token_id"
184-
CLS_ID = "tokenizer.ggml.cls_token_id"
185184
MASK_ID = "tokenizer.ggml.mask_token_id"
186185
ADD_BOS = "tokenizer.ggml.add_bos_token"
187186
ADD_EOS = "tokenizer.ggml.add_eos_token"
@@ -1758,7 +1757,6 @@ def get_type(val: Any) -> GGUFValueType:
17581757
KEY_TOKENIZER_UNK_ID = Keys.Tokenizer.UNK_ID
17591758
KEY_TOKENIZER_SEP_ID = Keys.Tokenizer.SEP_ID
17601759
KEY_TOKENIZER_PAD_ID = Keys.Tokenizer.PAD_ID
1761-
KEY_TOKENIZER_CLS_ID = Keys.Tokenizer.CLS_ID
17621760
KEY_TOKENIZER_MASK_ID = Keys.Tokenizer.MASK_ID
17631761
KEY_TOKENIZER_HF_JSON = Keys.Tokenizer.HF_JSON
17641762
KEY_TOKENIZER_RWKV = Keys.Tokenizer.RWKV

gguf-py/gguf/gguf_writer.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -847,9 +847,6 @@ def add_sep_token_id(self, id: int) -> None:
847847
def add_pad_token_id(self, id: int) -> None:
848848
self.add_uint32(Keys.Tokenizer.PAD_ID, id)
849849

850-
def add_cls_token_id(self, id: int) -> None:
851-
self.add_uint32(Keys.Tokenizer.CLS_ID, id)
852-
853850
def add_mask_token_id(self, id: int) -> None:
854851
self.add_uint32(Keys.Tokenizer.MASK_ID, id)
855852

include/llama.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -916,11 +916,14 @@ extern "C" {
916916
LLAMA_API llama_token llama_token_bos(const struct llama_model * model); // beginning-of-sentence
917917
LLAMA_API llama_token llama_token_eos(const struct llama_model * model); // end-of-sentence
918918
LLAMA_API llama_token llama_token_eot(const struct llama_model * model); // end-of-turn
919-
LLAMA_API llama_token llama_token_cls(const struct llama_model * model); // classification
920919
LLAMA_API llama_token llama_token_sep(const struct llama_model * model); // sentence separator
921920
LLAMA_API llama_token llama_token_nl (const struct llama_model * model); // next-line
922921
LLAMA_API llama_token llama_token_pad(const struct llama_model * model); // padding
923922

923+
// CLS is equivalent to BOS
924+
DEPRECATED(LLAMA_API llama_token llama_token_cls(const struct llama_model * model), // classification
925+
"use llama_token_bos instead");
926+
924927
LLAMA_API bool llama_add_bos_token(const struct llama_model * model);
925928
LLAMA_API bool llama_add_eos_token(const struct llama_model * model);
926929

src/llama-model.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1107,7 +1107,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) {
11071107
vocab.special_unk_id = LLAMA_TOKEN_NULL;
11081108
vocab.special_sep_id = LLAMA_TOKEN_NULL;
11091109
vocab.special_pad_id = LLAMA_TOKEN_NULL;
1110-
vocab.special_cls_id = LLAMA_TOKEN_NULL;
11111110
vocab.special_mask_id = LLAMA_TOKEN_NULL;
11121111
vocab.linefeed_id = LLAMA_TOKEN_NULL;
11131112

@@ -1128,18 +1127,16 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) {
11281127
vocab.special_unk_id = 0;
11291128
vocab.special_sep_id = LLAMA_TOKEN_NULL;
11301129
vocab.special_pad_id = LLAMA_TOKEN_NULL;
1131-
vocab.special_cls_id = LLAMA_TOKEN_NULL;
11321130
vocab.special_mask_id = LLAMA_TOKEN_NULL;
11331131
} else if (tokenizer_model == "bert") {
11341132
vocab.type = LLAMA_VOCAB_TYPE_WPM;
11351133

11361134
// default special tokens
1137-
vocab.special_bos_id = LLAMA_TOKEN_NULL;
1135+
vocab.special_bos_id = 101;
11381136
vocab.special_eos_id = LLAMA_TOKEN_NULL;
11391137
vocab.special_unk_id = 100;
11401138
vocab.special_sep_id = 102;
11411139
vocab.special_pad_id = 0;
1142-
vocab.special_cls_id = 101;
11431140
vocab.special_mask_id = 103;
11441141
} else if (tokenizer_model == "gpt2") {
11451142
vocab.type = LLAMA_VOCAB_TYPE_BPE;
@@ -1174,7 +1171,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) {
11741171
vocab.special_unk_id = LLAMA_TOKEN_NULL;
11751172
vocab.special_sep_id = LLAMA_TOKEN_NULL;
11761173
vocab.special_pad_id = LLAMA_TOKEN_NULL;
1177-
vocab.special_cls_id = LLAMA_TOKEN_NULL;
11781174
vocab.special_mask_id = LLAMA_TOKEN_NULL;
11791175
} else if (tokenizer_model == "t5") {
11801176
vocab.type = LLAMA_VOCAB_TYPE_UGM;
@@ -1185,7 +1181,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) {
11851181
vocab.special_unk_id = 2;
11861182
vocab.special_sep_id = LLAMA_TOKEN_NULL;
11871183
vocab.special_pad_id = 0;
1188-
vocab.special_cls_id = LLAMA_TOKEN_NULL;
11891184
vocab.special_mask_id = LLAMA_TOKEN_NULL;
11901185

11911186
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) {
14641459
{ LLM_KV_TOKENIZER_UNK_ID, vocab.special_unk_id },
14651460
{ LLM_KV_TOKENIZER_SEP_ID, vocab.special_sep_id },
14661461
{ LLM_KV_TOKENIZER_PAD_ID, vocab.special_pad_id },
1467-
{ LLM_KV_TOKENIZER_CLS_ID, vocab.special_cls_id },
14681462
{ LLM_KV_TOKENIZER_MASK_ID, vocab.special_mask_id },
14691463
{ LLM_KV_TOKENIZER_FIM_PRE_ID, vocab.special_fim_pre_id },
14701464
{ 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) {
18991893
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() ); }
19001894
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() ); }
19011895
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() ); }
1902-
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() ); }
19031896
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() ); }
19041897

19051898
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() ); }

src/llama-vocab.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,8 +1515,8 @@ std::vector<llama_vocab::id> llama_tokenize_internal(
15151515
case LLAMA_VOCAB_TYPE_WPM:
15161516
{
15171517
if (add_special) {
1518-
GGML_ASSERT(vocab.special_cls_id != LLAMA_TOKEN_NULL);
1519-
output.push_back(vocab.special_cls_id);
1518+
GGML_ASSERT(vocab.special_bos_id != LLAMA_TOKEN_NULL);
1519+
output.push_back(vocab.special_bos_id);
15201520
}
15211521

15221522
llm_tokenizer_wpm_session session(vocab);
@@ -1643,7 +1643,7 @@ bool llama_token_is_control_impl(const struct llama_vocab & vocab, llama_token t
16431643
}
16441644

16451645
llama_token llama_token_bos_impl(const struct llama_vocab & vocab) {
1646-
return vocab.type != LLAMA_VOCAB_TYPE_WPM ? vocab.special_bos_id : vocab.special_cls_id;
1646+
return vocab.special_bos_id;
16471647
}
16481648

16491649
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) {
16581658
return vocab.special_eom_id;
16591659
}
16601660

1661-
llama_token llama_token_cls_impl(const struct llama_vocab & vocab) {
1662-
return vocab.special_cls_id;
1663-
}
1664-
16651661
llama_token llama_token_sep_impl(const struct llama_vocab & vocab) {
16661662
return vocab.special_sep_id;
16671663
}

src/llama-vocab.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ struct llama_vocab {
5757
id special_unk_id = 0;
5858
id special_sep_id = LLAMA_TOKEN_NULL;
5959
id special_pad_id = LLAMA_TOKEN_NULL;
60-
id special_cls_id = LLAMA_TOKEN_NULL; // TODO: revisit if this is really needed https://github.com/ggerganov/llama.cpp/pull/10930
6160
id special_mask_id = LLAMA_TOKEN_NULL;
6261

6362
id linefeed_id = 13;
@@ -124,7 +123,6 @@ llama_token llama_token_bos_impl(const struct llama_vocab & vocab);
124123
llama_token llama_token_eos_impl(const struct llama_vocab & vocab);
125124
llama_token llama_token_eot_impl(const struct llama_vocab & vocab);
126125
llama_token llama_token_eom_impl(const struct llama_vocab & vocab);
127-
llama_token llama_token_cls_impl(const struct llama_vocab & vocab);
128126
llama_token llama_token_sep_impl(const struct llama_vocab & vocab);
129127
llama_token llama_token_nl_impl (const struct llama_vocab & vocab);
130128
llama_token llama_token_pad_impl(const struct llama_vocab & vocab);

src/llama.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12061,7 +12061,7 @@ llama_token llama_token_eot(const struct llama_model * model) {
1206112061
}
1206212062

1206312063
llama_token llama_token_cls(const struct llama_model * model) {
12064-
return llama_token_cls_impl(model->vocab);
12064+
return llama_token_bos_impl(model->vocab);
1206512065
}
1206612066

1206712067
llama_token llama_token_sep(const struct llama_model * model) {

0 commit comments

Comments
 (0)