wangrongsheng commited on
Commit
e23e6a8
·
1 Parent(s): f9bf84a
Files changed (49) hide show
  1. LLM-Detector-V4-11w/README.md +56 -0
  2. LLM-Detector-V4-11w/adapter_config.json +22 -0
  3. LLM-Detector-V4-11w/adapter_model.bin +3 -0
  4. LLM-Detector-V4-11w/all_results.json +7 -0
  5. LLM-Detector-V4-11w/checkpoint-1000/README.md +207 -0
  6. LLM-Detector-V4-11w/checkpoint-1000/adapter_config.json +22 -0
  7. LLM-Detector-V4-11w/checkpoint-1000/adapter_model.bin +3 -0
  8. LLM-Detector-V4-11w/checkpoint-1000/optimizer.pt +3 -0
  9. LLM-Detector-V4-11w/checkpoint-1000/qwen.tiktoken +0 -0
  10. LLM-Detector-V4-11w/checkpoint-1000/rng_state.pth +3 -0
  11. LLM-Detector-V4-11w/checkpoint-1000/scheduler.pt +3 -0
  12. LLM-Detector-V4-11w/checkpoint-1000/special_tokens_map.json +7 -0
  13. LLM-Detector-V4-11w/checkpoint-1000/tokenization_qwen.py +276 -0
  14. LLM-Detector-V4-11w/checkpoint-1000/tokenizer_config.json +13 -0
  15. LLM-Detector-V4-11w/checkpoint-1000/trainer_state.json +79 -0
  16. LLM-Detector-V4-11w/checkpoint-1000/training_args.bin +3 -0
  17. LLM-Detector-V4-11w/checkpoint-2000/README.md +207 -0
  18. LLM-Detector-V4-11w/checkpoint-2000/adapter_config.json +22 -0
  19. LLM-Detector-V4-11w/checkpoint-2000/adapter_model.bin +3 -0
  20. LLM-Detector-V4-11w/checkpoint-2000/optimizer.pt +3 -0
  21. LLM-Detector-V4-11w/checkpoint-2000/qwen.tiktoken +0 -0
  22. LLM-Detector-V4-11w/checkpoint-2000/rng_state.pth +3 -0
  23. LLM-Detector-V4-11w/checkpoint-2000/scheduler.pt +3 -0
  24. LLM-Detector-V4-11w/checkpoint-2000/special_tokens_map.json +7 -0
  25. LLM-Detector-V4-11w/checkpoint-2000/tokenization_qwen.py +276 -0
  26. LLM-Detector-V4-11w/checkpoint-2000/tokenizer_config.json +13 -0
  27. LLM-Detector-V4-11w/checkpoint-2000/trainer_state.json +139 -0
  28. LLM-Detector-V4-11w/checkpoint-2000/training_args.bin +3 -0
  29. LLM-Detector-V4-11w/checkpoint-3000/README.md +207 -0
  30. LLM-Detector-V4-11w/checkpoint-3000/adapter_config.json +22 -0
  31. LLM-Detector-V4-11w/checkpoint-3000/adapter_model.bin +3 -0
  32. LLM-Detector-V4-11w/checkpoint-3000/optimizer.pt +3 -0
  33. LLM-Detector-V4-11w/checkpoint-3000/qwen.tiktoken +0 -0
  34. LLM-Detector-V4-11w/checkpoint-3000/rng_state.pth +3 -0
  35. LLM-Detector-V4-11w/checkpoint-3000/scheduler.pt +3 -0
  36. LLM-Detector-V4-11w/checkpoint-3000/special_tokens_map.json +7 -0
  37. LLM-Detector-V4-11w/checkpoint-3000/tokenization_qwen.py +276 -0
  38. LLM-Detector-V4-11w/checkpoint-3000/tokenizer_config.json +13 -0
  39. LLM-Detector-V4-11w/checkpoint-3000/trainer_state.json +199 -0
  40. LLM-Detector-V4-11w/checkpoint-3000/training_args.bin +3 -0
  41. LLM-Detector-V4-11w/qwen.tiktoken +0 -0
  42. LLM-Detector-V4-11w/special_tokens_map.json +7 -0
  43. LLM-Detector-V4-11w/tokenization_qwen.py +276 -0
  44. LLM-Detector-V4-11w/tokenizer_config.json +13 -0
  45. LLM-Detector-V4-11w/train_results.json +7 -0
  46. LLM-Detector-V4-11w/trainer_log.jsonl +38 -0
  47. LLM-Detector-V4-11w/trainer_state.json +250 -0
  48. LLM-Detector-V4-11w/training_args.bin +3 -0
  49. LLM-Detector-V4-11w/training_loss.png +0 -0
LLM-Detector-V4-11w/README.md ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ base_model: ./Qwen-1_8B-Chat
4
+ tags:
5
+ - llama-factory
6
+ - lora
7
+ - generated_from_trainer
8
+ model-index:
9
+ - name: qwen-1.8b-1
10
+ results: []
11
+ ---
12
+
13
+ <!-- This model card has been generated automatically according to the information the Trainer had access to. You
14
+ should probably proofread and complete it, then remove this comment. -->
15
+
16
+ # qwen-1.8b-1
17
+
18
+ This model is a fine-tuned version of [./Qwen-1_8B-Chat](https://huggingface.co/./Qwen-1_8B-Chat) on the ta, the tb, the tc, the td, the te, the tf, the tg and the th datasets.
19
+
20
+ ## Model description
21
+
22
+ More information needed
23
+
24
+ ## Intended uses & limitations
25
+
26
+ More information needed
27
+
28
+ ## Training and evaluation data
29
+
30
+ More information needed
31
+
32
+ ## Training procedure
33
+
34
+ ### Training hyperparameters
35
+
36
+ The following hyperparameters were used during training:
37
+ - learning_rate: 5e-05
38
+ - train_batch_size: 8
39
+ - eval_batch_size: 8
40
+ - seed: 42
41
+ - gradient_accumulation_steps: 4
42
+ - total_train_batch_size: 32
43
+ - optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
44
+ - lr_scheduler_type: cosine
45
+ - num_epochs: 1.0
46
+
47
+ ### Training results
48
+
49
+
50
+
51
+ ### Framework versions
52
+
53
+ - Transformers 4.33.0
54
+ - Pytorch 2.1.1+cu121
55
+ - Datasets 2.14.7
56
+ - Tokenizers 0.13.3
LLM-Detector-V4-11w/adapter_config.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alpha_pattern": {},
3
+ "auto_mapping": null,
4
+ "base_model_name_or_path": "./Qwen-1_8B-Chat",
5
+ "bias": "none",
6
+ "fan_in_fan_out": false,
7
+ "inference_mode": true,
8
+ "init_lora_weights": true,
9
+ "layers_pattern": null,
10
+ "layers_to_transform": null,
11
+ "lora_alpha": 16.0,
12
+ "lora_dropout": 0.1,
13
+ "modules_to_save": null,
14
+ "peft_type": "LORA",
15
+ "r": 8,
16
+ "rank_pattern": {},
17
+ "revision": null,
18
+ "target_modules": [
19
+ "c_attn"
20
+ ],
21
+ "task_type": "CAUSAL_LM"
22
+ }
LLM-Detector-V4-11w/adapter_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e6965aafad356ecc98e45461ada6572c6cd6eacd624f7f2001ff6a47130d5d0c
3
+ size 6308670
LLM-Detector-V4-11w/all_results.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "epoch": 1.0,
3
+ "train_loss": 0.09819089700903973,
4
+ "train_runtime": 7694.3429,
5
+ "train_samples_per_second": 15.456,
6
+ "train_steps_per_second": 0.483
7
+ }
LLM-Detector-V4-11w/checkpoint-1000/README.md ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: peft
3
+ base_model: ./Qwen-1_8B-Chat
4
+ ---
5
+
6
+ # Model Card for Model ID
7
+
8
+ <!-- Provide a quick summary of what the model is/does. -->
9
+
10
+
11
+
12
+ ## Model Details
13
+
14
+ ### Model Description
15
+
16
+ <!-- Provide a longer summary of what this model is. -->
17
+
18
+
19
+
20
+ - **Developed by:** [More Information Needed]
21
+ - **Shared by [optional]:** [More Information Needed]
22
+ - **Model type:** [More Information Needed]
23
+ - **Language(s) (NLP):** [More Information Needed]
24
+ - **License:** [More Information Needed]
25
+ - **Finetuned from model [optional]:** [More Information Needed]
26
+
27
+ ### Model Sources [optional]
28
+
29
+ <!-- Provide the basic links for the model. -->
30
+
31
+ - **Repository:** [More Information Needed]
32
+ - **Paper [optional]:** [More Information Needed]
33
+ - **Demo [optional]:** [More Information Needed]
34
+
35
+ ## Uses
36
+
37
+ <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
38
+
39
+ ### Direct Use
40
+
41
+ <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
42
+
43
+ [More Information Needed]
44
+
45
+ ### Downstream Use [optional]
46
+
47
+ <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
48
+
49
+ [More Information Needed]
50
+
51
+ ### Out-of-Scope Use
52
+
53
+ <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
54
+
55
+ [More Information Needed]
56
+
57
+ ## Bias, Risks, and Limitations
58
+
59
+ <!-- This section is meant to convey both technical and sociotechnical limitations. -->
60
+
61
+ [More Information Needed]
62
+
63
+ ### Recommendations
64
+
65
+ <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
66
+
67
+ Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
68
+
69
+ ## How to Get Started with the Model
70
+
71
+ Use the code below to get started with the model.
72
+
73
+ [More Information Needed]
74
+
75
+ ## Training Details
76
+
77
+ ### Training Data
78
+
79
+ <!-- This should link to a Data Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
80
+
81
+ [More Information Needed]
82
+
83
+ ### Training Procedure
84
+
85
+ <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
86
+
87
+ #### Preprocessing [optional]
88
+
89
+ [More Information Needed]
90
+
91
+
92
+ #### Training Hyperparameters
93
+
94
+ - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
95
+
96
+ #### Speeds, Sizes, Times [optional]
97
+
98
+ <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
99
+
100
+ [More Information Needed]
101
+
102
+ ## Evaluation
103
+
104
+ <!-- This section describes the evaluation protocols and provides the results. -->
105
+
106
+ ### Testing Data, Factors & Metrics
107
+
108
+ #### Testing Data
109
+
110
+ <!-- This should link to a Data Card if possible. -->
111
+
112
+ [More Information Needed]
113
+
114
+ #### Factors
115
+
116
+ <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
117
+
118
+ [More Information Needed]
119
+
120
+ #### Metrics
121
+
122
+ <!-- These are the evaluation metrics being used, ideally with a description of why. -->
123
+
124
+ [More Information Needed]
125
+
126
+ ### Results
127
+
128
+ [More Information Needed]
129
+
130
+ #### Summary
131
+
132
+
133
+
134
+ ## Model Examination [optional]
135
+
136
+ <!-- Relevant interpretability work for the model goes here -->
137
+
138
+ [More Information Needed]
139
+
140
+ ## Environmental Impact
141
+
142
+ <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
143
+
144
+ Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
145
+
146
+ - **Hardware Type:** [More Information Needed]
147
+ - **Hours used:** [More Information Needed]
148
+ - **Cloud Provider:** [More Information Needed]
149
+ - **Compute Region:** [More Information Needed]
150
+ - **Carbon Emitted:** [More Information Needed]
151
+
152
+ ## Technical Specifications [optional]
153
+
154
+ ### Model Architecture and Objective
155
+
156
+ [More Information Needed]
157
+
158
+ ### Compute Infrastructure
159
+
160
+ [More Information Needed]
161
+
162
+ #### Hardware
163
+
164
+ [More Information Needed]
165
+
166
+ #### Software
167
+
168
+ [More Information Needed]
169
+
170
+ ## Citation [optional]
171
+
172
+ <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
173
+
174
+ **BibTeX:**
175
+
176
+ [More Information Needed]
177
+
178
+ **APA:**
179
+
180
+ [More Information Needed]
181
+
182
+ ## Glossary [optional]
183
+
184
+ <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
185
+
186
+ [More Information Needed]
187
+
188
+ ## More Information [optional]
189
+
190
+ [More Information Needed]
191
+
192
+ ## Model Card Authors [optional]
193
+
194
+ [More Information Needed]
195
+
196
+ ## Model Card Contact
197
+
198
+ [More Information Needed]
199
+
200
+
201
+ ## Training procedure
202
+
203
+
204
+ ### Framework versions
205
+
206
+
207
+ - PEFT 0.6.2
LLM-Detector-V4-11w/checkpoint-1000/adapter_config.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alpha_pattern": {},
3
+ "auto_mapping": null,
4
+ "base_model_name_or_path": "./Qwen-1_8B-Chat",
5
+ "bias": "none",
6
+ "fan_in_fan_out": false,
7
+ "inference_mode": true,
8
+ "init_lora_weights": true,
9
+ "layers_pattern": null,
10
+ "layers_to_transform": null,
11
+ "lora_alpha": 16.0,
12
+ "lora_dropout": 0.1,
13
+ "modules_to_save": null,
14
+ "peft_type": "LORA",
15
+ "r": 8,
16
+ "rank_pattern": {},
17
+ "revision": null,
18
+ "target_modules": [
19
+ "c_attn"
20
+ ],
21
+ "task_type": "CAUSAL_LM"
22
+ }
LLM-Detector-V4-11w/checkpoint-1000/adapter_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:124dd6f8fccbde92448f1727138226664a814afabc1e3e10090af0abc318aa1e
3
+ size 6308670
LLM-Detector-V4-11w/checkpoint-1000/optimizer.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:620e76eef0903318cf917c4b7bb18eecaec0acfa968aeca9e3345c8bc0ff0428
3
+ size 12623610
LLM-Detector-V4-11w/checkpoint-1000/qwen.tiktoken ADDED
The diff for this file is too large to render. See raw diff
 
LLM-Detector-V4-11w/checkpoint-1000/rng_state.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b6b2411bd26912ef7914bec8dace4f47f701c3b0d9fd4166ad1988f8b10967c8
3
+ size 14244
LLM-Detector-V4-11w/checkpoint-1000/scheduler.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:913bff447363333d34842812791634ae8b8782dead63524bc6f9a5994b43ae65
3
+ size 1064
LLM-Detector-V4-11w/checkpoint-1000/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|im_end|>"
4
+ ],
5
+ "eos_token": "<|endoftext|>",
6
+ "pad_token": "<|endoftext|>"
7
+ }
LLM-Detector-V4-11w/checkpoint-1000/tokenization_qwen.py ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Alibaba Cloud.
2
+ #
3
+ # This source code is licensed under the license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ """Tokenization classes for QWen."""
7
+
8
+ import base64
9
+ import logging
10
+ import os
11
+ import unicodedata
12
+ from typing import Collection, Dict, List, Set, Tuple, Union
13
+
14
+ import tiktoken
15
+ from transformers import PreTrainedTokenizer, AddedToken
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ VOCAB_FILES_NAMES = {"vocab_file": "qwen.tiktoken"}
21
+
22
+ PAT_STR = r"""(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+"""
23
+ ENDOFTEXT = "<|endoftext|>"
24
+ IMSTART = "<|im_start|>"
25
+ IMEND = "<|im_end|>"
26
+ # as the default behavior is changed to allow special tokens in
27
+ # regular texts, the surface forms of special tokens need to be
28
+ # as different as possible to minimize the impact
29
+ EXTRAS = tuple((f"<|extra_{i}|>" for i in range(205)))
30
+ # changed to use actual index to avoid misconfiguration with vocabulary expansion
31
+ SPECIAL_START_ID = 151643
32
+ SPECIAL_TOKENS = tuple(
33
+ enumerate(
34
+ (
35
+ (
36
+ ENDOFTEXT,
37
+ IMSTART,
38
+ IMEND,
39
+ )
40
+ + EXTRAS
41
+ ),
42
+ start=SPECIAL_START_ID,
43
+ )
44
+ )
45
+ SPECIAL_TOKENS_SET = set(t for i, t in SPECIAL_TOKENS)
46
+
47
+
48
+ def _load_tiktoken_bpe(tiktoken_bpe_file: str) -> Dict[bytes, int]:
49
+ with open(tiktoken_bpe_file, "rb") as f:
50
+ contents = f.read()
51
+ return {
52
+ base64.b64decode(token): int(rank)
53
+ for token, rank in (line.split() for line in contents.splitlines() if line)
54
+ }
55
+
56
+
57
+ class QWenTokenizer(PreTrainedTokenizer):
58
+ """QWen tokenizer."""
59
+
60
+ vocab_files_names = VOCAB_FILES_NAMES
61
+
62
+ def __init__(
63
+ self,
64
+ vocab_file,
65
+ errors="replace",
66
+ extra_vocab_file=None,
67
+ **kwargs,
68
+ ):
69
+ super().__init__(**kwargs)
70
+
71
+ # how to handle errors in decoding UTF-8 byte sequences
72
+ # use ignore if you are in streaming inference
73
+ self.errors = errors
74
+
75
+ self.mergeable_ranks = _load_tiktoken_bpe(vocab_file) # type: Dict[bytes, int]
76
+ self.special_tokens = {
77
+ token: index
78
+ for index, token in SPECIAL_TOKENS
79
+ }
80
+
81
+ # try load extra vocab from file
82
+ if extra_vocab_file is not None:
83
+ used_ids = set(self.mergeable_ranks.values()) | set(self.special_tokens.values())
84
+ extra_mergeable_ranks = _load_tiktoken_bpe(extra_vocab_file)
85
+ for token, index in extra_mergeable_ranks.items():
86
+ if token in self.mergeable_ranks:
87
+ logger.info(f"extra token {token} exists, skipping")
88
+ continue
89
+ if index in used_ids:
90
+ logger.info(f'the index {index} for extra token {token} exists, skipping')
91
+ continue
92
+ self.mergeable_ranks[token] = index
93
+ # the index may be sparse after this, but don't worry tiktoken.Encoding will handle this
94
+
95
+ enc = tiktoken.Encoding(
96
+ "Qwen",
97
+ pat_str=PAT_STR,
98
+ mergeable_ranks=self.mergeable_ranks,
99
+ special_tokens=self.special_tokens,
100
+ )
101
+ assert (
102
+ len(self.mergeable_ranks) + len(self.special_tokens) == enc.n_vocab
103
+ ), f"{len(self.mergeable_ranks) + len(self.special_tokens)} != {enc.n_vocab} in encoding"
104
+
105
+ self.decoder = {
106
+ v: k for k, v in self.mergeable_ranks.items()
107
+ } # type: dict[int, bytes|str]
108
+ self.decoder.update({v: k for k, v in self.special_tokens.items()})
109
+
110
+ self.tokenizer = enc # type: tiktoken.Encoding
111
+
112
+ self.eod_id = self.tokenizer.eot_token
113
+ self.im_start_id = self.special_tokens[IMSTART]
114
+ self.im_end_id = self.special_tokens[IMEND]
115
+
116
+ def __getstate__(self):
117
+ # for pickle lovers
118
+ state = self.__dict__.copy()
119
+ del state["tokenizer"]
120
+ return state
121
+
122
+ def __setstate__(self, state):
123
+ # tokenizer is not python native; don't pass it; rebuild it
124
+ self.__dict__.update(state)
125
+ enc = tiktoken.Encoding(
126
+ "Qwen",
127
+ pat_str=PAT_STR,
128
+ mergeable_ranks=self.mergeable_ranks,
129
+ special_tokens=self.special_tokens,
130
+ )
131
+ self.tokenizer = enc
132
+
133
+ def __len__(self) -> int:
134
+ return self.tokenizer.n_vocab
135
+
136
+ def get_vocab(self) -> Dict[bytes, int]:
137
+ return self.mergeable_ranks
138
+
139
+ def convert_tokens_to_ids(
140
+ self, tokens: Union[bytes, str, List[Union[bytes, str]]]
141
+ ) -> List[int]:
142
+ ids = []
143
+ if isinstance(tokens, (str, bytes)):
144
+ if tokens in self.special_tokens:
145
+ return self.special_tokens[tokens]
146
+ else:
147
+ return self.mergeable_ranks.get(tokens)
148
+ for token in tokens:
149
+ if token in self.special_tokens:
150
+ ids.append(self.special_tokens[token])
151
+ else:
152
+ ids.append(self.mergeable_ranks.get(token))
153
+ return ids
154
+
155
+ def _add_tokens(
156
+ self,
157
+ new_tokens: Union[List[str], List[AddedToken]],
158
+ special_tokens: bool = False,
159
+ ) -> int:
160
+ if not special_tokens and new_tokens:
161
+ raise ValueError("Adding regular tokens is not supported")
162
+ for token in new_tokens:
163
+ surface_form = token.content if isinstance(token, AddedToken) else token
164
+ if surface_form not in SPECIAL_TOKENS_SET:
165
+ raise ValueError("Adding unknown special tokens is not supported")
166
+ return 0
167
+
168
+ def save_vocabulary(self, save_directory: str, **kwargs) -> Tuple[str]:
169
+ """
170
+ Save only the vocabulary of the tokenizer (vocabulary).
171
+
172
+ Returns:
173
+ `Tuple(str)`: Paths to the files saved.
174
+ """
175
+ file_path = os.path.join(save_directory, "qwen.tiktoken")
176
+ with open(file_path, "w", encoding="utf8") as w:
177
+ for k, v in self.mergeable_ranks.items():
178
+ line = base64.b64encode(k).decode("utf8") + " " + str(v) + "\n"
179
+ w.write(line)
180
+ return (file_path,)
181
+
182
+ def tokenize(
183
+ self,
184
+ text: str,
185
+ allowed_special: Union[Set, str] = "all",
186
+ disallowed_special: Union[Collection, str] = (),
187
+ **kwargs,
188
+ ) -> List[Union[bytes, str]]:
189
+ """
190
+ Converts a string in a sequence of tokens.
191
+
192
+ Args:
193
+ text (`str`):
194
+ The sequence to be encoded.
195
+ allowed_special (`Literal["all"]` or `set`):
196
+ The surface forms of the tokens to be encoded as special tokens in regular texts.
197
+ Default to "all".
198
+ disallowed_special (`Literal["all"]` or `Collection`):
199
+ The surface forms of the tokens that should not be in regular texts and trigger errors.
200
+ Default to an empty tuple.
201
+
202
+ kwargs (additional keyword arguments, *optional*):
203
+ Will be passed to the underlying model specific encode method.
204
+
205
+ Returns:
206
+ `List[bytes|str]`: The list of tokens.
207
+ """
208
+ tokens = []
209
+ text = unicodedata.normalize("NFC", text)
210
+
211
+ # this implementation takes a detour: text -> token id -> token surface forms
212
+ for t in self.tokenizer.encode(
213
+ text, allowed_special=allowed_special, disallowed_special=disallowed_special
214
+ ):
215
+ tokens.append(self.decoder[t])
216
+ return tokens
217
+
218
+ def convert_tokens_to_string(self, tokens: List[Union[bytes, str]]) -> str:
219
+ """
220
+ Converts a sequence of tokens in a single string.
221
+ """
222
+ text = ""
223
+ temp = b""
224
+ for t in tokens:
225
+ if isinstance(t, str):
226
+ if temp:
227
+ text += temp.decode("utf-8", errors=self.errors)
228
+ temp = b""
229
+ text += t
230
+ elif isinstance(t, bytes):
231
+ temp += t
232
+ else:
233
+ raise TypeError("token should only be of type types or str")
234
+ if temp:
235
+ text += temp.decode("utf-8", errors=self.errors)
236
+ return text
237
+
238
+ @property
239
+ def vocab_size(self):
240
+ return self.tokenizer.n_vocab
241
+
242
+ def _convert_id_to_token(self, index: int) -> Union[bytes, str]:
243
+ """Converts an id to a token, special tokens included"""
244
+ if index in self.decoder:
245
+ return self.decoder[index]
246
+ raise ValueError("unknown ids")
247
+
248
+ def _convert_token_to_id(self, token: Union[bytes, str]) -> int:
249
+ """Converts a token to an id using the vocab, special tokens included"""
250
+ if token in self.special_tokens:
251
+ return self.special_tokens[token]
252
+ if token in self.mergeable_ranks:
253
+ return self.mergeable_ranks[token]
254
+ raise ValueError("unknown token")
255
+
256
+ def _tokenize(self, text: str, **kwargs):
257
+ """
258
+ Converts a string in a sequence of tokens (string), using the tokenizer. Split in words for word-based
259
+ vocabulary or sub-words for sub-word-based vocabularies (BPE/SentencePieces/WordPieces).
260
+
261
+ Do NOT take care of added tokens.
262
+ """
263
+ raise NotImplementedError
264
+
265
+ def _decode(
266
+ self,
267
+ token_ids: Union[int, List[int]],
268
+ skip_special_tokens: bool = False,
269
+ errors: str = None,
270
+ **kwargs,
271
+ ) -> str:
272
+ if isinstance(token_ids, int):
273
+ token_ids = [token_ids]
274
+ if skip_special_tokens:
275
+ token_ids = [i for i in token_ids if i < self.eod_id]
276
+ return self.tokenizer.decode(token_ids, errors=errors or self.errors)
LLM-Detector-V4-11w/checkpoint-1000/tokenizer_config.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "auto_map": {
3
+ "AutoTokenizer": [
4
+ "tokenization_qwen.QWenTokenizer",
5
+ null
6
+ ]
7
+ },
8
+ "clean_up_tokenization_spaces": true,
9
+ "model_max_length": 8192,
10
+ "padding_side": "right",
11
+ "split_special_tokens": false,
12
+ "tokenizer_class": "QWenTokenizer"
13
+ }
LLM-Detector-V4-11w/checkpoint-1000/trainer_state.json ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "best_metric": null,
3
+ "best_model_checkpoint": null,
4
+ "epoch": 0.26907036189963673,
5
+ "eval_steps": 500,
6
+ "global_step": 1000,
7
+ "is_hyper_param_search": false,
8
+ "is_local_process_zero": true,
9
+ "is_world_process_zero": true,
10
+ "log_history": [
11
+ {
12
+ "epoch": 0.03,
13
+ "learning_rate": 4.991071065046783e-05,
14
+ "loss": 3.0435,
15
+ "step": 100
16
+ },
17
+ {
18
+ "epoch": 0.05,
19
+ "learning_rate": 4.9643480408906496e-05,
20
+ "loss": 0.0382,
21
+ "step": 200
22
+ },
23
+ {
24
+ "epoch": 0.08,
25
+ "learning_rate": 4.920021814047156e-05,
26
+ "loss": 0.0227,
27
+ "step": 300
28
+ },
29
+ {
30
+ "epoch": 0.11,
31
+ "learning_rate": 4.858409013313266e-05,
32
+ "loss": 0.0258,
33
+ "step": 400
34
+ },
35
+ {
36
+ "epoch": 0.13,
37
+ "learning_rate": 4.7799497480410125e-05,
38
+ "loss": 0.0256,
39
+ "step": 500
40
+ },
41
+ {
42
+ "epoch": 0.16,
43
+ "learning_rate": 4.685204464371269e-05,
44
+ "loss": 0.0312,
45
+ "step": 600
46
+ },
47
+ {
48
+ "epoch": 0.19,
49
+ "learning_rate": 4.574849941884044e-05,
50
+ "loss": 0.0212,
51
+ "step": 700
52
+ },
53
+ {
54
+ "epoch": 0.22,
55
+ "learning_rate": 4.449674459261804e-05,
56
+ "loss": 0.0271,
57
+ "step": 800
58
+ },
59
+ {
60
+ "epoch": 0.24,
61
+ "learning_rate": 4.310572163498205e-05,
62
+ "loss": 0.0203,
63
+ "step": 900
64
+ },
65
+ {
66
+ "epoch": 0.27,
67
+ "learning_rate": 4.158536682873821e-05,
68
+ "loss": 0.0172,
69
+ "step": 1000
70
+ }
71
+ ],
72
+ "logging_steps": 100,
73
+ "max_steps": 3716,
74
+ "num_train_epochs": 1,
75
+ "save_steps": 1000,
76
+ "total_flos": 8.230715481076531e+16,
77
+ "trial_name": null,
78
+ "trial_params": null
79
+ }
LLM-Detector-V4-11w/checkpoint-1000/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8bc4e49fff68420e89c2879345b8b8f748c6b8c4a56351c173150f7352012454
3
+ size 4664
LLM-Detector-V4-11w/checkpoint-2000/README.md ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: peft
3
+ base_model: ./Qwen-1_8B-Chat
4
+ ---
5
+
6
+ # Model Card for Model ID
7
+
8
+ <!-- Provide a quick summary of what the model is/does. -->
9
+
10
+
11
+
12
+ ## Model Details
13
+
14
+ ### Model Description
15
+
16
+ <!-- Provide a longer summary of what this model is. -->
17
+
18
+
19
+
20
+ - **Developed by:** [More Information Needed]
21
+ - **Shared by [optional]:** [More Information Needed]
22
+ - **Model type:** [More Information Needed]
23
+ - **Language(s) (NLP):** [More Information Needed]
24
+ - **License:** [More Information Needed]
25
+ - **Finetuned from model [optional]:** [More Information Needed]
26
+
27
+ ### Model Sources [optional]
28
+
29
+ <!-- Provide the basic links for the model. -->
30
+
31
+ - **Repository:** [More Information Needed]
32
+ - **Paper [optional]:** [More Information Needed]
33
+ - **Demo [optional]:** [More Information Needed]
34
+
35
+ ## Uses
36
+
37
+ <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
38
+
39
+ ### Direct Use
40
+
41
+ <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
42
+
43
+ [More Information Needed]
44
+
45
+ ### Downstream Use [optional]
46
+
47
+ <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
48
+
49
+ [More Information Needed]
50
+
51
+ ### Out-of-Scope Use
52
+
53
+ <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
54
+
55
+ [More Information Needed]
56
+
57
+ ## Bias, Risks, and Limitations
58
+
59
+ <!-- This section is meant to convey both technical and sociotechnical limitations. -->
60
+
61
+ [More Information Needed]
62
+
63
+ ### Recommendations
64
+
65
+ <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
66
+
67
+ Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
68
+
69
+ ## How to Get Started with the Model
70
+
71
+ Use the code below to get started with the model.
72
+
73
+ [More Information Needed]
74
+
75
+ ## Training Details
76
+
77
+ ### Training Data
78
+
79
+ <!-- This should link to a Data Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
80
+
81
+ [More Information Needed]
82
+
83
+ ### Training Procedure
84
+
85
+ <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
86
+
87
+ #### Preprocessing [optional]
88
+
89
+ [More Information Needed]
90
+
91
+
92
+ #### Training Hyperparameters
93
+
94
+ - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
95
+
96
+ #### Speeds, Sizes, Times [optional]
97
+
98
+ <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
99
+
100
+ [More Information Needed]
101
+
102
+ ## Evaluation
103
+
104
+ <!-- This section describes the evaluation protocols and provides the results. -->
105
+
106
+ ### Testing Data, Factors & Metrics
107
+
108
+ #### Testing Data
109
+
110
+ <!-- This should link to a Data Card if possible. -->
111
+
112
+ [More Information Needed]
113
+
114
+ #### Factors
115
+
116
+ <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
117
+
118
+ [More Information Needed]
119
+
120
+ #### Metrics
121
+
122
+ <!-- These are the evaluation metrics being used, ideally with a description of why. -->
123
+
124
+ [More Information Needed]
125
+
126
+ ### Results
127
+
128
+ [More Information Needed]
129
+
130
+ #### Summary
131
+
132
+
133
+
134
+ ## Model Examination [optional]
135
+
136
+ <!-- Relevant interpretability work for the model goes here -->
137
+
138
+ [More Information Needed]
139
+
140
+ ## Environmental Impact
141
+
142
+ <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
143
+
144
+ Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
145
+
146
+ - **Hardware Type:** [More Information Needed]
147
+ - **Hours used:** [More Information Needed]
148
+ - **Cloud Provider:** [More Information Needed]
149
+ - **Compute Region:** [More Information Needed]
150
+ - **Carbon Emitted:** [More Information Needed]
151
+
152
+ ## Technical Specifications [optional]
153
+
154
+ ### Model Architecture and Objective
155
+
156
+ [More Information Needed]
157
+
158
+ ### Compute Infrastructure
159
+
160
+ [More Information Needed]
161
+
162
+ #### Hardware
163
+
164
+ [More Information Needed]
165
+
166
+ #### Software
167
+
168
+ [More Information Needed]
169
+
170
+ ## Citation [optional]
171
+
172
+ <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
173
+
174
+ **BibTeX:**
175
+
176
+ [More Information Needed]
177
+
178
+ **APA:**
179
+
180
+ [More Information Needed]
181
+
182
+ ## Glossary [optional]
183
+
184
+ <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
185
+
186
+ [More Information Needed]
187
+
188
+ ## More Information [optional]
189
+
190
+ [More Information Needed]
191
+
192
+ ## Model Card Authors [optional]
193
+
194
+ [More Information Needed]
195
+
196
+ ## Model Card Contact
197
+
198
+ [More Information Needed]
199
+
200
+
201
+ ## Training procedure
202
+
203
+
204
+ ### Framework versions
205
+
206
+
207
+ - PEFT 0.6.2
LLM-Detector-V4-11w/checkpoint-2000/adapter_config.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alpha_pattern": {},
3
+ "auto_mapping": null,
4
+ "base_model_name_or_path": "./Qwen-1_8B-Chat",
5
+ "bias": "none",
6
+ "fan_in_fan_out": false,
7
+ "inference_mode": true,
8
+ "init_lora_weights": true,
9
+ "layers_pattern": null,
10
+ "layers_to_transform": null,
11
+ "lora_alpha": 16.0,
12
+ "lora_dropout": 0.1,
13
+ "modules_to_save": null,
14
+ "peft_type": "LORA",
15
+ "r": 8,
16
+ "rank_pattern": {},
17
+ "revision": null,
18
+ "target_modules": [
19
+ "c_attn"
20
+ ],
21
+ "task_type": "CAUSAL_LM"
22
+ }
LLM-Detector-V4-11w/checkpoint-2000/adapter_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1986936875e1b229164da9982fb915abcb41eb04c84a17c11873032bdc7916eb
3
+ size 6308670
LLM-Detector-V4-11w/checkpoint-2000/optimizer.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2a0cb946c801493b87dd628891a62c65a4096d3599d4de1536f8d115192d4619
3
+ size 12623610
LLM-Detector-V4-11w/checkpoint-2000/qwen.tiktoken ADDED
The diff for this file is too large to render. See raw diff
 
LLM-Detector-V4-11w/checkpoint-2000/rng_state.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:293df5460fc572910480c53776d11674c9b37961d0e3a23477756a518f2153ef
3
+ size 14244
LLM-Detector-V4-11w/checkpoint-2000/scheduler.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:74bac387f60615f990f0d8cb5bf4d07c8fad3441e7fa74f3ac632d281ac044e5
3
+ size 1064
LLM-Detector-V4-11w/checkpoint-2000/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|im_end|>"
4
+ ],
5
+ "eos_token": "<|endoftext|>",
6
+ "pad_token": "<|endoftext|>"
7
+ }
LLM-Detector-V4-11w/checkpoint-2000/tokenization_qwen.py ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Alibaba Cloud.
2
+ #
3
+ # This source code is licensed under the license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ """Tokenization classes for QWen."""
7
+
8
+ import base64
9
+ import logging
10
+ import os
11
+ import unicodedata
12
+ from typing import Collection, Dict, List, Set, Tuple, Union
13
+
14
+ import tiktoken
15
+ from transformers import PreTrainedTokenizer, AddedToken
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ VOCAB_FILES_NAMES = {"vocab_file": "qwen.tiktoken"}
21
+
22
+ PAT_STR = r"""(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+"""
23
+ ENDOFTEXT = "<|endoftext|>"
24
+ IMSTART = "<|im_start|>"
25
+ IMEND = "<|im_end|>"
26
+ # as the default behavior is changed to allow special tokens in
27
+ # regular texts, the surface forms of special tokens need to be
28
+ # as different as possible to minimize the impact
29
+ EXTRAS = tuple((f"<|extra_{i}|>" for i in range(205)))
30
+ # changed to use actual index to avoid misconfiguration with vocabulary expansion
31
+ SPECIAL_START_ID = 151643
32
+ SPECIAL_TOKENS = tuple(
33
+ enumerate(
34
+ (
35
+ (
36
+ ENDOFTEXT,
37
+ IMSTART,
38
+ IMEND,
39
+ )
40
+ + EXTRAS
41
+ ),
42
+ start=SPECIAL_START_ID,
43
+ )
44
+ )
45
+ SPECIAL_TOKENS_SET = set(t for i, t in SPECIAL_TOKENS)
46
+
47
+
48
+ def _load_tiktoken_bpe(tiktoken_bpe_file: str) -> Dict[bytes, int]:
49
+ with open(tiktoken_bpe_file, "rb") as f:
50
+ contents = f.read()
51
+ return {
52
+ base64.b64decode(token): int(rank)
53
+ for token, rank in (line.split() for line in contents.splitlines() if line)
54
+ }
55
+
56
+
57
+ class QWenTokenizer(PreTrainedTokenizer):
58
+ """QWen tokenizer."""
59
+
60
+ vocab_files_names = VOCAB_FILES_NAMES
61
+
62
+ def __init__(
63
+ self,
64
+ vocab_file,
65
+ errors="replace",
66
+ extra_vocab_file=None,
67
+ **kwargs,
68
+ ):
69
+ super().__init__(**kwargs)
70
+
71
+ # how to handle errors in decoding UTF-8 byte sequences
72
+ # use ignore if you are in streaming inference
73
+ self.errors = errors
74
+
75
+ self.mergeable_ranks = _load_tiktoken_bpe(vocab_file) # type: Dict[bytes, int]
76
+ self.special_tokens = {
77
+ token: index
78
+ for index, token in SPECIAL_TOKENS
79
+ }
80
+
81
+ # try load extra vocab from file
82
+ if extra_vocab_file is not None:
83
+ used_ids = set(self.mergeable_ranks.values()) | set(self.special_tokens.values())
84
+ extra_mergeable_ranks = _load_tiktoken_bpe(extra_vocab_file)
85
+ for token, index in extra_mergeable_ranks.items():
86
+ if token in self.mergeable_ranks:
87
+ logger.info(f"extra token {token} exists, skipping")
88
+ continue
89
+ if index in used_ids:
90
+ logger.info(f'the index {index} for extra token {token} exists, skipping')
91
+ continue
92
+ self.mergeable_ranks[token] = index
93
+ # the index may be sparse after this, but don't worry tiktoken.Encoding will handle this
94
+
95
+ enc = tiktoken.Encoding(
96
+ "Qwen",
97
+ pat_str=PAT_STR,
98
+ mergeable_ranks=self.mergeable_ranks,
99
+ special_tokens=self.special_tokens,
100
+ )
101
+ assert (
102
+ len(self.mergeable_ranks) + len(self.special_tokens) == enc.n_vocab
103
+ ), f"{len(self.mergeable_ranks) + len(self.special_tokens)} != {enc.n_vocab} in encoding"
104
+
105
+ self.decoder = {
106
+ v: k for k, v in self.mergeable_ranks.items()
107
+ } # type: dict[int, bytes|str]
108
+ self.decoder.update({v: k for k, v in self.special_tokens.items()})
109
+
110
+ self.tokenizer = enc # type: tiktoken.Encoding
111
+
112
+ self.eod_id = self.tokenizer.eot_token
113
+ self.im_start_id = self.special_tokens[IMSTART]
114
+ self.im_end_id = self.special_tokens[IMEND]
115
+
116
+ def __getstate__(self):
117
+ # for pickle lovers
118
+ state = self.__dict__.copy()
119
+ del state["tokenizer"]
120
+ return state
121
+
122
+ def __setstate__(self, state):
123
+ # tokenizer is not python native; don't pass it; rebuild it
124
+ self.__dict__.update(state)
125
+ enc = tiktoken.Encoding(
126
+ "Qwen",
127
+ pat_str=PAT_STR,
128
+ mergeable_ranks=self.mergeable_ranks,
129
+ special_tokens=self.special_tokens,
130
+ )
131
+ self.tokenizer = enc
132
+
133
+ def __len__(self) -> int:
134
+ return self.tokenizer.n_vocab
135
+
136
+ def get_vocab(self) -> Dict[bytes, int]:
137
+ return self.mergeable_ranks
138
+
139
+ def convert_tokens_to_ids(
140
+ self, tokens: Union[bytes, str, List[Union[bytes, str]]]
141
+ ) -> List[int]:
142
+ ids = []
143
+ if isinstance(tokens, (str, bytes)):
144
+ if tokens in self.special_tokens:
145
+ return self.special_tokens[tokens]
146
+ else:
147
+ return self.mergeable_ranks.get(tokens)
148
+ for token in tokens:
149
+ if token in self.special_tokens:
150
+ ids.append(self.special_tokens[token])
151
+ else:
152
+ ids.append(self.mergeable_ranks.get(token))
153
+ return ids
154
+
155
+ def _add_tokens(
156
+ self,
157
+ new_tokens: Union[List[str], List[AddedToken]],
158
+ special_tokens: bool = False,
159
+ ) -> int:
160
+ if not special_tokens and new_tokens:
161
+ raise ValueError("Adding regular tokens is not supported")
162
+ for token in new_tokens:
163
+ surface_form = token.content if isinstance(token, AddedToken) else token
164
+ if surface_form not in SPECIAL_TOKENS_SET:
165
+ raise ValueError("Adding unknown special tokens is not supported")
166
+ return 0
167
+
168
+ def save_vocabulary(self, save_directory: str, **kwargs) -> Tuple[str]:
169
+ """
170
+ Save only the vocabulary of the tokenizer (vocabulary).
171
+
172
+ Returns:
173
+ `Tuple(str)`: Paths to the files saved.
174
+ """
175
+ file_path = os.path.join(save_directory, "qwen.tiktoken")
176
+ with open(file_path, "w", encoding="utf8") as w:
177
+ for k, v in self.mergeable_ranks.items():
178
+ line = base64.b64encode(k).decode("utf8") + " " + str(v) + "\n"
179
+ w.write(line)
180
+ return (file_path,)
181
+
182
+ def tokenize(
183
+ self,
184
+ text: str,
185
+ allowed_special: Union[Set, str] = "all",
186
+ disallowed_special: Union[Collection, str] = (),
187
+ **kwargs,
188
+ ) -> List[Union[bytes, str]]:
189
+ """
190
+ Converts a string in a sequence of tokens.
191
+
192
+ Args:
193
+ text (`str`):
194
+ The sequence to be encoded.
195
+ allowed_special (`Literal["all"]` or `set`):
196
+ The surface forms of the tokens to be encoded as special tokens in regular texts.
197
+ Default to "all".
198
+ disallowed_special (`Literal["all"]` or `Collection`):
199
+ The surface forms of the tokens that should not be in regular texts and trigger errors.
200
+ Default to an empty tuple.
201
+
202
+ kwargs (additional keyword arguments, *optional*):
203
+ Will be passed to the underlying model specific encode method.
204
+
205
+ Returns:
206
+ `List[bytes|str]`: The list of tokens.
207
+ """
208
+ tokens = []
209
+ text = unicodedata.normalize("NFC", text)
210
+
211
+ # this implementation takes a detour: text -> token id -> token surface forms
212
+ for t in self.tokenizer.encode(
213
+ text, allowed_special=allowed_special, disallowed_special=disallowed_special
214
+ ):
215
+ tokens.append(self.decoder[t])
216
+ return tokens
217
+
218
+ def convert_tokens_to_string(self, tokens: List[Union[bytes, str]]) -> str:
219
+ """
220
+ Converts a sequence of tokens in a single string.
221
+ """
222
+ text = ""
223
+ temp = b""
224
+ for t in tokens:
225
+ if isinstance(t, str):
226
+ if temp:
227
+ text += temp.decode("utf-8", errors=self.errors)
228
+ temp = b""
229
+ text += t
230
+ elif isinstance(t, bytes):
231
+ temp += t
232
+ else:
233
+ raise TypeError("token should only be of type types or str")
234
+ if temp:
235
+ text += temp.decode("utf-8", errors=self.errors)
236
+ return text
237
+
238
+ @property
239
+ def vocab_size(self):
240
+ return self.tokenizer.n_vocab
241
+
242
+ def _convert_id_to_token(self, index: int) -> Union[bytes, str]:
243
+ """Converts an id to a token, special tokens included"""
244
+ if index in self.decoder:
245
+ return self.decoder[index]
246
+ raise ValueError("unknown ids")
247
+
248
+ def _convert_token_to_id(self, token: Union[bytes, str]) -> int:
249
+ """Converts a token to an id using the vocab, special tokens included"""
250
+ if token in self.special_tokens:
251
+ return self.special_tokens[token]
252
+ if token in self.mergeable_ranks:
253
+ return self.mergeable_ranks[token]
254
+ raise ValueError("unknown token")
255
+
256
+ def _tokenize(self, text: str, **kwargs):
257
+ """
258
+ Converts a string in a sequence of tokens (string), using the tokenizer. Split in words for word-based
259
+ vocabulary or sub-words for sub-word-based vocabularies (BPE/SentencePieces/WordPieces).
260
+
261
+ Do NOT take care of added tokens.
262
+ """
263
+ raise NotImplementedError
264
+
265
+ def _decode(
266
+ self,
267
+ token_ids: Union[int, List[int]],
268
+ skip_special_tokens: bool = False,
269
+ errors: str = None,
270
+ **kwargs,
271
+ ) -> str:
272
+ if isinstance(token_ids, int):
273
+ token_ids = [token_ids]
274
+ if skip_special_tokens:
275
+ token_ids = [i for i in token_ids if i < self.eod_id]
276
+ return self.tokenizer.decode(token_ids, errors=errors or self.errors)
LLM-Detector-V4-11w/checkpoint-2000/tokenizer_config.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "auto_map": {
3
+ "AutoTokenizer": [
4
+ "tokenization_qwen.QWenTokenizer",
5
+ null
6
+ ]
7
+ },
8
+ "clean_up_tokenization_spaces": true,
9
+ "model_max_length": 8192,
10
+ "padding_side": "right",
11
+ "split_special_tokens": false,
12
+ "tokenizer_class": "QWenTokenizer"
13
+ }
LLM-Detector-V4-11w/checkpoint-2000/trainer_state.json ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "best_metric": null,
3
+ "best_model_checkpoint": null,
4
+ "epoch": 0.5381407237992735,
5
+ "eval_steps": 500,
6
+ "global_step": 2000,
7
+ "is_hyper_param_search": false,
8
+ "is_local_process_zero": true,
9
+ "is_world_process_zero": true,
10
+ "log_history": [
11
+ {
12
+ "epoch": 0.03,
13
+ "learning_rate": 4.991071065046783e-05,
14
+ "loss": 3.0435,
15
+ "step": 100
16
+ },
17
+ {
18
+ "epoch": 0.05,
19
+ "learning_rate": 4.9643480408906496e-05,
20
+ "loss": 0.0382,
21
+ "step": 200
22
+ },
23
+ {
24
+ "epoch": 0.08,
25
+ "learning_rate": 4.920021814047156e-05,
26
+ "loss": 0.0227,
27
+ "step": 300
28
+ },
29
+ {
30
+ "epoch": 0.11,
31
+ "learning_rate": 4.858409013313266e-05,
32
+ "loss": 0.0258,
33
+ "step": 400
34
+ },
35
+ {
36
+ "epoch": 0.13,
37
+ "learning_rate": 4.7799497480410125e-05,
38
+ "loss": 0.0256,
39
+ "step": 500
40
+ },
41
+ {
42
+ "epoch": 0.16,
43
+ "learning_rate": 4.685204464371269e-05,
44
+ "loss": 0.0312,
45
+ "step": 600
46
+ },
47
+ {
48
+ "epoch": 0.19,
49
+ "learning_rate": 4.574849941884044e-05,
50
+ "loss": 0.0212,
51
+ "step": 700
52
+ },
53
+ {
54
+ "epoch": 0.22,
55
+ "learning_rate": 4.449674459261804e-05,
56
+ "loss": 0.0271,
57
+ "step": 800
58
+ },
59
+ {
60
+ "epoch": 0.24,
61
+ "learning_rate": 4.310572163498205e-05,
62
+ "loss": 0.0203,
63
+ "step": 900
64
+ },
65
+ {
66
+ "epoch": 0.27,
67
+ "learning_rate": 4.158536682873821e-05,
68
+ "loss": 0.0172,
69
+ "step": 1000
70
+ },
71
+ {
72
+ "epoch": 0.3,
73
+ "learning_rate": 3.994654029322313e-05,
74
+ "loss": 0.0241,
75
+ "step": 1100
76
+ },
77
+ {
78
+ "epoch": 0.32,
79
+ "learning_rate": 3.8200948408864986e-05,
80
+ "loss": 0.0167,
81
+ "step": 1200
82
+ },
83
+ {
84
+ "epoch": 0.35,
85
+ "learning_rate": 3.636106019677602e-05,
86
+ "loss": 0.0134,
87
+ "step": 1300
88
+ },
89
+ {
90
+ "epoch": 0.38,
91
+ "learning_rate": 3.4440018250689767e-05,
92
+ "loss": 0.0145,
93
+ "step": 1400
94
+ },
95
+ {
96
+ "epoch": 0.4,
97
+ "learning_rate": 3.2451544857469436e-05,
98
+ "loss": 0.0127,
99
+ "step": 1500
100
+ },
101
+ {
102
+ "epoch": 0.43,
103
+ "learning_rate": 3.040984397678245e-05,
104
+ "loss": 0.0164,
105
+ "step": 1600
106
+ },
107
+ {
108
+ "epoch": 0.46,
109
+ "learning_rate": 2.8329499780114865e-05,
110
+ "loss": 0.0187,
111
+ "step": 1700
112
+ },
113
+ {
114
+ "epoch": 0.48,
115
+ "learning_rate": 2.6225372473876565e-05,
116
+ "loss": 0.0147,
117
+ "step": 1800
118
+ },
119
+ {
120
+ "epoch": 0.51,
121
+ "learning_rate": 2.41124921507481e-05,
122
+ "loss": 0.0156,
123
+ "step": 1900
124
+ },
125
+ {
126
+ "epoch": 0.54,
127
+ "learning_rate": 2.2005951427504784e-05,
128
+ "loss": 0.0184,
129
+ "step": 2000
130
+ }
131
+ ],
132
+ "logging_steps": 100,
133
+ "max_steps": 3716,
134
+ "num_train_epochs": 1,
135
+ "save_steps": 1000,
136
+ "total_flos": 1.6501750008604262e+17,
137
+ "trial_name": null,
138
+ "trial_params": null
139
+ }
LLM-Detector-V4-11w/checkpoint-2000/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8bc4e49fff68420e89c2879345b8b8f748c6b8c4a56351c173150f7352012454
3
+ size 4664
LLM-Detector-V4-11w/checkpoint-3000/README.md ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: peft
3
+ base_model: ./Qwen-1_8B-Chat
4
+ ---
5
+
6
+ # Model Card for Model ID
7
+
8
+ <!-- Provide a quick summary of what the model is/does. -->
9
+
10
+
11
+
12
+ ## Model Details
13
+
14
+ ### Model Description
15
+
16
+ <!-- Provide a longer summary of what this model is. -->
17
+
18
+
19
+
20
+ - **Developed by:** [More Information Needed]
21
+ - **Shared by [optional]:** [More Information Needed]
22
+ - **Model type:** [More Information Needed]
23
+ - **Language(s) (NLP):** [More Information Needed]
24
+ - **License:** [More Information Needed]
25
+ - **Finetuned from model [optional]:** [More Information Needed]
26
+
27
+ ### Model Sources [optional]
28
+
29
+ <!-- Provide the basic links for the model. -->
30
+
31
+ - **Repository:** [More Information Needed]
32
+ - **Paper [optional]:** [More Information Needed]
33
+ - **Demo [optional]:** [More Information Needed]
34
+
35
+ ## Uses
36
+
37
+ <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
38
+
39
+ ### Direct Use
40
+
41
+ <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
42
+
43
+ [More Information Needed]
44
+
45
+ ### Downstream Use [optional]
46
+
47
+ <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
48
+
49
+ [More Information Needed]
50
+
51
+ ### Out-of-Scope Use
52
+
53
+ <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
54
+
55
+ [More Information Needed]
56
+
57
+ ## Bias, Risks, and Limitations
58
+
59
+ <!-- This section is meant to convey both technical and sociotechnical limitations. -->
60
+
61
+ [More Information Needed]
62
+
63
+ ### Recommendations
64
+
65
+ <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
66
+
67
+ Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
68
+
69
+ ## How to Get Started with the Model
70
+
71
+ Use the code below to get started with the model.
72
+
73
+ [More Information Needed]
74
+
75
+ ## Training Details
76
+
77
+ ### Training Data
78
+
79
+ <!-- This should link to a Data Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
80
+
81
+ [More Information Needed]
82
+
83
+ ### Training Procedure
84
+
85
+ <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
86
+
87
+ #### Preprocessing [optional]
88
+
89
+ [More Information Needed]
90
+
91
+
92
+ #### Training Hyperparameters
93
+
94
+ - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
95
+
96
+ #### Speeds, Sizes, Times [optional]
97
+
98
+ <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
99
+
100
+ [More Information Needed]
101
+
102
+ ## Evaluation
103
+
104
+ <!-- This section describes the evaluation protocols and provides the results. -->
105
+
106
+ ### Testing Data, Factors & Metrics
107
+
108
+ #### Testing Data
109
+
110
+ <!-- This should link to a Data Card if possible. -->
111
+
112
+ [More Information Needed]
113
+
114
+ #### Factors
115
+
116
+ <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
117
+
118
+ [More Information Needed]
119
+
120
+ #### Metrics
121
+
122
+ <!-- These are the evaluation metrics being used, ideally with a description of why. -->
123
+
124
+ [More Information Needed]
125
+
126
+ ### Results
127
+
128
+ [More Information Needed]
129
+
130
+ #### Summary
131
+
132
+
133
+
134
+ ## Model Examination [optional]
135
+
136
+ <!-- Relevant interpretability work for the model goes here -->
137
+
138
+ [More Information Needed]
139
+
140
+ ## Environmental Impact
141
+
142
+ <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
143
+
144
+ Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
145
+
146
+ - **Hardware Type:** [More Information Needed]
147
+ - **Hours used:** [More Information Needed]
148
+ - **Cloud Provider:** [More Information Needed]
149
+ - **Compute Region:** [More Information Needed]
150
+ - **Carbon Emitted:** [More Information Needed]
151
+
152
+ ## Technical Specifications [optional]
153
+
154
+ ### Model Architecture and Objective
155
+
156
+ [More Information Needed]
157
+
158
+ ### Compute Infrastructure
159
+
160
+ [More Information Needed]
161
+
162
+ #### Hardware
163
+
164
+ [More Information Needed]
165
+
166
+ #### Software
167
+
168
+ [More Information Needed]
169
+
170
+ ## Citation [optional]
171
+
172
+ <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
173
+
174
+ **BibTeX:**
175
+
176
+ [More Information Needed]
177
+
178
+ **APA:**
179
+
180
+ [More Information Needed]
181
+
182
+ ## Glossary [optional]
183
+
184
+ <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
185
+
186
+ [More Information Needed]
187
+
188
+ ## More Information [optional]
189
+
190
+ [More Information Needed]
191
+
192
+ ## Model Card Authors [optional]
193
+
194
+ [More Information Needed]
195
+
196
+ ## Model Card Contact
197
+
198
+ [More Information Needed]
199
+
200
+
201
+ ## Training procedure
202
+
203
+
204
+ ### Framework versions
205
+
206
+
207
+ - PEFT 0.6.2
LLM-Detector-V4-11w/checkpoint-3000/adapter_config.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alpha_pattern": {},
3
+ "auto_mapping": null,
4
+ "base_model_name_or_path": "./Qwen-1_8B-Chat",
5
+ "bias": "none",
6
+ "fan_in_fan_out": false,
7
+ "inference_mode": true,
8
+ "init_lora_weights": true,
9
+ "layers_pattern": null,
10
+ "layers_to_transform": null,
11
+ "lora_alpha": 16.0,
12
+ "lora_dropout": 0.1,
13
+ "modules_to_save": null,
14
+ "peft_type": "LORA",
15
+ "r": 8,
16
+ "rank_pattern": {},
17
+ "revision": null,
18
+ "target_modules": [
19
+ "c_attn"
20
+ ],
21
+ "task_type": "CAUSAL_LM"
22
+ }
LLM-Detector-V4-11w/checkpoint-3000/adapter_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:028af04c0764159e23c5c6ec745e763a194d72ee12668faea997060fe0adcdb7
3
+ size 6308670
LLM-Detector-V4-11w/checkpoint-3000/optimizer.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d958e6fedf6779f5f6ff24e610500ffe7b00b1fc599511ff25458b9832ff9cf4
3
+ size 12623610
LLM-Detector-V4-11w/checkpoint-3000/qwen.tiktoken ADDED
The diff for this file is too large to render. See raw diff
 
LLM-Detector-V4-11w/checkpoint-3000/rng_state.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:116c8e4fc5473807936d8062da5727b2e081708525f159b7c34cafb7a954573e
3
+ size 14244
LLM-Detector-V4-11w/checkpoint-3000/scheduler.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3cd44a3ee0f872669b221a2176a2080abe02eb59a5fdb46ac96d95b4fbe14fcf
3
+ size 1064
LLM-Detector-V4-11w/checkpoint-3000/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|im_end|>"
4
+ ],
5
+ "eos_token": "<|endoftext|>",
6
+ "pad_token": "<|endoftext|>"
7
+ }
LLM-Detector-V4-11w/checkpoint-3000/tokenization_qwen.py ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Alibaba Cloud.
2
+ #
3
+ # This source code is licensed under the license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ """Tokenization classes for QWen."""
7
+
8
+ import base64
9
+ import logging
10
+ import os
11
+ import unicodedata
12
+ from typing import Collection, Dict, List, Set, Tuple, Union
13
+
14
+ import tiktoken
15
+ from transformers import PreTrainedTokenizer, AddedToken
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ VOCAB_FILES_NAMES = {"vocab_file": "qwen.tiktoken"}
21
+
22
+ PAT_STR = r"""(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+"""
23
+ ENDOFTEXT = "<|endoftext|>"
24
+ IMSTART = "<|im_start|>"
25
+ IMEND = "<|im_end|>"
26
+ # as the default behavior is changed to allow special tokens in
27
+ # regular texts, the surface forms of special tokens need to be
28
+ # as different as possible to minimize the impact
29
+ EXTRAS = tuple((f"<|extra_{i}|>" for i in range(205)))
30
+ # changed to use actual index to avoid misconfiguration with vocabulary expansion
31
+ SPECIAL_START_ID = 151643
32
+ SPECIAL_TOKENS = tuple(
33
+ enumerate(
34
+ (
35
+ (
36
+ ENDOFTEXT,
37
+ IMSTART,
38
+ IMEND,
39
+ )
40
+ + EXTRAS
41
+ ),
42
+ start=SPECIAL_START_ID,
43
+ )
44
+ )
45
+ SPECIAL_TOKENS_SET = set(t for i, t in SPECIAL_TOKENS)
46
+
47
+
48
+ def _load_tiktoken_bpe(tiktoken_bpe_file: str) -> Dict[bytes, int]:
49
+ with open(tiktoken_bpe_file, "rb") as f:
50
+ contents = f.read()
51
+ return {
52
+ base64.b64decode(token): int(rank)
53
+ for token, rank in (line.split() for line in contents.splitlines() if line)
54
+ }
55
+
56
+
57
+ class QWenTokenizer(PreTrainedTokenizer):
58
+ """QWen tokenizer."""
59
+
60
+ vocab_files_names = VOCAB_FILES_NAMES
61
+
62
+ def __init__(
63
+ self,
64
+ vocab_file,
65
+ errors="replace",
66
+ extra_vocab_file=None,
67
+ **kwargs,
68
+ ):
69
+ super().__init__(**kwargs)
70
+
71
+ # how to handle errors in decoding UTF-8 byte sequences
72
+ # use ignore if you are in streaming inference
73
+ self.errors = errors
74
+
75
+ self.mergeable_ranks = _load_tiktoken_bpe(vocab_file) # type: Dict[bytes, int]
76
+ self.special_tokens = {
77
+ token: index
78
+ for index, token in SPECIAL_TOKENS
79
+ }
80
+
81
+ # try load extra vocab from file
82
+ if extra_vocab_file is not None:
83
+ used_ids = set(self.mergeable_ranks.values()) | set(self.special_tokens.values())
84
+ extra_mergeable_ranks = _load_tiktoken_bpe(extra_vocab_file)
85
+ for token, index in extra_mergeable_ranks.items():
86
+ if token in self.mergeable_ranks:
87
+ logger.info(f"extra token {token} exists, skipping")
88
+ continue
89
+ if index in used_ids:
90
+ logger.info(f'the index {index} for extra token {token} exists, skipping')
91
+ continue
92
+ self.mergeable_ranks[token] = index
93
+ # the index may be sparse after this, but don't worry tiktoken.Encoding will handle this
94
+
95
+ enc = tiktoken.Encoding(
96
+ "Qwen",
97
+ pat_str=PAT_STR,
98
+ mergeable_ranks=self.mergeable_ranks,
99
+ special_tokens=self.special_tokens,
100
+ )
101
+ assert (
102
+ len(self.mergeable_ranks) + len(self.special_tokens) == enc.n_vocab
103
+ ), f"{len(self.mergeable_ranks) + len(self.special_tokens)} != {enc.n_vocab} in encoding"
104
+
105
+ self.decoder = {
106
+ v: k for k, v in self.mergeable_ranks.items()
107
+ } # type: dict[int, bytes|str]
108
+ self.decoder.update({v: k for k, v in self.special_tokens.items()})
109
+
110
+ self.tokenizer = enc # type: tiktoken.Encoding
111
+
112
+ self.eod_id = self.tokenizer.eot_token
113
+ self.im_start_id = self.special_tokens[IMSTART]
114
+ self.im_end_id = self.special_tokens[IMEND]
115
+
116
+ def __getstate__(self):
117
+ # for pickle lovers
118
+ state = self.__dict__.copy()
119
+ del state["tokenizer"]
120
+ return state
121
+
122
+ def __setstate__(self, state):
123
+ # tokenizer is not python native; don't pass it; rebuild it
124
+ self.__dict__.update(state)
125
+ enc = tiktoken.Encoding(
126
+ "Qwen",
127
+ pat_str=PAT_STR,
128
+ mergeable_ranks=self.mergeable_ranks,
129
+ special_tokens=self.special_tokens,
130
+ )
131
+ self.tokenizer = enc
132
+
133
+ def __len__(self) -> int:
134
+ return self.tokenizer.n_vocab
135
+
136
+ def get_vocab(self) -> Dict[bytes, int]:
137
+ return self.mergeable_ranks
138
+
139
+ def convert_tokens_to_ids(
140
+ self, tokens: Union[bytes, str, List[Union[bytes, str]]]
141
+ ) -> List[int]:
142
+ ids = []
143
+ if isinstance(tokens, (str, bytes)):
144
+ if tokens in self.special_tokens:
145
+ return self.special_tokens[tokens]
146
+ else:
147
+ return self.mergeable_ranks.get(tokens)
148
+ for token in tokens:
149
+ if token in self.special_tokens:
150
+ ids.append(self.special_tokens[token])
151
+ else:
152
+ ids.append(self.mergeable_ranks.get(token))
153
+ return ids
154
+
155
+ def _add_tokens(
156
+ self,
157
+ new_tokens: Union[List[str], List[AddedToken]],
158
+ special_tokens: bool = False,
159
+ ) -> int:
160
+ if not special_tokens and new_tokens:
161
+ raise ValueError("Adding regular tokens is not supported")
162
+ for token in new_tokens:
163
+ surface_form = token.content if isinstance(token, AddedToken) else token
164
+ if surface_form not in SPECIAL_TOKENS_SET:
165
+ raise ValueError("Adding unknown special tokens is not supported")
166
+ return 0
167
+
168
+ def save_vocabulary(self, save_directory: str, **kwargs) -> Tuple[str]:
169
+ """
170
+ Save only the vocabulary of the tokenizer (vocabulary).
171
+
172
+ Returns:
173
+ `Tuple(str)`: Paths to the files saved.
174
+ """
175
+ file_path = os.path.join(save_directory, "qwen.tiktoken")
176
+ with open(file_path, "w", encoding="utf8") as w:
177
+ for k, v in self.mergeable_ranks.items():
178
+ line = base64.b64encode(k).decode("utf8") + " " + str(v) + "\n"
179
+ w.write(line)
180
+ return (file_path,)
181
+
182
+ def tokenize(
183
+ self,
184
+ text: str,
185
+ allowed_special: Union[Set, str] = "all",
186
+ disallowed_special: Union[Collection, str] = (),
187
+ **kwargs,
188
+ ) -> List[Union[bytes, str]]:
189
+ """
190
+ Converts a string in a sequence of tokens.
191
+
192
+ Args:
193
+ text (`str`):
194
+ The sequence to be encoded.
195
+ allowed_special (`Literal["all"]` or `set`):
196
+ The surface forms of the tokens to be encoded as special tokens in regular texts.
197
+ Default to "all".
198
+ disallowed_special (`Literal["all"]` or `Collection`):
199
+ The surface forms of the tokens that should not be in regular texts and trigger errors.
200
+ Default to an empty tuple.
201
+
202
+ kwargs (additional keyword arguments, *optional*):
203
+ Will be passed to the underlying model specific encode method.
204
+
205
+ Returns:
206
+ `List[bytes|str]`: The list of tokens.
207
+ """
208
+ tokens = []
209
+ text = unicodedata.normalize("NFC", text)
210
+
211
+ # this implementation takes a detour: text -> token id -> token surface forms
212
+ for t in self.tokenizer.encode(
213
+ text, allowed_special=allowed_special, disallowed_special=disallowed_special
214
+ ):
215
+ tokens.append(self.decoder[t])
216
+ return tokens
217
+
218
+ def convert_tokens_to_string(self, tokens: List[Union[bytes, str]]) -> str:
219
+ """
220
+ Converts a sequence of tokens in a single string.
221
+ """
222
+ text = ""
223
+ temp = b""
224
+ for t in tokens:
225
+ if isinstance(t, str):
226
+ if temp:
227
+ text += temp.decode("utf-8", errors=self.errors)
228
+ temp = b""
229
+ text += t
230
+ elif isinstance(t, bytes):
231
+ temp += t
232
+ else:
233
+ raise TypeError("token should only be of type types or str")
234
+ if temp:
235
+ text += temp.decode("utf-8", errors=self.errors)
236
+ return text
237
+
238
+ @property
239
+ def vocab_size(self):
240
+ return self.tokenizer.n_vocab
241
+
242
+ def _convert_id_to_token(self, index: int) -> Union[bytes, str]:
243
+ """Converts an id to a token, special tokens included"""
244
+ if index in self.decoder:
245
+ return self.decoder[index]
246
+ raise ValueError("unknown ids")
247
+
248
+ def _convert_token_to_id(self, token: Union[bytes, str]) -> int:
249
+ """Converts a token to an id using the vocab, special tokens included"""
250
+ if token in self.special_tokens:
251
+ return self.special_tokens[token]
252
+ if token in self.mergeable_ranks:
253
+ return self.mergeable_ranks[token]
254
+ raise ValueError("unknown token")
255
+
256
+ def _tokenize(self, text: str, **kwargs):
257
+ """
258
+ Converts a string in a sequence of tokens (string), using the tokenizer. Split in words for word-based
259
+ vocabulary or sub-words for sub-word-based vocabularies (BPE/SentencePieces/WordPieces).
260
+
261
+ Do NOT take care of added tokens.
262
+ """
263
+ raise NotImplementedError
264
+
265
+ def _decode(
266
+ self,
267
+ token_ids: Union[int, List[int]],
268
+ skip_special_tokens: bool = False,
269
+ errors: str = None,
270
+ **kwargs,
271
+ ) -> str:
272
+ if isinstance(token_ids, int):
273
+ token_ids = [token_ids]
274
+ if skip_special_tokens:
275
+ token_ids = [i for i in token_ids if i < self.eod_id]
276
+ return self.tokenizer.decode(token_ids, errors=errors or self.errors)
LLM-Detector-V4-11w/checkpoint-3000/tokenizer_config.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "auto_map": {
3
+ "AutoTokenizer": [
4
+ "tokenization_qwen.QWenTokenizer",
5
+ null
6
+ ]
7
+ },
8
+ "clean_up_tokenization_spaces": true,
9
+ "model_max_length": 8192,
10
+ "padding_side": "right",
11
+ "split_special_tokens": false,
12
+ "tokenizer_class": "QWenTokenizer"
13
+ }
LLM-Detector-V4-11w/checkpoint-3000/trainer_state.json ADDED
@@ -0,0 +1,199 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "best_metric": null,
3
+ "best_model_checkpoint": null,
4
+ "epoch": 0.8072110856989103,
5
+ "eval_steps": 500,
6
+ "global_step": 3000,
7
+ "is_hyper_param_search": false,
8
+ "is_local_process_zero": true,
9
+ "is_world_process_zero": true,
10
+ "log_history": [
11
+ {
12
+ "epoch": 0.03,
13
+ "learning_rate": 4.991071065046783e-05,
14
+ "loss": 3.0435,
15
+ "step": 100
16
+ },
17
+ {
18
+ "epoch": 0.05,
19
+ "learning_rate": 4.9643480408906496e-05,
20
+ "loss": 0.0382,
21
+ "step": 200
22
+ },
23
+ {
24
+ "epoch": 0.08,
25
+ "learning_rate": 4.920021814047156e-05,
26
+ "loss": 0.0227,
27
+ "step": 300
28
+ },
29
+ {
30
+ "epoch": 0.11,
31
+ "learning_rate": 4.858409013313266e-05,
32
+ "loss": 0.0258,
33
+ "step": 400
34
+ },
35
+ {
36
+ "epoch": 0.13,
37
+ "learning_rate": 4.7799497480410125e-05,
38
+ "loss": 0.0256,
39
+ "step": 500
40
+ },
41
+ {
42
+ "epoch": 0.16,
43
+ "learning_rate": 4.685204464371269e-05,
44
+ "loss": 0.0312,
45
+ "step": 600
46
+ },
47
+ {
48
+ "epoch": 0.19,
49
+ "learning_rate": 4.574849941884044e-05,
50
+ "loss": 0.0212,
51
+ "step": 700
52
+ },
53
+ {
54
+ "epoch": 0.22,
55
+ "learning_rate": 4.449674459261804e-05,
56
+ "loss": 0.0271,
57
+ "step": 800
58
+ },
59
+ {
60
+ "epoch": 0.24,
61
+ "learning_rate": 4.310572163498205e-05,
62
+ "loss": 0.0203,
63
+ "step": 900
64
+ },
65
+ {
66
+ "epoch": 0.27,
67
+ "learning_rate": 4.158536682873821e-05,
68
+ "loss": 0.0172,
69
+ "step": 1000
70
+ },
71
+ {
72
+ "epoch": 0.3,
73
+ "learning_rate": 3.994654029322313e-05,
74
+ "loss": 0.0241,
75
+ "step": 1100
76
+ },
77
+ {
78
+ "epoch": 0.32,
79
+ "learning_rate": 3.8200948408864986e-05,
80
+ "loss": 0.0167,
81
+ "step": 1200
82
+ },
83
+ {
84
+ "epoch": 0.35,
85
+ "learning_rate": 3.636106019677602e-05,
86
+ "loss": 0.0134,
87
+ "step": 1300
88
+ },
89
+ {
90
+ "epoch": 0.38,
91
+ "learning_rate": 3.4440018250689767e-05,
92
+ "loss": 0.0145,
93
+ "step": 1400
94
+ },
95
+ {
96
+ "epoch": 0.4,
97
+ "learning_rate": 3.2451544857469436e-05,
98
+ "loss": 0.0127,
99
+ "step": 1500
100
+ },
101
+ {
102
+ "epoch": 0.43,
103
+ "learning_rate": 3.040984397678245e-05,
104
+ "loss": 0.0164,
105
+ "step": 1600
106
+ },
107
+ {
108
+ "epoch": 0.46,
109
+ "learning_rate": 2.8329499780114865e-05,
110
+ "loss": 0.0187,
111
+ "step": 1700
112
+ },
113
+ {
114
+ "epoch": 0.48,
115
+ "learning_rate": 2.6225372473876565e-05,
116
+ "loss": 0.0147,
117
+ "step": 1800
118
+ },
119
+ {
120
+ "epoch": 0.51,
121
+ "learning_rate": 2.41124921507481e-05,
122
+ "loss": 0.0156,
123
+ "step": 1900
124
+ },
125
+ {
126
+ "epoch": 0.54,
127
+ "learning_rate": 2.2005951427504784e-05,
128
+ "loss": 0.0184,
129
+ "step": 2000
130
+ },
131
+ {
132
+ "epoch": 0.57,
133
+ "learning_rate": 1.9920797636221933e-05,
134
+ "loss": 0.0119,
135
+ "step": 2100
136
+ },
137
+ {
138
+ "epoch": 0.59,
139
+ "learning_rate": 1.7871925338955412e-05,
140
+ "loss": 0.0144,
141
+ "step": 2200
142
+ },
143
+ {
144
+ "epoch": 0.62,
145
+ "learning_rate": 1.5873969933681e-05,
146
+ "loss": 0.0124,
147
+ "step": 2300
148
+ },
149
+ {
150
+ "epoch": 0.65,
151
+ "learning_rate": 1.3941203111481194e-05,
152
+ "loss": 0.0129,
153
+ "step": 2400
154
+ },
155
+ {
156
+ "epoch": 0.67,
157
+ "learning_rate": 1.2087430911744144e-05,
158
+ "loss": 0.0067,
159
+ "step": 2500
160
+ },
161
+ {
162
+ "epoch": 0.7,
163
+ "learning_rate": 1.0325895103581462e-05,
164
+ "loss": 0.0161,
165
+ "step": 2600
166
+ },
167
+ {
168
+ "epoch": 0.73,
169
+ "learning_rate": 8.669178597912217e-06,
170
+ "loss": 0.0124,
171
+ "step": 2700
172
+ },
173
+ {
174
+ "epoch": 0.75,
175
+ "learning_rate": 7.129115565868463e-06,
176
+ "loss": 0.0161,
177
+ "step": 2800
178
+ },
179
+ {
180
+ "epoch": 0.78,
181
+ "learning_rate": 5.716706905559768e-06,
182
+ "loss": 0.0145,
183
+ "step": 2900
184
+ },
185
+ {
186
+ "epoch": 0.81,
187
+ "learning_rate": 4.4420416610303325e-06,
188
+ "loss": 0.0088,
189
+ "step": 3000
190
+ }
191
+ ],
192
+ "logging_steps": 100,
193
+ "max_steps": 3716,
194
+ "num_train_epochs": 1,
195
+ "save_steps": 1000,
196
+ "total_flos": 2.4736072211654246e+17,
197
+ "trial_name": null,
198
+ "trial_params": null
199
+ }
LLM-Detector-V4-11w/checkpoint-3000/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8bc4e49fff68420e89c2879345b8b8f748c6b8c4a56351c173150f7352012454
3
+ size 4664
LLM-Detector-V4-11w/qwen.tiktoken ADDED
The diff for this file is too large to render. See raw diff
 
LLM-Detector-V4-11w/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|im_end|>"
4
+ ],
5
+ "eos_token": "<|endoftext|>",
6
+ "pad_token": "<|endoftext|>"
7
+ }
LLM-Detector-V4-11w/tokenization_qwen.py ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Alibaba Cloud.
2
+ #
3
+ # This source code is licensed under the license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ """Tokenization classes for QWen."""
7
+
8
+ import base64
9
+ import logging
10
+ import os
11
+ import unicodedata
12
+ from typing import Collection, Dict, List, Set, Tuple, Union
13
+
14
+ import tiktoken
15
+ from transformers import PreTrainedTokenizer, AddedToken
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ VOCAB_FILES_NAMES = {"vocab_file": "qwen.tiktoken"}
21
+
22
+ PAT_STR = r"""(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+"""
23
+ ENDOFTEXT = "<|endoftext|>"
24
+ IMSTART = "<|im_start|>"
25
+ IMEND = "<|im_end|>"
26
+ # as the default behavior is changed to allow special tokens in
27
+ # regular texts, the surface forms of special tokens need to be
28
+ # as different as possible to minimize the impact
29
+ EXTRAS = tuple((f"<|extra_{i}|>" for i in range(205)))
30
+ # changed to use actual index to avoid misconfiguration with vocabulary expansion
31
+ SPECIAL_START_ID = 151643
32
+ SPECIAL_TOKENS = tuple(
33
+ enumerate(
34
+ (
35
+ (
36
+ ENDOFTEXT,
37
+ IMSTART,
38
+ IMEND,
39
+ )
40
+ + EXTRAS
41
+ ),
42
+ start=SPECIAL_START_ID,
43
+ )
44
+ )
45
+ SPECIAL_TOKENS_SET = set(t for i, t in SPECIAL_TOKENS)
46
+
47
+
48
+ def _load_tiktoken_bpe(tiktoken_bpe_file: str) -> Dict[bytes, int]:
49
+ with open(tiktoken_bpe_file, "rb") as f:
50
+ contents = f.read()
51
+ return {
52
+ base64.b64decode(token): int(rank)
53
+ for token, rank in (line.split() for line in contents.splitlines() if line)
54
+ }
55
+
56
+
57
+ class QWenTokenizer(PreTrainedTokenizer):
58
+ """QWen tokenizer."""
59
+
60
+ vocab_files_names = VOCAB_FILES_NAMES
61
+
62
+ def __init__(
63
+ self,
64
+ vocab_file,
65
+ errors="replace",
66
+ extra_vocab_file=None,
67
+ **kwargs,
68
+ ):
69
+ super().__init__(**kwargs)
70
+
71
+ # how to handle errors in decoding UTF-8 byte sequences
72
+ # use ignore if you are in streaming inference
73
+ self.errors = errors
74
+
75
+ self.mergeable_ranks = _load_tiktoken_bpe(vocab_file) # type: Dict[bytes, int]
76
+ self.special_tokens = {
77
+ token: index
78
+ for index, token in SPECIAL_TOKENS
79
+ }
80
+
81
+ # try load extra vocab from file
82
+ if extra_vocab_file is not None:
83
+ used_ids = set(self.mergeable_ranks.values()) | set(self.special_tokens.values())
84
+ extra_mergeable_ranks = _load_tiktoken_bpe(extra_vocab_file)
85
+ for token, index in extra_mergeable_ranks.items():
86
+ if token in self.mergeable_ranks:
87
+ logger.info(f"extra token {token} exists, skipping")
88
+ continue
89
+ if index in used_ids:
90
+ logger.info(f'the index {index} for extra token {token} exists, skipping')
91
+ continue
92
+ self.mergeable_ranks[token] = index
93
+ # the index may be sparse after this, but don't worry tiktoken.Encoding will handle this
94
+
95
+ enc = tiktoken.Encoding(
96
+ "Qwen",
97
+ pat_str=PAT_STR,
98
+ mergeable_ranks=self.mergeable_ranks,
99
+ special_tokens=self.special_tokens,
100
+ )
101
+ assert (
102
+ len(self.mergeable_ranks) + len(self.special_tokens) == enc.n_vocab
103
+ ), f"{len(self.mergeable_ranks) + len(self.special_tokens)} != {enc.n_vocab} in encoding"
104
+
105
+ self.decoder = {
106
+ v: k for k, v in self.mergeable_ranks.items()
107
+ } # type: dict[int, bytes|str]
108
+ self.decoder.update({v: k for k, v in self.special_tokens.items()})
109
+
110
+ self.tokenizer = enc # type: tiktoken.Encoding
111
+
112
+ self.eod_id = self.tokenizer.eot_token
113
+ self.im_start_id = self.special_tokens[IMSTART]
114
+ self.im_end_id = self.special_tokens[IMEND]
115
+
116
+ def __getstate__(self):
117
+ # for pickle lovers
118
+ state = self.__dict__.copy()
119
+ del state["tokenizer"]
120
+ return state
121
+
122
+ def __setstate__(self, state):
123
+ # tokenizer is not python native; don't pass it; rebuild it
124
+ self.__dict__.update(state)
125
+ enc = tiktoken.Encoding(
126
+ "Qwen",
127
+ pat_str=PAT_STR,
128
+ mergeable_ranks=self.mergeable_ranks,
129
+ special_tokens=self.special_tokens,
130
+ )
131
+ self.tokenizer = enc
132
+
133
+ def __len__(self) -> int:
134
+ return self.tokenizer.n_vocab
135
+
136
+ def get_vocab(self) -> Dict[bytes, int]:
137
+ return self.mergeable_ranks
138
+
139
+ def convert_tokens_to_ids(
140
+ self, tokens: Union[bytes, str, List[Union[bytes, str]]]
141
+ ) -> List[int]:
142
+ ids = []
143
+ if isinstance(tokens, (str, bytes)):
144
+ if tokens in self.special_tokens:
145
+ return self.special_tokens[tokens]
146
+ else:
147
+ return self.mergeable_ranks.get(tokens)
148
+ for token in tokens:
149
+ if token in self.special_tokens:
150
+ ids.append(self.special_tokens[token])
151
+ else:
152
+ ids.append(self.mergeable_ranks.get(token))
153
+ return ids
154
+
155
+ def _add_tokens(
156
+ self,
157
+ new_tokens: Union[List[str], List[AddedToken]],
158
+ special_tokens: bool = False,
159
+ ) -> int:
160
+ if not special_tokens and new_tokens:
161
+ raise ValueError("Adding regular tokens is not supported")
162
+ for token in new_tokens:
163
+ surface_form = token.content if isinstance(token, AddedToken) else token
164
+ if surface_form not in SPECIAL_TOKENS_SET:
165
+ raise ValueError("Adding unknown special tokens is not supported")
166
+ return 0
167
+
168
+ def save_vocabulary(self, save_directory: str, **kwargs) -> Tuple[str]:
169
+ """
170
+ Save only the vocabulary of the tokenizer (vocabulary).
171
+
172
+ Returns:
173
+ `Tuple(str)`: Paths to the files saved.
174
+ """
175
+ file_path = os.path.join(save_directory, "qwen.tiktoken")
176
+ with open(file_path, "w", encoding="utf8") as w:
177
+ for k, v in self.mergeable_ranks.items():
178
+ line = base64.b64encode(k).decode("utf8") + " " + str(v) + "\n"
179
+ w.write(line)
180
+ return (file_path,)
181
+
182
+ def tokenize(
183
+ self,
184
+ text: str,
185
+ allowed_special: Union[Set, str] = "all",
186
+ disallowed_special: Union[Collection, str] = (),
187
+ **kwargs,
188
+ ) -> List[Union[bytes, str]]:
189
+ """
190
+ Converts a string in a sequence of tokens.
191
+
192
+ Args:
193
+ text (`str`):
194
+ The sequence to be encoded.
195
+ allowed_special (`Literal["all"]` or `set`):
196
+ The surface forms of the tokens to be encoded as special tokens in regular texts.
197
+ Default to "all".
198
+ disallowed_special (`Literal["all"]` or `Collection`):
199
+ The surface forms of the tokens that should not be in regular texts and trigger errors.
200
+ Default to an empty tuple.
201
+
202
+ kwargs (additional keyword arguments, *optional*):
203
+ Will be passed to the underlying model specific encode method.
204
+
205
+ Returns:
206
+ `List[bytes|str]`: The list of tokens.
207
+ """
208
+ tokens = []
209
+ text = unicodedata.normalize("NFC", text)
210
+
211
+ # this implementation takes a detour: text -> token id -> token surface forms
212
+ for t in self.tokenizer.encode(
213
+ text, allowed_special=allowed_special, disallowed_special=disallowed_special
214
+ ):
215
+ tokens.append(self.decoder[t])
216
+ return tokens
217
+
218
+ def convert_tokens_to_string(self, tokens: List[Union[bytes, str]]) -> str:
219
+ """
220
+ Converts a sequence of tokens in a single string.
221
+ """
222
+ text = ""
223
+ temp = b""
224
+ for t in tokens:
225
+ if isinstance(t, str):
226
+ if temp:
227
+ text += temp.decode("utf-8", errors=self.errors)
228
+ temp = b""
229
+ text += t
230
+ elif isinstance(t, bytes):
231
+ temp += t
232
+ else:
233
+ raise TypeError("token should only be of type types or str")
234
+ if temp:
235
+ text += temp.decode("utf-8", errors=self.errors)
236
+ return text
237
+
238
+ @property
239
+ def vocab_size(self):
240
+ return self.tokenizer.n_vocab
241
+
242
+ def _convert_id_to_token(self, index: int) -> Union[bytes, str]:
243
+ """Converts an id to a token, special tokens included"""
244
+ if index in self.decoder:
245
+ return self.decoder[index]
246
+ raise ValueError("unknown ids")
247
+
248
+ def _convert_token_to_id(self, token: Union[bytes, str]) -> int:
249
+ """Converts a token to an id using the vocab, special tokens included"""
250
+ if token in self.special_tokens:
251
+ return self.special_tokens[token]
252
+ if token in self.mergeable_ranks:
253
+ return self.mergeable_ranks[token]
254
+ raise ValueError("unknown token")
255
+
256
+ def _tokenize(self, text: str, **kwargs):
257
+ """
258
+ Converts a string in a sequence of tokens (string), using the tokenizer. Split in words for word-based
259
+ vocabulary or sub-words for sub-word-based vocabularies (BPE/SentencePieces/WordPieces).
260
+
261
+ Do NOT take care of added tokens.
262
+ """
263
+ raise NotImplementedError
264
+
265
+ def _decode(
266
+ self,
267
+ token_ids: Union[int, List[int]],
268
+ skip_special_tokens: bool = False,
269
+ errors: str = None,
270
+ **kwargs,
271
+ ) -> str:
272
+ if isinstance(token_ids, int):
273
+ token_ids = [token_ids]
274
+ if skip_special_tokens:
275
+ token_ids = [i for i in token_ids if i < self.eod_id]
276
+ return self.tokenizer.decode(token_ids, errors=errors or self.errors)
LLM-Detector-V4-11w/tokenizer_config.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "auto_map": {
3
+ "AutoTokenizer": [
4
+ "tokenization_qwen.QWenTokenizer",
5
+ null
6
+ ]
7
+ },
8
+ "clean_up_tokenization_spaces": true,
9
+ "model_max_length": 8192,
10
+ "padding_side": "right",
11
+ "split_special_tokens": false,
12
+ "tokenizer_class": "QWenTokenizer"
13
+ }
LLM-Detector-V4-11w/train_results.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "epoch": 1.0,
3
+ "train_loss": 0.09819089700903973,
4
+ "train_runtime": 7694.3429,
5
+ "train_samples_per_second": 15.456,
6
+ "train_steps_per_second": 0.483
7
+ }
LLM-Detector-V4-11w/trainer_log.jsonl ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"current_steps": 100, "total_steps": 3716, "loss": 3.0435, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.991071065046783e-05, "epoch": 0.03, "percentage": 2.69, "elapsed_time": "0:03:29", "remaining_time": "2:06:21"}
2
+ {"current_steps": 200, "total_steps": 3716, "loss": 0.0382, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.9643480408906496e-05, "epoch": 0.05, "percentage": 5.38, "elapsed_time": "0:07:00", "remaining_time": "2:03:04"}
3
+ {"current_steps": 300, "total_steps": 3716, "loss": 0.0227, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.920021814047156e-05, "epoch": 0.08, "percentage": 8.07, "elapsed_time": "0:10:21", "remaining_time": "1:57:59"}
4
+ {"current_steps": 400, "total_steps": 3716, "loss": 0.0258, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.858409013313266e-05, "epoch": 0.11, "percentage": 10.76, "elapsed_time": "0:13:45", "remaining_time": "1:54:02"}
5
+ {"current_steps": 500, "total_steps": 3716, "loss": 0.0256, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.7799497480410125e-05, "epoch": 0.13, "percentage": 13.46, "elapsed_time": "0:17:14", "remaining_time": "1:50:50"}
6
+ {"current_steps": 600, "total_steps": 3716, "loss": 0.0312, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.685204464371269e-05, "epoch": 0.16, "percentage": 16.15, "elapsed_time": "0:20:42", "remaining_time": "1:47:31"}
7
+ {"current_steps": 700, "total_steps": 3716, "loss": 0.0212, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.574849941884044e-05, "epoch": 0.19, "percentage": 18.84, "elapsed_time": "0:24:08", "remaining_time": "1:44:01"}
8
+ {"current_steps": 800, "total_steps": 3716, "loss": 0.0271, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.449674459261804e-05, "epoch": 0.22, "percentage": 21.53, "elapsed_time": "0:27:32", "remaining_time": "1:40:23"}
9
+ {"current_steps": 900, "total_steps": 3716, "loss": 0.0203, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.310572163498205e-05, "epoch": 0.24, "percentage": 24.22, "elapsed_time": "0:31:00", "remaining_time": "1:37:02"}
10
+ {"current_steps": 1000, "total_steps": 3716, "loss": 0.0172, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.158536682873821e-05, "epoch": 0.27, "percentage": 26.91, "elapsed_time": "0:34:29", "remaining_time": "1:33:41"}
11
+ {"current_steps": 1100, "total_steps": 3716, "loss": 0.0241, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 3.994654029322313e-05, "epoch": 0.3, "percentage": 29.6, "elapsed_time": "0:37:53", "remaining_time": "1:30:07"}
12
+ {"current_steps": 1200, "total_steps": 3716, "loss": 0.0167, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 3.8200948408864986e-05, "epoch": 0.32, "percentage": 32.29, "elapsed_time": "0:41:28", "remaining_time": "1:26:58"}
13
+ {"current_steps": 1300, "total_steps": 3716, "loss": 0.0134, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 3.636106019677602e-05, "epoch": 0.35, "percentage": 34.98, "elapsed_time": "0:44:54", "remaining_time": "1:23:27"}
14
+ {"current_steps": 1400, "total_steps": 3716, "loss": 0.0145, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 3.4440018250689767e-05, "epoch": 0.38, "percentage": 37.67, "elapsed_time": "0:48:21", "remaining_time": "1:20:00"}
15
+ {"current_steps": 1500, "total_steps": 3716, "loss": 0.0127, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 3.2451544857469436e-05, "epoch": 0.4, "percentage": 40.37, "elapsed_time": "0:51:46", "remaining_time": "1:16:28"}
16
+ {"current_steps": 1600, "total_steps": 3716, "loss": 0.0164, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 3.040984397678245e-05, "epoch": 0.43, "percentage": 43.06, "elapsed_time": "0:55:13", "remaining_time": "1:13:02"}
17
+ {"current_steps": 1700, "total_steps": 3716, "loss": 0.0187, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 2.8329499780114865e-05, "epoch": 0.46, "percentage": 45.75, "elapsed_time": "0:58:37", "remaining_time": "1:09:31"}
18
+ {"current_steps": 1800, "total_steps": 3716, "loss": 0.0147, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 2.6225372473876565e-05, "epoch": 0.48, "percentage": 48.44, "elapsed_time": "1:02:04", "remaining_time": "1:06:04"}
19
+ {"current_steps": 1900, "total_steps": 3716, "loss": 0.0156, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 2.41124921507481e-05, "epoch": 0.51, "percentage": 51.13, "elapsed_time": "1:05:29", "remaining_time": "1:02:35"}
20
+ {"current_steps": 2000, "total_steps": 3716, "loss": 0.0184, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 2.2005951427504784e-05, "epoch": 0.54, "percentage": 53.82, "elapsed_time": "1:09:00", "remaining_time": "0:59:12"}
21
+ {"current_steps": 2100, "total_steps": 3716, "loss": 0.0119, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 1.9920797636221933e-05, "epoch": 0.57, "percentage": 56.51, "elapsed_time": "1:12:21", "remaining_time": "0:55:40"}
22
+ {"current_steps": 2200, "total_steps": 3716, "loss": 0.0144, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 1.7871925338955412e-05, "epoch": 0.59, "percentage": 59.2, "elapsed_time": "1:15:50", "remaining_time": "0:52:15"}
23
+ {"current_steps": 2300, "total_steps": 3716, "loss": 0.0124, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 1.5873969933681e-05, "epoch": 0.62, "percentage": 61.89, "elapsed_time": "1:19:14", "remaining_time": "0:48:47"}
24
+ {"current_steps": 2400, "total_steps": 3716, "loss": 0.0129, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 1.3941203111481194e-05, "epoch": 0.65, "percentage": 64.59, "elapsed_time": "1:22:41", "remaining_time": "0:45:20"}
25
+ {"current_steps": 2500, "total_steps": 3716, "loss": 0.0067, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 1.2087430911744144e-05, "epoch": 0.67, "percentage": 67.28, "elapsed_time": "1:26:07", "remaining_time": "0:41:53"}
26
+ {"current_steps": 2600, "total_steps": 3716, "loss": 0.0161, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 1.0325895103581462e-05, "epoch": 0.7, "percentage": 69.97, "elapsed_time": "1:29:32", "remaining_time": "0:38:26"}
27
+ {"current_steps": 2700, "total_steps": 3716, "loss": 0.0124, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 8.669178597912217e-06, "epoch": 0.73, "percentage": 72.66, "elapsed_time": "1:33:00", "remaining_time": "0:34:59"}
28
+ {"current_steps": 2800, "total_steps": 3716, "loss": 0.0161, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 7.129115565868463e-06, "epoch": 0.75, "percentage": 75.35, "elapsed_time": "1:36:30", "remaining_time": "0:31:34"}
29
+ {"current_steps": 2900, "total_steps": 3716, "loss": 0.0145, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 5.716706905559768e-06, "epoch": 0.78, "percentage": 78.04, "elapsed_time": "1:39:54", "remaining_time": "0:28:06"}
30
+ {"current_steps": 3000, "total_steps": 3716, "loss": 0.0088, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.4420416610303325e-06, "epoch": 0.81, "percentage": 80.73, "elapsed_time": "1:43:21", "remaining_time": "0:24:40"}
31
+ {"current_steps": 3100, "total_steps": 3716, "loss": 0.0124, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 3.314224954724593e-06, "epoch": 0.83, "percentage": 83.42, "elapsed_time": "1:46:56", "remaining_time": "0:21:14"}
32
+ {"current_steps": 3200, "total_steps": 3716, "loss": 0.0154, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 2.341312948250349e-06, "epoch": 0.86, "percentage": 86.11, "elapsed_time": "1:50:23", "remaining_time": "0:17:48"}
33
+ {"current_steps": 3300, "total_steps": 3716, "loss": 0.0161, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 1.5302552960244022e-06, "epoch": 0.89, "percentage": 88.81, "elapsed_time": "1:53:55", "remaining_time": "0:14:21"}
34
+ {"current_steps": 3400, "total_steps": 3716, "loss": 0.0118, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 8.868455028627959e-07, "epoch": 0.91, "percentage": 91.5, "elapsed_time": "1:57:26", "remaining_time": "0:10:54"}
35
+ {"current_steps": 3500, "total_steps": 3716, "loss": 0.0067, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 4.156795401186381e-07, "epoch": 0.94, "percentage": 94.19, "elapsed_time": "2:00:47", "remaining_time": "0:07:27"}
36
+ {"current_steps": 3600, "total_steps": 3716, "loss": 0.0096, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 1.2012301597874863e-07, "epoch": 0.97, "percentage": 96.88, "elapsed_time": "2:04:14", "remaining_time": "0:04:00"}
37
+ {"current_steps": 3700, "total_steps": 3716, "loss": 0.0113, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": 2.2871344263597496e-09, "epoch": 1.0, "percentage": 99.57, "elapsed_time": "2:07:40", "remaining_time": "0:00:33"}
38
+ {"current_steps": 3716, "total_steps": 3716, "loss": null, "eval_loss": null, "predict_loss": null, "reward": null, "learning_rate": null, "epoch": 1.0, "percentage": 100.0, "elapsed_time": "2:08:14", "remaining_time": "0:00:00"}
LLM-Detector-V4-11w/trainer_state.json ADDED
@@ -0,0 +1,250 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "best_metric": null,
3
+ "best_model_checkpoint": null,
4
+ "epoch": 0.9998654648190501,
5
+ "eval_steps": 500,
6
+ "global_step": 3716,
7
+ "is_hyper_param_search": false,
8
+ "is_local_process_zero": true,
9
+ "is_world_process_zero": true,
10
+ "log_history": [
11
+ {
12
+ "epoch": 0.03,
13
+ "learning_rate": 4.991071065046783e-05,
14
+ "loss": 3.0435,
15
+ "step": 100
16
+ },
17
+ {
18
+ "epoch": 0.05,
19
+ "learning_rate": 4.9643480408906496e-05,
20
+ "loss": 0.0382,
21
+ "step": 200
22
+ },
23
+ {
24
+ "epoch": 0.08,
25
+ "learning_rate": 4.920021814047156e-05,
26
+ "loss": 0.0227,
27
+ "step": 300
28
+ },
29
+ {
30
+ "epoch": 0.11,
31
+ "learning_rate": 4.858409013313266e-05,
32
+ "loss": 0.0258,
33
+ "step": 400
34
+ },
35
+ {
36
+ "epoch": 0.13,
37
+ "learning_rate": 4.7799497480410125e-05,
38
+ "loss": 0.0256,
39
+ "step": 500
40
+ },
41
+ {
42
+ "epoch": 0.16,
43
+ "learning_rate": 4.685204464371269e-05,
44
+ "loss": 0.0312,
45
+ "step": 600
46
+ },
47
+ {
48
+ "epoch": 0.19,
49
+ "learning_rate": 4.574849941884044e-05,
50
+ "loss": 0.0212,
51
+ "step": 700
52
+ },
53
+ {
54
+ "epoch": 0.22,
55
+ "learning_rate": 4.449674459261804e-05,
56
+ "loss": 0.0271,
57
+ "step": 800
58
+ },
59
+ {
60
+ "epoch": 0.24,
61
+ "learning_rate": 4.310572163498205e-05,
62
+ "loss": 0.0203,
63
+ "step": 900
64
+ },
65
+ {
66
+ "epoch": 0.27,
67
+ "learning_rate": 4.158536682873821e-05,
68
+ "loss": 0.0172,
69
+ "step": 1000
70
+ },
71
+ {
72
+ "epoch": 0.3,
73
+ "learning_rate": 3.994654029322313e-05,
74
+ "loss": 0.0241,
75
+ "step": 1100
76
+ },
77
+ {
78
+ "epoch": 0.32,
79
+ "learning_rate": 3.8200948408864986e-05,
80
+ "loss": 0.0167,
81
+ "step": 1200
82
+ },
83
+ {
84
+ "epoch": 0.35,
85
+ "learning_rate": 3.636106019677602e-05,
86
+ "loss": 0.0134,
87
+ "step": 1300
88
+ },
89
+ {
90
+ "epoch": 0.38,
91
+ "learning_rate": 3.4440018250689767e-05,
92
+ "loss": 0.0145,
93
+ "step": 1400
94
+ },
95
+ {
96
+ "epoch": 0.4,
97
+ "learning_rate": 3.2451544857469436e-05,
98
+ "loss": 0.0127,
99
+ "step": 1500
100
+ },
101
+ {
102
+ "epoch": 0.43,
103
+ "learning_rate": 3.040984397678245e-05,
104
+ "loss": 0.0164,
105
+ "step": 1600
106
+ },
107
+ {
108
+ "epoch": 0.46,
109
+ "learning_rate": 2.8329499780114865e-05,
110
+ "loss": 0.0187,
111
+ "step": 1700
112
+ },
113
+ {
114
+ "epoch": 0.48,
115
+ "learning_rate": 2.6225372473876565e-05,
116
+ "loss": 0.0147,
117
+ "step": 1800
118
+ },
119
+ {
120
+ "epoch": 0.51,
121
+ "learning_rate": 2.41124921507481e-05,
122
+ "loss": 0.0156,
123
+ "step": 1900
124
+ },
125
+ {
126
+ "epoch": 0.54,
127
+ "learning_rate": 2.2005951427504784e-05,
128
+ "loss": 0.0184,
129
+ "step": 2000
130
+ },
131
+ {
132
+ "epoch": 0.57,
133
+ "learning_rate": 1.9920797636221933e-05,
134
+ "loss": 0.0119,
135
+ "step": 2100
136
+ },
137
+ {
138
+ "epoch": 0.59,
139
+ "learning_rate": 1.7871925338955412e-05,
140
+ "loss": 0.0144,
141
+ "step": 2200
142
+ },
143
+ {
144
+ "epoch": 0.62,
145
+ "learning_rate": 1.5873969933681e-05,
146
+ "loss": 0.0124,
147
+ "step": 2300
148
+ },
149
+ {
150
+ "epoch": 0.65,
151
+ "learning_rate": 1.3941203111481194e-05,
152
+ "loss": 0.0129,
153
+ "step": 2400
154
+ },
155
+ {
156
+ "epoch": 0.67,
157
+ "learning_rate": 1.2087430911744144e-05,
158
+ "loss": 0.0067,
159
+ "step": 2500
160
+ },
161
+ {
162
+ "epoch": 0.7,
163
+ "learning_rate": 1.0325895103581462e-05,
164
+ "loss": 0.0161,
165
+ "step": 2600
166
+ },
167
+ {
168
+ "epoch": 0.73,
169
+ "learning_rate": 8.669178597912217e-06,
170
+ "loss": 0.0124,
171
+ "step": 2700
172
+ },
173
+ {
174
+ "epoch": 0.75,
175
+ "learning_rate": 7.129115565868463e-06,
176
+ "loss": 0.0161,
177
+ "step": 2800
178
+ },
179
+ {
180
+ "epoch": 0.78,
181
+ "learning_rate": 5.716706905559768e-06,
182
+ "loss": 0.0145,
183
+ "step": 2900
184
+ },
185
+ {
186
+ "epoch": 0.81,
187
+ "learning_rate": 4.4420416610303325e-06,
188
+ "loss": 0.0088,
189
+ "step": 3000
190
+ },
191
+ {
192
+ "epoch": 0.83,
193
+ "learning_rate": 3.314224954724593e-06,
194
+ "loss": 0.0124,
195
+ "step": 3100
196
+ },
197
+ {
198
+ "epoch": 0.86,
199
+ "learning_rate": 2.341312948250349e-06,
200
+ "loss": 0.0154,
201
+ "step": 3200
202
+ },
203
+ {
204
+ "epoch": 0.89,
205
+ "learning_rate": 1.5302552960244022e-06,
206
+ "loss": 0.0161,
207
+ "step": 3300
208
+ },
209
+ {
210
+ "epoch": 0.91,
211
+ "learning_rate": 8.868455028627959e-07,
212
+ "loss": 0.0118,
213
+ "step": 3400
214
+ },
215
+ {
216
+ "epoch": 0.94,
217
+ "learning_rate": 4.156795401186381e-07,
218
+ "loss": 0.0067,
219
+ "step": 3500
220
+ },
221
+ {
222
+ "epoch": 0.97,
223
+ "learning_rate": 1.2012301597874863e-07,
224
+ "loss": 0.0096,
225
+ "step": 3600
226
+ },
227
+ {
228
+ "epoch": 1.0,
229
+ "learning_rate": 2.2871344263597496e-09,
230
+ "loss": 0.0113,
231
+ "step": 3700
232
+ },
233
+ {
234
+ "epoch": 1.0,
235
+ "step": 3716,
236
+ "total_flos": 3.0689685240938496e+17,
237
+ "train_loss": 0.09819089700903973,
238
+ "train_runtime": 7694.3429,
239
+ "train_samples_per_second": 15.456,
240
+ "train_steps_per_second": 0.483
241
+ }
242
+ ],
243
+ "logging_steps": 100,
244
+ "max_steps": 3716,
245
+ "num_train_epochs": 1,
246
+ "save_steps": 1000,
247
+ "total_flos": 3.0689685240938496e+17,
248
+ "trial_name": null,
249
+ "trial_params": null
250
+ }
LLM-Detector-V4-11w/training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8bc4e49fff68420e89c2879345b8b8f748c6b8c4a56351c173150f7352012454
3
+ size 4664
LLM-Detector-V4-11w/training_loss.png ADDED