Skip to content

Commit 747c85d

Browse files
committed
llama : remove notion of CLS token
ggml-ci
1 parent 47182dd commit 747c85d

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
@@ -183,7 +183,6 @@ class Tokenizer:
183183
UNK_ID = "tokenizer.ggml.unknown_token_id"
184184
SEP_ID = "tokenizer.ggml.seperator_token_id"
185185
PAD_ID = "tokenizer.ggml.padding_token_id"
186-
CLS_ID = "tokenizer.ggml.cls_token_id"
187186
MASK_ID = "tokenizer.ggml.mask_token_id"
188187
ADD_BOS = "tokenizer.ggml.add_bos_token"
189188
ADD_EOS = "tokenizer.ggml.add_eos_token"
@@ -1782,7 +1781,6 @@ def get_type(val: Any) -> GGUFValueType:
17821781
KEY_TOKENIZER_UNK_ID = Keys.Tokenizer.UNK_ID
17831782
KEY_TOKENIZER_SEP_ID = Keys.Tokenizer.SEP_ID
17841783
KEY_TOKENIZER_PAD_ID = Keys.Tokenizer.PAD_ID
1785-
KEY_TOKENIZER_CLS_ID = Keys.Tokenizer.CLS_ID
17861784
KEY_TOKENIZER_MASK_ID = Keys.Tokenizer.MASK_ID
17871785
KEY_TOKENIZER_HF_JSON = Keys.Tokenizer.HF_JSON
17881786
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
@@ -854,9 +854,6 @@ def add_sep_token_id(self, id: int) -> None:
854854
def add_pad_token_id(self, id: int) -> None:
855855
self.add_uint32(Keys.Tokenizer.PAD_ID, id)
856856

857-
def add_cls_token_id(self, id: int) -> None:
858-
self.add_uint32(Keys.Tokenizer.CLS_ID, id)
859-
860857
def add_mask_token_id(self, id: int) -> None:
861858
self.add_uint32(Keys.Tokenizer.MASK_ID, id)
862859

include/llama.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -924,11 +924,14 @@ extern "C" {
924924
LLAMA_API llama_token llama_token_bos(const struct llama_model * model); // beginning-of-sentence
925925
LLAMA_API llama_token llama_token_eos(const struct llama_model * model); // end-of-sentence
926926
LLAMA_API llama_token llama_token_eot(const struct llama_model * model); // end-of-turn
927-
LLAMA_API llama_token llama_token_cls(const struct llama_model * model); // classification
928927
LLAMA_API llama_token llama_token_sep(const struct llama_model * model); // sentence separator
929928
LLAMA_API llama_token llama_token_nl (const struct llama_model * model); // next-line
930929
LLAMA_API llama_token llama_token_pad(const struct llama_model * model); // padding
931930

931+
// CLS is equivalent to BOS
932+
DEPRECATED(LLAMA_API llama_token llama_token_cls(const struct llama_model * model), // classification
933+
"use llama_token_bos instead");
934+
932935
LLAMA_API bool llama_add_bos_token(const struct llama_model * model);
933936
LLAMA_API bool llama_add_eos_token(const struct llama_model * model);
934937

src/llama-model.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,7 +1134,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) {
11341134
vocab.special_unk_id = LLAMA_TOKEN_NULL;
11351135
vocab.special_sep_id = LLAMA_TOKEN_NULL;
11361136
vocab.special_pad_id = LLAMA_TOKEN_NULL;
1137-
vocab.special_cls_id = LLAMA_TOKEN_NULL;
11381137
vocab.special_mask_id = LLAMA_TOKEN_NULL;
11391138
vocab.linefeed_id = LLAMA_TOKEN_NULL;
11401139

@@ -1155,18 +1154,16 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) {
11551154
vocab.special_unk_id = 0;
11561155
vocab.special_sep_id = LLAMA_TOKEN_NULL;
11571156
vocab.special_pad_id = LLAMA_TOKEN_NULL;
1158-
vocab.special_cls_id = LLAMA_TOKEN_NULL;
11591157
vocab.special_mask_id = LLAMA_TOKEN_NULL;
11601158
} else if (tokenizer_model == "bert") {
11611159
vocab.type = LLAMA_VOCAB_TYPE_WPM;
11621160

11631161
// default special tokens
1164-
vocab.special_bos_id = LLAMA_TOKEN_NULL;
1162+
vocab.special_bos_id = 101;
11651163
vocab.special_eos_id = LLAMA_TOKEN_NULL;
11661164
vocab.special_unk_id = 100;
11671165
vocab.special_sep_id = 102;
11681166
vocab.special_pad_id = 0;
1169-
vocab.special_cls_id = 101;
11701167
vocab.special_mask_id = 103;
11711168
} else if (tokenizer_model == "gpt2") {
11721169
vocab.type = LLAMA_VOCAB_TYPE_BPE;
@@ -1201,7 +1198,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) {
12011198
vocab.special_unk_id = LLAMA_TOKEN_NULL;
12021199
vocab.special_sep_id = LLAMA_TOKEN_NULL;
12031200
vocab.special_pad_id = LLAMA_TOKEN_NULL;
1204-
vocab.special_cls_id = LLAMA_TOKEN_NULL;
12051201
vocab.special_mask_id = LLAMA_TOKEN_NULL;
12061202
} else if (tokenizer_model == "t5") {
12071203
vocab.type = LLAMA_VOCAB_TYPE_UGM;
@@ -1212,7 +1208,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) {
12121208
vocab.special_unk_id = 2;
12131209
vocab.special_sep_id = LLAMA_TOKEN_NULL;
12141210
vocab.special_pad_id = 0;
1215-
vocab.special_cls_id = LLAMA_TOKEN_NULL;
12161211
vocab.special_mask_id = LLAMA_TOKEN_NULL;
12171212

12181213
const int precompiled_charsmap_keyidx = gguf_find_key(ctx, kv(LLM_KV_TOKENIZER_PRECOMPILED_CHARSMAP).c_str());
@@ -1495,7 +1490,6 @@ void llm_load_vocab(llama_model_loader & ml, llama_model & model) {
14951490
{ LLM_KV_TOKENIZER_UNK_ID, vocab.special_unk_id },
14961491
{ LLM_KV_TOKENIZER_SEP_ID, vocab.special_sep_id },
14971492
{ LLM_KV_TOKENIZER_PAD_ID, vocab.special_pad_id },
1498-
{ LLM_KV_TOKENIZER_CLS_ID, vocab.special_cls_id },
14991493
{ LLM_KV_TOKENIZER_MASK_ID, vocab.special_mask_id },
15001494
{ LLM_KV_TOKENIZER_FIM_PRE_ID, vocab.special_fim_pre_id },
15011495
{ LLM_KV_TOKENIZER_FIM_SUF_ID, vocab.special_fim_suf_id },
@@ -1930,7 +1924,6 @@ void llm_load_print_meta(llama_model_loader & ml, llama_model & model) {
19301924
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() ); }
19311925
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() ); }
19321926
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() ); }
1933-
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() ); }
19341927
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() ); }
19351928

19361929
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
@@ -1522,8 +1522,8 @@ std::vector<llama_vocab::id> llama_tokenize_internal(
15221522
case LLAMA_VOCAB_TYPE_WPM:
15231523
{
15241524
if (add_special) {
1525-
GGML_ASSERT(vocab.special_cls_id != LLAMA_TOKEN_NULL);
1526-
output.push_back(vocab.special_cls_id);
1525+
GGML_ASSERT(vocab.special_bos_id != LLAMA_TOKEN_NULL);
1526+
output.push_back(vocab.special_bos_id);
15271527
}
15281528

15291529
llm_tokenizer_wpm_session session(vocab);
@@ -1650,7 +1650,7 @@ bool llama_token_is_control_impl(const struct llama_vocab & vocab, llama_token t
16501650
}
16511651

16521652
llama_token llama_token_bos_impl(const struct llama_vocab & vocab) {
1653-
return vocab.type != LLAMA_VOCAB_TYPE_WPM ? vocab.special_bos_id : vocab.special_cls_id;
1653+
return vocab.special_bos_id;
16541654
}
16551655

16561656
llama_token llama_token_eos_impl(const struct llama_vocab & vocab) {
@@ -1665,10 +1665,6 @@ llama_token llama_token_eom_impl(const struct llama_vocab & vocab) {
16651665
return vocab.special_eom_id;
16661666
}
16671667

1668-
llama_token llama_token_cls_impl(const struct llama_vocab & vocab) {
1669-
return vocab.special_cls_id;
1670-
}
1671-
16721668
llama_token llama_token_sep_impl(const struct llama_vocab & vocab) {
16731669
return vocab.special_sep_id;
16741670
}

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
@@ -12267,7 +12267,7 @@ llama_token llama_token_eot(const struct llama_model * model) {
1226712267
}
1226812268

1226912269
llama_token llama_token_cls(const struct llama_model * model) {
12270-
return llama_token_cls_impl(model->vocab);
12270+
return llama_token_bos_impl(model->vocab);
1227112271
}
1227212272

1227312273
llama_token llama_token_sep(const struct llama_model * model) {

0 commit comments

Comments
 (0)