patrickvonplaten Rocketknight1 HF Staff commited on
Commit
bbae113
·
verified ·
1 Parent(s): a60832c

Align tokenizer with mistral-common (#225)

Browse files

- Align tokenizer with mistral-common (55849e17cc1ce98d8b067343cb18328692518001)
- Defend the honour of the HF tokenizer (e3f3eb8fd5144435f22c87235ef60cf4c7606467)
- Update chat template to handle sys messages (5d1db7f3f4eae5a1f40bd930d5c9599c523210ef)


Co-authored-by: Matthew Carrigan <Rocketknight1@users.noreply.huggingface.co>

Files changed (4) hide show
  1. README.md +2 -7
  2. special_tokens_map.json +21 -3
  3. tokenizer.json +7 -16
  4. tokenizer_config.json +4 -3
README.md CHANGED
@@ -1,11 +1,11 @@
1
  ---
2
- license: apache-2.0
3
  language:
4
  - fr
5
  - it
6
  - de
7
  - es
8
  - en
 
9
  inference:
10
  parameters:
11
  temperature: 0.5
@@ -16,12 +16,7 @@ widget:
16
  ---
17
  # Model Card for Mixtral-8x7B
18
 
19
- ###
20
-
21
- > [!CAUTION]
22
- > ⚠️
23
- > The `transformers` tokenizer might give incorrect results as it has not been tested by the Mistral team. To make sure that your encoding and decoding is correct, please use mistral-common as shown below:
24
-
25
 
26
  ```py
27
  from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
 
1
  ---
 
2
  language:
3
  - fr
4
  - it
5
  - de
6
  - es
7
  - en
8
+ license: apache-2.0
9
  inference:
10
  parameters:
11
  temperature: 0.5
 
16
  ---
17
  # Model Card for Mixtral-8x7B
18
 
19
+ ### Tokenization with `mistral-common`
 
 
 
 
 
20
 
21
  ```py
22
  from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
special_tokens_map.json CHANGED
@@ -1,5 +1,23 @@
1
  {
2
- "bos_token": "<s>",
3
- "eos_token": "</s>",
4
- "unk_token": "<unk>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  }
 
1
  {
2
+ "bos_token": {
3
+ "content": "<s>",
4
+ "lstrip": false,
5
+ "normalized": false,
6
+ "rstrip": false,
7
+ "single_word": false
8
+ },
9
+ "eos_token": {
10
+ "content": "</s>",
11
+ "lstrip": false,
12
+ "normalized": false,
13
+ "rstrip": false,
14
+ "single_word": false
15
+ },
16
+ "unk_token": {
17
+ "content": "<unk>",
18
+ "lstrip": false,
19
+ "normalized": false,
20
+ "rstrip": false,
21
+ "single_word": false
22
+ }
23
  }
tokenizer.json CHANGED
@@ -31,23 +31,13 @@
31
  "special": true
32
  }
33
  ],
34
- "normalizer": {
35
- "type": "Sequence",
36
- "normalizers": [
37
- {
38
- "type": "Prepend",
39
- "prepend": "▁"
40
- },
41
- {
42
- "type": "Replace",
43
- "pattern": {
44
- "String": " "
45
- },
46
- "content": "▁"
47
- }
48
- ]
49
  },
50
- "pre_tokenizer": null,
51
  "post_processor": {
52
  "type": "TemplateProcessing",
53
  "single": [
@@ -134,6 +124,7 @@
134
  "end_of_word_suffix": null,
135
  "fuse_unk": true,
136
  "byte_fallback": true,
 
137
  "vocab": {
138
  "<unk>": 0,
139
  "<s>": 1,
 
31
  "special": true
32
  }
33
  ],
34
+ "normalizer": null,
35
+ "pre_tokenizer": {
36
+ "type": "Metaspace",
37
+ "replacement": "▁",
38
+ "prepend_scheme": "first",
39
+ "split": false
 
 
 
 
 
 
 
 
 
40
  },
 
41
  "post_processor": {
42
  "type": "TemplateProcessing",
43
  "single": [
 
124
  "end_of_word_suffix": null,
125
  "fuse_unk": true,
126
  "byte_fallback": true,
127
+ "ignore_merges": false,
128
  "vocab": {
129
  "<unk>": 0,
130
  "<s>": 1,
tokenizer_config.json CHANGED
@@ -1,6 +1,7 @@
1
  {
2
  "add_bos_token": true,
3
  "add_eos_token": false,
 
4
  "added_tokens_decoder": {
5
  "0": {
6
  "content": "<unk>",
@@ -29,15 +30,15 @@
29
  },
30
  "additional_special_tokens": [],
31
  "bos_token": "<s>",
 
32
  "clean_up_tokenization_spaces": false,
33
  "eos_token": "</s>",
34
- "legacy": true,
35
  "model_max_length": 1000000000000000019884624838656,
36
  "pad_token": null,
37
  "sp_model_kwargs": {},
38
  "spaces_between_special_tokens": false,
39
  "tokenizer_class": "LlamaTokenizer",
40
  "unk_token": "<unk>",
41
- "use_default_system_prompt": false,
42
- "chat_template": "{{ bos_token }}{% for message in messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if message['role'] == 'user' %}{{ '[INST] ' + message['content'] + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ ' ' + message['content'] + eos_token}}{% else %}{{ raise_exception('Only user and assistant roles are supported!') }}{% endif %}{% endfor %}"
43
  }
 
1
  {
2
  "add_bos_token": true,
3
  "add_eos_token": false,
4
+ "add_prefix_space": null,
5
  "added_tokens_decoder": {
6
  "0": {
7
  "content": "<unk>",
 
30
  },
31
  "additional_special_tokens": [],
32
  "bos_token": "<s>",
33
+ "chat_template": "{%- if messages[0]['role'] == 'system' %}\n {%- set system_message = messages[0]['content'] %}\n {%- set loop_messages = messages[1:] %}\n{%- else %}\n {%- set loop_messages = messages %}\n{%- endif %}\n\n{{- bos_token }}\n{%- for message in loop_messages %}\n {%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}\n {{- raise_exception('After the optional system message, conversation roles must alternate user/assistant/user/assistant/...') }}\n {%- endif %}\n {%- if message['role'] == 'user' %}\n {%- if loop.first and system_message is defined %}\n {{- ' [INST] ' + system_message + '\\n\\n' + message['content'] + ' [/INST]' }}\n {%- else %}\n {{- ' [INST] ' + message['content'] + ' [/INST]' }}\n {%- endif %}\n {%- elif message['role'] == 'assistant' %}\n {{- ' ' + message['content'] + eos_token}}\n {%- else %}\n {{- raise_exception('Only user and assistant roles are supported, with the exception of an initial optional system message!') }}\n {%- endif %}\n{%- endfor %}\n",
34
  "clean_up_tokenization_spaces": false,
35
  "eos_token": "</s>",
36
+ "legacy": false,
37
  "model_max_length": 1000000000000000019884624838656,
38
  "pad_token": null,
39
  "sp_model_kwargs": {},
40
  "spaces_between_special_tokens": false,
41
  "tokenizer_class": "LlamaTokenizer",
42
  "unk_token": "<unk>",
43
+ "use_default_system_prompt": false
 
44
  }