Skip to content

Commit 08f10f6

Browse files
authored
llama : remove notion of CLS token (ggml-org#11064)
ggml-ci
1 parent afa8a9e commit 08f10f6

File tree

5 files changed

+12
-25
lines changed

5 files changed

+12
-25
lines changed

gguf-py/gguf/constants.py

-2
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,6 @@ class Tokenizer:
184184
UNK_ID = "tokenizer.ggml.unknown_token_id"
185185
SEP_ID = "tokenizer.ggml.seperator_token_id"
186186
PAD_ID = "tokenizer.ggml.padding_token_id"
187-
CLS_ID = "tokenizer.ggml.cls_token_id"
188187
MASK_ID = "tokenizer.ggml.mask_token_id"
189188
ADD_BOS = "tokenizer.ggml.add_bos_token"
190189
ADD_EOS = "tokenizer.ggml.add_eos_token"
@@ -1837,7 +1836,6 @@ def get_type(val: Any) -> GGUFValueType:
18371836
KEY_TOKENIZER_UNK_ID = Keys.Tokenizer.UNK_ID
18381837
KEY_TOKENIZER_SEP_ID = Keys.Tokenizer.SEP_ID
18391838
KEY_TOKENIZER_PAD_ID = Keys.Tokenizer.PAD_ID
1840-
KEY_TOKENIZER_CLS_ID = Keys.Tokenizer.CLS_ID
18411839
KEY_TOKENIZER_MASK_ID = Keys.Tokenizer.MASK_ID
18421840
KEY_TOKENIZER_HF_JSON = Keys.Tokenizer.HF_JSON
18431841
KEY_TOKENIZER_RWKV = Keys.Tokenizer.RWKV

gguf-py/gguf/gguf_writer.py

-3
Original file line numberDiff line numberDiff line change
@@ -857,9 +857,6 @@ def add_sep_token_id(self, id: int) -> None:
857857
def add_pad_token_id(self, id: int) -> None:
858858
self.add_uint32(Keys.Tokenizer.PAD_ID, id)
859859

860-
def add_cls_token_id(self, id: int) -> None:
861-
self.add_uint32(Keys.Tokenizer.CLS_ID, id)
862-
863860
def add_mask_token_id(self, id: int) -> None:
864861
self.add_uint32(Keys.Tokenizer.MASK_ID, id)
865862

include/llama.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -937,7 +937,6 @@ extern "C" {
937937
LLAMA_API llama_token llama_vocab_bos(const struct llama_vocab * vocab); // beginning-of-sentence
938938
LLAMA_API llama_token llama_vocab_eos(const struct llama_vocab * vocab); // end-of-sentence
939939
LLAMA_API llama_token llama_vocab_eot(const struct llama_vocab * vocab); // end-of-turn
940-
LLAMA_API llama_token llama_vocab_cls(const struct llama_vocab * vocab); // classification
941940
LLAMA_API llama_token llama_vocab_sep(const struct llama_vocab * vocab); // sentence separator
942941
LLAMA_API llama_token llama_vocab_nl (const struct llama_vocab * vocab); // next-line
943942
LLAMA_API llama_token llama_vocab_pad(const struct llama_vocab * vocab); // padding
@@ -973,6 +972,10 @@ extern "C" {
973972
DEPRECATED(LLAMA_API llama_token llama_token_fim_rep(const struct llama_vocab * vocab), "use llama_vocab_fim_rep instead");
974973
DEPRECATED(LLAMA_API llama_token llama_token_fim_sep(const struct llama_vocab * vocab), "use llama_vocab_fim_sep instead");
975974

975+
// CLS is equivalent to BOS
976+
DEPRECATED(LLAMA_API llama_token llama_vocab_cls(const struct llama_vocab * vocab), // classification
977+
"use llama_vocab_bos instead");
978+
976979
//
977980
// Tokenization
978981
//

src/llama-vocab.cpp

+8-18
Original file line numberDiff line numberDiff line change
@@ -1218,7 +1218,6 @@ struct llama_vocab::impl {
12181218
llama_token special_unk_id = 0;
12191219
llama_token special_sep_id = LLAMA_TOKEN_NULL;
12201220
llama_token special_pad_id = LLAMA_TOKEN_NULL;
1221-
llama_token special_cls_id = LLAMA_TOKEN_NULL; // TODO: revisit if this is really needed https://github.com/ggerganov/llama.cpp/pull/10930
12221221
llama_token special_mask_id = LLAMA_TOKEN_NULL;
12231222

12241223
llama_token linefeed_id = 13;
@@ -1352,7 +1351,6 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) {
13521351
special_unk_id = LLAMA_TOKEN_NULL;
13531352
special_sep_id = LLAMA_TOKEN_NULL;
13541353
special_pad_id = LLAMA_TOKEN_NULL;
1355-
special_cls_id = LLAMA_TOKEN_NULL;
13561354
special_mask_id = LLAMA_TOKEN_NULL;
13571355
linefeed_id = LLAMA_TOKEN_NULL;
13581356

@@ -1374,18 +1372,16 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) {
13741372
special_unk_id = 0;
13751373
special_sep_id = LLAMA_TOKEN_NULL;
13761374
special_pad_id = LLAMA_TOKEN_NULL;
1377-
special_cls_id = LLAMA_TOKEN_NULL;
13781375
special_mask_id = LLAMA_TOKEN_NULL;
13791376
} else if (tokenizer_model == "bert") {
13801377
type = LLAMA_VOCAB_TYPE_WPM;
13811378

13821379
// default special tokens
1383-
special_bos_id = LLAMA_TOKEN_NULL;
1380+
special_bos_id = 101;
13841381
special_eos_id = LLAMA_TOKEN_NULL;
13851382
special_unk_id = 100;
13861383
special_sep_id = 102;
13871384
special_pad_id = 0;
1388-
special_cls_id = 101;
13891385
special_mask_id = 103;
13901386
} else if (tokenizer_model == "gpt2") {
13911387
type = LLAMA_VOCAB_TYPE_BPE;
@@ -1420,7 +1416,6 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) {
14201416
special_unk_id = LLAMA_TOKEN_NULL;
14211417
special_sep_id = LLAMA_TOKEN_NULL;
14221418
special_pad_id = LLAMA_TOKEN_NULL;
1423-
special_cls_id = LLAMA_TOKEN_NULL;
14241419
special_mask_id = LLAMA_TOKEN_NULL;
14251420
} else if (tokenizer_model == "t5") {
14261421
type = LLAMA_VOCAB_TYPE_UGM;
@@ -1431,7 +1426,6 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) {
14311426
special_unk_id = 2;
14321427
special_sep_id = LLAMA_TOKEN_NULL;
14331428
special_pad_id = 0;
1434-
special_cls_id = LLAMA_TOKEN_NULL;
14351429
special_mask_id = LLAMA_TOKEN_NULL;
14361430

14371431
const int precompiled_charsmap_keyidx = gguf_find_key(ctx, kv(LLM_KV_TOKENIZER_PRECOMPILED_CHARSMAP).c_str());
@@ -1712,7 +1706,6 @@ void llama_vocab::impl::load(llama_model_loader & ml, const LLM_KV & kv) {
17121706
{ LLM_KV_TOKENIZER_UNK_ID, special_unk_id },
17131707
{ LLM_KV_TOKENIZER_SEP_ID, special_sep_id },
17141708
{ LLM_KV_TOKENIZER_PAD_ID, special_pad_id },
1715-
{ LLM_KV_TOKENIZER_CLS_ID, special_cls_id },
17161709
{ LLM_KV_TOKENIZER_MASK_ID, special_mask_id },
17171710
{ LLM_KV_TOKENIZER_FIM_PRE_ID, special_fim_pre_id },
17181711
{ LLM_KV_TOKENIZER_FIM_SUF_ID, special_fim_suf_id },
@@ -2406,8 +2399,8 @@ std::vector<llama_token> llama_vocab::impl::tokenize(
24062399
case LLAMA_VOCAB_TYPE_WPM:
24072400
{
24082401
if (add_special) {
2409-
GGML_ASSERT(special_cls_id != LLAMA_TOKEN_NULL);
2410-
output.push_back(special_cls_id);
2402+
GGML_ASSERT(special_bos_id != LLAMA_TOKEN_NULL);
2403+
output.push_back(special_bos_id);
24112404
}
24122405

24132406
llm_tokenizer_wpm_session session(vocab);
@@ -2700,7 +2693,6 @@ void llama_vocab::impl::print_info() const {
27002693
if (special_unk_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: UNK token = %d '%s'\n", __func__, special_unk_id, id_to_token[special_unk_id].text.c_str() ); }
27012694
if (special_sep_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: SEP token = %d '%s'\n", __func__, special_sep_id, id_to_token[special_sep_id].text.c_str() ); }
27022695
if (special_pad_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: PAD token = %d '%s'\n", __func__, special_pad_id, id_to_token[special_pad_id].text.c_str() ); }
2703-
if (special_cls_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: CLS token = %d '%s'\n", __func__, special_cls_id, id_to_token[special_cls_id].text.c_str() ); }
27042696
if (special_mask_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: MASK token = %d '%s'\n", __func__, special_mask_id, id_to_token[special_mask_id].text.c_str() ); }
27052697

27062698
if (linefeed_id != LLAMA_TOKEN_NULL) { LLAMA_LOG_INFO( "%s: LF token = %d '%s'\n", __func__, linefeed_id, id_to_token[linefeed_id].text.c_str() ); }
@@ -2834,7 +2826,7 @@ llama_token_attr llama_vocab::token_get_attr(llama_token id) const {
28342826
}
28352827

28362828
llama_token llama_vocab::token_bos() const {
2837-
return pimpl->type != LLAMA_VOCAB_TYPE_WPM ? pimpl->special_bos_id : pimpl->special_cls_id;
2829+
return pimpl->special_bos_id;
28382830
}
28392831

28402832
llama_token llama_vocab::token_eos() const {
@@ -2853,10 +2845,6 @@ llama_token llama_vocab::token_unk() const {
28532845
return pimpl->special_unk_id;
28542846
}
28552847

2856-
llama_token llama_vocab::token_cls() const {
2857-
return pimpl->special_cls_id;
2858-
}
2859-
28602848
llama_token llama_vocab::token_sep() const {
28612849
return pimpl->special_sep_id;
28622850
}
@@ -3069,8 +3057,9 @@ llama_token llama_vocab_eot(const struct llama_vocab * vocab) {
30693057
return vocab->token_eot();
30703058
}
30713059

3060+
// deprecated
30723061
llama_token llama_vocab_cls(const struct llama_vocab * vocab) {
3073-
return vocab->token_cls();
3062+
return vocab->token_bos();
30743063
}
30753064

30763065
llama_token llama_vocab_sep(const struct llama_vocab * vocab) {
@@ -3159,7 +3148,8 @@ llama_token llama_token_eot(const struct llama_vocab * vocab) {
31593148

31603149
// deprecated
31613150
llama_token llama_token_cls(const struct llama_vocab * vocab) {
3162-
return llama_vocab_cls(vocab);
3151+
//return llama_vocab_cls(vocab);
3152+
return llama_vocab_bos(vocab); // avoid deprecation warning
31633153
}
31643154

31653155
// deprecated

src/llama-vocab.h

-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ struct llama_vocab {
5353
llama_token token_eot() const;
5454
llama_token token_eom() const;
5555
llama_token token_unk() const;
56-
llama_token token_cls() const;
5756
llama_token token_sep() const;
5857
llama_token token_nl () const;
5958
llama_token token_pad() const;

0 commit comments

Comments
 (0)