samcheng0 commited on
Commit
a947587
·
verified ·
1 Parent(s): 451e6ea

Upload folder using huggingface_hub

Browse files
Files changed (9) hide show
  1. config.json +3 -3
  2. gen_tokenizer.py +1833 -0
  3. infer_gguf.py +177 -0
  4. model_tiny.py +124 -105
  5. prepare_tiny_data.py +210 -0
  6. quantize_gguf.py +119 -0
  7. tokenizer.json +1 -1
  8. train_tiny.py +20 -19
  9. train_tiny.yaml +11 -23
config.json CHANGED
@@ -1,10 +1,10 @@
1
  {
2
  "architectures": ["TinyModel"],
3
  "model_type": "tiny",
4
- "vocab_size": 1757,
5
  "hidden_size": 128,
6
- "intermediate_size": 640,
7
- "num_hidden_layers": 3,
8
  "num_attention_heads": 8,
9
  "num_key_value_heads": 4,
10
  "max_position_embeddings": 2048,
 
1
  {
2
  "architectures": ["TinyModel"],
3
  "model_type": "tiny",
4
+ "vocab_size": 4096,
5
  "hidden_size": 128,
6
+ "code_dim": 96,
7
+ "num_hidden_layers": 6,
8
  "num_attention_heads": 8,
9
  "num_key_value_heads": 4,
10
  "max_position_embeddings": 2048,
gen_tokenizer.py ADDED
@@ -0,0 +1,1833 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+
3
+ # === GPT-2 byte-to-unicode mapping ===
4
+ def bytes_to_unicode():
5
+ bs = list(range(ord("!"), ord("~") + 1)) + list(range(ord("¡"), ord("¬") + 1)) + list(range(ord("®"), ord("ÿ") + 1))
6
+ cs = bs[:]
7
+ n = 0
8
+ for b in range(256):
9
+ if b not in bs:
10
+ bs.append(b)
11
+ cs.append(256 + n)
12
+ n += 1
13
+ return {b: chr(c) for b, c in zip(bs, cs)}
14
+
15
+ byte2char = bytes_to_unicode()
16
+ # Reverse mapping: char -> byte
17
+ char2byte = {c: b for b, c in byte2char.items()}
18
+
19
+ # === Vocab structure ===
20
+ # IDs 0-50: 51 special tokens
21
+ # IDs 51-306: 256 byte-level chars
22
+ # IDs 307-4095: ~3789 curated English words + subwords
23
+ special_tokens = [
24
+ ("<unk>", 0),
25
+ ("<s>", 1),
26
+ ("</s>", 2),
27
+ ("<pad>", 3),
28
+ ("<|system|>", 4),
29
+ ("<|user|>", 5),
30
+ ("<|assistant|>", 6),
31
+ ("<think>", 7),
32
+ ("</think>", 8),
33
+ ("[INST]", 9),
34
+ ("[/INST]", 10),
35
+ ("<|begin_of_thought|>", 11),
36
+ ("<|end_of_thought|>", 12),
37
+ ("<|reflect|>", 13),
38
+ ("<|revise|>", 14),
39
+ ("<|verify|>", 15),
40
+ ("<|code|>", 16),
41
+ ("<|text|>", 17),
42
+ ("<|math|>", 18),
43
+ ("<|think|>", 19),
44
+ ("<|answer|>", 20),
45
+ ("<|step|>", 21),
46
+ ("<|reason|>", 22),
47
+ ("<|check|>", 23),
48
+ ("<|output|>", 24),
49
+ ("<|plan|>", 25),
50
+ ("<|solve|>", 26),
51
+ ("<|analyze|>", 27),
52
+ ("<|conclude|>", 28),
53
+ ("<|approach|>", 29),
54
+ ("<|alternative|>", 30),
55
+ ("<|summary|>", 31),
56
+ ("<|question|>", 32),
57
+ ("<|hint|>", 33),
58
+ ("<|example|>", 34),
59
+ ("<|correct|>", 35),
60
+ ("<|incorrect|>", 36),
61
+ ("<|feedback|>", 37),
62
+ ("<|start|>", 38),
63
+ ("<|end|>", 39),
64
+ ("<|sep|>", 40),
65
+ ("<|cls|>", 41),
66
+ ("<|tool|>", 42),
67
+ ("<|function|>", 43),
68
+ ("<|result|>", 44),
69
+ ("<|input|>", 45),
70
+ ("<|detect|>", 46),
71
+ ("<|context|>", 47),
72
+ ("<|proof|>", 48),
73
+ ("<|lemma|>", 49),
74
+ ("<|theorem|>", 50),
75
+ ]
76
+
77
+ # IDs 51-306: 256 byte-level characters
78
+ byte_tokens = []
79
+ for b in range(256):
80
+ byte_tokens.append((byte2char[b], 51 + b))
81
+
82
+ # IDs 307+: common words (variable count, no filler)
83
+ # Most frequent English words + programming terms
84
+ common_words = [
85
+ "the", "be", "to", "of", "and", "a", "in", "that", "have", "I",
86
+ "it", "for", "not", "on", "with", "he", "as", "you", "do", "at",
87
+ "this", "but", "his", "by", "from", "they", "we", "say", "her", "she",
88
+ "or", "an", "will", "my", "one", "all", "would", "there", "their", "what",
89
+ "so", "up", "out", "if", "about", "who", "get", "which", "go", "me",
90
+ "when", "make", "can", "like", "time", "no", "just", "him", "know", "take",
91
+ "people", "into", "year", "your", "good", "some", "could", "them", "see", "other",
92
+ "than", "then", "now", "look", "only", "come", "its", "over", "think", "also",
93
+ "back", "after", "use", "two", "how", "our", "work", "first", "well", "way",
94
+ "even", "new", "want", "because", "any", "these", "give", "day", "most", "us",
95
+ "is", "was", "are", "were", "been", "has", "had", "did", "does", "am",
96
+ "being", "having", "doing", "saying", "going", "getting", "making", "knowing", "taking", "thinking",
97
+ "come", "coming", "came", "go", "goes", "gone", "going", "went",
98
+ "see", "saw", "seen", "seeing", "say", "said", "says", "saying",
99
+ "get", "got", "gotten", "getting", "make", "made", "makes", "making",
100
+ "know", "knew", "known", "knows", "think", "thought", "thinks", "thinking",
101
+ "take", "took", "taken", "takes", "taking", "give", "gave", "given", "gives", "giving",
102
+ "find", "found", "finds", "finding", "tell", "told", "tells", "telling",
103
+ "ask", "asked", "asks", "asking", "show", "showed", "shown", "shows", "showing",
104
+ "try", "tried", "tries", "trying", "leave", "left", "leaves", "leaving",
105
+ "call", "called", "calls", "calling", "keep", "kept", "keeps", "keeping",
106
+ "let", "lets", "letting", "begin", "began", "begun", "begins", "beginning",
107
+ "seem", "seemed", "seems", "seeming", "help", "helped", "helps", "helping",
108
+ "turn", "turned", "turns", "turning", "start", "started", "starts", "starting",
109
+ "bring", "brought", "brings", "bringing", "happen", "happened", "happens", "happening",
110
+ "write", "wrote", "written", "writes", "writing", "provide", "provided", "provides", "providing",
111
+ "consider", "considered", "considers", "considering", "appear", "appeared", "appears", "appearing",
112
+ "follow", "followed", "follows", "following", "change", "changed", "changes", "changing",
113
+ "form", "formed", "forms", "forming", "need", "needed", "needs", "needing",
114
+ "set", "sets", "setting", "put", "puts", "putting", "run", "runs", "running",
115
+ "move", "moved", "moves", "moving", "stand", "stood", "stands", "standing",
116
+ "win", "won", "wins", "winning", "play", "played", "plays", "playing",
117
+ "point", "points", "pointed", "pointing", "large", "small", "big", "little",
118
+ "long", "short", "high", "low", "old", "young", "great", "important",
119
+ "different", "same", "other", "many", "much", "more", "most", "few",
120
+ "own", "very", "such", "still", "just", "also", "even", "too",
121
+ "here", "there", "where", "when", "why", "how", "what", "which",
122
+ "while", "though", "although", "until", "since", "before", "after", "during",
123
+ "without", "within", "between", "through", "across", "around", "above", "below",
124
+ "under", "over", "again", "ever", "never", "always", "often", "sometimes",
125
+ "together", "alone", "already", "yet", "still", "almost", "quite", "rather",
126
+ "well", "bad", "better", "worse", "best", "worst", "more", "less",
127
+ "every", "each", "both", "either", "neither", "all", "any", "none",
128
+ "thing", "things", "way", "ways", "time", "times", "year", "years",
129
+ "day", "days", "week", "weeks", "month", "months", "part", "parts",
130
+ "place", "places", "case", "cases", "point", "points", "world", "worlds",
131
+ "number", "numbers", "group", "groups", "system", "systems", "program", "programs",
132
+ "data", "information", "problem", "problems", "solution", "solutions",
133
+ "method", "methods", "result", "results", "process", "processes",
134
+ "function", "functions", "value", "values", "type", "types",
135
+ "state", "states", "model", "models", "level", "levels",
136
+ "line", "lines", "file", "files", "code", "codes",
137
+ "set", "sets", "list", "lists", "array", "arrays",
138
+ "object", "objects", "class", "classes", "property", "properties",
139
+ "input", "inputs", "output", "outputs", "return", "returns",
140
+ "define", "defined", "defines", "defining", "declare", "declared",
141
+ "import", "imports", "export", "exports", "include", "includes",
142
+ "public", "private", "protected", "static", "final", "const",
143
+ "void", "int", "float", "double", "char", "bool", "string",
144
+ "true", "false", "null", "None", "nil", "undefined",
145
+ "if", "else", "elif", "then", "switch", "case", "default", "break",
146
+ "for", "while", "do", "each", "in", "of", "to", "by",
147
+ "try", "catch", "finally", "throw", "raise", "except",
148
+ "return", "yield", "await", "async", "defer",
149
+ "and", "or", "not", "is", "as", "with", "without",
150
+ "lambda", "map", "filter", "reduce", "sort",
151
+ "new", "delete", "free", "alloc", "realloc",
152
+ "print", "printf", "println", "log", "debug", "error",
153
+ "len", "size", "length", "count", "sum", "max", "min",
154
+ "abs", "pow", "sqrt", "floor", "ceil", "round",
155
+ "sin", "cos", "tan", "atan", "log", "exp",
156
+ "zero", "one", "two", "three", "four", "five",
157
+ "six", "seven", "eight", "nine", "ten",
158
+ "first", "second", "third", "last", "next", "previous",
159
+ "current", "initial", "final", "primary", "secondary",
160
+ "main", "primary", "secondary", "basic", "advanced",
161
+ "simple", "complex", "single", "double", "multiple",
162
+ "add", "sub", "mul", "div", "mod", "inc", "dec",
163
+ "push", "pop", "shift", "unshift", "insert", "remove",
164
+ "append", "prepend", "concat", "join", "split", "slice",
165
+ "open", "close", "read", "write", "load", "save",
166
+ "create", "update", "delete", "insert", "select", "merge",
167
+ "begin", "end", "start", "stop", "pause", "resume",
168
+ "enable", "disable", "allow", "deny", "grant", "revoke",
169
+ "user", "users", "name", "names", "id", "ids",
170
+ "key", "keys", "value", "values", "field", "fields",
171
+ "table", "tables", "row", "rows", "column", "columns",
172
+ "index", "indexes", "indices", "query", "queries",
173
+ "count", "avg", "total", "sum", "min", "max",
174
+ "page", "pages", "home", "login", "logout", "signup",
175
+ "error", "errors", "warning", "warnings", "info",
176
+ "success", "failure", "status", "message", "messages",
177
+ "request", "requests", "response", "responses",
178
+ "client", "server", "api", "endpoint", "route",
179
+ "http", "https", "url", "uri", "port", "host",
180
+ "config", "configuration", "setting", "settings",
181
+ "option", "options", "param", "params", "parameter", "parameters",
182
+ "arg", "args", "argument", "arguments", "kwargs",
183
+ "path", "dir", "directory", "dirs", "folder", "folders",
184
+ "item", "items", "element", "elements", "entry", "entries",
185
+ "note", "notes", "text", "texts", "content", "contents",
186
+ "source", "sources", "target", "targets", "ref", "refs",
187
+ "struct", "structs", "union", "unions", "enum", "enums",
188
+ "impl", "implement", "implementation", "interface",
189
+ "abstract", "virtual", "override", "overload",
190
+ "base", "derived", "parent", "child", "children",
191
+ "root", "leaf", "node", "nodes", "edge", "edges",
192
+ "tree", "graph", "list", "queue", "stack", "heap",
193
+ "map", "dict", "dictionary", "hash", "hashmap",
194
+ "link", "links", "linked", "pointer", "pointers",
195
+ "thread", "threads", "process", "processes", "task", "tasks",
196
+ "sync", "async", "lock", "mutex", "semaphore",
197
+ "buffer", "buffers", "cache", "cached", "pool", "pools",
198
+ "memory", "disk", "network", "socket", "sockets",
199
+ "stream", "streams", "packet", "packets", "frame",
200
+ "meta", "metadata", "header", "headers", "body", "payload",
201
+ "token", "tokens", "session", "cookie", "cookies",
202
+ "auth", "login", "logout", "register", "password",
203
+ "hash", "salt", "encrypt", "decrypt", "encode", "decode",
204
+ "cert", "certificate", "key", "public", "private",
205
+ "train", "training", "trained", "test", "testing", "tested",
206
+ "valid", "validate", "validation", "eval", "evaluate",
207
+ "model", "models", "layer", "layers", "weight", "weights",
208
+ "bias", "biases", "loss", "losses", "grad", "grads",
209
+ "lr", "learning_rate", "optimizer", "adam", "sgd",
210
+ "batch", "batches", "epoch", "epochs", "step", "steps",
211
+ "dataset", "dataloader", "tensor", "tensors",
212
+ "gpu", "cpu", "tpu", "device", "devices", "memory",
213
+ "math", "physics", "chemistry", "biology", "science",
214
+ "compute", "calculate", "computation", "calculation",
215
+ "equation", "formula", "expression", "theorem",
216
+ "proof", "prove", "lemma", "axiom", "corollary",
217
+ "function", "graph", "derivative", "integral", "limit",
218
+ "sequence", "series", "matrix", "vector", "tensor",
219
+ "set", "subset", "union", "intersection", "complement",
220
+ "space", "group", "ring", "field", "module", "algebra",
221
+ "analysis", "topology", "geometry", "statistics",
222
+ "probability", "distribution", "random", "sample",
223
+ "mean", "median", "mode", "variance", "std", "deviation",
224
+ "linear", "nonlinear", "convex", "concave", "smooth",
225
+ "algorithm", "algorithm", "complexity", "runtime",
226
+ "tree", "graph", "sort", "search", "traverse",
227
+ "recursive", "iterative", "dynamic", "greedy",
228
+ "optimization", "constraint", "feasible", "optimal",
229
+ "problem", "solution", "input", "output", "example",
230
+ "question", "answer", "hint", "step", "reason",
231
+ "think", "analyze", "approach", "solve", "verify",
232
+ "check", "conclude", "summarize", "explain", "describe",
233
+ "correct", "incorrect", "right", "wrong", "positive", "negative",
234
+ "yes", "no", "maybe", "always", "never", "sometimes",
235
+ ":", ";", ".", ",", "!", "?", "'", "\"", "(", ")", "[", "]", "{", "}",
236
+ "<", ">", "=", "+", "-", "*", "/", "%", "&", "|", "^", "~",
237
+ "@", "#", "$", "_", "`", "\\",
238
+ "==", "!=", "<=", ">=", "&&", "||", "++", "--",
239
+ "+=", "-=", "*=", "/=", "->", "=>", "::", "..",
240
+ "...", "/*", "*/", "//", "<!--", "-->",
241
+ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
242
+ "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
243
+ "20", "30", "40", "50", "60", "70", "80", "90", "100",
244
+ "-1", "-2", "0x", "0b", "0o",
245
+ # GPT-2 style Ġ-prefixed versions for words preceded by space
246
+ # The ByteLevel pre_tokenizer adds Ġ (U+0120) prefix after space
247
+ "Ġthe", "Ġto", "Ġof", "Ġand", "Ġa", "Ġin", "Ġthat", "Ġis", "Ġwas", "Ġfor",
248
+ "Ġon", "Ġwith", "Ġas", "Ġby", "Ġat", "Ġfrom", "Ġor", "Ġan", "Ġwill", "Ġwould",
249
+ "Ġnot", "Ġbut", "Ġare", "Ġwere", "Ġbeen", "Ġhave", "Ġhas", "Ġhad", "Ġdo", "Ġdoes",
250
+ "Ġdid", "Ġcan", "Ġcould", "Ġshould", "Ġmay", "Ġmight", "Ġshall", "Ġmust",
251
+ "Ġif", "Ġelse", "Ġwhen", "Ġwhile", "Ġbecause", "Ġso", "Ġthen", "Ġthan",
252
+ "Ġalso", "Ġeven", "Ġonly", "Ġjust", "Ġvery", "Ġtoo", "Ġstill", "Ġalready",
253
+ "Ġhere", "Ġthere", "Ġwhere", "Ġwhen", "Ġwhy", "Ġhow", "Ġwhat", "Ġwhich",
254
+ "Ġthis", "Ġthat", "Ġthese", "Ġthose", "Ġit", "Ġits", "Ġthey", "Ġthem",
255
+ "Ġwe", "Ġus", "Ġour", "Ġyou", "Ġyour", "Ġhe", "Ġhim", "Ġhis",
256
+ "Ġshe", "Ġher", "Ġhers", "Ġone", "Ġno", "Ġall", "Ġany", "Ġsome",
257
+ "Ġeach", "Ġevery", "Ġboth", "Ġneither", "Ġeither", "Ġmore", "Ġmost", "Ġfew",
258
+ "Ġother", "Ġanother", "Ġsuch", "Ġsame", "Ġdifferent", "Ġown",
259
+ "Ġlike", "Ġwell", "Ġgood", "Ġbad", "Ġbetter", "Ġbest",
260
+ "Ġnew", "Ġold", "Ġbig", "Ġsmall", "Ġlong", "Ġshort",
261
+ "Ġhigh", "Ġlow", "Ġlarge", "Ġlittle", "Ġgreat", "Ġimportant",
262
+ "Ġup", "Ġdown", "Ġin", "Ġout", "Ġon", "Ġoff", "Ġover", "Ġunder",
263
+ "Ġagain", "Ġback", "Ġabout", "Ġaround", "Ġbetween", "Ġthrough",
264
+ "Ġbefore", "Ġafter", "Ġduring", "Ġuntil", "Ġsince",
265
+ "Ġfirst", "Ġlast", "Ġnext", "Ġprevious", "Ġfinal",
266
+ "Ġget", "Ġgot", "Ġmake", "Ġmade", "Ġtake", "Ġtook", "Ġgive", "Ġgave",
267
+ "Ġuse", "Ġused", "Ġusing", "Ġneed", "Ġneeds", "Ġneeded",
268
+ "Ġwant", "Ġwants", "Ġwanted", "Ġlet", "Ġlets", "Ġlets",
269
+ "Ġwork", "Ġworks", "Ġworked", "Ġworking", "Ġhelp", "Ġhelps", "Ġhelped",
270
+ "Ġcall", "Ġcalls", "Ġcalled", "Ġcalling", "Ġset", "Ġsets", "Ġsetting",
271
+ "Ġput", "Ġputs", "Ġputting", "Ġrun", "Ġruns", "Ġran", "Ġrunning",
272
+ "Ġkeep", "Ġkeeps", "Ġkept", "Ġfind", "Ġfinds", "Ġfound", "Ġshow", "Ġshows",
273
+ "Ġtry", "Ġtries", "Ġtried", "Ġtrying", "Ġstart", "Ġstarts", "Ġstarted",
274
+ "Ġchange", "Ġchanges", "Ġchanged", "Ġchanging", "Ġfollow", "Ġfollows",
275
+ "Ġknow", "Ġknows", "Ġknown", "Ġthink", "Ġthinks", "Ġthought",
276
+ "Ġsay", "Ġsays", "Ġsaid", "Ġsee", "Ġsees", "Ġsaw", "Ġseen",
277
+ "Ġcome", "Ġcomes", "Ġcame", "Ġgo", "Ġgoes", "Ġwent", "Ġgone",
278
+ "Ġbring", "Ġbrings", "Ġbrought", "Ġtell", "Ġtells", "Ġtold",
279
+ "Ġlet", "Ġlets", "Ġleave", "Ġleaves", "Ġleft", "Ġhappen", "Ġhappens",
280
+ "��provide", "Ġprovides", "Ġprovided", "Ġconsider", "Ġconsiders",
281
+ "Ġappear", "Ġappears", "Ġappeared", "Ġform", "Ġforms", "Ġformed",
282
+ "Ġseem", "Ġseems", "Ġseemed", "Ġpoint", "Ġpoints", "Ġpointed",
283
+ "Ġturn", "Ġturns", "Ġturned", "Ġturning", "Ġplay", "Ġplays",
284
+ "Ġthings", "Ġthing", "Ġtime", "Ġtimes", "Ġyear", "Ġyears",
285
+ "Ġpeople", "Ġplace", "Ġplaces", "Ġpart", "Ġparts", "Ġworld",
286
+ "Ġnumber", "Ġnumbers", "Ġsystem", "Ġsystems", "Ġgroup", "Ġgroups",
287
+ "Ġline", "Ġlines", "Ġfile", "Ġfiles", "Ġcode", "Ġdata",
288
+ "Ġfunction", "Ġfunctions", "Ġvalue", "Ġvalues", "Ġtype", "Ġtypes",
289
+ "Ġclass", "Ġclasses", "Ġobject", "Ġobjects", "Ġmethod", "Ġmethods",
290
+ "Ġresult", "Ġresults", "Ġprocess", "Ġprocesses", "Ġstate", "Ġstates",
291
+ "Ġmodel", "Ġmodels", "Ġlevel", "Ġlevels", "Ġcase", "Ġcases",
292
+ "Ġexample", "Ġexamples", "Ġinput", "Ġinputs", "Ġoutput", "Ġoutputs",
293
+ "Ġerror", "Ġerrors", "Ġstatus", "Ġmessage", "Ġmessages",
294
+ "Ġrequest", "Ġrequests", "Ġresponse", "Ġresponses",
295
+ "Ġreturn", "Ġreturns", "Ġimport", "Ġimports", "Ġexport", "Ġexports",
296
+ "Ġdefine", "Ġdefines", "Ġdefined", "Ġdeclare", "Ġdeclares",
297
+ "Ġinclude", "Ġincludes", "Ġconfig", "Ġsetting", "Ġsettings",
298
+ "Ġoption", "Ġoptions", "Ġparam", "Ġparams", "Ġargs",
299
+ "Ġtrue", "Ġfalse", "Ġnull", "ĠNone", "Ġundefined",
300
+ "Ġlen", "Ġsize", "Ġcount", "Ġsum", "Ġmax", "Ġmin",
301
+ "Ġprint", "Ġlog", "Ġdebug", "Ġinfo", "Ġwarn",
302
+ "Ġtrain", "Ġtest", "Ġeval", "Ġvalid", "Ġval",
303
+ "Ġpage", "Ġhome", "Ġname", "Ġkey", "Ġkeys",
304
+ "Ġpath", "Ġdir", "Ġroot", "Ġitem", "Ġitems",
305
+ "Ġsource", "Ġtarget", "Ġbase", "Ġmain", "Ġprimary",
306
+ "Ġadd", "Ġremove", "Ġcreate", "Ġdelete", "Ġupdate",
307
+ "Ġopen", "Ġclose", "Ġread", "Ġwrite", "Ġload", "Ġsave",
308
+ "Ġpush", "Ġpop", "Ġinsert", "Ġappend", "Ġsplit",
309
+ "Ġbegin", "Ġend", "Ġstart", "Ġstop", "Ġenable", "Ġdisable",
310
+ "Ġuser", "Ġusers", "Ġadmin", "Ġmanager",
311
+ "Ġstring", "Ġint", "Ġfloat", "Ġdouble", "Ġbool", "Ġvoid",
312
+ "Ġlist", "Ġdict", "Ġset", "Ġtuple", "Ġarray",
313
+ "Ġapi", "Ġurl", "Ġuri", "Ġendpoint", "Ġroute",
314
+ "Ġhttp", "Ġhttps", "Ġclient", "Ġserver", "Ġsocket",
315
+ "Ġmath", "Ġscience", "Ġdata", "Ġanalysis", "Ġtheory",
316
+ "Ġproof", "Ġtheorem", "Ġlemma", "Ġequation", "Ġformula",
317
+ "ing", "ed", "ly", "tion", "sion", "ment", "ness", "ity",
318
+ "able", "ible", "al", "ial", "ical", "ous", "eous", "ious",
319
+ "ive", "ative", "ful", "less", "like", "wise", "ward",
320
+ "un", "re", "in", "im", "ir", "il", "dis", "mis", "non",
321
+ "pre", "pro", "per", "trans", "inter", "intra", "extra",
322
+ "sub", "super", "sur", "semi", "multi", "mono", "bi", "tri",
323
+ "anti", "counter", "over", "under", "out", "up", "down",
324
+ "co", "con", "com", "col", "cor", "de", "di", "dif",
325
+ "ex", "extra", "fore", "macro", "micro", "mid", "mis",
326
+ "out", "over", "post", "pre", "pro", "re", "semi", "sub",
327
+ "super", "tele", "trans", "ultra", "un", "under", "up",
328
+ "-ing", "-ed", "-ly", "-tion", "-sion", "-ment", "-ness", "-ity",
329
+ "-able", "-ible", "-al", "-ous", "-ive", "-ful", "-less",
330
+ "un-", "re-", "pre-", "non-", "anti-", "counter-",
331
+ "self-", "all-", "well-", "so-", "to-", "in-",
332
+ "'t", "'s", "'m", "'re", "'ve", "'ll", "'d",
333
+ "n't", "don't", "can't", "won't", "isn't", "aren't",
334
+ "wasn't", "weren't", "hasn't", "haven't", "hadn't",
335
+ "doesn't", "didn't", "couldn't", "shouldn't", "wouldn't",
336
+ "mustn't", "needn't", "mightn't",
337
+ # Multi-char punctuation/symbols as single tokens
338
+ "->", "=>", "<-", "<=", ">=", "==", "!=",
339
+ "::", "..", "...", "/*", "*/", "//", "#",
340
+ "\n", "\t",
341
+ " ", " ", " ", " ",
342
+ "Ċ", # byte-level newline
343
+ "ĠĠ", "ĠĠĠ", "ĠĠĠĠ", # multiple spaces
344
+ # Additional English words for 4096 vocab
345
+ "about", "above", "across", "action", "actually", "address", "agree", "allow", "almost",
346
+ "along", "already", "though", "although", "always", "American", "among", "amount",
347
+ "animal", "another", "answer", "anything", "appear", "approach", "area", "argue",
348
+ "arm", "article", "artist", "ask", "author", "available", "avoid", "away", "ball",
349
+ "bank", "bar", "base", "battle", "beauty", "become", "became", "becoming", "bed",
350
+ "behavior", "behind", "believe", "benefit", "best", "beyond", "bit", "black",
351
+ "blood", "board", "body", "book", "born", "boss", "bother", "bottle", "bottom",
352
+ "box", "boy", "brain", "break", "bridge", "brief", "bright", "bring", "broad",
353
+ "brother", "budget", "build", "building", "burn", "business", "buy", "campaign",
354
+ "capital", "car", "care", "career", "carry", "catch", "category", "cause",
355
+ "central", "century", "certain", "chair", "chairman", "challenge", "chance",
356
+ "character", "charge", "check", "choice", "choose", "chosen", "church", "citizen",
357
+ "city", "civil", "claim", "clear", "clearly", "close", "club", "coach", "cold",
358
+ "collection", "college", "color", "come", "comfortable", "comment", "committee",
359
+ "common", "community", "company", "compare", "competition", "complete", "completely",
360
+ "condition", "conference", "Congress", "connect", "conscious", "consider", "contain",
361
+ "content", "continue", "contract", "control", "conversation", "cost", "could",
362
+ "country", "couple", "course", "court", "cover", "create", "crime", "cultural",
363
+ "culture", "cup", "current", "customer", "cut", "dark", "daughter", "deal",
364
+ "death", "debate", "decade", "decide", "decision", "deep", "defense", "degree",
365
+ "democrat", "democratic", "describe", "design", "despite", "detail", "determine",
366
+ "develop", "development", "device", "die", "difference", "difficult", "dinner",
367
+ "direction", "director", "discover", "discuss", "discussion", "disease", "dog",
368
+ "door", "doubt", "down", "draw", "dream", "drive", "driver", "drop", "drug",
369
+ "D", "early", "east", "eat", "economic", "economy", "edge", "edition", "editor",
370
+ "education", "effect", "effort", "eight", "either", "election", "else", "employee",
371
+ "encourage", "enemy", "energy", "enjoy", "enough", "enter", "entire", "environment",
372
+ "environmental", "especially", "establish", "evening", "event", "ever", "everybody",
373
+ "everyone", "everything", "evidence", "exactly", "examine", "example", "executive",
374
+ "exist", "expect", "experience", "explain", "explanation", "extremely", "eye",
375
+ "face", "fact", "factor", "fail", "fall", "family", "far", "fast", "father",
376
+ "fear", "feature", "federal", "feel", "feeling", "field", "fight", "figure",
377
+ "fill", "film", "final", "financial", "fine", "finish", "firm", "fish", "five",
378
+ "floor", "fly", "focus", "follow", "food", "foot", "force", "foreign", "forget",
379
+ "form", "former", "forward", "four", "free", "freedom", "friendly", "front",
380
+ "full", "fund", "future", "game", "garden", "gas", "general", "generation",
381
+ "gentleman", "girl", "glad", "glass", "goal", "god", "gold", "government",
382
+ "governor", "great", "green", "ground", "group", "grow", "growth", "guess",
383
+ "gun", "guy", "half", "hand", "handle", "hang", "happen", "happy", "hard",
384
+ "head", "health", "hear", "heart", "heat", "heavy", "hell", "help", "here",
385
+ "herself", "hide", "history", "hit", "hold", "home", "honest", "hope", "hospital",
386
+ "hotel", "house", "huge", "human", "hundred", "husband", "idea", "identify",
387
+ "image", "imagine", "impact", "implement", "imply", "important", "improve",
388
+ "include", "including", "increase", "indeed", "indicate", "individual", "industry",
389
+ "influence", "inform", "information", "inside", "instead", "institution",
390
+ "interest", "international", "interview", "introduce", "investment", "involve",
391
+ "issue", "item", "itself", "job", "join", "journal", "journey", "judge",
392
+ "jump", "justice", "keep", "kill", "kind", "kitchen", "knowledge", "land",
393
+ "language", "large", "last", "late", "later", "latter", "laugh", "launch",
394
+ "law", "lawyer", "lay", "lead", "leader", "leading", "learn", "least", "leave",
395
+ "left", "legal", "less", "let", "letter", "level", "lie", "life", "lift",
396
+ "light", "likely", "limit", "line", "link", "list", "listen", "little", "live",
397
+ "load", "local", "long", "look", "lord", "lose", "loss", "lost", "lot", "love",
398
+ "low", "luck", "lunch", "machine", "main", "maintain", "major", "majority",
399
+ "manage", "management", "manager", "manner", "manufacturer", "many", "map",
400
+ "mark", "market", "marriage", "master", "material", "matter", "may", "maybe",
401
+ "mean", "meaning", "measure", "media", "medical", "meet", "meeting", "member",
402
+ "memory", "mention", "message", "method", "middle", "might", "military", "million",
403
+ "mind", "minute", "miss", "mission", "mistake", "mix", "modern", "mom", "moment",
404
+ "money", "month", "moral", "morning", "mother", "motion", "move", "movement",
405
+ "movie", "music", "narrative", "nation", "national", "native", "natural", "nature",
406
+ "near", "nearly", "necessarily", "necessary", "neck", "need", "negative", "neighbor",
407
+ "neither", "network", "never", "nevertheless", "night", "none", "nor", "normal",
408
+ "north", "note", "nothing", "notice", "notion", "now", "nowhere", "nuclear",
409
+ "number", "occur", "ocean", "offer", "office", "officer", "official", "often",
410
+ "oil", "OK", "old", "once", "online", "open", "operate", "operation", "opinion",
411
+ "opportunity", "opposition", "option", "order", "organization", "original", "other",
412
+ "otherwise", "ought", "outside", "overcome", "owner", "page", "pain", "paint",
413
+ "pair", "paper", "parent", "park", "parliament", "part", "participant", "particular",
414
+ "particularly", "partner", "party", "pass", "passage", "past", "path", "patient",
415
+ "pattern", "pay", "peace", "pension", "people", "per", "percent", "perfect",
416
+ "perform", "performance", "perhaps", "period", "permit", "person", "personal",
417
+ "perspective", "phone", "physical", "pick", "picture", "piece", "place", "plan",
418
+ "plant", "play", "player", "please", "pleasure", "plus", "pocket", "point",
419
+ "police", "policy", "political", "politician", "politics", "pool", "poor",
420
+ "popular", "population", "position", "positive", "possibility", "possible",
421
+ "potentially", "power", "practice", "prepare", "presence", "present", "president",
422
+ "pressure", "pretty", "prevent", "previous", "price", "primary", "principle",
423
+ "prison", "private", "privilege", "probably", "problem", "procedure", "produce",
424
+ "product", "production", "professional", "professor", "profile", "profit",
425
+ "program", "project", "promise", "promote", "proper", "property", "proposal",
426
+ "propose", "protect", "protection", "prove", "provide", "public", "publication",
427
+ "publish", "pull", "purpose", "pursue", "push", "quality", "quarter", "question",
428
+ "quick", "quickly", "quiet", "quite", "race", "radio", "raise", "range", "rate",
429
+ "rather", "reach", "react", "reaction", "read", "reader", "reading", "ready",
430
+ "real", "reality", "realize", "really", "reason", "reasonable", "receive",
431
+ "recent", "recently", "recognize", "recommend", "record", "recover", "red",
432
+ "reduce", "reflect", "reform", "region", "relate", "relationship", "relative",
433
+ "relatively", "release", "relevant", "relief", "religion", "religious", "rely",
434
+ "remain", "remember", "remind", "remove", "repeat", "replace", "report", "reporter",
435
+ "represent", "representation", "republican", "reputation", "request", "require",
436
+ "research", "resource", "respond", "response", "responsibility", "responsible",
437
+ "rest", "restaurant", "result", "retain", "retire", "return", "reveal",
438
+ "review", "revolution", "rich", "ride", "right", "ring", "rise", "risk", "river",
439
+ "road", "rock", "role", "roll", "room", "rule", "run", "safe", "safety",
440
+ "sale", "same", "sample", "save", "scale", "scene", "schedule", "school",
441
+ "science", "scientist", "score", "screen", "sea", "search", "season", "seat",
442
+ "second", "secret", "section", "security", "seed", "seek", "select", "self",
443
+ "sell", "senate", "senator", "send", "sense", "serious", "serve", "service",
444
+ "session", "settle", "seven", "sexual", "shadow", "shape", "share", "sharp",
445
+ "sheet", "ship", "shock", "shoe", "shoot", "shop", "shot", "shoulder", "show",
446
+ "shut", "sick", "side", "sight", "sign", "signal", "significance", "significant",
447
+ "silence", "similar", "simple", "simply", "since", "sing", "single", "sister",
448
+ "sit", "site", "situation", "six", "size", "skill", "skin", "small", "smile",
449
+ "society", "soft", "soldier", "solid", "solution", "somebody", "somehow",
450
+ "someone", "something", "sometimes", "somewhat", "son", "song", "soon", "sort",
451
+ "sound", "source", "south", "space", "speak", "speaker", "special", "specific",
452
+ "speech", "speed", "spend", "spin", "spirit", "spiritual", "split", "spokesman",
453
+ "sport", "spot", "spread", "spring", "staff", "stage", "stand", "standard",
454
+ "star", "start", "state", "statement", "station", "status", "stay", "step",
455
+ "stick", "still", "stock", "stop", "store", "story", "straight", "strange",
456
+ "strategic", "strategy", "street", "strength", "stress", "stretch", "strike",
457
+ "strong", "structure", "struggle", "student", "study", "subject", "succeed",
458
+ "success", "successful", "suddenly", "suffer", "sufficient", "suggest", "suggestion",
459
+ "summer", "supply", "support", "suppose", "sure", "surface", "surgery", "surprise",
460
+ "survey", "survive", "suspect", "sustain", "symbol", "system", "table", "talent",
461
+ "talk", "tape", "target", "task", "taste", "tax", "teach", "teacher", "teaching",
462
+ "team", "tear", "technical", "technique", "technology", "telephone", "television",
463
+ "tell", "temperature", "tend", "term", "test", "testify", "testing", "text",
464
+ "thank", "themselves", "therefore", "they", "thick", "thin", "thing", "think",
465
+ "thinking", "third", "thirty", "threat", "threaten", "three", "throw", "thus",
466
+ "ticket", "tight", "till", "time", "tiny", "tip", "title", "today", "together",
467
+ "tomorrow", "tone", "tonight", "tool", "top", "total", "totally", "touch",
468
+ "tough", "tour", "toward", "town", "track", "trade", "tradition", "traditional",
469
+ "traffic", "train", "training", "transfer", "transform", "travel", "treat",
470
+ "treatment", "tree", "trial", "trip", "troop", "trouble", "truck", "true",
471
+ "truly", "trust", "truth", "try", "tube", "turn", "twice", "type", "typical",
472
+ "uncle", "under", "understand", "understanding", "unfortunately", "union",
473
+ "unique", "unit", "United", "universe", "university", "unless", "unlike",
474
+ "unlikely", "unusual", "upper", "urban", "urge", "use", "used", "useful",
475
+ "user", "usual", "usually", "value", "variety", "various", "vehicle", "version",
476
+ "very", "veteran", "victim", "victory", "video", "view", "village", "violence",
477
+ "visit", "voice", "volume", "vote", "voter", "wage", "wait", "walk", "wall",
478
+ "want", "war", "warm", "warn", "warning", "wash", "watch", "water", "wave",
479
+ "way", "weak", "weapon", "wear", "weather", "web", "wedding", "weekend",
480
+ "weight", "welcome", "welfare", "well", "west", "western", "whatever", "wheel",
481
+ "whenever", "whereas", "whether", "which", "while", "white", "whole", "whom",
482
+ "whose", "wide", "widely", "wife", "wild", "will", "win", "wind", "window",
483
+ "wine", "wing", "winner", "winter", "wire", "wish", "woman", "wonder", "wonderful",
484
+ "wood", "word", "worker", "working", "works", "world", "worry", "worth", "would",
485
+ "write", "writer", "writing", "wrong", "yard", "yeah", "year", "yet", "youth",
486
+ "zone", "ability", "abroad", "absent", "absolute", "absorb", "abstract", "abuse",
487
+ "academic", "accept", "access", "accident", "accompany", "accomplish", "account",
488
+ "accurate", "accuse", "achieve", "acknowledge", "acquire", "adapt", "addition",
489
+ "adjust", "administration", "admit", "adopt", "advance", "advantage", "adventure",
490
+ "advertise", "advice", "advise", "advocate", "affair", "affect", "afford",
491
+ "agency", "agenda", "agent", "aggression", "aggressive", "aid", "aim", "air",
492
+ "airport", "alarm", "alcohol", "alert", "alive", "alliance", "allocate", "ally",
493
+ "alone", "alter", "alternative", "amaze", "ambition", "amendment", "amid",
494
+ "amongst", "analysis", "analyst", "angle", "angry", "anniversary", "announce",
495
+ "annual", "anticipate", "anxiety", "anxious", "apart", "apartment", "apologize",
496
+ "apparent", "appeal", "appearance", "appetite", "apple", "applicant", "application",
497
+ "apply", "appoint", "appreciate", "appropriate", "approval", "approve", "architecture",
498
+ "archive", "argue", "argument", "arrange", "arrangement", "arrest", "arrival",
499
+ "arrive", "arrow", "articulate", "artificial", "aside", "aspect", "assault",
500
+ "assemble", "assembly", "assert", "assess", "assessment", "asset", "assign",
501
+ "assist", "assistance", "associate", "association", "assume", "assumption",
502
+ "atmosphere", "attach", "attack", "attempt", "attend", "attention", "attitude",
503
+ "attorney", "attract", "attraction", "attractive", "attribute", "audience",
504
+ "auto", "automatic", "automatically", "autonomy", "available", "avenue", "average",
505
+ "award", "aware", "awareness", "awful", "background", "bacteria", "balance",
506
+ "bare", "barely", "barrier", "basic", "basis", "basket", "bath", "battery",
507
+ "battle", "bay", "beach", "bean", "bear", "beat", "beautiful", "bedroom",
508
+ "beer", "beginning", "behalf", "behave", "behavior", "being", "belief", "believable",
509
+ "bell", "belong", "bench", "bend", "beneath", "beneficial", "beside", "bet",
510
+ "betray", "bible", "bicycle", "bid", "bike", "bill", "bind", "biological",
511
+ "biology", "birth", "biscuit", "bishop", "bite", "bitter", "blade", "blame",
512
+ "blank", "blast", "bleed", "blend", "bless", "blind", "block", "blow", "blue",
513
+ "blur", "board", "boast", "boat", "bomb", "bond", "bone", "bonus", "boom",
514
+ "boost", "border", "bore", "borrow", "bottom", "bound", "boundary", "bowl",
515
+ "brain", "branch", "brand", "brave", "bread", "breadth", "breast", "breath",
516
+ "breathe", "breathing", "breed", "brick", "bride", "bridge", "briefly", "brilliant",
517
+ "broadcast", "broken", "bronze", "brow", "brown", "brush", "bubble", "bucket",
518
+ "buddy", "buffalo", "bunch", "burden", "burglar", "burn", "burst", "bury",
519
+ "bus", "butter", "button", "cabin", "cabinet", "cable", "cake", "calculate",
520
+ "calculation", "calendar", "calm", "camera", "camp", "campus", "canal", "cancel",
521
+ "candidate", "candle", "cap", "capable", "capacity", "captain", "capture",
522
+ "carbon", "card", "careful", "carefully", "carrier", "carry", "cart", "carve",
523
+ "cast", "castle", "casualty", "catalog", "catalogue", "catch", "cattle",
524
+ "celebrate", "celebration", "cell", "cellular", "census", "centimeter",
525
+ "ceremony", "certainly", "certificate", "chain", "chair", "chairman",
526
+ "chamber", "champion", "championship", "channel", "chapter", "characteristic",
527
+ "charge", "charity", "chart", "chase", "cheap", "cheat", "cheek", "cheese",
528
+ "chemical", "chemistry", "chest", "chicken", "chief", "childhood", "chip",
529
+ "chocolate", "chorus", "christian", "Christmas", "chronic", "chunk", "circle",
530
+ "circuit", "circumstance", "cite", "citizen", "civilian", "claim",
531
+ "clarify", "clarity", "clash", "classic", "classical", "classification",
532
+ "classroom", "clause", "clean", "clear", "clever", "click", "client",
533
+ "cliff", "climate", "climb", "clinic", "clinical", "clock", "clone",
534
+ "closed", "closely", "closer", "closet", "closing", "cloth", "clothe",
535
+ "clothes", "clothing", "cloud", "club", "cluster", "coal", "coalition",
536
+ "coast", "coat", "code", "coffee", "cognitive", "coin", "cold",
537
+ "collapse", "collar", "colleague", "collect", "collection", "collective",
538
+ "colonial", "colony", "color", "column", "combat", "combine", "combined",
539
+ "comedy", "comfort", "command", "commander", "comment", "commerce",
540
+ "commercial", "commission", "commit", "commitment", "commodity", "communicate",
541
+ "communication", "communist", "compact", "companion", "comparison", "compel",
542
+ "compensate", "compensation", "compete", "competition", "competitive",
543
+ "competitor", "complain", "complaint", "complement", "complex", "complexity",
544
+ "complicate", "complicated", "comply", "component", "compose", "composition",
545
+ "compound", "comprehensive", "comprise", "compromise", "compulsory", "compute",
546
+ "computer", "conceal", "concede", "conceive", "concentrate", "concentration",
547
+ "concept", "conception", "concern", "concerning", "concert", "conclude",
548
+ "conclusion", "concrete", "condemn", "conduct", "conference", "confess",
549
+ "confession", "confidence", "confident", "confidential", "confine", "confirm",
550
+ "conflict", "confront", "confusion", "congratulate", "congress", "connect",
551
+ "connection", "conscious", "consciousness", "consecutive", "consensus",
552
+ "consent", "consequence", "consequently", "conservation", "conservative",
553
+ "considerable", "considerably", "consist", "consistent", "consistently",
554
+ "constant", "constantly", "constitute", "constitution", "constitutional",
555
+ "construct", "construction", "consult", "consultant", "consume", "consumer",
556
+ "consumption", "contact", "contemporary", "contend", "contest", "context",
557
+ "continent", "continually", "continuity", "continuous", "continuously",
558
+ "contradiction", "contrary", "contribute", "contribution", "contributor",
559
+ "controversial", "controversy", "convenience", "convenient", "convention",
560
+ "conventional", "conversation", "conversion", "convert", "convey", "convict",
561
+ "conviction", "convince", "cook", "cookie", "cool", "cooperate", "cooperation",
562
+ "coordinate", "coordination", "cope", "copper", "copy", "copyright", "core",
563
+ "corn", "corner", "corporate", "corporation", "correct", "correction",
564
+ "correctly", "correlate", "correlation", "correspond", "correspondent",
565
+ "corridor", "corruption", "costly", "cotton", "council", "counsel",
566
+ "counselor", "count", "counter", "counterpart", "county", "coup",
567
+ "courage", "cousin", "cover", "coverage", "crack", "craft", "crash",
568
+ "creative", "creativity", "creator", "creature", "credibility", "credit",
569
+ "creep", "crew", "crime", "criminal", "crisis", "criterion", "critic",
570
+ "critical", "criticism", "criticize", "crop", "cross", "crowd", "crown",
571
+ "crucial", "crude", "cruel", "cruise", "crush", "cry", "crystal", "cube",
572
+ "cuisine", "cultivate", "curious", "currency", "current", "curriculum",
573
+ "curtain", "curve", "custody", "custom", "customary", "customer", "cutting",
574
+ "cycle", "dad", "damage", "damn", "dance", "danger", "dangerous",
575
+ "dare", "data", "database", "dawn", "dead", "deadline", "deadly",
576
+ "deaf", "deal", "dealer", "dear", "debate", "debt", "decade",
577
+ "decay", "deceive", "decent", "decide", "decision", "decisive", "deck",
578
+ "declaration", "declare", "decline", "decorate", "decrease", "decree",
579
+ "dedicate", "deem", "defeat", "defend", "defendant", "defender", "defense",
580
+ "defensive", "deficit", "define", "definite", "definitely", "definition",
581
+ "defy", "degree", "delay", "delegate", "delegation", "delete", "deliberate",
582
+ "deliberately", "delicate", "delicious", "delight", "deliver", "delivery",
583
+ "demand", "democracy", "democrat", "democratic", "demographic", "demonstrate",
584
+ "demonstration", "denial", "denote", "deny", "depart", "department", "departure",
585
+ "depend", "dependence", "dependent", "depict", "deposit", "depress", "depression",
586
+ "deprive", "depth", "deputy", "derive", "descend", "describe", "description",
587
+ "desert", "deserve", "design", "designate", "designer", "desirable",
588
+ "desire", "desk", "desperate", "desperately", "despite", "destination",
589
+ "destroy", "destruction", "detail", "detailed", "detain", "detect",
590
+ "detection", "detective", "detention", "deteriorate", "determination",
591
+ "determine", "determined", "develop", "development", "developmental",
592
+ "devote", "devote", "diabetes", "diagnose", "diagnosis", "dialogue",
593
+ "diameter", "diamond", "diary", "dictate", "diet", "differ", "difference",
594
+ "differentiate", "differently", "difficulty", "dig", "digest", "digital",
595
+ "dignity", "dilemma", "dimension", "diminish", "dinner", "dioxide",
596
+ "dip", "diplomat", "diplomatic", "direct", "direction", "directly",
597
+ "director", "dirty", "disability", "disable", "disadvantage",
598
+ "disagree", "disappear", "disappoint", "disappointment", "disaster",
599
+ "disastrous", "disc", "discharge", "discipline", "disclose", "discount",
600
+ "discourse", "discover", "discovery", "discrepancy", "discretion",
601
+ "discrimination", "discuss", "discussion", "disease", "dismiss", "disorder",
602
+ "dispatch", "display", "disposal", "dispose", "dispute", "disrupt",
603
+ "dissolve", "distance", "distant", "distinct", "distinction", "distinctive",
604
+ "distinguish", "distort", "distract", "distress", "distribute", "distribution",
605
+ "distributor", "district", "disturb", "dive", "diverse", "diversity",
606
+ "divide", "division", "divorce", "dock", "doctor", "doctrine", "document",
607
+ "documentary", "dollar", "domain", "dome", "domestic", "dominant",
608
+ "dominate", "donation", "donor", "dose", "dot", "double", "doubt",
609
+ "doubtful", "downtown", "draft", "drag", "drain", "drama", "dramatic",
610
+ "dramatically", "drastic", "draw", "drawing", "drink", "drive",
611
+ "driver", "drop", "drought", "drown", "drum", "drunk", "dry",
612
+ "dual", "dubious", "duck", "due", "dull", "dump", "durable", "duration",
613
+ "dust", "duty", "dynamic", "dynamics", "eager", "eagle", "ear",
614
+ "earning", "earth", "ease", "easily", "eastern", "echo", "eclipse",
615
+ "ecological", "ecology", "economics", "economist", "economy",
616
+ "ecosystem", "edit", "edition", "editor", "editorial", "educate",
617
+ "education", "educational", "educator", "effective", "effectively",
618
+ "effectiveness", "efficiency", "efficient", "efficiently", "effort",
619
+ "elaborate", "elbow", "elderly", "elect", "election", "electoral",
620
+ "electric", "electrical", "electricity", "electronic", "electronics",
621
+ "elegant", "element", "elementary", "eliminate", "elimination", "elite",
622
+ "elsewhere", "email", "embargo", "embark", "embarrass", "embassy",
623
+ "embed", "embody", "embrace", "emerge", "emergence", "emergency",
624
+ "emission", "emotion", "emotional", "emphasis", "emphasize", "empire",
625
+ "empirical", "employ", "employee", "employer", "employment", "empower",
626
+ "enable", "enact", "encompass", "encounter", "encourage", "encouragement",
627
+ "endanger", "endeavor", "endorse", "endorsement", "endure", "enforce",
628
+ "enforcement", "engage", "engagement", "engine", "engineering", "enhance",
629
+ "enjoy", "enjoyment", "enlarge", "enormous", "enrich", "enroll",
630
+ "ensemble", "ensure", "enter", "enterprise", "entertain", "entertainment",
631
+ "enthusiasm", "enthusiast", "enthusiastic", "entirely", "entitle",
632
+ "entity", "entrepreneur", "entry", "envelope", "environment",
633
+ "environmental", "epidemic", "episode", "equal", "equality", "equation",
634
+ "equip", "equipment", "equivalent", "era", "erect", "error", "erupt",
635
+ "escalate", "escape", "especially", "essay", "essence", "essential",
636
+ "essentially", "establish", "establishment", "estate", "estimate",
637
+ "estimation", "eternal", "ethical", "ethics", "ethnic", "evacuate",
638
+ "evaluate", "evaluation", "evenly", "event", "eventually", "ever",
639
+ "everyday", "evidence", "evident", "evil", "evoke", "evolution",
640
+ "evolutionary", "evolve", "exact", "exaggerate", "examination",
641
+ "examine", "example", "exceed", "excellence", "excellent", "exception",
642
+ "exceptional", "excess", "excessive", "exchange", "excite", "excitement",
643
+ "exciting", "exclude", "exclusion", "exclusive", "exclusively",
644
+ "excuse", "execute", "execution", "executive", "exemplify",
645
+ "exercise", "exert", "exhaust", "exhibit", "exhibition", "exile",
646
+ "exist", "existence", "exit", "expand", "expansion", "expect",
647
+ "expectation", "expedition", "expel", "expenditure", "expense",
648
+ "expensive", "expert", "expertise", "explain", "explanation",
649
+ "explicit", "explicitly", "explode", "exploit", "exploitation",
650
+ "exploration", "explore", "explosion", "explosive", "export",
651
+ "expose", "exposure", "express", "expression", "extend", "extension",
652
+ "extensive", "extensively", "extent", "external", "extinct",
653
+ "extinction", "extra", "extract", "extraordinary", "extreme",
654
+ "extremely", "eye", "fabric", "fabulous", "facade", "face",
655
+ "facial", "facilitate", "facility", "fact", "faction", "faculty",
656
+ "fade", "fail", "failure", "fair", "fairly", "fairness", "faith",
657
+ "faithful", "fake", "fame", "familiar", "famine", "fan", "fancy",
658
+ "fantasy", "fare", "fascinate", "fascinating", "fashion", "fat",
659
+ "fate", "fatigue", "fault", "favor", "favorable", "favorite",
660
+ "fax", "fear", "feasible", "feast", "feather", "federal",
661
+ "federation", "fee", "feed", "feedback", "feel", "feeling",
662
+ "fellow", "fellowship", "female", "fence", "fertile", "fertilizer",
663
+ "festival", "fetch", "fever", "fiber", "fiction", "field", "fierce",
664
+ "fifteen", "fifty", "fig", "fight", "fighter", "figure", "file",
665
+ "fill", "filter", "final", "finally", "finance", "financial",
666
+ "financially", "financing", "finding", "finger", "finished",
667
+ "fire", "firm", "firmly", "fiscal", "fish", "fisherman", "fishing",
668
+ "fitness", "fix", "fixture", "flag", "flame", "flash", "flat",
669
+ "flavor", "flee", "fleet", "flesh", "flexibility", "flexible",
670
+ "flight", "float", "flock", "flood", "floor", "flour", "flow",
671
+ "flower", "fluid", "flush", "fly", "focus", "folk", "football",
672
+ "footnote", "footstep", "forbid", "forbidden", "forecast", "forehead",
673
+ "foreign", "foreigner", "forest", "forever", "forge", "forget",
674
+ "forgive", "fork", "form", "formal", "format", "formation", "former",
675
+ "formula", "formulate", "fort", "forth", "fortunate", "fortune",
676
+ "forum", "forward", "fossil", "foster", "found",
677
+ "foundation", "founder", "fountain", "fraction", "fracture", "fragile",
678
+ "fragment", "frame", "framework", "franchise", "frank", "frankly",
679
+ "fraud", "free", "freedom", "freely", "freeze", "freight",
680
+ "frequency", "frequent", "frequently", "fresh", "freshman", "friction",
681
+ "friendly", "friendship", "frighten", "frog", "front",
682
+ "frontier", "frost", "frown", "frozen", "fruit", "frustrate",
683
+ "frustration", "fuel", "fulfill", "full", "fun", "function",
684
+ "functional", "fund", "fundamental", "funding", "funeral", "funny",
685
+ "fur", "furious", "furniture", "further", "furthermore", "fury",
686
+ "fusion", "future", "gain", "galaxy", "gallery", "gallon", "gambling",
687
+ "gap", "garage", "garbage", "garden", "garlic", "garment", "gas",
688
+ "gasoline", "gate", "gather", "gathering", "gauge", "gaze", "gear",
689
+ "gender", "gene", "general", "generally", "generate", "generation",
690
+ "generator", "generous", "genetic", "genetics", "genius", "genocide",
691
+ "genre", "gentle", "gentleman", "gently", "genuine", "genuinely",
692
+ "gesture", "giant", "gift", "gigantic", "glimpse", "global",
693
+ "globalization", "globe", "glory", "glove", "glow", "glucose",
694
+ "goal", "goddess", "gold", "golden", "golf", "goodness",
695
+ "goods", "gorgeous", "gospel", "gossip", "govern", "governance",
696
+ "government", "governor", "grab", "grace", "grade", "gradually",
697
+ "graduate", "graduation", "grain", "gram", "grammar", "grand",
698
+ "grandfather", "grandmother", "grant", "graph", "graphic", "grasp",
699
+ "grass", "grateful", "grave", "gravity", "gray", "greatly",
700
+ "green", "greenhouse", "greet", "grief", "grin", "grind", "grip",
701
+ "grocery", "gross", "ground", "groundwater", "growth", "guarantee",
702
+ "guard", "guardian", "guess", "guest", "guidance", "guide",
703
+ "guideline", "guilty", "guitar", "gulf", "gun", "gut", "guy",
704
+ "gym", "habit", "habitat", "hair", "half", "hall", "halt", "hammer",
705
+ "hand", "handful", "handle", "handling", "handwriting", "handy",
706
+ "hang", "happen", "happiness", "harassment", "harbor", "hardly",
707
+ "hardware", "harm", "harmful", "harmony", "harvest", "hat",
708
+ "hate", "haul", "hay", "hazard", "head", "headache", "headline",
709
+ "headquarters", "heal", "health", "healthcare", "healthy",
710
+ "heap", "hearing", "heart", "heat", "heating", "heaven",
711
+ "heavily", "heavy", "hedge", "heel", "height", "helicopter",
712
+ "hell", "helmet", "helpful", "herb", "heritage", "hero",
713
+ "heroin", "herself", "hesitate", "hidden", "hide", "hierarchy",
714
+ "highlight", "highly", "highway", "hike", "hill", "himself",
715
+ "hip", "hire", "historian", "historic", "historical", "history",
716
+ "hit", "hobby", "hold", "holder", "holding", "hole",
717
+ "holiday", "hollow", "holy", "homeland", "homeless", "homework",
718
+ "honest", "honesty", "honey", "honor", "hook", "hope",
719
+ "hopeful", "hopefully", "horizon", "horizontal", "hormone",
720
+ "horn", "horrible", "horror", "horse", "hospitality", "host",
721
+ "hostage", "hostile", "hot", "hotline", "hour", "housing",
722
+ "hover", "human", "humane", "humanitarian", "humanity",
723
+ "humor", "hundred", "hunger", "hungry", "hunt", "hunter",
724
+ "hunting", "hurt", "husband", "hut", "hydrogen", "hygiene",
725
+ "hypothesis", "ice", "icon", "idea", "ideal", "identical",
726
+ "identification", "identify", "identity", "ideology", "ignorance",
727
+ "ignore", "ill", "illegal", "illness", "illusion", "illustrate",
728
+ "illustration", "image", "imaginary", "imagination", "imagine",
729
+ "imitate", "immediate", "immediately", "immense", "immigrant",
730
+ "immigration", "immune", "immunity", "impact", "implement",
731
+ "implementation", "implication", "implicit", "imply", "import",
732
+ "importance", "impose", "impossible", "impress", "impression",
733
+ "impressive", "imprison", "improbable", "improve", "improvement",
734
+ "impulse", "inability", "inappropriate", "incentive", "incidence",
735
+ "incident", "inclination", "incline", "include", "including",
736
+ "inclusion", "inclusive", "income", "incorporate", "incorrect",
737
+ "increase", "increasingly", "incredible", "incur", "indeed",
738
+ "independence", "independent", "independently", "index",
739
+ "indicate", "indication", "indicator", "indictment",
740
+ "indigenous", "indirect", "indispensable", "individual",
741
+ "individuality", "indoor", "induce", "indulge", "industrial",
742
+ "industrialize", "industry", "inequality", "inevitable",
743
+ "inevitably", "infant", "infect", "infection", "infer",
744
+ "inference", "inferior", "infinite", "infinity", "inflation",
745
+ "inflict", "influence", "influential", "info", "inform",
746
+ "informal", "information", "infrastructure", "ingredient",
747
+ "inhabit", "inhabitant", "inherent", "inherit", "inhibit",
748
+ "initial", "initially", "initiate", "initiative", "inject",
749
+ "injection", "injure", "injury", "inmate", "inner",
750
+ "innocent", "innovation", "innovative", "input", "inquiry",
751
+ "insect", "insert", "insertion", "inside", "insight",
752
+ "insist", "inspect", "inspection", "inspector", "inspiration",
753
+ "inspire", "install", "installation", "installment", "instance",
754
+ "instant", "instantly", "instead", "instinct",
755
+ "institute", "institution", "institutional", "instruct",
756
+ "instruction", "instructor", "instrument", "instrumental",
757
+ "insufficient", "insult", "insurance", "intact", "integral",
758
+ "integrate", "integration", "integrity", "intellectual",
759
+ "intelligence", "intelligent", "intend", "intense",
760
+ "intensity", "intensive", "intent", "intention", "intentional",
761
+ "interact", "interaction", "interactive", "interest",
762
+ "interested", "interesting", "interface", "interfere",
763
+ "interference", "interim", "interior", "intermediate",
764
+ "internal", "international", "internet", "interpret",
765
+ "interpretation", "interrupt", "interruption",
766
+ "intersection", "interval", "intervene", "intervention",
767
+ "interview", "intimate", "intrigue", "intrinsic", "introduce",
768
+ "introduction", "intuition", "intuitive", "invade",
769
+ "invasion", "invent", "invention", "inventory", "invest",
770
+ "investigate", "investigation", "investigator", "investment",
771
+ "investor", "invisible", "invitation", "invite", "involve",
772
+ "involvement", "iron", "irony", "irrelevant", "irrigation",
773
+ "island", "isolate", "isolation", "issue", "item",
774
+ "itself", "ivory", "jail", "jam", "jet", "jewel",
775
+ "jewelry", "job", "join", "joint", "jointly", "joke",
776
+ "journal", "journalism", "journalist", "journey", "joy",
777
+ "judge", "judgment", "judicial", "juice", "jump", "junction",
778
+ "jungle", "junior", "jurisdiction", "jury", "justice",
779
+ "justification", "justify", "juvenile", "keen", "keeper",
780
+ "kettle", "key", "keyboard", "kick", "kid", "kidnap",
781
+ "kidney", "kin", "kindness", "king", "kingdom", "kiss",
782
+ "kit", "kitchen", "knee", "kneel", "knife", "knock",
783
+ "knot", "label", "labor", "laboratory", "lace", "lack",
784
+ "ladder", "lady", "lake", "lamp", "land", "landing",
785
+ "landlord", "landmark", "landscape", "lane", "lap", "largely",
786
+ "laser", "late", "latte", "latter", "laugh", "laughter",
787
+ "launch", "laundry", "lavatory", "law", "lawn", "lawmaker",
788
+ "lawn", "lawsuit", "lawyer", "layout", "leading", "leaf",
789
+ "league", "leak", "lean", "leap", "learner", "learning",
790
+ "lease", "leather", "leave", "lecture",
791
+ "legacy", "legend", "legendary", "legislation", "legislative",
792
+ "legislature", "legitimate", "leisure", "lemon", "lend",
793
+ "length", "lens", "lesson", "lest", "lethal", "letter",
794
+ "lettuce", "liberal", "liberation", "liberty", "library",
795
+ "license", "lid", "lie", "lifelong", "lifestyle", "lifetime",
796
+ "lift", "light", "lighting", "lightly", "likelihood",
797
+ "likewise", "limb", "limit", "limitation", "limited",
798
+ "limitless", "limp", "line", "linear", "linen", "liner",
799
+ "linger", "linguistic", "lining", "link", "lion",
800
+ "lip", "liquid", "liquor", "list", "listen", "listener",
801
+ "listing", "liter", "literally", "literary", "literature",
802
+ "litigation", "liver", "living", "load", "loan",
803
+ "lobby", "local", "locate", "location", "lock", "lodge",
804
+ "log", "logic", "logical", "logo", "lonely", "longitudinal",
805
+ "lookout", "loop", "loose", "loosen", "lord", "lose",
806
+ "loss", "loud", "lounge", "lovely", "lover",
807
+ "low", "lower", "loyal", "loyalty", "luck", "lucky",
808
+ "luggage", "lump", "lunch", "lung", "luxury",
809
+ "lyric", "machine", "machinery", "mad", "magazine", "magic",
810
+ "magical", "magnetic", "magnificent", "magnitude", "maid",
811
+ "mail", "mainland", "mainly", "mainstream", "maintain",
812
+ "maintenance", "majesty", "majority", "maker",
813
+ "makeup", "male", "mall", "mama", "mammal", "manage",
814
+ "manageable", "management", "manager", "mandate",
815
+ "mandatory", "maneuver", "manifest", "manipulate",
816
+ "manipulation", "mankind", "manuscript", "maple",
817
+ "marathon", "marble", "march", "margin", "marginal",
818
+ "marine", "mark", "marker", "market", "marketing",
819
+ "marketplace", "marriage", "married", "marry", "mask",
820
+ "mass", "massacre", "massive", "master", "masterpiece",
821
+ "match", "mate", "material", "maternal", "math",
822
+ "mathematical", "mathematics", "matter", "mature",
823
+ "maturity", "maximize", "maximum", "mayor", "meadow",
824
+ "meaning", "meaningful", "means", "meantime",
825
+ "measurable", "measure", "measurement", "mechanic",
826
+ "mechanical", "mechanism", "medal", "media",
827
+ "mediate", "mediation", "medicaid", "medical",
828
+ "medication", "medicine", "medieval", "meditation",
829
+ "medium", "meet", "melody", "melt", "member",
830
+ "membership", "memo", "memoir", "memorandum",
831
+ "memorial", "memorize", "menace",
832
+ "mental", "mentally", "mention", "mentor", "menu",
833
+ "merchandise", "merchant", "mercy", "mere", "merely",
834
+ "merge", "merger", "merit", "merry", "mess",
835
+ "messenger", "metal", "metaphor", "method",
836
+ "methodology", "metric", "metropolitan",
837
+ "microphone", "microscope", "midday", "middle",
838
+ "midnight", "midst", "migrant", "migrate", "migration",
839
+ "mild", "mile", "milestone", "militant", "military",
840
+ "militia", "mill", "millennium", "millimeter",
841
+ "mineral", "mingle", "miniature", "minimal",
842
+ "minimize", "minimum", "mining", "minister",
843
+ "ministry", "minor", "minority", "minute",
844
+ "miracle", "mirror", "miserable", "misery",
845
+ "misleading", "missile", "missing", "mission",
846
+ "missionary", "mist", "mistake", "mistaken",
847
+ "mistress", "misunderstand", "misunderstanding",
848
+ "mixture", "moan", "mobile", "mobility",
849
+ "mobilize", "mode", "moderate", "moderately",
850
+ "moderation", "modern", "modest", "modification",
851
+ "modify", "module", "moisture", "molecule",
852
+ "molest", "moment", "momentum", "monarchy",
853
+ "monastery", "monitor", "monk", "monopoly",
854
+ "monster", "monument", "mood", "moon",
855
+ "moral", "morale", "morality", "moreover",
856
+ "mortal", "mortality", "mortgage", "mosaic",
857
+ "mosque", "mostly", "mother", "motion",
858
+ "motivate", "motivation", "motive", "motor",
859
+ "motorcycle", "mount", "mountain", "mounting",
860
+ "mourn", "mouse", "mouth", "movement",
861
+ "movie", "mud", "multiple", "multiplication",
862
+ "multiply", "multitude", "municipal",
863
+ "municipality", "murder", "murderer", "murmur",
864
+ "muscle", "muscular", "museum", "mushroom",
865
+ "musical", "musician", "muslim", "mutual",
866
+ "mutually", "mysterious", "mystery", "myth",
867
+ "mythology", "nail", "naked", "narrative",
868
+ "narrow", "nasty", "nation", "national",
869
+ "nationalism", "nationalist", "nationality",
870
+ "nationwide", "native", "natural", "naturally",
871
+ "nature", "naval", "navigation", "navy",
872
+ "nearby", "neat", "necessarily", "necessary",
873
+ "necessity", "neck", "necklace", "needle",
874
+ "negative", "neglect", "negotiate",
875
+ "negotiation", "negotiator", "neighbor",
876
+ "neighborhood", "neither", "nerve", "nervous",
877
+ "nest", "net", "network", "neutral", "nevertheless",
878
+ "niche", "nickel", "niece", "night", "nightmare",
879
+ "nitrogen", "noble", "nobody", "nod", "noise",
880
+ "noisy", "nominal", "nominate", "nomination",
881
+ "nominee", "nonprofit", "nonsense", "norm",
882
+ "normal", "normally", "normative", "north",
883
+ "northeast", "northern", "northwest", "notable",
884
+ "notably", "notation", "notebook", "nothing",
885
+ "notice", "noticeable", "notification",
886
+ "notion", "notorious", "novel", "novelist",
887
+ "novelty", "nowhere", "nuclear", "nuance",
888
+ "nucleus", "nuisance", "number", "numerical",
889
+ "numerous", "nurse", "nursery", "nursing",
890
+ "nutrient", "nutrition", "nutritional",
891
+ "nutritious", "nylon", "oak", "obedience",
892
+ "obedient", "obese", "obesity", "obey",
893
+ "objection", "objective", "obligation",
894
+ "oblige", "obscure", "observation", "observe",
895
+ "observer", "obsession", "obstacle",
896
+ "obtain", "obvious", "obviously", "occasion",
897
+ "occasional", "occasionally", "occupation",
898
+ "occupy", "occur", "occurrence",
899
+ "offend", "offense", "offensive", "offer",
900
+ "offering", "officer", "official", "officially",
901
+ "offspring", "olive", "omission",
902
+ "omit", "ongoing", "onion", "onset",
903
+ "opening", "openly", "opera", "operate",
904
+ "operating", "operation", "operational",
905
+ "operator", "opinion", "opponent",
906
+ "opportunity", "oppose", "opposite",
907
+ "opposition", "opt", "optical", "optimism",
908
+ "optimist", "optimistic", "optimum",
909
+ "option", "optional", "oral", "orbit",
910
+ "orchestra", "ordeal", "orderly",
911
+ "ordinarily", "ordinary", "organ",
912
+ "organic", "organization", "organizational",
913
+ "organize", "organized", "organizer",
914
+ "orientation", "origin", "original",
915
+ "originally", "originate", "ornament",
916
+ "orthodox", "other", "otherwise",
917
+ "ought", "ounce", "outbreak",
918
+ "outcome", "outdoor", "outer", "outfit",
919
+ "outing", "outlet", "outline", "outlook",
920
+ "output", "outrage", "outright",
921
+ "outset", "outside", "outsider", "outstanding",
922
+ "outward", "oval", "oven", "overall",
923
+ "overcome", "overlook", "overnight",
924
+ "override", "overseas", "oversee",
925
+ "overturn", "overwhelm", "overwhelming",
926
+ "owe", "own", "owner", "ownership",
927
+ "oxygen", "ozone", "pace", "pack",
928
+ "package", "packaging", "packet", "pad",
929
+ "paddle", "page", "pain", "painful",
930
+ "paint", "painter", "painting", "pair",
931
+ "palace", "pale", "palm", "pan",
932
+ "panel", "panic", "paper", "parade",
933
+ "paradigm", "paradise", "paradox",
934
+ "paragraph", "parallel", "parameter",
935
+ "parcel", "pardon", "parent",
936
+ "parental", "parish", "park",
937
+ "parking", "parliament", "parliamentary",
938
+ "partial", "partially", "participant",
939
+ "participate", "participation",
940
+ "particle", "particular", "particularly",
941
+ "partly", "partner", "partnership",
942
+ "passage", "passenger", "passing",
943
+ "passion", "passionate", "passive",
944
+ "passport", "password", "past",
945
+ "paste", "pastor", "patch", "patent",
946
+ "path", "pathway", "patience",
947
+ "patient", "patrol", "patron",
948
+ "pattern", "pause", "pave", "pavement",
949
+ "paw", "payment", "peace", "peaceful",
950
+ "peak", "peasant", "peculiar", "pedestrian",
951
+ "peer", "penalty", "pencil", "penetrate",
952
+ "peninsula", "pension", "people",
953
+ "pepper", "perceive", "percentage",
954
+ "perception", "perfect", "perfectly",
955
+ "perform", "performance", "performer",
956
+ "perfume", "perhaps", "period",
957
+ "periodic", "peripheral", "permanent",
958
+ "permanently", "permission", "permit",
959
+ "persist", "persistence", "persistent",
960
+ "persona", "personal", "personality",
961
+ "personally", "personnel",
962
+ "perspective", "persuade", "pet",
963
+ "petition", "petroleum", "phase",
964
+ "phenomenon", "philosopher", "philosophical",
965
+ "philosophy", "phone",
966
+ "photograph", "photographer", "photographic",
967
+ "photography", "phrase", "physical",
968
+ "physically", "physician", "physics",
969
+ "piano", "pick", "picture",
970
+ "piece", "pierce", "pig", "pile",
971
+ "pillar", "pillow", "pilot",
972
+ "pin", "pine", "pink", "pioneer",
973
+ "pipe", "pit", "pitch", "pizza",
974
+ "placement", "plain", "plaintiff",
975
+ "plantation", "plate", "platform",
976
+ "plausible", "playback", "playful",
977
+ "playground", "plead", "pleasant",
978
+ "pledge", "plenty", "plot",
979
+ "plug", "plunge", "plural", "plus",
980
+ "pocket", "poem", "poet", "poetic",
981
+ "poetry", "poison", "poisonous",
982
+ "polar", "pole", "police",
983
+ "policeman", "policy", "polish",
984
+ "polite", "political", "politically",
985
+ "politician", "politics",
986
+ "poll", "pollution", "pond",
987
+ "pony", "pool", "pop",
988
+ "pope", "popular", "popularity",
989
+ "population", "porch", "port",
990
+ "portable", "porter", "portion",
991
+ "portrait", "portray", "pose",
992
+ "position", "positive", "positively",
993
+ "possess", "possession", "possessive",
994
+ "possibility", "possible", "possibly",
995
+ "postage", "postal", "poster",
996
+ "potato", "potent", "potential",
997
+ "potentially", "pottery",
998
+ "poverty", "powder", "powerful",
999
+ "practically", "practice",
1000
+ "practitioner", "praise", "pray",
1001
+ "prayer", "preach", "precede",
1002
+ "precedent", "precious", "precise",
1003
+ "precisely", "precision", "predict",
1004
+ "predictable", "prediction",
1005
+ "predominantly", "preface", "prefer",
1006
+ "preference", "pregnancy", "pregnant",
1007
+ "prejudice", "preliminary",
1008
+ "premier", "premise", "premium",
1009
+ "preparation", "prepare", "prepared",
1010
+ "prescription", "presence",
1011
+ "presentation", "presently",
1012
+ "preservation", "preserve",
1013
+ "presidency", "president", "presidential",
1014
+ "pressing", "pressure",
1015
+ "presumably", "presume", "pretend",
1016
+ "pretty", "prevail", "prevalence",
1017
+ "prevalent", "prevention",
1018
+ "preview", "previous", "previously",
1019
+ "prey", "pricing", "pride",
1020
+ "priest", "primarily", "primary",
1021
+ "prime", "primitive", "prince",
1022
+ "princess", "principal", "principle",
1023
+ "print", "printer", "printing",
1024
+ "prior", "priority", "prison",
1025
+ "prisoner", "privacy",
1026
+ "privilege", "privileged",
1027
+ "prize", "proactive", "probable",
1028
+ "probably", "probe", "problem",
1029
+ "problematic", "procedural",
1030
+ "procedure", "proceed", "proceeding",
1031
+ "proceeds", "processor",
1032
+ "proclaim", "produce", "producer",
1033
+ "productive", "productivity",
1034
+ "profession", "professional",
1035
+ "professor", "proficiency",
1036
+ "profile", "profit",
1037
+ "profitable", "profound",
1038
+ "program", "programming",
1039
+ "progressive", "prohibit",
1040
+ "prohibition", "project",
1041
+ "projection", "prominent",
1042
+ "promise", "promising",
1043
+ "promote", "promotion",
1044
+ "prompt", "proof",
1045
+ "propaganda", "proper", "properly",
1046
+ "property", "prophet",
1047
+ "proportion", "proposal",
1048
+ "propose", "proposed",
1049
+ "prosecution", "prosecutor",
1050
+ "prospect", "prosperity",
1051
+ "protect", "protection",
1052
+ "protective", "protein",
1053
+ "protest", "protester",
1054
+ "protocol", "proud",
1055
+ "prove", "proverb",
1056
+ "provide", "provided",
1057
+ "province", "provincial",
1058
+ "provision", "provoke",
1059
+ "proxy", "prudent",
1060
+ "psychiatric", "psychiatry",
1061
+ "psychological", "psychologist",
1062
+ "psychology", "pub",
1063
+ "publication", "publicity",
1064
+ "publicly", "publish",
1065
+ "publisher", "publishing",
1066
+ "pulse", "pump",
1067
+ "punch", "punish",
1068
+ "punishment", "pupil",
1069
+ "purchase", "purchaser",
1070
+ "pure", "purely",
1071
+ "purify", "purple",
1072
+ "purpose", "purse",
1073
+ "pursue", "pursuit",
1074
+ "puzzle", "qualification",
1075
+ "qualified", "qualify",
1076
+ "qualitative", "quantify",
1077
+ "quantitative", "quarterly",
1078
+ "queen", "quest",
1079
+ "questionable", "questionnaire",
1080
+ "queue", "quit",
1081
+ "quiz", "quota",
1082
+ "quotation", "quote",
1083
+ "rabbit", "racial",
1084
+ "racism", "racist",
1085
+ "radiation", "radical",
1086
+ "rage", "raid",
1087
+ "rail", "railroad",
1088
+ "railway", "rain",
1089
+ "rainbow", "rally",
1090
+ "random", "range",
1091
+ "rank", "ranking",
1092
+ "rape", "rapid",
1093
+ "rapidly", "rare",
1094
+ "rarely", "rat",
1095
+ "rate", "rating",
1096
+ "ratio", "rational",
1097
+ "raw", "ray",
1098
+ "react", "reaction",
1099
+ "readily", "reading",
1100
+ "realistic", "reality",
1101
+ "realization", "realize",
1102
+ "realm", "rear",
1103
+ "reason", "reasonable",
1104
+ "reasonably", "reasoning",
1105
+ "reassure", "rebel",
1106
+ "rebellion", "rebuild",
1107
+ "recall", "receipt",
1108
+ "receiver", "recent",
1109
+ "recently", "reception",
1110
+ "recession", "recipe",
1111
+ "recipient", "reckon",
1112
+ "recognition", "recognize",
1113
+ "recommend", "recommendation",
1114
+ "reconcile", "reconstruction",
1115
+ "recording", "recover",
1116
+ "recovery", "recreation",
1117
+ "recruit", "recruitment",
1118
+ "reduction", "redundant",
1119
+ "reef", "refer",
1120
+ "referee", "reference",
1121
+ "referendum", "referral",
1122
+ "reflection", "reform",
1123
+ "refrain", "refresh",
1124
+ "refuge", "refugee",
1125
+ "refund", "refusal",
1126
+ "refuse", "regain",
1127
+ "regard", "regarding",
1128
+ "regardless", "regime",
1129
+ "regiment", "regional",
1130
+ "register", "registration",
1131
+ "regret", "regular",
1132
+ "regularly", "regulate",
1133
+ "regulation", "regulator",
1134
+ "regulatory", "rehabilitation",
1135
+ "reign", "reinforce",
1136
+ "reinforcement", "reject",
1137
+ "rejection", "relate",
1138
+ "relation", "relationship",
1139
+ "relative", "relatively",
1140
+ "relax", "relaxation",
1141
+ "release", "relevant",
1142
+ "reliability", "reliable",
1143
+ "relief", "relieve",
1144
+ "religion", "religious",
1145
+ "reluctant", "reluctantly",
1146
+ "remainder", "remains",
1147
+ "remark", "remarkable",
1148
+ "remarkably", "remedy",
1149
+ "reminder", "remnant",
1150
+ "remote", "removal",
1151
+ "remove", "renaissance",
1152
+ "render", "renew",
1153
+ "renewable", "renewal",
1154
+ "rent", "rental",
1155
+ "repair", "repay",
1156
+ "repeat", "repeatedly",
1157
+ "repent", "repetition",
1158
+ "replace", "replacement",
1159
+ "reportedly", "reporter",
1160
+ "representation", "representative",
1161
+ "repression", "reprint",
1162
+ "reproduce", "reproduction",
1163
+ "republic", "republican",
1164
+ "reputation", "request",
1165
+ "require", "requirement",
1166
+ "rescue", "resemble",
1167
+ "resentment", "reservation",
1168
+ "reserve", "reservoir",
1169
+ "reside", "residence",
1170
+ "residence", "resident",
1171
+ "residential", "residual",
1172
+ "resign", "resignation",
1173
+ "resist", "resistance",
1174
+ "resistant", "resolution",
1175
+ "resolve", "resort",
1176
+ "resource", "respect",
1177
+ "respectable", "respectful",
1178
+ "respective", "respectively",
1179
+ "respond", "respondent",
1180
+ "response", "responsibility",
1181
+ "responsible", "responsive",
1182
+ "restoration", "restore",
1183
+ "restrain", "restraint",
1184
+ "restrict", "restriction",
1185
+ "restrictive", "restructuring",
1186
+ "resume", "retail",
1187
+ "retailer", "retain",
1188
+ "retaliation", "retire",
1189
+ "retirement", "retreat",
1190
+ "retrieval", "retrieve",
1191
+ "revelation", "revenge",
1192
+ "revenue", "reverse",
1193
+ "review", "revise",
1194
+ "revision", "revival",
1195
+ "revive", "revolution",
1196
+ "revolutionary", "reward",
1197
+ "rhetoric", "rhythm",
1198
+ "rib", "ribbon",
1199
+ "rid", "ride",
1200
+ "ridge", "ridiculous",
1201
+ "rifle", "rigid",
1202
+ "riot", "rip",
1203
+ "ripple", "ritual",
1204
+ "rival", "rivalry",
1205
+ "roar", "robbery",
1206
+ "robe", "robot",
1207
+ "robust", "rocket",
1208
+ "rod", "roll",
1209
+ "roller", "romance",
1210
+ "romantic", "rookie",
1211
+ "rope", "rose",
1212
+ "rotate", "rotation",
1213
+ "rotten", "rough",
1214
+ "roughly", "round",
1215
+ "route", "routine",
1216
+ "row", "royal",
1217
+ "royalty", "rub",
1218
+ "rubber", "rug",
1219
+ "ruin", "ruler",
1220
+ "ruling", "rumor",
1221
+ "runner", "running",
1222
+ "rural", "rush",
1223
+ "sacred", "sacrifice",
1224
+ "sad", "saddle",
1225
+ "sadly", "sadness",
1226
+ "sake", "salad",
1227
+ "salary", "sale",
1228
+ "salmon", "salon",
1229
+ "salt", "salute",
1230
+ "salvation", "sample",
1231
+ "sanction", "sanctuary",
1232
+ "sand", "satellite",
1233
+ "satisfaction", "satisfactory",
1234
+ "satisfy", "sauce",
1235
+ "saving", "savings",
1236
+ "scale", "scandal",
1237
+ "scare", "scared",
1238
+ "scary", "scatter",
1239
+ "scenario", "scent",
1240
+ "schedule", "scheme",
1241
+ "scholar", "scholarship",
1242
+ "schooling", "scientific",
1243
+ "scientist", "scope",
1244
+ "score", "scorn",
1245
+ "scrap", "scream",
1246
+ "screen", "screening",
1247
+ "screw", "script",
1248
+ "scrutiny", "seal",
1249
+ "search", "season",
1250
+ "seasonal", "seating",
1251
+ "secular", "secure",
1252
+ "security", "seed",
1253
+ "seek", "segment",
1254
+ "seize", "seizure",
1255
+ "select", "selection",
1256
+ "selective", "self",
1257
+ "seller", "senate",
1258
+ "senator", "senior",
1259
+ "sensation", "sensational",
1260
+ "sensitivity", "sensor",
1261
+ "sentence", "sentiment",
1262
+ "separate", "separation",
1263
+ "sequence", "sequencing",
1264
+ "serial", "series",
1265
+ "session", "settle",
1266
+ "settlement", "settler",
1267
+ "setup", "severe",
1268
+ "severely", "severity",
1269
+ "sew", "sewage",
1270
+ "shade", "shadow",
1271
+ "shaft", "shake",
1272
+ "shall", "shallow",
1273
+ "shame", "shape",
1274
+ "shareholder", "sharing",
1275
+ "shark", "shed",
1276
+ "sheer", "sheet",
1277
+ "shelf", "shell",
1278
+ "shelter", "shield",
1279
+ "shift", "shine",
1280
+ "shipment", "shipping",
1281
+ "shirt", "shock",
1282
+ "shopping", "shortage",
1283
+ "shortly", "shot",
1284
+ "shoulder", "shout",
1285
+ "shove", "shower",
1286
+ "shrimp", "shrink",
1287
+ "shrub", "shrug",
1288
+ "shutter", "sibling",
1289
+ "sickness", "sideways",
1290
+ "siege", "sigh",
1291
+ "sight", "sign",
1292
+ "signal", "signature",
1293
+ "significance", "significant",
1294
+ "significantly", "silence",
1295
+ "silent", "silicon",
1296
+ "silk", "silly",
1297
+ "silver", "similar",
1298
+ "similarity", "similarly",
1299
+ "simmer", "simplicity",
1300
+ "simplify", "simply",
1301
+ "simulation", "simultaneously",
1302
+ "sin", "sincere",
1303
+ "sincerely", "singer",
1304
+ "single", "singular",
1305
+ "sink", "sip",
1306
+ "sister", "situation",
1307
+ "sizable", "size",
1308
+ "sketch", "ski",
1309
+ "skilled", "skillful",
1310
+ "skim", "skin",
1311
+ "skip", "skirt",
1312
+ "skull", "slap",
1313
+ "slash", "slave",
1314
+ "slavery", "sleep",
1315
+ "sleeve", "slice",
1316
+ "slide", "slight",
1317
+ "slightly", "slim",
1318
+ "slip", "slogan",
1319
+ "slope", "slot",
1320
+ "slow", "slowly",
1321
+ "smart", "smell",
1322
+ "smile", "smoke",
1323
+ "smooth", "smoothly",
1324
+ "snap", "sneak",
1325
+ "snapshot", "snow",
1326
+ "soak", "soap",
1327
+ "soar", "soccer",
1328
+ "social", "socialism",
1329
+ "socialist", "societal",
1330
+ "society", "sociological",
1331
+ "sociology", "soda",
1332
+ "software", "soil",
1333
+ "solar", "soldier",
1334
+ "sole", "solely",
1335
+ "solemn", "solicitor",
1336
+ "solidarity", "solitary",
1337
+ "solo", "soluble",
1338
+ "solution", "solve",
1339
+ "somebody", "somehow",
1340
+ "someone", "sometime",
1341
+ "somewhat", "song",
1342
+ "sophisticated", "sore",
1343
+ "sorrow", "sort",
1344
+ "soul", "sound",
1345
+ "soup", "sour",
1346
+ "source", "southeast",
1347
+ "southern", "southwest",
1348
+ "sovereign", "sovereignty",
1349
+ "sow", "spacecraft",
1350
+ "spacing", "span",
1351
+ "spare", "spark",
1352
+ "speak", "speaker",
1353
+ "spear", "special",
1354
+ "specialist", "specialize",
1355
+ "specialty", "species",
1356
+ "specific", "specifically",
1357
+ "specification", "specify",
1358
+ "specimen", "spectacle",
1359
+ "spectacular", "spectator",
1360
+ "spectrum", "speculate",
1361
+ "speculation", "speech",
1362
+ "spell", "spelling",
1363
+ "spend", "sphere",
1364
+ "spill", "spin",
1365
+ "spine", "spiral",
1366
+ "spirit", "spiritual",
1367
+ "spite", "splash",
1368
+ "split", "spokesman",
1369
+ "spokesperson", "spokeswoman",
1370
+ "sponsor", "sponsorship",
1371
+ "spontaneous", "spoon",
1372
+ "sport", "spot",
1373
+ "spouse", "spread",
1374
+ "spring", "sprint",
1375
+ "spur", "spy",
1376
+ "squad", "squadron",
1377
+ "square", "squeeze",
1378
+ "stability", "stabilize",
1379
+ "stable", "stadium",
1380
+ "staff", "stage",
1381
+ "stake", "stakeholder",
1382
+ "stall", "stance",
1383
+ "stand", "standard",
1384
+ "standing", "staple",
1385
+ "stare", "stark",
1386
+ "startup", "starvation",
1387
+ "starve", "statement",
1388
+ "statue", "status",
1389
+ "statute", "statutory",
1390
+ "steady", "steal",
1391
+ "steam", "steel",
1392
+ "steep", "steer",
1393
+ "stem", "stereotype",
1394
+ "sterling", "stern",
1395
+ "steward", "stick",
1396
+ "sticky", "stiff",
1397
+ "stimulate", "stimulus",
1398
+ "stir", "stitch",
1399
+ "stock", "stomach",
1400
+ "stoppage", "storage",
1401
+ "storm", "story",
1402
+ "strain", "strand",
1403
+ "strap", "strategic",
1404
+ "strategically", "strategist",
1405
+ "strategy", "straw",
1406
+ "stream", "street",
1407
+ "strength", "strengthen",
1408
+ "stress", "stretch",
1409
+ "strict", "strictly",
1410
+ "stride", "strike",
1411
+ "striker", "string",
1412
+ "strip", "stripe",
1413
+ "strive", "stroke",
1414
+ "stronghold", "strongly",
1415
+ "structural", "structure",
1416
+ "struggle", "stubborn",
1417
+ "studio", "study",
1418
+ "stuff", "stumble",
1419
+ "stun", "stunning",
1420
+ "stupid", "style",
1421
+ "subject", "subjective",
1422
+ "sublime", "submission",
1423
+ "submit", "subordinate",
1424
+ "subsequent", "subsequently",
1425
+ "subsidy", "substance",
1426
+ "substantial", "substantially",
1427
+ "substantive", "substitute",
1428
+ "substitution", "subtle",
1429
+ "subtlety", "subtract",
1430
+ "suburb", "suburban",
1431
+ "subversion", "subvert",
1432
+ "succeed", "success",
1433
+ "successful", "successfully",
1434
+ "succession", "successive",
1435
+ "successor", "suck",
1436
+ "sudden", "suddenly",
1437
+ "sue", "suffer",
1438
+ "suffering", "sufficient",
1439
+ "sufficiently", "sugar",
1440
+ "suicide", "suit",
1441
+ "suitable", "suite",
1442
+ "sulfur", "sum",
1443
+ "summarize", "summary",
1444
+ "summit", "sunlight",
1445
+ "sunny", "sunrise",
1446
+ "sunset", "sunshine",
1447
+ "superb", "superficial",
1448
+ "superintendent", "superior",
1449
+ "superiority", "supermarket",
1450
+ "supervise", "supervision",
1451
+ "supervisor", "supplement",
1452
+ "supplementary", "supplier",
1453
+ "supply", "support",
1454
+ "supporter", "supportive",
1455
+ "suppose", "supposedly",
1456
+ "suppress", "suppression",
1457
+ "supreme", "surcharge",
1458
+ "surface", "surge",
1459
+ "surgeon", "surgery",
1460
+ "surgical", "surname",
1461
+ "surpass", "surplus",
1462
+ "surprise", "surprised",
1463
+ "surprising", "surprisingly",
1464
+ "surrender", "surround",
1465
+ "surrounding", "surveillance",
1466
+ "survey", "survival",
1467
+ "survive", "survivor",
1468
+ "susceptible", "suspect",
1469
+ "suspend", "suspense",
1470
+ "suspension", "suspicion",
1471
+ "suspicious", "sustain",
1472
+ "sustainable", "sustained",
1473
+ "swap", "swear",
1474
+ "sweep", "sweet",
1475
+ "swell", "swift",
1476
+ "swim", "swimming",
1477
+ "swing", "switch",
1478
+ "sword", "symbol",
1479
+ "symbolic", "symmetry",
1480
+ "sympathetic", "sympathy",
1481
+ "symphony", "symptom",
1482
+ "syndrome", "synthesis",
1483
+ "synthetic", "system",
1484
+ "systematic", "tackle",
1485
+ "tactical", "tactics",
1486
+ "tag", "tail",
1487
+ "takeover", "tale",
1488
+ "talent", "talented",
1489
+ "tank", "tap",
1490
+ "tape", "target",
1491
+ "tariff", "task",
1492
+ "taste", "tax",
1493
+ "taxation", "taxpayer",
1494
+ "teaching", "tear",
1495
+ "tease", "technical",
1496
+ "technically", "technician",
1497
+ "technique", "technological",
1498
+ "technology", "teenage",
1499
+ "teenager", "telecommunications",
1500
+ "telegraph", "telephone",
1501
+ "telescope", "television",
1502
+ "temper", "temperature",
1503
+ "temple", "temporarily",
1504
+ "temporary", "tempt",
1505
+ "temptation", "tenant",
1506
+ "tendency", "tender",
1507
+ "tennis", "tension",
1508
+ "tent", "tenure",
1509
+ "terminal", "terminate",
1510
+ "termination", "term",
1511
+ "terrain", "terrible",
1512
+ "terribly", "terrific",
1513
+ "territorial", "territory",
1514
+ "terror", "terrorism",
1515
+ "terrorist", "testament",
1516
+ "testify", "testimony",
1517
+ "textbook", "textile",
1518
+ "texture", "thankful",
1519
+ "theater", "theatre",
1520
+ "theft", "theological",
1521
+ "theology", "theoretical",
1522
+ "theorist", "theory",
1523
+ "therapist", "therapy",
1524
+ "thereafter", "thereby",
1525
+ "thermal", "thesis",
1526
+ "thickness", "thief",
1527
+ "thigh", "thin",
1528
+ "thinking", "thirst",
1529
+ "thirsty", "thorn",
1530
+ "thorough", "thoroughly",
1531
+ "thoughtful", "thoughtless",
1532
+ "thriller", "thrive",
1533
+ "throat", "throne",
1534
+ "thrust", "thumb",
1535
+ "thunder", "tide",
1536
+ "timber", "timely",
1537
+ "timing", "tissue",
1538
+ "title", "toe",
1539
+ "tolerance", "tolerant",
1540
+ "tolerate", "toll",
1541
+ "tomato", "ton",
1542
+ "tone", "tongue",
1543
+ "tool", "tooth",
1544
+ "topic", "topical",
1545
+ "torch", "torture",
1546
+ "total", "totally",
1547
+ "touch", "tourism",
1548
+ "tourist", "tournament",
1549
+ "tow", "towel",
1550
+ "tower", "toxic",
1551
+ "trace", "track",
1552
+ "tractor", "trade",
1553
+ "trademark", "trader",
1554
+ "trading", "tradition",
1555
+ "traditional", "traditionally",
1556
+ "traffic", "tragedy",
1557
+ "tragic", "trail",
1558
+ "trainer", "training",
1559
+ "trait", "transaction",
1560
+ "transcript", "transfer",
1561
+ "transform", "transformation",
1562
+ "transit", "transition",
1563
+ "translate", "translation",
1564
+ "translator", "transmission",
1565
+ "transmit", "transparency",
1566
+ "transparent", "transplant",
1567
+ "transport", "transportation",
1568
+ "trap", "trash",
1569
+ "trauma", "traumatic",
1570
+ "traveler", "treasure",
1571
+ "treat", "treatment",
1572
+ "treaty", "tremendous",
1573
+ "trend", "trial",
1574
+ "triangle", "tribal",
1575
+ "tribe", "tribunal",
1576
+ "trigger", "trim",
1577
+ "triumph", "troop",
1578
+ "trophy", "tropical",
1579
+ "trouble", "troublesome",
1580
+ "trunk", "trust",
1581
+ "trustee", "truth",
1582
+ "tube", "tuition",
1583
+ "tumor", "tune",
1584
+ "tunnel", "turmoil",
1585
+ "turnover", "turtle",
1586
+ "tutor", "tutorial",
1587
+ "twist", "typical",
1588
+ "typically", "tyranny",
1589
+ "ugly", "ultimate",
1590
+ "ultimately", "ultimatum",
1591
+ "umbrella", "unable",
1592
+ "unacceptable", "unanimous",
1593
+ "unaware", "uncertainty",
1594
+ "uncomfortable", "unconscious",
1595
+ "unconstitutional", "undergo",
1596
+ "undergraduate", "underground",
1597
+ "underline", "underlying",
1598
+ "undermine", "underneath",
1599
+ "underscore", "undertake",
1600
+ "undertaking", "underwear",
1601
+ "undoubtedly", "unemployment",
1602
+ "unexpected", "unexpectedly",
1603
+ "unfair", "unfold",
1604
+ "unfortunate", "unfortunately",
1605
+ "unhappy", "unhealthy",
1606
+ "unified", "uniform",
1607
+ "unilateral", "unintended",
1608
+ "union", "unique",
1609
+ "unity", "universal",
1610
+ "universally", "universe",
1611
+ "unknown", "unlawful",
1612
+ "unlike", "unlikely",
1613
+ "unnecessary", "unpleasant",
1614
+ "unprecedented", "unrest",
1615
+ "unveil", "upcoming",
1616
+ "update", "upgrade",
1617
+ "uphold", "upset",
1618
+ "upturn", "uranium",
1619
+ "urban", "urge",
1620
+ "urgency", "urgent",
1621
+ "usage", "utilize",
1622
+ "utmost", "utter",
1623
+ "utterly", "vacancy",
1624
+ "vacation", "vaccination",
1625
+ "vaccine", "vacuum",
1626
+ "valid", "validate",
1627
+ "validity", "valley",
1628
+ "valuable", "valuation",
1629
+ "valve", "variable",
1630
+ "variation", "varied",
1631
+ "vary", "vast",
1632
+ "vector", "vegetable",
1633
+ "vegetation", "vehicle",
1634
+ "veil", "vein",
1635
+ "velocity", "vendor",
1636
+ "venture", "venue",
1637
+ "verbal", "verdict",
1638
+ "verify", "versatile",
1639
+ "verse", "version",
1640
+ "versus", "vertical",
1641
+ "vessel", "veteran",
1642
+ "veterinary", "viable",
1643
+ "vibrant", "vibration",
1644
+ "vice", "victim",
1645
+ "victorious", "victory",
1646
+ "video", "view",
1647
+ "viewer", "viewpoint",
1648
+ "vigorous", "village",
1649
+ "violate", "violation",
1650
+ "violence", "violent",
1651
+ "virgin", "virtual",
1652
+ "virtually", "virtue",
1653
+ "virus", "visa",
1654
+ "visible", "vision",
1655
+ "visual", "vital",
1656
+ "vitamin", "vivid",
1657
+ "vocabulary", "vocal",
1658
+ "vocational", "voice",
1659
+ "volatile", "volcano",
1660
+ "volume", "voluntary",
1661
+ "volunteer", "vote",
1662
+ "voter", "voting",
1663
+ "vulnerability", "vulnerable",
1664
+ "wage", "wagon",
1665
+ "waist", "wallet",
1666
+ "wander", "ward",
1667
+ "warehouse", "warfare",
1668
+ "warmth", "warn",
1669
+ "warning", "warrant",
1670
+ "warranty", "warrior",
1671
+ "wary", "waterfall",
1672
+ "waterproof", "watershed",
1673
+ "wave", "wavelength",
1674
+ "wax", "weakness",
1675
+ "wealth", "wealthy",
1676
+ "weapon", "wear",
1677
+ "weary", "weather",
1678
+ "weave", "web",
1679
+ "website", "wedding",
1680
+ "weed", "weekday",
1681
+ "weekend", "weekly",
1682
+ "weigh", "weight",
1683
+ "weird", "welcome",
1684
+ "welfare", "wellness",
1685
+ "whatsoever", "wheel",
1686
+ "whenever", "whereas",
1687
+ "whereby", "wherein",
1688
+ "whichever", "whisper",
1689
+ "white", "whoever",
1690
+ "wholesale", "wholly",
1691
+ "widespread", "widow",
1692
+ "width", "willing",
1693
+ "willingness", "wisdom",
1694
+ "withdraw", "withdrawal",
1695
+ "wither", "withhold",
1696
+ "within", "without",
1697
+ "witness", "wolf",
1698
+ "wonder", "wooden",
1699
+ "wool", "workforce",
1700
+ "workout", "workplace",
1701
+ "workshop", "worship",
1702
+ "worst", "worthwhile",
1703
+ "worthy", "wound",
1704
+ "wrap", "wrist",
1705
+ "writer", "writing",
1706
+ "wrongly", "yacht",
1707
+ "yell", "young",
1708
+ "youngster", "zone",
1709
+ ]
1710
+
1711
+ # Exclude byte-level chars (they already have IDs 51-306)
1712
+ byte_chars = {byte2char[b] for b in range(256)}
1713
+
1714
+ # Deduplicate while preserving order
1715
+ seen = set()
1716
+ deduped = []
1717
+ for w in common_words:
1718
+ if w not in seen and w not in byte_chars:
1719
+ seen.add(w)
1720
+ deduped.append(w)
1721
+
1722
+ # Truncate to fit total vocab <= 4096 (IDs 307-4095 = 3789 slots)
1723
+ max_words = 4096 - 307
1724
+ if len(deduped) > max_words:
1725
+ deduped = deduped[:max_words]
1726
+ common_words = deduped
1727
+
1728
+ next_id = 307
1729
+ word_tokens = []
1730
+ for w in common_words:
1731
+ word_tokens.append((w, next_id))
1732
+ next_id += 1
1733
+
1734
+ # Build vocab dict
1735
+ vocab = {}
1736
+ for name, idx in special_tokens:
1737
+ if name in vocab:
1738
+ print(f"DUPLICATE: {name!r} @ {vocab[name]} and {idx}")
1739
+ vocab[name] = idx
1740
+ for char, idx in byte_tokens:
1741
+ if char in vocab:
1742
+ print(f"DUPLICATE BYTE: {char!r} (U+{ord(char):04X}) @ {vocab[char]} and {idx}")
1743
+ vocab[char] = idx
1744
+ for name, idx in word_tokens:
1745
+ if name in vocab:
1746
+ print(f"DUPLICATE WORD: {name!r} @ {vocab[name]} and {idx}")
1747
+ vocab[name] = idx
1748
+
1749
+ # Build added_tokens
1750
+ added_tokens = []
1751
+ for name, idx in special_tokens:
1752
+ added_tokens.append({
1753
+ "id": idx,
1754
+ "content": name,
1755
+ "single_word": False,
1756
+ "lstrip": False,
1757
+ "rstrip": False,
1758
+ "normalized": False,
1759
+ "special": True,
1760
+ })
1761
+
1762
+ # Build tokenizer.json
1763
+ tokenizer_json = {
1764
+ "version": "1.0",
1765
+ "truncation": None,
1766
+ "padding": None,
1767
+ "added_tokens": added_tokens,
1768
+ "normalizer": None,
1769
+ "pre_tokenizer": {
1770
+ "type": "ByteLevel",
1771
+ "add_prefix_space": False,
1772
+ "trim_offsets": True,
1773
+ },
1774
+ "post_processor": None,
1775
+ "decoder": {
1776
+ "type": "ByteLevel",
1777
+ "add_prefix_space": False,
1778
+ "trim_offsets": True,
1779
+ },
1780
+ "model": {
1781
+ "type": "BPE",
1782
+ "dropout": None,
1783
+ "unk_token": "<unk>",
1784
+ "byte_fallback": True,
1785
+ "vocab": vocab,
1786
+ "merges": [],
1787
+ },
1788
+ }
1789
+
1790
+ if __name__ == "__main__":
1791
+ with open("tokenizer/tokenizer.json", "w", encoding="utf-8") as f:
1792
+ json.dump(tokenizer_json, f, ensure_ascii=False, separators=(",", ":"))
1793
+
1794
+ with open("tokenizer/special_tokens_map.json", "w", encoding="utf-8") as f:
1795
+ json.dump({
1796
+ "bos_token": "<s>",
1797
+ "eos_token": "</s>",
1798
+ "pad_token": "<pad>",
1799
+ "unk_token": "<unk>",
1800
+ }, f, ensure_ascii=False, indent=2)
1801
+
1802
+ import os
1803
+ size = os.path.getsize("tokenizer/tokenizer.json")
1804
+ print(f"tokenizer.json: {size:,} bytes")
1805
+ print(f"Vocab entries: {len(vocab)}")
1806
+ print(f"Added tokens: {len(added_tokens)}")
1807
+ print(f"Merges: 0")
1808
+ print(f"Byte fallback: True")
1809
+ assert len(vocab) <= 4096, f"Vocab size overflow: {len(vocab)}"
1810
+ print(f"Free slots: {4096 - len(vocab)}")
1811
+
1812
+ from transformers import PreTrainedTokenizerFast
1813
+ from tokenizers import Tokenizer as Tk
1814
+ tok_obj = Tk.from_file("tokenizer/tokenizer.json")
1815
+ tok = PreTrainedTokenizerFast(tokenizer_object=tok_obj)
1816
+ tok.add_special_tokens({"pad_token": "<pad>", "bos_token": "<s>", "eos_token": "</s>", "unk_token": "<unk>"})
1817
+ test = "Hello, how are you?"
1818
+ enc = tok.encode(test)
1819
+ dec = tok.decode(enc)
1820
+ print(f"OK: {enc} -> {dec!r}")
1821
+
1822
+ test2 = "def f(): return 42"
1823
+ enc2 = tok.encode(test2)
1824
+ dec2 = tok.decode(enc2)
1825
+ print(f"OK: {enc2} -> {dec2!r}")
1826
+
1827
+ enc3 = tok.encode("<|system|>Hi<|user|>there")
1828
+ print(f"Special: {enc3} -> {tok.decode(enc3)!r}")
1829
+
1830
+ test4 = "café résumé"
1831
+ enc4 = tok.encode(test4)
1832
+ dec4 = tok.decode(enc4)
1833
+ print(f"Unicode: {enc4} -> {dec4!r}")
infer_gguf.py ADDED
@@ -0,0 +1,177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Inference with GGUF INT4 model or QLoRA checkpoint.
3
+
4
+ Usage:
5
+ python3 scripts/infer_gguf.py --gguf outputs/tiny-sft/tiny.gguf
6
+ python3 scripts/infer_gguf.py --checkpoint model.pt
7
+ """
8
+
9
+ import os, sys, argparse
10
+ import gguf
11
+ import torch
12
+ import torch.nn.functional as F
13
+
14
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
15
+ from scripts.model_tiny import TinyModel, apply_qlora
16
+
17
+
18
+ def quantize_to_q4(tensor):
19
+ t = tensor.float()
20
+ max_val = t.abs().max()
21
+ if max_val < 1e-8:
22
+ return t
23
+ scale = max_val / 7.0
24
+ q = (t / scale).round().clamp(-7, 7).char()
25
+ dq = q.float() * scale
26
+ return dq
27
+
28
+
29
+ def load_gguf_model(gguf_path):
30
+ print(f" Loading GGUF: {gguf_path}")
31
+ reader = gguf.GGUFReader(gguf_path)
32
+
33
+ model = TinyModel(
34
+ vocab_size=1757, hidden=128, intermediate=640,
35
+ num_layers=3, num_heads=8, num_kv_heads=4,
36
+ max_seq_len=2048, tie_weights=True,
37
+ )
38
+ model.eval()
39
+
40
+ state = {}
41
+ for tensor in reader.tensors:
42
+ name = tensor.name
43
+ data = torch.from_numpy(tensor.data.copy())
44
+
45
+ if name == "token_embd.weight":
46
+ state["token_embed.weight"] = data
47
+ elif name == "output_norm.weight":
48
+ state["ln_f.weight"] = data
49
+ elif name == "output.weight":
50
+ state["lm_head.weight"] = data
51
+ elif name.startswith("blk."):
52
+ parts = name.split(".")
53
+ blk = int(parts[1])
54
+ sub = parts[2]
55
+ if sub == "attn_norm":
56
+ state[f"blocks.{blk}.ln1.{parts[3]}"] = data
57
+ elif sub == "ffn_norm":
58
+ state[f"blocks.{blk}.ln2.{parts[3]}"] = data
59
+ elif sub == "attn_q":
60
+ state[f"blocks.{blk}.attn.q_proj.weight"] = data
61
+ elif sub == "attn_k":
62
+ state[f"blocks.{blk}.attn.k_proj.weight"] = data
63
+ elif sub == "attn_v":
64
+ state[f"blocks.{blk}.attn.v_proj.weight"] = data
65
+ elif sub == "attn_output":
66
+ state[f"blocks.{blk}.attn.o_proj.weight"] = data
67
+ elif sub == "ffn_gate":
68
+ state[f"blocks.{blk}.mlp.gate.weight"] = data
69
+ elif sub == "ffn_up":
70
+ state[f"blocks.{blk}.mlp.up.weight"] = data
71
+ elif sub == "ffn_down":
72
+ state[f"blocks.{blk}.mlp.down.weight"] = data
73
+
74
+ model.load_state_dict(state, strict=False)
75
+ print(f" Loaded: {len(state)} tensors")
76
+
77
+ for name, param in model.named_parameters():
78
+ if "weight" in name and "norm" not in name and "embed" not in name:
79
+ param.data.copy_(quantize_to_q4(param.data))
80
+
81
+ return model
82
+
83
+
84
+ def load_checkpoint_model(ckpt_path):
85
+ print(f" Loading checkpoint: {ckpt_path}")
86
+ state = torch.load(ckpt_path, map_location="cpu", weights_only=True)
87
+ has_qlora = any("qweight" in k for k in state)
88
+ print(f" Detected: {'QLoRA' if has_qlora else 'full'} checkpoint")
89
+
90
+ model = TinyModel(
91
+ vocab_size=1757, hidden=128, intermediate=640,
92
+ num_layers=3, num_heads=8, num_kv_heads=4,
93
+ max_seq_len=2048, tie_weights=True,
94
+ )
95
+
96
+ if has_qlora:
97
+ model = apply_qlora(model,
98
+ target_modules=["q_proj","k_proj","v_proj","o_proj","gate","up","down"],
99
+ r=8, alpha=16, dropout=0.0, freeze_embeds=True)
100
+
101
+ missing, unexpected = model.load_state_dict(state, strict=False)
102
+ if missing:
103
+ print(f" Missing keys: {missing}")
104
+ if unexpected:
105
+ print(f" Unexpected keys: {unexpected}")
106
+ model.eval()
107
+ return model
108
+
109
+
110
+ def load_tokenizer():
111
+ from tokenizers import Tokenizer as Tk
112
+ tok = Tk.from_file(os.path.join(os.path.dirname(__file__), "..", "tokenizer", "tokenizer.json"))
113
+ return tok
114
+
115
+
116
+ def _build_chat(system, user, tokenizer):
117
+ parts = [f"<|system|>\n{system}", f"<|user|>\n{user}", "<|assistant|>\n"]
118
+ text = "\n".join(parts)
119
+ return tokenizer.encode(text).ids
120
+
121
+
122
+ def main():
123
+ parser = argparse.ArgumentParser()
124
+ parser.add_argument("--gguf", default=None)
125
+ parser.add_argument("--checkpoint", default=None)
126
+ parser.add_argument("--prompt", default="What is 2+2?")
127
+ parser.add_argument("--system", default="You are a helpful AI assistant.")
128
+ parser.add_argument("--max-tokens", type=int, default=128)
129
+ parser.add_argument("--temperature", type=float, default=0.7)
130
+ parser.add_argument("--top-p", type=float, default=0.9)
131
+ args = parser.parse_args()
132
+
133
+ if args.gguf and args.checkpoint:
134
+ print("Specify only one of --gguf or --checkpoint")
135
+ sys.exit(1)
136
+
137
+ model = None
138
+ if args.gguf:
139
+ if not os.path.exists(args.gguf):
140
+ print(f"GGUF not found: {args.gguf}")
141
+ sys.exit(1)
142
+ model = load_gguf_model(args.gguf)
143
+ elif args.checkpoint:
144
+ if not os.path.exists(args.checkpoint):
145
+ print(f"Checkpoint not found: {args.checkpoint}")
146
+ sys.exit(1)
147
+ model = load_checkpoint_model(args.checkpoint)
148
+ else:
149
+ print("Specify --gguf or --checkpoint")
150
+ sys.exit(1)
151
+
152
+ device = "cuda" if torch.cuda.is_available() else "cpu"
153
+ model.to(device)
154
+ print(f" Device: {device}")
155
+
156
+ tok = load_tokenizer()
157
+ input_ids = _build_chat(args.system, args.prompt, tok)
158
+ input_ids = torch.tensor([input_ids], device=device)
159
+
160
+ print("\n" + tok.decode(input_ids[0].tolist()), end="", flush=True)
161
+
162
+ def stream(id_):
163
+ t = tok.decode([id_])
164
+ print(t, end="", flush=True)
165
+
166
+ out = model.generate(
167
+ input_ids,
168
+ max_new_tokens=args.max_tokens,
169
+ temperature=args.temperature,
170
+ top_p=args.top_p,
171
+ stream_callback=stream,
172
+ )
173
+ print()
174
+
175
+
176
+ if __name__ == "__main__":
177
+ main()
model_tiny.py CHANGED
@@ -4,23 +4,31 @@ import torch.nn as nn
4
  import torch.nn.functional as F
5
 
6
 
7
- def get_alibi_slopes(num_heads: int) -> torch.Tensor:
8
- n = 2 ** math.ceil(math.log2(num_heads))
9
- m = torch.tensor([2 ** (-(i + 1)) for i in range(n)])
10
- m = m[:num_heads]
11
- return m
12
 
13
-
14
- def build_alibi_bias(num_heads: int, seq_len: int, device: torch.device, dtype: torch.dtype) -> torch.Tensor:
15
- slopes = get_alibi_slopes(num_heads).to(device=device, dtype=dtype)
16
- pos = torch.arange(seq_len, device=device, dtype=dtype)
17
- mask = pos.view(1, seq_len) - pos.view(seq_len, 1)
18
- mask = mask.abs().neg().unsqueeze(0).unsqueeze(0)
19
- bias = mask * slopes.view(-1, 1, 1)
20
- return bias
21
-
22
-
23
- class ALiBiAttention(nn.Module):
 
 
 
 
 
 
 
 
 
 
 
 
24
  def __init__(self, hidden: int, num_heads: int, num_kv_heads: int):
25
  super().__init__()
26
  self.hidden = hidden
@@ -33,16 +41,7 @@ class ALiBiAttention(nn.Module):
33
  self.k_proj = nn.Linear(hidden, num_kv_heads * self.head_dim, bias=False)
34
  self.v_proj = nn.Linear(hidden, num_kv_heads * self.head_dim, bias=False)
35
  self.o_proj = nn.Linear(hidden, hidden, bias=False)
36
- self._alibi_bias = None
37
- self._alibi_seq_len = 0
38
-
39
- def _get_alibi(self, seq_len: int, device: torch.device, dtype: torch.dtype) -> torch.Tensor:
40
- if self._alibi_bias is None or seq_len > self._alibi_seq_len:
41
- bias = build_alibi_bias(self.num_heads, seq_len, device, dtype)
42
- causal = torch.triu(torch.full((seq_len, seq_len), float('-inf'), device=device, dtype=dtype), diagonal=1)
43
- self._alibi_bias = bias + causal
44
- self._alibi_seq_len = seq_len
45
- return self._alibi_bias[:, :, :seq_len, :seq_len]
46
 
47
  def forward(self, x):
48
  B, T, _ = x.shape
@@ -55,13 +54,41 @@ class ALiBiAttention(nn.Module):
55
  v = v.repeat_interleave(self.num_groups, dim=1)
56
 
57
  scores = (q @ k.transpose(-2, -1)) / math.sqrt(self.head_dim)
58
- scores = scores + self._get_alibi(T, x.device, scores.dtype)
59
 
60
  attn = F.softmax(scores, dim=-1, dtype=torch.float32).to(x.dtype)
61
  out = (attn @ v).transpose(1, 2).contiguous().view(B, T, self.hidden)
62
  return self.o_proj(out)
63
 
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  class RMSNorm(nn.Module):
66
  def __init__(self, dim: int, eps: float = 1e-6):
67
  super().__init__()
@@ -73,41 +100,36 @@ class RMSNorm(nn.Module):
73
  return (x.float() * norm).type_as(x) * self.weight
74
 
75
 
76
- class MLP(nn.Module):
77
- def __init__(self, hidden: int, intermediate: int):
78
- super().__init__()
79
- self.gate = nn.Linear(hidden, intermediate, bias=False)
80
- self.up = nn.Linear(hidden, intermediate, bias=False)
81
- self.down = nn.Linear(intermediate, hidden, bias=False)
82
-
83
- def forward(self, x):
84
- return self.down(F.silu(self.gate(x)) * self.up(x))
85
-
86
 
87
  class TransformerBlock(nn.Module):
88
- def __init__(self, hidden: int, intermediate: int, num_heads: int, num_kv_heads: int):
89
  super().__init__()
90
  self.ln1 = RMSNorm(hidden)
91
- self.attn = ALiBiAttention(hidden, num_heads, num_kv_heads)
 
92
  self.ln2 = RMSNorm(hidden)
93
- self.mlp = MLP(hidden, intermediate)
 
94
 
95
  def forward(self, x):
96
- x = x + self.attn(self.ln1(x))
97
- x = x + self.mlp(self.ln2(x))
98
  return x
99
 
100
 
 
 
101
  class TinyModel(nn.Module):
102
- def __init__(self, vocab_size=1757, hidden=128, intermediate=640,
103
- num_layers=3, num_heads=8, num_kv_heads=4, max_seq_len=2048,
104
  tie_weights=True):
105
  super().__init__()
106
  self.hidden = hidden
107
  self.max_seq_len = max_seq_len
108
  self.token_embed = nn.Embedding(vocab_size, hidden)
109
  self.blocks = nn.ModuleList([
110
- TransformerBlock(hidden, intermediate, num_heads, num_kv_heads)
111
  for _ in range(num_layers)
112
  ])
113
  self.ln_f = RMSNorm(hidden)
@@ -115,17 +137,18 @@ class TinyModel(nn.Module):
115
  if tie_weights:
116
  self.lm_head.weight = self.token_embed.weight
117
 
118
- def reset_weights(self, std=0.02):
119
  for m in self.modules():
120
- if isinstance(m, nn.Linear):
121
- nn.init.normal_(m.weight, mean=0.0, std=std)
122
- if m.bias is not None:
123
- nn.init.zeros_(m.bias)
124
- elif isinstance(m, nn.Embedding):
125
- nn.init.normal_(m.weight, mean=0.0, std=std)
126
- elif isinstance(m, nn.LayerNorm):
127
- nn.init.ones_(m.weight)
128
  nn.init.zeros_(m.bias)
 
 
 
 
 
129
 
130
  def forward(self, input_ids, labels=None):
131
  x = self.token_embed(input_ids)
@@ -145,7 +168,7 @@ class TinyModel(nn.Module):
145
  )
146
  return logits, loss
147
 
148
- def generate(self, input_ids, max_new_tokens=128, temperature=0.7, top_p=0.9):
149
  self.eval()
150
  for _ in range(max_new_tokens):
151
  seq_len = input_ids.size(1)
@@ -167,65 +190,66 @@ class TinyModel(nn.Module):
167
  next_token = torch.multinomial(probs, num_samples=1)
168
  input_ids = torch.cat([input_ids, next_token], dim=1)
169
 
 
 
 
170
  if next_token.item() == 2:
171
  break
172
  return input_ids
173
 
174
 
175
- class LoRALinear(nn.Module):
176
- def __init__(self, original: nn.Linear, r: int = 8, alpha: float = 16, dropout: float = 0.0):
177
- super().__init__()
178
- self.linear = original
179
- self.r = r
180
- self.alpha = alpha
181
- self.scaling = alpha / r
182
- self.dropout = nn.Dropout(dropout) if dropout > 0 else nn.Identity()
183
- in_dim, out_dim = original.in_features, original.out_features
184
- self.lora_A = nn.Parameter(torch.zeros(r, in_dim))
185
- self.lora_B = nn.Parameter(torch.zeros(out_dim, r))
186
- nn.init.kaiming_uniform_(self.lora_A, a=math.sqrt(5))
187
- self.linear.weight.requires_grad = False
188
- if self.linear.bias is not None:
189
- self.linear.bias.requires_grad = False
190
-
191
- def forward(self, x):
192
- return self.linear(x) + self.dropout(x) @ self.lora_A.T @ self.lora_B.T * self.scaling
193
-
194
-
195
- def apply_lora(model, target_modules=None, r=8, alpha=16, dropout=0.0):
196
- if target_modules is None:
197
- target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", "gate", "up", "down"]
198
- lora_params = 0
199
- for name, module in model.named_modules():
200
- if not isinstance(module, nn.Linear):
201
- continue
202
- key = name.split(".")[-1]
203
- if key not in target_modules:
204
- continue
205
- parent = model
206
- parts = name.split(".")
207
- for p in parts[:-1]:
208
- parent = getattr(parent, p)
209
- lora = LoRALinear(module, r=r, alpha=alpha, dropout=dropout)
210
- setattr(parent, parts[-1], lora)
211
- lora_params += 2 * r * module.in_features + module.out_features * r
212
- n = sum(p.numel() for p in model.parameters() if p.requires_grad)
213
- print(f"LoRA applied: {lora_params:,} trainable params (total trainable: {n:,})")
214
  return model
215
 
216
 
 
 
217
  def count_params(model):
218
  return sum(p.numel() for p in model.parameters())
219
 
220
 
221
  def create_model():
222
- model = TinyModel(
223
- vocab_size=1757, hidden=128, intermediate=640,
224
- num_layers=3, num_heads=8, num_kv_heads=4,
225
- max_seq_len=2048, tie_weights=True,
226
- )
227
  n = count_params(model)
228
- print(f"TinyModel: {n:,} params ({n/1e6:.2f}M)")
229
  return model
230
 
231
 
@@ -236,8 +260,3 @@ if __name__ == "__main__":
236
  print(f"Forward OK: logits {logits.shape}, loss {loss.item():.4f}")
237
  gen = m.generate(x, max_new_tokens=10)
238
  print(f"Generate OK: {gen.shape}")
239
- m2 = create_model()
240
- apply_lora(m2)
241
- x2 = torch.randint(0, 100, (1, 16))
242
- logits2, _ = m2(x2)
243
- print(f"LoRA forward OK: {logits2.shape}")
 
4
  import torch.nn.functional as F
5
 
6
 
7
+ # ─── RPW: Relative Positional Warp (learned Fourier additive bias) ──────────
 
 
 
 
8
 
9
+ class RPW(nn.Module):
10
+ def __init__(self, num_heads: int, num_freqs: int = 16, max_seq_len: int = 2048):
11
+ super().__init__()
12
+ self.num_heads = num_heads
13
+ self.num_freqs = num_freqs
14
+ freqs = 1.0 / (10000.0 ** (torch.arange(num_freqs, dtype=torch.float32) / num_freqs))
15
+ self.register_buffer("_freqs", freqs)
16
+ self.W_phi = nn.Parameter(torch.zeros(num_freqs * 2, num_heads))
17
+ nn.init.normal_(self.W_phi, std=0.02)
18
+ def _make_bias(self, seq_len: int, device: torch.device, dtype: torch.dtype) -> torch.Tensor:
19
+ pos = torch.arange(seq_len, device=device, dtype=torch.float32)
20
+ delta = pos.view(1, seq_len) - pos.view(seq_len, 1)
21
+ angles = delta.unsqueeze(-1) * self._freqs.to(device=device)
22
+ phi = torch.cat([angles.sin(), angles.cos()], dim=-1)
23
+ bias = phi @ self.W_phi
24
+ bias = bias.permute(2, 0, 1).unsqueeze(0)
25
+ causal = torch.triu(torch.full((seq_len, seq_len), float('-inf'), device=device, dtype=torch.float32), diagonal=1)
26
+ return (bias + causal.unsqueeze(0).unsqueeze(0)).to(dtype=dtype)
27
+
28
+
29
+ # ─── GQA with RPW ──────────────────────────────────────────────────────────
30
+
31
+ class GQAAttention(nn.Module):
32
  def __init__(self, hidden: int, num_heads: int, num_kv_heads: int):
33
  super().__init__()
34
  self.hidden = hidden
 
41
  self.k_proj = nn.Linear(hidden, num_kv_heads * self.head_dim, bias=False)
42
  self.v_proj = nn.Linear(hidden, num_kv_heads * self.head_dim, bias=False)
43
  self.o_proj = nn.Linear(hidden, hidden, bias=False)
44
+ self.rpw = RPW(num_heads, num_freqs=16)
 
 
 
 
 
 
 
 
 
45
 
46
  def forward(self, x):
47
  B, T, _ = x.shape
 
54
  v = v.repeat_interleave(self.num_groups, dim=1)
55
 
56
  scores = (q @ k.transpose(-2, -1)) / math.sqrt(self.head_dim)
57
+ scores = scores + self.rpw._make_bias(T, x.device, scores.dtype)
58
 
59
  attn = F.softmax(scores, dim=-1, dtype=torch.float32).to(x.dtype)
60
  out = (attn @ v).transpose(1, 2).contiguous().view(B, T, self.hidden)
61
  return self.o_proj(out)
62
 
63
 
64
+ # ─── GPP: Gated Principal Projection ──────────────────────────────────────
65
+
66
+ class GPP(nn.Module):
67
+ def __init__(self, hidden: int, code_dim: int):
68
+ super().__init__()
69
+ self.down = nn.Linear(hidden, code_dim, bias=False)
70
+ self.up = nn.Linear(code_dim, hidden, bias=False)
71
+
72
+ def forward(self, x):
73
+ return self.up(F.silu(self.down(x)))
74
+
75
+
76
+ # ─── VCR: Variance-Controlled Residual ─────────────────────────────────────
77
+
78
+ class VCR(nn.Module):
79
+ def __init__(self):
80
+ super().__init__()
81
+ self.alpha = nn.Parameter(torch.tensor(1.0))
82
+ self.beta = nn.Parameter(torch.tensor(2.0))
83
+
84
+ def forward(self, x, delta):
85
+ v_exp = delta.float().norm() / x.float().norm().clamp(min=1e-8)
86
+ scale = torch.sigmoid(self.alpha * v_exp + self.beta)
87
+ return x + scale * delta
88
+
89
+
90
+ # ─── RMSNorm ───────────────────────────────────────────────────────────────
91
+
92
  class RMSNorm(nn.Module):
93
  def __init__(self, dim: int, eps: float = 1e-6):
94
  super().__init__()
 
100
  return (x.float() * norm).type_as(x) * self.weight
101
 
102
 
103
+ # ─── Transformer Block ────────────────────────────────────────────────────
 
 
 
 
 
 
 
 
 
104
 
105
  class TransformerBlock(nn.Module):
106
+ def __init__(self, hidden: int, code_dim: int, num_heads: int, num_kv_heads: int):
107
  super().__init__()
108
  self.ln1 = RMSNorm(hidden)
109
+ self.attn = GQAAttention(hidden, num_heads, num_kv_heads)
110
+ self.vcr_attn = VCR()
111
  self.ln2 = RMSNorm(hidden)
112
+ self.mlp = GPP(hidden, code_dim)
113
+ self.vcr_mlp = VCR()
114
 
115
  def forward(self, x):
116
+ x = self.vcr_attn(x, self.attn(self.ln1(x)))
117
+ x = self.vcr_mlp(x, self.mlp(self.ln2(x)))
118
  return x
119
 
120
 
121
+ # ─── TinyModel V3 ──────────────────────────────────────────────────────────
122
+
123
  class TinyModel(nn.Module):
124
+ def __init__(self, vocab_size=4096, hidden=128, code_dim=96,
125
+ num_layers=6, num_heads=8, num_kv_heads=4, max_seq_len=2048,
126
  tie_weights=True):
127
  super().__init__()
128
  self.hidden = hidden
129
  self.max_seq_len = max_seq_len
130
  self.token_embed = nn.Embedding(vocab_size, hidden)
131
  self.blocks = nn.ModuleList([
132
+ TransformerBlock(hidden, code_dim, num_heads, num_kv_heads)
133
  for _ in range(num_layers)
134
  ])
135
  self.ln_f = RMSNorm(hidden)
 
137
  if tie_weights:
138
  self.lm_head.weight = self.token_embed.weight
139
 
140
+ def reset_weights(self):
141
  for m in self.modules():
142
+ if isinstance(m, (nn.Linear, nn.Embedding)) and m.weight.dim() >= 2:
143
+ fan_in = m.weight.shape[1] if m.weight.dim() >= 2 else 1
144
+ nn.init.normal_(m.weight, std=1.0 / math.sqrt(fan_in))
145
+ elif isinstance(m, nn.Linear) and m.bias is not None:
 
 
 
 
146
  nn.init.zeros_(m.bias)
147
+ elif isinstance(m, RMSNorm):
148
+ nn.init.ones_(m.weight)
149
+ for m in self.modules():
150
+ if isinstance(m, RPW):
151
+ nn.init.normal_(m.W_phi, std=0.02)
152
 
153
  def forward(self, input_ids, labels=None):
154
  x = self.token_embed(input_ids)
 
168
  )
169
  return logits, loss
170
 
171
+ def generate(self, input_ids, max_new_tokens=128, temperature=0.7, top_p=0.9, stream_callback=None):
172
  self.eval()
173
  for _ in range(max_new_tokens):
174
  seq_len = input_ids.size(1)
 
190
  next_token = torch.multinomial(probs, num_samples=1)
191
  input_ids = torch.cat([input_ids, next_token], dim=1)
192
 
193
+ if stream_callback:
194
+ stream_callback(next_token.item())
195
+
196
  if next_token.item() == 2:
197
  break
198
  return input_ids
199
 
200
 
201
+ # ─── Restore from V2 checkpoint ────────────────────────────────────────────
202
+
203
+ def restore_from_v2(v2_ckpt_path: str, strict: bool = False) -> TinyModel:
204
+ raw = torch.load(v2_ckpt_path, map_location="cpu", weights_only=True)
205
+ v2_sd = raw["model"]
206
+ v2_embed = v2_sd["token_embed.weight"]
207
+
208
+ model = TinyModel(vocab_size=4096, hidden=128, code_dim=96,
209
+ num_layers=6, num_heads=8, num_kv_heads=4,
210
+ max_seq_len=2048, tie_weights=True)
211
+ model.reset_weights()
212
+
213
+ restore_map = {}
214
+ restore_map["token_embed.weight"] = v2_embed
215
+ restore_map["ln_f.weight"] = v2_sd["ln_f.weight"]
216
+ for i in range(3):
217
+ restore_map[f"blocks.{i}.ln1.weight"] = v2_sd[f"blocks.{i}.ln1.weight"]
218
+ restore_map[f"blocks.{i}.ln2.weight"] = v2_sd[f"blocks.{i}.ln2.weight"]
219
+
220
+ restored = 0
221
+ for k, v in restore_map.items():
222
+ if k in model.state_dict():
223
+ target = model.state_dict()[k]
224
+ if target.shape == v.shape:
225
+ target.copy_(v)
226
+ restored += 1
227
+ elif target.dim() == 2 and v.dim() == 2 and target.shape[1] == v.shape[1]:
228
+ d = min(target.shape[0], v.shape[0])
229
+ target[:d].copy_(v[:d])
230
+ restored += 1
231
+
232
+ model.lm_head.weight = model.token_embed.weight
233
+
234
+ total_v2 = sum(p.numel() for p in v2_sd.values())
235
+ restored_params = sum(v.numel() for v in restore_map.values())
236
+ v3_params = sum(p.numel() for p in model.parameters())
237
+ print(f"V2 checkpoint: {len(v2_sd)} keys, {total_v2:,} params")
238
+ print(f"V3 model: {v3_params:,} params")
239
+ print(f"Restored: {restored} tensors ({restored_params:,} params, {100*restored_params/v3_params:.1f}%)")
240
  return model
241
 
242
 
243
+ # ─── Helpers ───────────────────────────────────────────────────────────────
244
+
245
  def count_params(model):
246
  return sum(p.numel() for p in model.parameters())
247
 
248
 
249
  def create_model():
250
+ model = restore_from_v2("checkpoint.pt")
 
 
 
 
251
  n = count_params(model)
252
+ print(f"TinyModel V3: {n:,} params ({n/1e6:.2f}M)")
253
  return model
254
 
255
 
 
260
  print(f"Forward OK: logits {logits.shape}, loss {loss.item():.4f}")
261
  gen = m.generate(x, max_new_tokens=10)
262
  print(f"Generate OK: {gen.shape}")
 
 
 
 
 
prepare_tiny_data.py ADDED
@@ -0,0 +1,210 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Prepare data for Lumia-Tiny training.
3
+
4
+ Usage:
5
+ python3 scripts/prepare_tiny_data.py # use existing data/data.jsonl
6
+ python3 scripts/prepare_tiny_data.py --generate 50 # generate N synthetic examples
7
+ python3 scripts/prepare_tiny_data.py --hf-sample 100 # sample from HF dataset
8
+ python3 scripts/prepare_tiny_data.py --to-jsonl # convert to simple format
9
+ """
10
+
11
+ import os, sys, json, argparse, random
12
+ from pathlib import Path
13
+
14
+
15
+ SYSTEM_PROMPTS = [
16
+ "You are a helpful AI assistant who solves problems step by step.",
17
+ "You are a precise programming assistant who writes clean, correct code.",
18
+ "You are a math tutor who explains concepts clearly.",
19
+ "You are a reasoning assistant who thinks through problems carefully.",
20
+ ]
21
+
22
+ INSTRUCTIONS = [
23
+ "What is 2+2?",
24
+ "Explain how a binary search works.",
25
+ "Write a Python function to reverse a linked list.",
26
+ "What is the capital of France?",
27
+ "Explain the concept of recursion.",
28
+ "Write a function to check if a string is a palindrome.",
29
+ "What is the difference between TCP and UDP?",
30
+ "Explain how gradient descent works.",
31
+ "Write a quicksort implementation.",
32
+ "What is the time complexity of binary search?",
33
+ "Explain the concept of overfitting in machine learning.",
34
+ "Write a function to find the nth Fibonacci number.",
35
+ "What is the difference between a list and a tuple in Python?",
36
+ "Explain the CAP theorem.",
37
+ "Write a function to merge two sorted arrays.",
38
+ "What is the Pythagorean theorem?",
39
+ "Explain how HTTP works.",
40
+ "Write a function to calculate the factorial of a number.",
41
+ "What is the difference between SQL and NoSQL?",
42
+ "Explain the concept of polymorphism in OOP.",
43
+ "What is 15 * 7?",
44
+ "Write a function to find the maximum subarray sum.",
45
+ "Explain how DNS resolution works.",
46
+ "What is the difference between stack and heap memory?",
47
+ "Write a function to detect cycles in a linked list.",
48
+ "What is the derivative of x^2?",
49
+ "Explain the concept of normalization in databases.",
50
+ "Write a function to perform binary search in a sorted array.",
51
+ "What is the difference between symmetric and asymmetric encryption?",
52
+ "Explain how a hash table works.",
53
+ "What is 144 / 12?",
54
+ "Write a function to find all prime numbers up to n.",
55
+ "Explain the difference between REST and GraphQL.",
56
+ "What is the chain rule in calculus?",
57
+ "Write a function to serialize a binary tree.",
58
+ "What is the difference between HTTP and HTTPS?",
59
+ "Explain the concept of attention in transformers.",
60
+ "Write a function to compute the edit distance between two strings.",
61
+ "What is the integral of 2x?",
62
+ "Explain how a blockchain works.",
63
+ ]
64
+
65
+
66
+ RESPONSES = [
67
+ "4",
68
+ "Binary search works by repeatedly dividing a sorted array in half, comparing the target value to the middle element, and eliminating the half that cannot contain the target.",
69
+ "```python\ndef reverse_linked_list(head):\n prev = None\n curr = head\n while curr:\n next_node = curr.next\n curr.next = prev\n prev = curr\n curr = next_node\n return prev\n```",
70
+ "Paris",
71
+ "Recursion is a programming technique where a function calls itself to solve a problem by breaking it down into smaller subproblems. Each recursive call works on a smaller instance until reaching a base case.",
72
+ "```python\ndef is_palindrome(s):\n s = ''.join(c.lower() for c in s if c.isalnum())\n return s == s[::-1]\n```",
73
+ "TCP is connection-oriented and guarantees delivery with error checking. UDP is connectionless and faster but does not guarantee delivery.",
74
+ "Gradient descent is an optimization algorithm that iteratively adjusts parameters to minimize a loss function by moving in the direction of the negative gradient.",
75
+ "```python\ndef quicksort(arr):\n if len(arr) <= 1:\n return arr\n pivot = arr[len(arr)//2]\n left = [x for x in arr if x < pivot]\n middle = [x for x in arr if x == pivot]\n right = [x for x in arr if x > pivot]\n return quicksort(left) + middle + quicksort(right)\n```",
76
+ "O(log n)",
77
+ "Overfitting occurs when a model learns training data too well, including noise, and performs poorly on new data. It can be addressed by regularization, dropout, or early stopping.",
78
+ "```python\ndef fibonacci(n):\n if n <= 1:\n return n\n a, b = 0, 1\n for _ in range(2, n+1):\n a, b = b, a + b\n return b\n```",
79
+ "Lists are mutable, tuples are immutable. Lists use square brackets [], tuples use parentheses ().",
80
+ "The CAP theorem states that a distributed system cannot simultaneously guarantee Consistency, Availability, and Partition tolerance.",
81
+ "```python\ndef merge_sorted(a, b):\n result = []\n i = j = 0\n while i < len(a) and j < len(b):\n if a[i] < b[j]:\n result.append(a[i]); i += 1\n else:\n result.append(b[j]); j += 1\n result.extend(a[i:]); result.extend(b[j:])\n return result\n```",
82
+ "a² + b² = c², where a and b are legs and c is the hypotenuse.",
83
+ "HTTP is a request-response protocol where a client sends a request to a server, which replies with a status code and body.",
84
+ "```python\ndef factorial(n):\n if n <= 1:\n return 1\n return n * factorial(n-1)\n```",
85
+ "SQL databases are relational with structured schemas and ACID properties. NoSQL databases are non-relational, schema-flexible, and scale horizontally.",
86
+ "Polymorphism allows objects of different types to respond to the same interface. In Python, duck typing lets any object with the required methods be used.",
87
+ "105",
88
+ "```python\ndef max_subarray_sum(arr):\n max_ending = max_sofar = arr[0]\n for x in arr[1:]:\n max_ending = max(x, max_ending + x)\n max_sofar = max(max_sofar, max_ending)\n return max_sofar\n```",
89
+ "DNS converts domain names to IP addresses. The resolver queries root -> TLD -> authoritative servers to find the IP.",
90
+ "Stack is LIFO (last-in-first-out) for local variables and function calls. Heap is for dynamically allocated memory with longer lifespan.",
91
+ "```python\ndef has_cycle(head):\n slow = fast = head\n while fast and fast.next:\n slow = slow.next\n fast = fast.next.next\n if slow == fast:\n return True\n return False\n```",
92
+ "2x",
93
+ "Normalization organizes data to reduce redundancy. Forms: 1NF (atomic columns), 2NF (no partial dependency), 3NF (no transitive dependency).",
94
+ "```python\ndef binary_search(arr, target):\n lo, hi = 0, len(arr) - 1\n while lo <= hi:\n mid = (lo + hi) // 2\n if arr[mid] == target:\n return mid\n elif arr[mid] < target:\n lo = mid + 1\n else:\n hi = mid - 1\n return -1\n```",
95
+ "Symmetric encryption uses the same key for both encryption and decryption. Asymmetric uses a public key to encrypt and a private key to decrypt.",
96
+ "A hash table uses a hash function to map keys to array indices, providing O(1) average lookup. Collisions are handled by chaining or open addressing.",
97
+ "12",
98
+ "```python\ndef sieve(n):\n primes = [True] * (n+1)\n primes[0] = primes[1] = False\n for i in range(2, int(n**0.5)+1):\n if primes[i]:\n for j in range(i*i, n+1, i):\n primes[j] = False\n return [i for i, p in enumerate(primes) if p]\n```",
99
+ "REST uses standard HTTP methods with resource-based URLs. GraphQL uses a single endpoint with a query language for flexible data fetching.",
100
+ "d/dx f(g(x)) = f'(g(x)) * g'(x)",
101
+ "```python\ndef serialize_tree(root):\n def encode(node):\n if not node:\n return 'null'\n return f\"{node.val},{encode(node.left)},{encode(node.right)}\"\n return encode(root)\n```",
102
+ "HTTPS adds TLS encryption on top of HTTP, providing confidentiality and integrity.",
103
+ "Attention computes weighted combinations of values based on query-key similarity. The Transformer uses multi-head attention to capture different relationship types.",
104
+ "```python\ndef edit_distance(a, b):\n m, n = len(a), len(b)\n dp = [[0]*(n+1) for _ in range(m+1)]\n for i in range(m+1): dp[i][0] = i\n for j in range(n+1): dp[0][j] = j\n for i in range(1, m+1):\n for j in range(1, n+1):\n if a[i-1] == b[j-1]:\n dp[i][j] = dp[i-1][j-1]\n else:\n dp[i][j] = 1 + min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])\n return dp[m][n]\n```",
105
+ "x² + C",
106
+ "A blockchain is a distributed ledger where data is stored in blocks linked by cryptographic hashes. Each block contains a hash of the previous block, forming a chain.",
107
+ ]
108
+
109
+
110
+ def generate_synthetic(n=50):
111
+ random.seed(42)
112
+ samples = []
113
+ for i in range(n):
114
+ sys_idx = i % len(SYSTEM_PROMPTS)
115
+ inst_idx = i % len(INSTRUCTIONS)
116
+ resp_idx = i % len(RESPONSES)
117
+ samples.append({
118
+ "system": SYSTEM_PROMPTS[sys_idx],
119
+ "instruction": INSTRUCTIONS[inst_idx],
120
+ "input": "",
121
+ "output": RESPONSES[resp_idx],
122
+ })
123
+ return samples
124
+
125
+
126
+ def load_and_split(data_path, test_ratio=0.1):
127
+ with open(data_path) as f:
128
+ data = [json.loads(line) for line in f]
129
+ random.seed(42)
130
+ random.shuffle(data)
131
+ split = int(len(data) * (1 - test_ratio))
132
+ return data[:split], data[split:]
133
+
134
+
135
+ def convert_to_messages(data):
136
+ out = []
137
+ for item in data:
138
+ user_msg = item["instruction"]
139
+ if item.get("input", ""):
140
+ user_msg += "\n" + item["input"]
141
+ out.append({
142
+ "messages": [
143
+ {"role": "system", "content": item.get("system", "")},
144
+ {"role": "user", "content": user_msg},
145
+ {"role": "assistant", "content": item["output"]},
146
+ ]
147
+ })
148
+ return out
149
+
150
+
151
+ def main():
152
+ parser = argparse.ArgumentParser(description="Prepare data for Lumia-Tiny")
153
+ parser.add_argument("--generate", type=int, default=None,
154
+ help="Generate N synthetic examples")
155
+ parser.add_argument("--to-jsonl", action="store_true",
156
+ help="Convert data/data.jsonl to messages format")
157
+ parser.add_argument("--output", default="data/tiny_data.jsonl",
158
+ help="Output path")
159
+ args = parser.parse_args()
160
+
161
+ output_path = args.output
162
+ os.makedirs(os.path.dirname(output_path) or ".", exist_ok=True)
163
+
164
+ if args.generate:
165
+ samples = generate_synthetic(args.generate)
166
+ with open(output_path, "w") as f:
167
+ for s in samples:
168
+ f.write(json.dumps(s) + "\n")
169
+ print(f" Generated {len(samples)} synthetic examples → {output_path}")
170
+ return
171
+
172
+ if args.to_jsonl:
173
+ data_path = "data/data.jsonl"
174
+ if not os.path.exists(data_path):
175
+ print(f" Error: {data_path} not found")
176
+ sys.exit(1)
177
+ with open(data_path) as f:
178
+ data = [json.loads(line) for line in f]
179
+ messages = convert_to_messages(data)
180
+ base = os.path.splitext(output_path)[0]
181
+ with open(f"{base}_messages.jsonl", "w") as f:
182
+ for m in messages:
183
+ f.write(json.dumps(m) + "\n")
184
+ print(f" Converted {len(messages)} examples → {base}_messages.jsonl")
185
+ return
186
+
187
+ # Default: just report stats
188
+ data_path = "data/data.jsonl"
189
+ if os.path.exists(data_path):
190
+ with open(data_path) as f:
191
+ lines = f.readlines()
192
+ print(f" Data file: {data_path}")
193
+ print(f" Samples: {len(lines)}")
194
+ print(f" Size: {os.path.getsize(data_path):,} bytes")
195
+ sample = json.loads(lines[0])
196
+ print(f" Fields: {list(sample.keys())}")
197
+ print(f" Keys: system, instruction, input, output")
198
+ print(f"")
199
+ print(f" To generate synthetic data:")
200
+ print(f" python3 scripts/prepare_tiny_data.py --generate 200")
201
+ print(f"")
202
+ print(f" To convert to messages format:")
203
+ print(f" python3 scripts/prepare_tiny_data.py --to-jsonl")
204
+ else:
205
+ print(f" No data found. Generate with:")
206
+ print(f" python3 scripts/prepare_tiny_data.py --generate 200")
207
+
208
+
209
+ if __name__ == "__main__":
210
+ main()
quantize_gguf.py ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Export TinyModel weights → GGUF INT4 (Q4_K_M).
3
+
4
+ Usage:
5
+ python3 scripts/quantize_gguf.py # from outputs/tiny-sft/final/model.pt
6
+ python3 scripts/quantize_gguf.py --checkpoint path/to/model.pt
7
+ python3 scripts/quantize_gguf.py --checkpoint path/to/model.pt --output model.gguf
8
+ """
9
+
10
+ import os, sys, argparse, json
11
+ import torch
12
+ import gguf
13
+
14
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
15
+ from scripts.model_tiny import TinyModel
16
+
17
+
18
+ def export_gguf(checkpoint_path, output_path):
19
+ print(f" Loading checkpoint: {checkpoint_path}")
20
+
21
+ model = TinyModel(
22
+ vocab_size=1757, hidden=128, intermediate=640,
23
+ num_layers=3, num_heads=8, num_kv_heads=4,
24
+ max_seq_len=2048, tie_weights=True,
25
+ )
26
+ state = torch.load(checkpoint_path, map_location="cpu", weights_only=True)
27
+ model.load_state_dict(state)
28
+ model.eval()
29
+
30
+ n = sum(p.numel() for p in model.parameters())
31
+ print(f" Params: {n:,}")
32
+
33
+ print(f" Writing GGUF: {output_path}")
34
+ writer = gguf.GGUFWriter(output_path, "tiny")
35
+
36
+ # Metadata
37
+ writer.add_context_length(2048)
38
+ writer.add_embedding_length(model.hidden)
39
+ writer.add_block_count(len(model.blocks))
40
+ writer.add_head_count(model.blocks[0].attn.num_heads)
41
+ writer.add_head_count_kv(model.blocks[0].attn.num_kv_heads)
42
+ writer.add_feed_forward_length(model.blocks[0].mlp.up.weight.shape[0])
43
+ writer.add_layer_norm_rms_eps(1e-6)
44
+
45
+ # Tensor names for llama-like GGUF format
46
+ name_map = {
47
+ "token_embed.weight": "token_embd.weight",
48
+ "ln_f.weight": "output_norm.weight",
49
+ "lm_head.weight": "output.weight",
50
+ }
51
+
52
+ def tensor_name(key):
53
+ parts = key.split(".")
54
+ if parts[0] == "blocks":
55
+ blk = int(parts[1])
56
+ sub = parts[2]
57
+ if sub == "ln1":
58
+ return f"blk.{blk}.attn_norm.{parts[3]}"
59
+ elif sub == "ln2":
60
+ return f"blk.{blk}.ffn_norm.{parts[3]}"
61
+ elif sub == "attn":
62
+ proj_map = {
63
+ "q_proj": "attn_q",
64
+ "k_proj": "attn_k",
65
+ "v_proj": "attn_v",
66
+ "o_proj": "attn_output",
67
+ }
68
+ return f"blk.{blk}.{proj_map[parts[3]]}.weight"
69
+ elif sub == "mlp":
70
+ proj_map = {
71
+ "gate": "ffn_gate",
72
+ "up": "ffn_up",
73
+ "down": "ffn_down",
74
+ }
75
+ return f"blk.{blk}.{proj_map[parts[3]]}.weight"
76
+ return name_map.get(key, key)
77
+
78
+ # Write all tensors as fp32 first, GGUF will quantize
79
+ for key, param in model.state_dict().items():
80
+ tname = tensor_name(key)
81
+ data = param.contiguous().float().numpy()
82
+ writer.add_tensor(tname, data)
83
+
84
+ writer.write_header_to_file()
85
+ writer.write_kv_data_to_file()
86
+ writer.write_tensors_to_file()
87
+ writer.close()
88
+
89
+ print(f" Done → {output_path}")
90
+ print(f" Run GGUF quantization: the gguf library handles Q4_K_M inline")
91
+
92
+ import struct, os
93
+ fsize = os.path.getsize(output_path)
94
+ print(f" Raw size: {fsize/1024**2:.1f}MB")
95
+
96
+ return True
97
+
98
+
99
+ def main():
100
+ parser = argparse.ArgumentParser()
101
+ parser.add_argument("--checkpoint", default=None)
102
+ parser.add_argument("--output", default="outputs/tiny-sft/tiny.gguf")
103
+ parser.add_argument("--quantize", default="q4_k_m",
104
+ choices=["q4_0", "q4_1", "q5_0", "q5_1", "q8_0", "q4_k_m", "q5_k_m", "q6_k", "q8_k_m"])
105
+ args = parser.parse_args()
106
+
107
+ if args.checkpoint is None:
108
+ args.checkpoint = "outputs/tiny-sft/final/model.pt"
109
+ if not os.path.exists(args.checkpoint):
110
+ print(f"No checkpoint found at {args.checkpoint}")
111
+ print("Train first: bash scripts/train_tiny.sh")
112
+ sys.exit(1)
113
+
114
+ export_gguf(args.checkpoint, args.output)
115
+ print(f"GGUF file: {args.output}")
116
+
117
+
118
+ if __name__ == "__main__":
119
+ main()
tokenizer.json CHANGED
@@ -1 +1 @@
1
- {"version":"1.0","truncation":null,"padding":null,"added_tokens":[{"id":0,"content":"<unk>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":1,"content":"<s>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":2,"content":"</s>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":3,"content":"<pad>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":4,"content":"<|system|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":5,"content":"<|user|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":6,"content":"<|assistant|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":7,"content":"<think>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":8,"content":"</think>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":9,"content":"[INST]","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":10,"content":"[/INST]","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":11,"content":"<|begin_of_thought|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":12,"content":"<|end_of_thought|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":13,"content":"<|reflect|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":14,"content":"<|revise|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":15,"content":"<|verify|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":16,"content":"<|code|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":17,"content":"<|text|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":18,"content":"<|math|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":19,"content":"<|think|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":20,"content":"<|answer|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":21,"content":"<|step|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":22,"content":"<|reason|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":23,"content":"<|check|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":24,"content":"<|output|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":25,"content":"<|plan|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":26,"content":"<|solve|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":27,"content":"<|analyze|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":28,"content":"<|conclude|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":29,"content":"<|approach|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":30,"content":"<|alternative|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":31,"content":"<|summary|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":32,"content":"<|question|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":33,"content":"<|hint|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":34,"content":"<|example|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":35,"content":"<|correct|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":36,"content":"<|incorrect|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":37,"content":"<|feedback|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":38,"content":"<|start|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":39,"content":"<|end|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":40,"content":"<|sep|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":41,"content":"<|cls|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":42,"content":"<|tool|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":43,"content":"<|function|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":44,"content":"<|result|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":45,"content":"<|input|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":46,"content":"<|detect|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":47,"content":"<|context|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":48,"content":"<|proof|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":49,"content":"<|lemma|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":50,"content":"<|theorem|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true}],"normalizer":null,"pre_tokenizer":{"type":"ByteLevel","add_prefix_space":false,"trim_offsets":true},"post_processor":null,"decoder":{"type":"ByteLevel","add_prefix_space":false,"trim_offsets":true},"model":{"type":"BPE","dropout":null,"unk_token":"<unk>","byte_fallback":true,"vocab":{"<unk>":0,"<s>":1,"</s>":2,"<pad>":3,"<|system|>":4,"<|user|>":5,"<|assistant|>":6,"<think>":7,"</think>":8,"[INST]":9,"[/INST]":10,"<|begin_of_thought|>":11,"<|end_of_thought|>":12,"<|reflect|>":13,"<|revise|>":14,"<|verify|>":15,"<|code|>":16,"<|text|>":17,"<|math|>":18,"<|think|>":19,"<|answer|>":20,"<|step|>":21,"<|reason|>":22,"<|check|>":23,"<|output|>":24,"<|plan|>":25,"<|solve|>":26,"<|analyze|>":27,"<|conclude|>":28,"<|approach|>":29,"<|alternative|>":30,"<|summary|>":31,"<|question|>":32,"<|hint|>":33,"<|example|>":34,"<|correct|>":35,"<|incorrect|>":36,"<|feedback|>":37,"<|start|>":38,"<|end|>":39,"<|sep|>":40,"<|cls|>":41,"<|tool|>":42,"<|function|>":43,"<|result|>":44,"<|input|>":45,"<|detect|>":46,"<|context|>":47,"<|proof|>":48,"<|lemma|>":49,"<|theorem|>":50,"Ā":51,"ā":52,"Ă":53,"ă":54,"Ą":55,"ą":56,"Ć":57,"ć":58,"Ĉ":59,"ĉ":60,"Ċ":61,"ċ":62,"Č":63,"č":64,"Ď":65,"ď":66,"Đ":67,"đ":68,"Ē":69,"ē":70,"Ĕ":71,"ĕ":72,"Ė":73,"ė":74,"Ę":75,"ę":76,"Ě":77,"ě":78,"Ĝ":79,"ĝ":80,"Ğ":81,"ğ":82,"Ġ":83,"!":84,"\"":85,"#":86,"$":87,"%":88,"&":89,"'":90,"(":91,")":92,"*":93,"+":94,",":95,"-":96,".":97,"/":98,"0":99,"1":100,"2":101,"3":102,"4":103,"5":104,"6":105,"7":106,"8":107,"9":108,":":109,";":110,"<":111,"=":112,">":113,"?":114,"@":115,"A":116,"B":117,"C":118,"D":119,"E":120,"F":121,"G":122,"H":123,"I":124,"J":125,"K":126,"L":127,"M":128,"N":129,"O":130,"P":131,"Q":132,"R":133,"S":134,"T":135,"U":136,"V":137,"W":138,"X":139,"Y":140,"Z":141,"[":142,"\\":143,"]":144,"^":145,"_":146,"`":147,"a":148,"b":149,"c":150,"d":151,"e":152,"f":153,"g":154,"h":155,"i":156,"j":157,"k":158,"l":159,"m":160,"n":161,"o":162,"p":163,"q":164,"r":165,"s":166,"t":167,"u":168,"v":169,"w":170,"x":171,"y":172,"z":173,"{":174,"|":175,"}":176,"~":177,"ġ":178,"Ģ":179,"ģ":180,"Ĥ":181,"ĥ":182,"Ħ":183,"ħ":184,"Ĩ":185,"ĩ":186,"Ī":187,"ī":188,"Ĭ":189,"ĭ":190,"Į":191,"į":192,"İ":193,"ı":194,"IJ":195,"ij":196,"Ĵ":197,"ĵ":198,"Ķ":199,"ķ":200,"ĸ":201,"Ĺ":202,"ĺ":203,"Ļ":204,"ļ":205,"Ľ":206,"ľ":207,"Ŀ":208,"ŀ":209,"Ł":210,"ł":211,"¡":212,"¢":213,"£":214,"¤":215,"¥":216,"¦":217,"§":218,"¨":219,"©":220,"ª":221,"«":222,"¬":223,"Ń":224,"®":225,"¯":226,"°":227,"±":228,"²":229,"³":230,"´":231,"µ":232,"¶":233,"·":234,"¸":235,"¹":236,"º":237,"»":238,"¼":239,"½":240,"¾":241,"¿":242,"À":243,"Á":244,"Â":245,"Ã":246,"Ä":247,"Å":248,"Æ":249,"Ç":250,"È":251,"É":252,"Ê":253,"Ë":254,"Ì":255,"Í":256,"Î":257,"Ï":258,"Ð":259,"Ñ":260,"Ò":261,"Ó":262,"Ô":263,"Õ":264,"Ö":265,"×":266,"Ø":267,"Ù":268,"Ú":269,"Û":270,"Ü":271,"Ý":272,"Þ":273,"ß":274,"à":275,"á":276,"â":277,"ã":278,"ä":279,"å":280,"æ":281,"ç":282,"è":283,"é":284,"ê":285,"ë":286,"ì":287,"í":288,"î":289,"ï":290,"ð":291,"ñ":292,"ò":293,"ó":294,"ô":295,"õ":296,"ö":297,"÷":298,"ø":299,"ù":300,"ú":301,"û":302,"ü":303,"ý":304,"þ":305,"ÿ":306,"the":307,"be":308,"to":309,"of":310,"and":311,"in":312,"that":313,"have":314,"it":315,"for":316,"not":317,"on":318,"with":319,"he":320,"as":321,"you":322,"do":323,"at":324,"this":325,"but":326,"his":327,"by":328,"from":329,"they":330,"we":331,"say":332,"her":333,"she":334,"or":335,"an":336,"will":337,"my":338,"one":339,"all":340,"would":341,"there":342,"their":343,"what":344,"so":345,"up":346,"out":347,"if":348,"about":349,"who":350,"get":351,"which":352,"go":353,"me":354,"when":355,"make":356,"can":357,"like":358,"time":359,"no":360,"just":361,"him":362,"know":363,"take":364,"people":365,"into":366,"year":367,"your":368,"good":369,"some":370,"could":371,"them":372,"see":373,"other":374,"than":375,"then":376,"now":377,"look":378,"only":379,"come":380,"its":381,"over":382,"think":383,"also":384,"back":385,"after":386,"use":387,"two":388,"how":389,"our":390,"work":391,"first":392,"well":393,"way":394,"even":395,"new":396,"want":397,"because":398,"any":399,"these":400,"give":401,"day":402,"most":403,"us":404,"is":405,"was":406,"are":407,"were":408,"been":409,"has":410,"had":411,"did":412,"does":413,"am":414,"being":415,"having":416,"doing":417,"saying":418,"going":419,"getting":420,"making":421,"knowing":422,"taking":423,"thinking":424,"coming":425,"came":426,"goes":427,"gone":428,"went":429,"saw":430,"seen":431,"seeing":432,"said":433,"says":434,"got":435,"gotten":436,"made":437,"makes":438,"knew":439,"known":440,"knows":441,"thought":442,"thinks":443,"took":444,"taken":445,"takes":446,"gave":447,"given":448,"gives":449,"giving":450,"find":451,"found":452,"finds":453,"finding":454,"tell":455,"told":456,"tells":457,"telling":458,"ask":459,"asked":460,"asks":461,"asking":462,"show":463,"showed":464,"shown":465,"shows":466,"showing":467,"try":468,"tried":469,"tries":470,"trying":471,"leave":472,"left":473,"leaves":474,"leaving":475,"call":476,"called":477,"calls":478,"calling":479,"keep":480,"kept":481,"keeps":482,"keeping":483,"let":484,"lets":485,"letting":486,"begin":487,"began":488,"begun":489,"begins":490,"beginning":491,"seem":492,"seemed":493,"seems":494,"seeming":495,"help":496,"helped":497,"helps":498,"helping":499,"turn":500,"turned":501,"turns":502,"turning":503,"start":504,"started":505,"starts":506,"starting":507,"bring":508,"brought":509,"brings":510,"bringing":511,"happen":512,"happened":513,"happens":514,"happening":515,"write":516,"wrote":517,"written":518,"writes":519,"writing":520,"provide":521,"provided":522,"provides":523,"providing":524,"consider":525,"considered":526,"considers":527,"considering":528,"appear":529,"appeared":530,"appears":531,"appearing":532,"follow":533,"followed":534,"follows":535,"following":536,"change":537,"changed":538,"changes":539,"changing":540,"form":541,"formed":542,"forms":543,"forming":544,"need":545,"needed":546,"needs":547,"needing":548,"set":549,"sets":550,"setting":551,"put":552,"puts":553,"putting":554,"run":555,"runs":556,"running":557,"move":558,"moved":559,"moves":560,"moving":561,"stand":562,"stood":563,"stands":564,"standing":565,"win":566,"won":567,"wins":568,"winning":569,"play":570,"played":571,"plays":572,"playing":573,"point":574,"points":575,"pointed":576,"pointing":577,"large":578,"small":579,"big":580,"little":581,"long":582,"short":583,"high":584,"low":585,"old":586,"young":587,"great":588,"important":589,"different":590,"same":591,"many":592,"much":593,"more":594,"few":595,"own":596,"very":597,"such":598,"still":599,"too":600,"here":601,"where":602,"why":603,"while":604,"though":605,"although":606,"until":607,"since":608,"before":609,"during":610,"without":611,"within":612,"between":613,"through":614,"across":615,"around":616,"above":617,"below":618,"under":619,"again":620,"ever":621,"never":622,"always":623,"often":624,"sometimes":625,"together":626,"alone":627,"already":628,"yet":629,"almost":630,"quite":631,"rather":632,"bad":633,"better":634,"worse":635,"best":636,"worst":637,"less":638,"every":639,"each":640,"both":641,"either":642,"neither":643,"none":644,"thing":645,"things":646,"ways":647,"times":648,"years":649,"days":650,"week":651,"weeks":652,"month":653,"months":654,"part":655,"parts":656,"place":657,"places":658,"case":659,"cases":660,"world":661,"worlds":662,"number":663,"numbers":664,"group":665,"groups":666,"system":667,"systems":668,"program":669,"programs":670,"data":671,"information":672,"problem":673,"problems":674,"solution":675,"solutions":676,"method":677,"methods":678,"result":679,"results":680,"process":681,"processes":682,"function":683,"functions":684,"value":685,"values":686,"type":687,"types":688,"state":689,"states":690,"model":691,"models":692,"level":693,"levels":694,"line":695,"lines":696,"file":697,"files":698,"code":699,"codes":700,"list":701,"lists":702,"array":703,"arrays":704,"object":705,"objects":706,"class":707,"classes":708,"property":709,"properties":710,"input":711,"inputs":712,"output":713,"outputs":714,"return":715,"returns":716,"define":717,"defined":718,"defines":719,"defining":720,"declare":721,"declared":722,"import":723,"imports":724,"export":725,"exports":726,"include":727,"includes":728,"public":729,"private":730,"protected":731,"static":732,"final":733,"const":734,"void":735,"int":736,"float":737,"double":738,"char":739,"bool":740,"string":741,"true":742,"false":743,"null":744,"None":745,"nil":746,"undefined":747,"else":748,"elif":749,"switch":750,"default":751,"break":752,"catch":753,"finally":754,"throw":755,"raise":756,"except":757,"yield":758,"await":759,"async":760,"defer":761,"lambda":762,"map":763,"filter":764,"reduce":765,"sort":766,"delete":767,"free":768,"alloc":769,"realloc":770,"print":771,"printf":772,"println":773,"log":774,"debug":775,"error":776,"len":777,"size":778,"length":779,"count":780,"sum":781,"max":782,"min":783,"abs":784,"pow":785,"sqrt":786,"floor":787,"ceil":788,"round":789,"sin":790,"cos":791,"tan":792,"atan":793,"exp":794,"zero":795,"three":796,"four":797,"five":798,"six":799,"seven":800,"eight":801,"nine":802,"ten":803,"second":804,"third":805,"last":806,"next":807,"previous":808,"current":809,"initial":810,"primary":811,"secondary":812,"main":813,"basic":814,"advanced":815,"simple":816,"complex":817,"single":818,"multiple":819,"add":820,"sub":821,"mul":822,"div":823,"mod":824,"inc":825,"dec":826,"push":827,"pop":828,"shift":829,"unshift":830,"insert":831,"remove":832,"append":833,"prepend":834,"concat":835,"join":836,"split":837,"slice":838,"open":839,"close":840,"read":841,"load":842,"save":843,"create":844,"update":845,"select":846,"merge":847,"end":848,"stop":849,"pause":850,"resume":851,"enable":852,"disable":853,"allow":854,"deny":855,"grant":856,"revoke":857,"user":858,"users":859,"name":860,"names":861,"id":862,"ids":863,"key":864,"keys":865,"field":866,"fields":867,"table":868,"tables":869,"row":870,"rows":871,"column":872,"columns":873,"index":874,"indexes":875,"indices":876,"query":877,"queries":878,"avg":879,"total":880,"page":881,"pages":882,"home":883,"login":884,"logout":885,"signup":886,"errors":887,"warning":888,"warnings":889,"info":890,"success":891,"failure":892,"status":893,"message":894,"messages":895,"request":896,"requests":897,"response":898,"responses":899,"client":900,"server":901,"api":902,"endpoint":903,"route":904,"http":905,"https":906,"url":907,"uri":908,"port":909,"host":910,"config":911,"configuration":912,"settings":913,"option":914,"options":915,"param":916,"params":917,"parameter":918,"parameters":919,"arg":920,"args":921,"argument":922,"arguments":923,"kwargs":924,"path":925,"dir":926,"directory":927,"dirs":928,"folder":929,"folders":930,"item":931,"items":932,"element":933,"elements":934,"entry":935,"entries":936,"note":937,"notes":938,"text":939,"texts":940,"content":941,"contents":942,"source":943,"sources":944,"target":945,"targets":946,"ref":947,"refs":948,"struct":949,"structs":950,"union":951,"unions":952,"enum":953,"enums":954,"impl":955,"implement":956,"implementation":957,"interface":958,"abstract":959,"virtual":960,"override":961,"overload":962,"base":963,"derived":964,"parent":965,"child":966,"children":967,"root":968,"leaf":969,"node":970,"nodes":971,"edge":972,"edges":973,"tree":974,"graph":975,"queue":976,"stack":977,"heap":978,"dict":979,"dictionary":980,"hash":981,"hashmap":982,"link":983,"links":984,"linked":985,"pointer":986,"pointers":987,"thread":988,"threads":989,"task":990,"tasks":991,"sync":992,"lock":993,"mutex":994,"semaphore":995,"buffer":996,"buffers":997,"cache":998,"cached":999,"pool":1000,"pools":1001,"memory":1002,"disk":1003,"network":1004,"socket":1005,"sockets":1006,"stream":1007,"streams":1008,"packet":1009,"packets":1010,"frame":1011,"meta":1012,"metadata":1013,"header":1014,"headers":1015,"body":1016,"payload":1017,"token":1018,"tokens":1019,"session":1020,"cookie":1021,"cookies":1022,"auth":1023,"register":1024,"password":1025,"salt":1026,"encrypt":1027,"decrypt":1028,"encode":1029,"decode":1030,"cert":1031,"certificate":1032,"train":1033,"training":1034,"trained":1035,"test":1036,"testing":1037,"tested":1038,"valid":1039,"validate":1040,"validation":1041,"eval":1042,"evaluate":1043,"layer":1044,"layers":1045,"weight":1046,"weights":1047,"bias":1048,"biases":1049,"loss":1050,"losses":1051,"grad":1052,"grads":1053,"lr":1054,"learning_rate":1055,"optimizer":1056,"adam":1057,"sgd":1058,"batch":1059,"batches":1060,"epoch":1061,"epochs":1062,"step":1063,"steps":1064,"dataset":1065,"dataloader":1066,"tensor":1067,"tensors":1068,"gpu":1069,"cpu":1070,"tpu":1071,"device":1072,"devices":1073,"math":1074,"physics":1075,"chemistry":1076,"biology":1077,"science":1078,"compute":1079,"calculate":1080,"computation":1081,"calculation":1082,"equation":1083,"formula":1084,"expression":1085,"theorem":1086,"proof":1087,"prove":1088,"lemma":1089,"axiom":1090,"corollary":1091,"derivative":1092,"integral":1093,"limit":1094,"sequence":1095,"series":1096,"matrix":1097,"vector":1098,"subset":1099,"intersection":1100,"complement":1101,"space":1102,"ring":1103,"module":1104,"algebra":1105,"analysis":1106,"topology":1107,"geometry":1108,"statistics":1109,"probability":1110,"distribution":1111,"random":1112,"sample":1113,"mean":1114,"median":1115,"mode":1116,"variance":1117,"std":1118,"deviation":1119,"linear":1120,"nonlinear":1121,"convex":1122,"concave":1123,"smooth":1124,"algorithm":1125,"complexity":1126,"runtime":1127,"search":1128,"traverse":1129,"recursive":1130,"iterative":1131,"dynamic":1132,"greedy":1133,"optimization":1134,"constraint":1135,"feasible":1136,"optimal":1137,"example":1138,"question":1139,"answer":1140,"hint":1141,"reason":1142,"analyze":1143,"approach":1144,"solve":1145,"verify":1146,"check":1147,"conclude":1148,"summarize":1149,"explain":1150,"describe":1151,"correct":1152,"incorrect":1153,"right":1154,"wrong":1155,"positive":1156,"negative":1157,"yes":1158,"maybe":1159,"==":1160,"!=":1161,"<=":1162,">=":1163,"&&":1164,"||":1165,"++":1166,"--":1167,"+=":1168,"-=":1169,"*=":1170,"/=":1171,"->":1172,"=>":1173,"::":1174,"..":1175,"...":1176,"/*":1177,"*/":1178,"//":1179,"<!--":1180,"-->":1181,"10":1182,"11":1183,"12":1184,"13":1185,"14":1186,"15":1187,"16":1188,"17":1189,"18":1190,"19":1191,"20":1192,"30":1193,"40":1194,"50":1195,"60":1196,"70":1197,"80":1198,"90":1199,"100":1200,"-1":1201,"-2":1202,"0x":1203,"0b":1204,"0o":1205,"Ġthe":1206,"Ġto":1207,"Ġof":1208,"Ġand":1209,"Ġa":1210,"Ġin":1211,"Ġthat":1212,"Ġis":1213,"Ġwas":1214,"Ġfor":1215,"Ġon":1216,"Ġwith":1217,"Ġas":1218,"Ġby":1219,"Ġat":1220,"Ġfrom":1221,"Ġor":1222,"Ġan":1223,"Ġwill":1224,"Ġwould":1225,"Ġnot":1226,"Ġbut":1227,"Ġare":1228,"Ġwere":1229,"Ġbeen":1230,"Ġhave":1231,"Ġhas":1232,"Ġhad":1233,"Ġdo":1234,"Ġdoes":1235,"Ġdid":1236,"Ġcan":1237,"Ġcould":1238,"Ġshould":1239,"Ġmay":1240,"Ġmight":1241,"Ġshall":1242,"Ġmust":1243,"Ġif":1244,"Ġelse":1245,"Ġwhen":1246,"Ġwhile":1247,"Ġbecause":1248,"Ġso":1249,"Ġthen":1250,"Ġthan":1251,"Ġalso":1252,"Ġeven":1253,"Ġonly":1254,"Ġjust":1255,"Ġvery":1256,"Ġtoo":1257,"Ġstill":1258,"Ġalready":1259,"Ġhere":1260,"Ġthere":1261,"Ġwhere":1262,"Ġwhy":1263,"Ġhow":1264,"Ġwhat":1265,"Ġwhich":1266,"Ġthis":1267,"Ġthese":1268,"Ġthose":1269,"Ġit":1270,"Ġits":1271,"Ġthey":1272,"Ġthem":1273,"Ġwe":1274,"Ġus":1275,"Ġour":1276,"Ġyou":1277,"Ġyour":1278,"Ġhe":1279,"Ġhim":1280,"Ġhis":1281,"Ġshe":1282,"Ġher":1283,"Ġhers":1284,"Ġone":1285,"Ġno":1286,"Ġall":1287,"Ġany":1288,"Ġsome":1289,"Ġeach":1290,"Ġevery":1291,"Ġboth":1292,"Ġneither":1293,"Ġeither":1294,"Ġmore":1295,"Ġmost":1296,"Ġfew":1297,"Ġother":1298,"Ġanother":1299,"Ġsuch":1300,"Ġsame":1301,"Ġdifferent":1302,"Ġown":1303,"Ġlike":1304,"Ġwell":1305,"Ġgood":1306,"Ġbad":1307,"Ġbetter":1308,"Ġbest":1309,"Ġnew":1310,"Ġold":1311,"Ġbig":1312,"Ġsmall":1313,"Ġlong":1314,"Ġshort":1315,"Ġhigh":1316,"Ġlow":1317,"Ġlarge":1318,"Ġlittle":1319,"Ġgreat":1320,"Ġimportant":1321,"Ġup":1322,"Ġdown":1323,"Ġout":1324,"Ġoff":1325,"Ġover":1326,"Ġunder":1327,"Ġagain":1328,"Ġback":1329,"Ġabout":1330,"Ġaround":1331,"Ġbetween":1332,"Ġthrough":1333,"Ġbefore":1334,"Ġafter":1335,"Ġduring":1336,"Ġuntil":1337,"Ġsince":1338,"Ġfirst":1339,"Ġlast":1340,"Ġnext":1341,"Ġprevious":1342,"Ġfinal":1343,"Ġget":1344,"Ġgot":1345,"Ġmake":1346,"Ġmade":1347,"Ġtake":1348,"Ġtook":1349,"Ġgive":1350,"Ġgave":1351,"Ġuse":1352,"Ġused":1353,"Ġusing":1354,"Ġneed":1355,"Ġneeds":1356,"Ġneeded":1357,"Ġwant":1358,"Ġwants":1359,"Ġwanted":1360,"Ġlet":1361,"Ġlets":1362,"Ġwork":1363,"Ġworks":1364,"Ġworked":1365,"Ġworking":1366,"Ġhelp":1367,"Ġhelps":1368,"Ġhelped":1369,"Ġcall":1370,"Ġcalls":1371,"Ġcalled":1372,"Ġcalling":1373,"Ġset":1374,"Ġsets":1375,"Ġsetting":1376,"Ġput":1377,"Ġputs":1378,"Ġputting":1379,"Ġrun":1380,"Ġruns":1381,"Ġran":1382,"Ġrunning":1383,"Ġkeep":1384,"Ġkeeps":1385,"Ġkept":1386,"Ġfind":1387,"Ġfinds":1388,"Ġfound":1389,"Ġshow":1390,"Ġshows":1391,"Ġtry":1392,"Ġtries":1393,"Ġtried":1394,"Ġtrying":1395,"Ġstart":1396,"Ġstarts":1397,"Ġstarted":1398,"Ġchange":1399,"Ġchanges":1400,"Ġchanged":1401,"Ġchanging":1402,"Ġfollow":1403,"Ġfollows":1404,"Ġknow":1405,"Ġknows":1406,"Ġknown":1407,"Ġthink":1408,"Ġthinks":1409,"Ġthought":1410,"Ġsay":1411,"Ġsays":1412,"Ġsaid":1413,"Ġsee":1414,"Ġsees":1415,"Ġsaw":1416,"Ġseen":1417,"Ġcome":1418,"Ġcomes":1419,"Ġcame":1420,"Ġgo":1421,"Ġgoes":1422,"Ġwent":1423,"Ġgone":1424,"Ġbring":1425,"Ġbrings":1426,"Ġbrought":1427,"Ġtell":1428,"Ġtells":1429,"Ġtold":1430,"Ġleave":1431,"Ġleaves":1432,"Ġleft":1433,"Ġhappen":1434,"Ġhappens":1435,"Ġprovide":1436,"Ġprovides":1437,"Ġprovided":1438,"Ġconsider":1439,"Ġconsiders":1440,"Ġappear":1441,"Ġappears":1442,"Ġappeared":1443,"Ġform":1444,"Ġforms":1445,"Ġformed":1446,"Ġseem":1447,"Ġseems":1448,"Ġseemed":1449,"Ġpoint":1450,"Ġpoints":1451,"Ġpointed":1452,"Ġturn":1453,"Ġturns":1454,"Ġturned":1455,"Ġturning":1456,"Ġplay":1457,"Ġplays":1458,"Ġthings":1459,"Ġthing":1460,"Ġtime":1461,"Ġtimes":1462,"Ġyear":1463,"Ġyears":1464,"Ġpeople":1465,"Ġplace":1466,"Ġplaces":1467,"Ġpart":1468,"Ġparts":1469,"Ġworld":1470,"Ġnumber":1471,"Ġnumbers":1472,"Ġsystem":1473,"Ġsystems":1474,"Ġgroup":1475,"Ġgroups":1476,"Ġline":1477,"Ġlines":1478,"Ġfile":1479,"Ġfiles":1480,"Ġcode":1481,"Ġdata":1482,"Ġfunction":1483,"Ġfunctions":1484,"Ġvalue":1485,"Ġvalues":1486,"Ġtype":1487,"Ġtypes":1488,"Ġclass":1489,"Ġclasses":1490,"Ġobject":1491,"Ġobjects":1492,"Ġmethod":1493,"Ġmethods":1494,"Ġresult":1495,"Ġresults":1496,"Ġprocess":1497,"Ġprocesses":1498,"Ġstate":1499,"Ġstates":1500,"Ġmodel":1501,"Ġmodels":1502,"Ġlevel":1503,"Ġlevels":1504,"Ġcase":1505,"Ġcases":1506,"Ġexample":1507,"Ġexamples":1508,"Ġinput":1509,"Ġinputs":1510,"Ġoutput":1511,"Ġoutputs":1512,"Ġerror":1513,"Ġerrors":1514,"Ġstatus":1515,"Ġmessage":1516,"Ġmessages":1517,"Ġrequest":1518,"Ġrequests":1519,"Ġresponse":1520,"Ġresponses":1521,"Ġreturn":1522,"Ġreturns":1523,"Ġimport":1524,"Ġimports":1525,"Ġexport":1526,"Ġexports":1527,"Ġdefine":1528,"Ġdefines":1529,"Ġdefined":1530,"Ġdeclare":1531,"Ġdeclares":1532,"Ġinclude":1533,"Ġincludes":1534,"Ġconfig":1535,"Ġsettings":1536,"Ġoption":1537,"Ġoptions":1538,"Ġparam":1539,"Ġparams":1540,"Ġargs":1541,"Ġtrue":1542,"Ġfalse":1543,"Ġnull":1544,"ĠNone":1545,"Ġundefined":1546,"Ġlen":1547,"Ġsize":1548,"Ġcount":1549,"Ġsum":1550,"Ġmax":1551,"Ġmin":1552,"Ġprint":1553,"Ġlog":1554,"Ġdebug":1555,"Ġinfo":1556,"Ġwarn":1557,"Ġtrain":1558,"Ġtest":1559,"Ġeval":1560,"Ġvalid":1561,"Ġval":1562,"Ġpage":1563,"Ġhome":1564,"Ġname":1565,"Ġkey":1566,"Ġkeys":1567,"Ġpath":1568,"Ġdir":1569,"Ġroot":1570,"Ġitem":1571,"Ġitems":1572,"Ġsource":1573,"Ġtarget":1574,"Ġbase":1575,"Ġmain":1576,"Ġprimary":1577,"Ġadd":1578,"Ġremove":1579,"Ġcreate":1580,"Ġdelete":1581,"Ġupdate":1582,"Ġopen":1583,"Ġclose":1584,"Ġread":1585,"Ġwrite":1586,"Ġload":1587,"Ġsave":1588,"Ġpush":1589,"Ġpop":1590,"Ġinsert":1591,"Ġappend":1592,"Ġsplit":1593,"Ġbegin":1594,"Ġend":1595,"Ġstop":1596,"Ġenable":1597,"Ġdisable":1598,"Ġuser":1599,"Ġusers":1600,"Ġadmin":1601,"Ġmanager":1602,"Ġstring":1603,"Ġint":1604,"Ġfloat":1605,"Ġdouble":1606,"Ġbool":1607,"Ġvoid":1608,"Ġlist":1609,"Ġdict":1610,"Ġtuple":1611,"Ġarray":1612,"Ġapi":1613,"Ġurl":1614,"Ġuri":1615,"Ġendpoint":1616,"Ġroute":1617,"Ġhttp":1618,"Ġhttps":1619,"Ġclient":1620,"Ġserver":1621,"Ġsocket":1622,"Ġmath":1623,"Ġscience":1624,"Ġanalysis":1625,"Ġtheory":1626,"Ġproof":1627,"Ġtheorem":1628,"Ġlemma":1629,"Ġequation":1630,"Ġformula":1631,"ing":1632,"ed":1633,"ly":1634,"tion":1635,"sion":1636,"ment":1637,"ness":1638,"ity":1639,"able":1640,"ible":1641,"al":1642,"ial":1643,"ical":1644,"ous":1645,"eous":1646,"ious":1647,"ive":1648,"ative":1649,"ful":1650,"wise":1651,"ward":1652,"un":1653,"re":1654,"im":1655,"ir":1656,"il":1657,"dis":1658,"mis":1659,"non":1660,"pre":1661,"pro":1662,"per":1663,"trans":1664,"inter":1665,"intra":1666,"extra":1667,"super":1668,"sur":1669,"semi":1670,"multi":1671,"mono":1672,"bi":1673,"tri":1674,"anti":1675,"counter":1676,"down":1677,"co":1678,"con":1679,"com":1680,"col":1681,"cor":1682,"de":1683,"di":1684,"dif":1685,"ex":1686,"fore":1687,"macro":1688,"micro":1689,"mid":1690,"post":1691,"tele":1692,"ultra":1693,"-ing":1694,"-ed":1695,"-ly":1696,"-tion":1697,"-sion":1698,"-ment":1699,"-ness":1700,"-ity":1701,"-able":1702,"-ible":1703,"-al":1704,"-ous":1705,"-ive":1706,"-ful":1707,"-less":1708,"un-":1709,"re-":1710,"pre-":1711,"non-":1712,"anti-":1713,"counter-":1714,"self-":1715,"all-":1716,"well-":1717,"so-":1718,"to-":1719,"in-":1720,"'t":1721,"'s":1722,"'m":1723,"'re":1724,"'ve":1725,"'ll":1726,"'d":1727,"n't":1728,"don't":1729,"can't":1730,"won't":1731,"isn't":1732,"aren't":1733,"wasn't":1734,"weren't":1735,"hasn't":1736,"haven't":1737,"hadn't":1738,"doesn't":1739,"didn't":1740,"couldn't":1741,"shouldn't":1742,"wouldn't":1743,"mustn't":1744,"needn't":1745,"mightn't":1746,"<-":1747,"\n":1748,"\t":1749," ":1750," ":1751," ":1752," ":1753,"ĠĠ":1754,"ĠĠĠ":1755,"ĠĠĠĠ":1756},"merges":[]}}
 
1
+ {"version":"1.0","truncation":null,"padding":null,"added_tokens":[{"id":0,"content":"<unk>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":1,"content":"<s>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":2,"content":"</s>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":3,"content":"<pad>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":4,"content":"<|system|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":5,"content":"<|user|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":6,"content":"<|assistant|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":7,"content":"<think>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":8,"content":"</think>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":9,"content":"[INST]","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":10,"content":"[/INST]","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":11,"content":"<|begin_of_thought|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":12,"content":"<|end_of_thought|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":13,"content":"<|reflect|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":14,"content":"<|revise|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":15,"content":"<|verify|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":16,"content":"<|code|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":17,"content":"<|text|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":18,"content":"<|math|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":19,"content":"<|think|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":20,"content":"<|answer|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":21,"content":"<|step|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":22,"content":"<|reason|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":23,"content":"<|check|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":24,"content":"<|output|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":25,"content":"<|plan|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":26,"content":"<|solve|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":27,"content":"<|analyze|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":28,"content":"<|conclude|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":29,"content":"<|approach|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":30,"content":"<|alternative|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":31,"content":"<|summary|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":32,"content":"<|question|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":33,"content":"<|hint|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":34,"content":"<|example|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":35,"content":"<|correct|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":36,"content":"<|incorrect|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":37,"content":"<|feedback|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":38,"content":"<|start|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":39,"content":"<|end|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":40,"content":"<|sep|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":41,"content":"<|cls|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":42,"content":"<|tool|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":43,"content":"<|function|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":44,"content":"<|result|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":45,"content":"<|input|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":46,"content":"<|detect|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":47,"content":"<|context|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":48,"content":"<|proof|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":49,"content":"<|lemma|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true},{"id":50,"content":"<|theorem|>","single_word":false,"lstrip":false,"rstrip":false,"normalized":false,"special":true}],"normalizer":null,"pre_tokenizer":{"type":"ByteLevel","add_prefix_space":false,"trim_offsets":true},"post_processor":null,"decoder":{"type":"ByteLevel","add_prefix_space":false,"trim_offsets":true},"model":{"type":"BPE","dropout":null,"unk_token":"<unk>","byte_fallback":true,"vocab":{"<unk>":0,"<s>":1,"</s>":2,"<pad>":3,"<|system|>":4,"<|user|>":5,"<|assistant|>":6,"<think>":7,"</think>":8,"[INST]":9,"[/INST]":10,"<|begin_of_thought|>":11,"<|end_of_thought|>":12,"<|reflect|>":13,"<|revise|>":14,"<|verify|>":15,"<|code|>":16,"<|text|>":17,"<|math|>":18,"<|think|>":19,"<|answer|>":20,"<|step|>":21,"<|reason|>":22,"<|check|>":23,"<|output|>":24,"<|plan|>":25,"<|solve|>":26,"<|analyze|>":27,"<|conclude|>":28,"<|approach|>":29,"<|alternative|>":30,"<|summary|>":31,"<|question|>":32,"<|hint|>":33,"<|example|>":34,"<|correct|>":35,"<|incorrect|>":36,"<|feedback|>":37,"<|start|>":38,"<|end|>":39,"<|sep|>":40,"<|cls|>":41,"<|tool|>":42,"<|function|>":43,"<|result|>":44,"<|input|>":45,"<|detect|>":46,"<|context|>":47,"<|proof|>":48,"<|lemma|>":49,"<|theorem|>":50,"Ā":51,"ā":52,"Ă":53,"ă":54,"Ą":55,"ą":56,"Ć":57,"ć":58,"Ĉ":59,"ĉ":60,"Ċ":61,"ċ":62,"Č":63,"č":64,"Ď":65,"ď":66,"Đ":67,"đ":68,"Ē":69,"ē":70,"Ĕ":71,"ĕ":72,"Ė":73,"ė":74,"Ę":75,"ę":76,"Ě":77,"ě":78,"Ĝ":79,"ĝ":80,"Ğ":81,"ğ":82,"Ġ":83,"!":84,"\"":85,"#":86,"$":87,"%":88,"&":89,"'":90,"(":91,")":92,"*":93,"+":94,",":95,"-":96,".":97,"/":98,"0":99,"1":100,"2":101,"3":102,"4":103,"5":104,"6":105,"7":106,"8":107,"9":108,":":109,";":110,"<":111,"=":112,">":113,"?":114,"@":115,"A":116,"B":117,"C":118,"D":119,"E":120,"F":121,"G":122,"H":123,"I":124,"J":125,"K":126,"L":127,"M":128,"N":129,"O":130,"P":131,"Q":132,"R":133,"S":134,"T":135,"U":136,"V":137,"W":138,"X":139,"Y":140,"Z":141,"[":142,"\\":143,"]":144,"^":145,"_":146,"`":147,"a":148,"b":149,"c":150,"d":151,"e":152,"f":153,"g":154,"h":155,"i":156,"j":157,"k":158,"l":159,"m":160,"n":161,"o":162,"p":163,"q":164,"r":165,"s":166,"t":167,"u":168,"v":169,"w":170,"x":171,"y":172,"z":173,"{":174,"|":175,"}":176,"~":177,"ġ":178,"Ģ":179,"ģ":180,"Ĥ":181,"ĥ":182,"Ħ":183,"ħ":184,"Ĩ":185,"ĩ":186,"Ī":187,"ī":188,"Ĭ":189,"ĭ":190,"Į":191,"į":192,"İ":193,"ı":194,"IJ":195,"ij":196,"Ĵ":197,"ĵ":198,"Ķ":199,"ķ":200,"ĸ":201,"Ĺ":202,"ĺ":203,"Ļ":204,"ļ":205,"Ľ":206,"ľ":207,"Ŀ":208,"ŀ":209,"Ł":210,"ł":211,"¡":212,"¢":213,"£":214,"¤":215,"¥":216,"¦":217,"§":218,"¨":219,"©":220,"ª":221,"«":222,"¬":223,"Ń":224,"®":225,"¯":226,"°":227,"±":228,"²":229,"³":230,"´":231,"µ":232,"¶":233,"·":234,"¸":235,"¹":236,"º":237,"»":238,"¼":239,"½":240,"¾":241,"¿":242,"À":243,"Á":244,"Â":245,"Ã":246,"Ä":247,"Å":248,"Æ":249,"Ç":250,"È":251,"É":252,"Ê":253,"Ë":254,"Ì":255,"Í":256,"Î":257,"Ï":258,"Ð":259,"Ñ":260,"Ò":261,"Ó":262,"Ô":263,"Õ":264,"Ö":265,"×":266,"Ø":267,"Ù":268,"Ú":269,"Û":270,"Ü":271,"Ý":272,"Þ":273,"ß":274,"à":275,"á":276,"â":277,"ã":278,"ä":279,"å":280,"æ":281,"ç":282,"è":283,"é":284,"ê":285,"ë":286,"ì":287,"í":288,"î":289,"ï":290,"ð":291,"ñ":292,"ò":293,"ó":294,"ô":295,"õ":296,"ö":297,"÷":298,"ø":299,"ù":300,"ú":301,"û":302,"ü":303,"ý":304,"þ":305,"ÿ":306,"the":307,"be":308,"to":309,"of":310,"and":311,"in":312,"that":313,"have":314,"it":315,"for":316,"not":317,"on":318,"with":319,"he":320,"as":321,"you":322,"do":323,"at":324,"this":325,"but":326,"his":327,"by":328,"from":329,"they":330,"we":331,"say":332,"her":333,"she":334,"or":335,"an":336,"will":337,"my":338,"one":339,"all":340,"would":341,"there":342,"their":343,"what":344,"so":345,"up":346,"out":347,"if":348,"about":349,"who":350,"get":351,"which":352,"go":353,"me":354,"when":355,"make":356,"can":357,"like":358,"time":359,"no":360,"just":361,"him":362,"know":363,"take":364,"people":365,"into":366,"year":367,"your":368,"good":369,"some":370,"could":371,"them":372,"see":373,"other":374,"than":375,"then":376,"now":377,"look":378,"only":379,"come":380,"its":381,"over":382,"think":383,"also":384,"back":385,"after":386,"use":387,"two":388,"how":389,"our":390,"work":391,"first":392,"well":393,"way":394,"even":395,"new":396,"want":397,"because":398,"any":399,"these":400,"give":401,"day":402,"most":403,"us":404,"is":405,"was":406,"are":407,"were":408,"been":409,"has":410,"had":411,"did":412,"does":413,"am":414,"being":415,"having":416,"doing":417,"saying":418,"going":419,"getting":420,"making":421,"knowing":422,"taking":423,"thinking":424,"coming":425,"came":426,"goes":427,"gone":428,"went":429,"saw":430,"seen":431,"seeing":432,"said":433,"says":434,"got":435,"gotten":436,"made":437,"makes":438,"knew":439,"known":440,"knows":441,"thought":442,"thinks":443,"took":444,"taken":445,"takes":446,"gave":447,"given":448,"gives":449,"giving":450,"find":451,"found":452,"finds":453,"finding":454,"tell":455,"told":456,"tells":457,"telling":458,"ask":459,"asked":460,"asks":461,"asking":462,"show":463,"showed":464,"shown":465,"shows":466,"showing":467,"try":468,"tried":469,"tries":470,"trying":471,"leave":472,"left":473,"leaves":474,"leaving":475,"call":476,"called":477,"calls":478,"calling":479,"keep":480,"kept":481,"keeps":482,"keeping":483,"let":484,"lets":485,"letting":486,"begin":487,"began":488,"begun":489,"begins":490,"beginning":491,"seem":492,"seemed":493,"seems":494,"seeming":495,"help":496,"helped":497,"helps":498,"helping":499,"turn":500,"turned":501,"turns":502,"turning":503,"start":504,"started":505,"starts":506,"starting":507,"bring":508,"brought":509,"brings":510,"bringing":511,"happen":512,"happened":513,"happens":514,"happening":515,"write":516,"wrote":517,"written":518,"writes":519,"writing":520,"provide":521,"provided":522,"provides":523,"providing":524,"consider":525,"considered":526,"considers":527,"considering":528,"appear":529,"appeared":530,"appears":531,"appearing":532,"follow":533,"followed":534,"follows":535,"following":536,"change":537,"changed":538,"changes":539,"changing":540,"form":541,"formed":542,"forms":543,"forming":544,"need":545,"needed":546,"needs":547,"needing":548,"set":549,"sets":550,"setting":551,"put":552,"puts":553,"putting":554,"run":555,"runs":556,"running":557,"move":558,"moved":559,"moves":560,"moving":561,"stand":562,"stood":563,"stands":564,"standing":565,"win":566,"won":567,"wins":568,"winning":569,"play":570,"played":571,"plays":572,"playing":573,"point":574,"points":575,"pointed":576,"pointing":577,"large":578,"small":579,"big":580,"little":581,"long":582,"short":583,"high":584,"low":585,"old":586,"young":587,"great":588,"important":589,"different":590,"same":591,"many":592,"much":593,"more":594,"few":595,"own":596,"very":597,"such":598,"still":599,"too":600,"here":601,"where":602,"why":603,"while":604,"though":605,"although":606,"until":607,"since":608,"before":609,"during":610,"without":611,"within":612,"between":613,"through":614,"across":615,"around":616,"above":617,"below":618,"under":619,"again":620,"ever":621,"never":622,"always":623,"often":624,"sometimes":625,"together":626,"alone":627,"already":628,"yet":629,"almost":630,"quite":631,"rather":632,"bad":633,"better":634,"worse":635,"best":636,"worst":637,"less":638,"every":639,"each":640,"both":641,"either":642,"neither":643,"none":644,"thing":645,"things":646,"ways":647,"times":648,"years":649,"days":650,"week":651,"weeks":652,"month":653,"months":654,"part":655,"parts":656,"place":657,"places":658,"case":659,"cases":660,"world":661,"worlds":662,"number":663,"numbers":664,"group":665,"groups":666,"system":667,"systems":668,"program":669,"programs":670,"data":671,"information":672,"problem":673,"problems":674,"solution":675,"solutions":676,"method":677,"methods":678,"result":679,"results":680,"process":681,"processes":682,"function":683,"functions":684,"value":685,"values":686,"type":687,"types":688,"state":689,"states":690,"model":691,"models":692,"level":693,"levels":694,"line":695,"lines":696,"file":697,"files":698,"code":699,"codes":700,"list":701,"lists":702,"array":703,"arrays":704,"object":705,"objects":706,"class":707,"classes":708,"property":709,"properties":710,"input":711,"inputs":712,"output":713,"outputs":714,"return":715,"returns":716,"define":717,"defined":718,"defines":719,"defining":720,"declare":721,"declared":722,"import":723,"imports":724,"export":725,"exports":726,"include":727,"includes":728,"public":729,"private":730,"protected":731,"static":732,"final":733,"const":734,"void":735,"int":736,"float":737,"double":738,"char":739,"bool":740,"string":741,"true":742,"false":743,"null":744,"None":745,"nil":746,"undefined":747,"else":748,"elif":749,"switch":750,"default":751,"break":752,"catch":753,"finally":754,"throw":755,"raise":756,"except":757,"yield":758,"await":759,"async":760,"defer":761,"lambda":762,"map":763,"filter":764,"reduce":765,"sort":766,"delete":767,"free":768,"alloc":769,"realloc":770,"print":771,"printf":772,"println":773,"log":774,"debug":775,"error":776,"len":777,"size":778,"length":779,"count":780,"sum":781,"max":782,"min":783,"abs":784,"pow":785,"sqrt":786,"floor":787,"ceil":788,"round":789,"sin":790,"cos":791,"tan":792,"atan":793,"exp":794,"zero":795,"three":796,"four":797,"five":798,"six":799,"seven":800,"eight":801,"nine":802,"ten":803,"second":804,"third":805,"last":806,"next":807,"previous":808,"current":809,"initial":810,"primary":811,"secondary":812,"main":813,"basic":814,"advanced":815,"simple":816,"complex":817,"single":818,"multiple":819,"add":820,"sub":821,"mul":822,"div":823,"mod":824,"inc":825,"dec":826,"push":827,"pop":828,"shift":829,"unshift":830,"insert":831,"remove":832,"append":833,"prepend":834,"concat":835,"join":836,"split":837,"slice":838,"open":839,"close":840,"read":841,"load":842,"save":843,"create":844,"update":845,"select":846,"merge":847,"end":848,"stop":849,"pause":850,"resume":851,"enable":852,"disable":853,"allow":854,"deny":855,"grant":856,"revoke":857,"user":858,"users":859,"name":860,"names":861,"id":862,"ids":863,"key":864,"keys":865,"field":866,"fields":867,"table":868,"tables":869,"row":870,"rows":871,"column":872,"columns":873,"index":874,"indexes":875,"indices":876,"query":877,"queries":878,"avg":879,"total":880,"page":881,"pages":882,"home":883,"login":884,"logout":885,"signup":886,"errors":887,"warning":888,"warnings":889,"info":890,"success":891,"failure":892,"status":893,"message":894,"messages":895,"request":896,"requests":897,"response":898,"responses":899,"client":900,"server":901,"api":902,"endpoint":903,"route":904,"http":905,"https":906,"url":907,"uri":908,"port":909,"host":910,"config":911,"configuration":912,"settings":913,"option":914,"options":915,"param":916,"params":917,"parameter":918,"parameters":919,"arg":920,"args":921,"argument":922,"arguments":923,"kwargs":924,"path":925,"dir":926,"directory":927,"dirs":928,"folder":929,"folders":930,"item":931,"items":932,"element":933,"elements":934,"entry":935,"entries":936,"note":937,"notes":938,"text":939,"texts":940,"content":941,"contents":942,"source":943,"sources":944,"target":945,"targets":946,"ref":947,"refs":948,"struct":949,"structs":950,"union":951,"unions":952,"enum":953,"enums":954,"impl":955,"implement":956,"implementation":957,"interface":958,"abstract":959,"virtual":960,"override":961,"overload":962,"base":963,"derived":964,"parent":965,"child":966,"children":967,"root":968,"leaf":969,"node":970,"nodes":971,"edge":972,"edges":973,"tree":974,"graph":975,"queue":976,"stack":977,"heap":978,"dict":979,"dictionary":980,"hash":981,"hashmap":982,"link":983,"links":984,"linked":985,"pointer":986,"pointers":987,"thread":988,"threads":989,"task":990,"tasks":991,"sync":992,"lock":993,"mutex":994,"semaphore":995,"buffer":996,"buffers":997,"cache":998,"cached":999,"pool":1000,"pools":1001,"memory":1002,"disk":1003,"network":1004,"socket":1005,"sockets":1006,"stream":1007,"streams":1008,"packet":1009,"packets":1010,"frame":1011,"meta":1012,"metadata":1013,"header":1014,"headers":1015,"body":1016,"payload":1017,"token":1018,"tokens":1019,"session":1020,"cookie":1021,"cookies":1022,"auth":1023,"register":1024,"password":1025,"salt":1026,"encrypt":1027,"decrypt":1028,"encode":1029,"decode":1030,"cert":1031,"certificate":1032,"train":1033,"training":1034,"trained":1035,"test":1036,"testing":1037,"tested":1038,"valid":1039,"validate":1040,"validation":1041,"eval":1042,"evaluate":1043,"layer":1044,"layers":1045,"weight":1046,"weights":1047,"bias":1048,"biases":1049,"loss":1050,"losses":1051,"grad":1052,"grads":1053,"lr":1054,"learning_rate":1055,"optimizer":1056,"adam":1057,"sgd":1058,"batch":1059,"batches":1060,"epoch":1061,"epochs":1062,"step":1063,"steps":1064,"dataset":1065,"dataloader":1066,"tensor":1067,"tensors":1068,"gpu":1069,"cpu":1070,"tpu":1071,"device":1072,"devices":1073,"math":1074,"physics":1075,"chemistry":1076,"biology":1077,"science":1078,"compute":1079,"calculate":1080,"computation":1081,"calculation":1082,"equation":1083,"formula":1084,"expression":1085,"theorem":1086,"proof":1087,"prove":1088,"lemma":1089,"axiom":1090,"corollary":1091,"derivative":1092,"integral":1093,"limit":1094,"sequence":1095,"series":1096,"matrix":1097,"vector":1098,"subset":1099,"intersection":1100,"complement":1101,"space":1102,"ring":1103,"module":1104,"algebra":1105,"analysis":1106,"topology":1107,"geometry":1108,"statistics":1109,"probability":1110,"distribution":1111,"random":1112,"sample":1113,"mean":1114,"median":1115,"mode":1116,"variance":1117,"std":1118,"deviation":1119,"linear":1120,"nonlinear":1121,"convex":1122,"concave":1123,"smooth":1124,"algorithm":1125,"complexity":1126,"runtime":1127,"search":1128,"traverse":1129,"recursive":1130,"iterative":1131,"dynamic":1132,"greedy":1133,"optimization":1134,"constraint":1135,"feasible":1136,"optimal":1137,"example":1138,"question":1139,"answer":1140,"hint":1141,"reason":1142,"analyze":1143,"approach":1144,"solve":1145,"verify":1146,"check":1147,"conclude":1148,"summarize":1149,"explain":1150,"describe":1151,"correct":1152,"incorrect":1153,"right":1154,"wrong":1155,"positive":1156,"negative":1157,"yes":1158,"maybe":1159,"==":1160,"!=":1161,"<=":1162,">=":1163,"&&":1164,"||":1165,"++":1166,"--":1167,"+=":1168,"-=":1169,"*=":1170,"/=":1171,"->":1172,"=>":1173,"::":1174,"..":1175,"...":1176,"/*":1177,"*/":1178,"//":1179,"<!--":1180,"-->":1181,"10":1182,"11":1183,"12":1184,"13":1185,"14":1186,"15":1187,"16":1188,"17":1189,"18":1190,"19":1191,"20":1192,"30":1193,"40":1194,"50":1195,"60":1196,"70":1197,"80":1198,"90":1199,"100":1200,"-1":1201,"-2":1202,"0x":1203,"0b":1204,"0o":1205,"Ġthe":1206,"Ġto":1207,"Ġof":1208,"Ġand":1209,"Ġa":1210,"Ġin":1211,"Ġthat":1212,"Ġis":1213,"Ġwas":1214,"Ġfor":1215,"Ġon":1216,"Ġwith":1217,"Ġas":1218,"Ġby":1219,"Ġat":1220,"Ġfrom":1221,"Ġor":1222,"Ġan":1223,"Ġwill":1224,"Ġwould":1225,"Ġnot":1226,"Ġbut":1227,"Ġare":1228,"Ġwere":1229,"Ġbeen":1230,"Ġhave":1231,"Ġhas":1232,"Ġhad":1233,"Ġdo":1234,"Ġdoes":1235,"Ġdid":1236,"Ġcan":1237,"Ġcould":1238,"Ġshould":1239,"Ġmay":1240,"Ġmight":1241,"Ġshall":1242,"Ġmust":1243,"Ġif":1244,"Ġelse":1245,"Ġwhen":1246,"Ġwhile":1247,"Ġbecause":1248,"Ġso":1249,"Ġthen":1250,"Ġthan":1251,"Ġalso":1252,"Ġeven":1253,"Ġonly":1254,"Ġjust":1255,"Ġvery":1256,"Ġtoo":1257,"Ġstill":1258,"Ġalready":1259,"Ġhere":1260,"Ġthere":1261,"Ġwhere":1262,"Ġwhy":1263,"Ġhow":1264,"Ġwhat":1265,"Ġwhich":1266,"Ġthis":1267,"Ġthese":1268,"Ġthose":1269,"Ġit":1270,"Ġits":1271,"Ġthey":1272,"Ġthem":1273,"Ġwe":1274,"Ġus":1275,"Ġour":1276,"Ġyou":1277,"Ġyour":1278,"Ġhe":1279,"Ġhim":1280,"Ġhis":1281,"Ġshe":1282,"Ġher":1283,"Ġhers":1284,"Ġone":1285,"Ġno":1286,"Ġall":1287,"Ġany":1288,"Ġsome":1289,"Ġeach":1290,"Ġevery":1291,"Ġboth":1292,"Ġneither":1293,"Ġeither":1294,"Ġmore":1295,"Ġmost":1296,"Ġfew":1297,"Ġother":1298,"Ġanother":1299,"Ġsuch":1300,"Ġsame":1301,"Ġdifferent":1302,"Ġown":1303,"Ġlike":1304,"Ġwell":1305,"Ġgood":1306,"Ġbad":1307,"Ġbetter":1308,"Ġbest":1309,"Ġnew":1310,"Ġold":1311,"Ġbig":1312,"Ġsmall":1313,"Ġlong":1314,"Ġshort":1315,"Ġhigh":1316,"Ġlow":1317,"Ġlarge":1318,"Ġlittle":1319,"Ġgreat":1320,"Ġimportant":1321,"Ġup":1322,"Ġdown":1323,"Ġout":1324,"Ġoff":1325,"Ġover":1326,"Ġunder":1327,"Ġagain":1328,"Ġback":1329,"Ġabout":1330,"Ġaround":1331,"Ġbetween":1332,"Ġthrough":1333,"Ġbefore":1334,"Ġafter":1335,"Ġduring":1336,"Ġuntil":1337,"Ġsince":1338,"Ġfirst":1339,"Ġlast":1340,"Ġnext":1341,"Ġprevious":1342,"Ġfinal":1343,"Ġget":1344,"Ġgot":1345,"Ġmake":1346,"Ġmade":1347,"Ġtake":1348,"Ġtook":1349,"Ġgive":1350,"Ġgave":1351,"Ġuse":1352,"Ġused":1353,"Ġusing":1354,"Ġneed":1355,"Ġneeds":1356,"Ġneeded":1357,"Ġwant":1358,"Ġwants":1359,"Ġwanted":1360,"Ġlet":1361,"Ġlets":1362,"Ġwork":1363,"Ġworks":1364,"Ġworked":1365,"Ġworking":1366,"Ġhelp":1367,"Ġhelps":1368,"Ġhelped":1369,"Ġcall":1370,"Ġcalls":1371,"Ġcalled":1372,"Ġcalling":1373,"Ġset":1374,"Ġsets":1375,"Ġsetting":1376,"Ġput":1377,"Ġputs":1378,"Ġputting":1379,"Ġrun":1380,"Ġruns":1381,"Ġran":1382,"Ġrunning":1383,"Ġkeep":1384,"Ġkeeps":1385,"Ġkept":1386,"Ġfind":1387,"Ġfinds":1388,"Ġfound":1389,"Ġshow":1390,"Ġshows":1391,"Ġtry":1392,"Ġtries":1393,"Ġtried":1394,"Ġtrying":1395,"Ġstart":1396,"Ġstarts":1397,"Ġstarted":1398,"Ġchange":1399,"Ġchanges":1400,"Ġchanged":1401,"Ġchanging":1402,"Ġfollow":1403,"Ġfollows":1404,"Ġknow":1405,"Ġknows":1406,"Ġknown":1407,"Ġthink":1408,"Ġthinks":1409,"Ġthought":1410,"Ġsay":1411,"Ġsays":1412,"Ġsaid":1413,"Ġsee":1414,"Ġsees":1415,"Ġsaw":1416,"Ġseen":1417,"Ġcome":1418,"Ġcomes":1419,"Ġcame":1420,"Ġgo":1421,"Ġgoes":1422,"Ġwent":1423,"Ġgone":1424,"Ġbring":1425,"Ġbrings":1426,"Ġbrought":1427,"Ġtell":1428,"Ġtells":1429,"Ġtold":1430,"Ġleave":1431,"Ġleaves":1432,"Ġleft":1433,"Ġhappen":1434,"Ġhappens":1435,"Ġprovide":1436,"Ġprovides":1437,"Ġprovided":1438,"Ġconsider":1439,"Ġconsiders":1440,"Ġappear":1441,"Ġappears":1442,"Ġappeared":1443,"Ġform":1444,"Ġforms":1445,"Ġformed":1446,"Ġseem":1447,"Ġseems":1448,"Ġseemed":1449,"Ġpoint":1450,"Ġpoints":1451,"Ġpointed":1452,"Ġturn":1453,"Ġturns":1454,"Ġturned":1455,"Ġturning":1456,"Ġplay":1457,"Ġplays":1458,"Ġthings":1459,"Ġthing":1460,"Ġtime":1461,"Ġtimes":1462,"Ġyear":1463,"Ġyears":1464,"Ġpeople":1465,"Ġplace":1466,"Ġplaces":1467,"Ġpart":1468,"Ġparts":1469,"Ġworld":1470,"Ġnumber":1471,"Ġnumbers":1472,"Ġsystem":1473,"Ġsystems":1474,"Ġgroup":1475,"Ġgroups":1476,"Ġline":1477,"Ġlines":1478,"Ġfile":1479,"Ġfiles":1480,"Ġcode":1481,"Ġdata":1482,"Ġfunction":1483,"Ġfunctions":1484,"Ġvalue":1485,"Ġvalues":1486,"Ġtype":1487,"Ġtypes":1488,"Ġclass":1489,"Ġclasses":1490,"Ġobject":1491,"Ġobjects":1492,"Ġmethod":1493,"Ġmethods":1494,"Ġresult":1495,"Ġresults":1496,"Ġprocess":1497,"Ġprocesses":1498,"Ġstate":1499,"Ġstates":1500,"Ġmodel":1501,"Ġmodels":1502,"Ġlevel":1503,"Ġlevels":1504,"Ġcase":1505,"Ġcases":1506,"Ġexample":1507,"Ġexamples":1508,"Ġinput":1509,"Ġinputs":1510,"Ġoutput":1511,"Ġoutputs":1512,"Ġerror":1513,"Ġerrors":1514,"Ġstatus":1515,"Ġmessage":1516,"Ġmessages":1517,"Ġrequest":1518,"Ġrequests":1519,"Ġresponse":1520,"Ġresponses":1521,"Ġreturn":1522,"Ġreturns":1523,"Ġimport":1524,"Ġimports":1525,"Ġexport":1526,"Ġexports":1527,"Ġdefine":1528,"Ġdefines":1529,"Ġdefined":1530,"Ġdeclare":1531,"Ġdeclares":1532,"Ġinclude":1533,"Ġincludes":1534,"Ġconfig":1535,"Ġsettings":1536,"Ġoption":1537,"Ġoptions":1538,"Ġparam":1539,"Ġparams":1540,"Ġargs":1541,"Ġtrue":1542,"Ġfalse":1543,"Ġnull":1544,"ĠNone":1545,"Ġundefined":1546,"Ġlen":1547,"Ġsize":1548,"Ġcount":1549,"Ġsum":1550,"Ġmax":1551,"Ġmin":1552,"Ġprint":1553,"Ġlog":1554,"Ġdebug":1555,"Ġinfo":1556,"Ġwarn":1557,"Ġtrain":1558,"Ġtest":1559,"Ġeval":1560,"Ġvalid":1561,"Ġval":1562,"Ġpage":1563,"Ġhome":1564,"Ġname":1565,"Ġkey":1566,"Ġkeys":1567,"Ġpath":1568,"Ġdir":1569,"Ġroot":1570,"Ġitem":1571,"Ġitems":1572,"Ġsource":1573,"Ġtarget":1574,"Ġbase":1575,"Ġmain":1576,"Ġprimary":1577,"Ġadd":1578,"Ġremove":1579,"Ġcreate":1580,"Ġdelete":1581,"Ġupdate":1582,"Ġopen":1583,"Ġclose":1584,"Ġread":1585,"Ġwrite":1586,"Ġload":1587,"Ġsave":1588,"Ġpush":1589,"Ġpop":1590,"Ġinsert":1591,"Ġappend":1592,"Ġsplit":1593,"Ġbegin":1594,"Ġend":1595,"Ġstop":1596,"Ġenable":1597,"Ġdisable":1598,"Ġuser":1599,"Ġusers":1600,"Ġadmin":1601,"Ġmanager":1602,"Ġstring":1603,"Ġint":1604,"Ġfloat":1605,"Ġdouble":1606,"Ġbool":1607,"Ġvoid":1608,"Ġlist":1609,"Ġdict":1610,"Ġtuple":1611,"Ġarray":1612,"Ġapi":1613,"Ġurl":1614,"Ġuri":1615,"Ġendpoint":1616,"Ġroute":1617,"Ġhttp":1618,"Ġhttps":1619,"Ġclient":1620,"Ġserver":1621,"Ġsocket":1622,"Ġmath":1623,"Ġscience":1624,"Ġanalysis":1625,"Ġtheory":1626,"Ġproof":1627,"Ġtheorem":1628,"Ġlemma":1629,"Ġequation":1630,"Ġformula":1631,"ing":1632,"ed":1633,"ly":1634,"tion":1635,"sion":1636,"ment":1637,"ness":1638,"ity":1639,"able":1640,"ible":1641,"al":1642,"ial":1643,"ical":1644,"ous":1645,"eous":1646,"ious":1647,"ive":1648,"ative":1649,"ful":1650,"wise":1651,"ward":1652,"un":1653,"re":1654,"im":1655,"ir":1656,"il":1657,"dis":1658,"mis":1659,"non":1660,"pre":1661,"pro":1662,"per":1663,"trans":1664,"inter":1665,"intra":1666,"extra":1667,"super":1668,"sur":1669,"semi":1670,"multi":1671,"mono":1672,"bi":1673,"tri":1674,"anti":1675,"counter":1676,"down":1677,"co":1678,"con":1679,"com":1680,"col":1681,"cor":1682,"de":1683,"di":1684,"dif":1685,"ex":1686,"fore":1687,"macro":1688,"micro":1689,"mid":1690,"post":1691,"tele":1692,"ultra":1693,"-ing":1694,"-ed":1695,"-ly":1696,"-tion":1697,"-sion":1698,"-ment":1699,"-ness":1700,"-ity":1701,"-able":1702,"-ible":1703,"-al":1704,"-ous":1705,"-ive":1706,"-ful":1707,"-less":1708,"un-":1709,"re-":1710,"pre-":1711,"non-":1712,"anti-":1713,"counter-":1714,"self-":1715,"all-":1716,"well-":1717,"so-":1718,"to-":1719,"in-":1720,"'t":1721,"'s":1722,"'m":1723,"'re":1724,"'ve":1725,"'ll":1726,"'d":1727,"n't":1728,"don't":1729,"can't":1730,"won't":1731,"isn't":1732,"aren't":1733,"wasn't":1734,"weren't":1735,"hasn't":1736,"haven't":1737,"hadn't":1738,"doesn't":1739,"didn't":1740,"couldn't":1741,"shouldn't":1742,"wouldn't":1743,"mustn't":1744,"needn't":1745,"mightn't":1746,"<-":1747,"\n":1748,"\t":1749," ":1750," ":1751," ":1752," ":1753,"ĠĠ":1754,"ĠĠĠ":1755,"ĠĠĠĠ":1756,"action":1757,"actually":1758,"address":1759,"agree":1760,"along":1761,"American":1762,"among":1763,"amount":1764,"animal":1765,"another":1766,"anything":1767,"area":1768,"argue":1769,"arm":1770,"article":1771,"artist":1772,"author":1773,"available":1774,"avoid":1775,"away":1776,"ball":1777,"bank":1778,"bar":1779,"battle":1780,"beauty":1781,"become":1782,"became":1783,"becoming":1784,"bed":1785,"behavior":1786,"behind":1787,"believe":1788,"benefit":1789,"beyond":1790,"bit":1791,"black":1792,"blood":1793,"board":1794,"book":1795,"born":1796,"boss":1797,"bother":1798,"bottle":1799,"bottom":1800,"box":1801,"boy":1802,"brain":1803,"bridge":1804,"brief":1805,"bright":1806,"broad":1807,"brother":1808,"budget":1809,"build":1810,"building":1811,"burn":1812,"business":1813,"buy":1814,"campaign":1815,"capital":1816,"car":1817,"care":1818,"career":1819,"carry":1820,"category":1821,"cause":1822,"central":1823,"century":1824,"certain":1825,"chair":1826,"chairman":1827,"challenge":1828,"chance":1829,"character":1830,"charge":1831,"choice":1832,"choose":1833,"chosen":1834,"church":1835,"citizen":1836,"city":1837,"civil":1838,"claim":1839,"clear":1840,"clearly":1841,"club":1842,"coach":1843,"cold":1844,"collection":1845,"college":1846,"color":1847,"comfortable":1848,"comment":1849,"committee":1850,"common":1851,"community":1852,"company":1853,"compare":1854,"competition":1855,"complete":1856,"completely":1857,"condition":1858,"conference":1859,"Congress":1860,"connect":1861,"conscious":1862,"contain":1863,"continue":1864,"contract":1865,"control":1866,"conversation":1867,"cost":1868,"country":1869,"couple":1870,"course":1871,"court":1872,"cover":1873,"crime":1874,"cultural":1875,"culture":1876,"cup":1877,"customer":1878,"cut":1879,"dark":1880,"daughter":1881,"deal":1882,"death":1883,"debate":1884,"decade":1885,"decide":1886,"decision":1887,"deep":1888,"defense":1889,"degree":1890,"democrat":1891,"democratic":1892,"design":1893,"despite":1894,"detail":1895,"determine":1896,"develop":1897,"development":1898,"die":1899,"difference":1900,"difficult":1901,"dinner":1902,"direction":1903,"director":1904,"discover":1905,"discuss":1906,"discussion":1907,"disease":1908,"dog":1909,"door":1910,"doubt":1911,"draw":1912,"dream":1913,"drive":1914,"driver":1915,"drop":1916,"drug":1917,"early":1918,"east":1919,"eat":1920,"economic":1921,"economy":1922,"edition":1923,"editor":1924,"education":1925,"effect":1926,"effort":1927,"election":1928,"employee":1929,"encourage":1930,"enemy":1931,"energy":1932,"enjoy":1933,"enough":1934,"enter":1935,"entire":1936,"environment":1937,"environmental":1938,"especially":1939,"establish":1940,"evening":1941,"event":1942,"everybody":1943,"everyone":1944,"everything":1945,"evidence":1946,"exactly":1947,"examine":1948,"executive":1949,"exist":1950,"expect":1951,"experience":1952,"explanation":1953,"extremely":1954,"eye":1955,"face":1956,"fact":1957,"factor":1958,"fail":1959,"fall":1960,"family":1961,"far":1962,"fast":1963,"father":1964,"fear":1965,"feature":1966,"federal":1967,"feel":1968,"feeling":1969,"fight":1970,"figure":1971,"fill":1972,"film":1973,"financial":1974,"fine":1975,"finish":1976,"firm":1977,"fish":1978,"fly":1979,"focus":1980,"food":1981,"foot":1982,"force":1983,"foreign":1984,"forget":1985,"former":1986,"forward":1987,"freedom":1988,"friendly":1989,"front":1990,"full":1991,"fund":1992,"future":1993,"game":1994,"garden":1995,"gas":1996,"general":1997,"generation":1998,"gentleman":1999,"girl":2000,"glad":2001,"glass":2002,"goal":2003,"god":2004,"gold":2005,"government":2006,"governor":2007,"green":2008,"ground":2009,"grow":2010,"growth":2011,"guess":2012,"gun":2013,"guy":2014,"half":2015,"hand":2016,"handle":2017,"hang":2018,"happy":2019,"hard":2020,"head":2021,"health":2022,"hear":2023,"heart":2024,"heat":2025,"heavy":2026,"hell":2027,"herself":2028,"hide":2029,"history":2030,"hit":2031,"hold":2032,"honest":2033,"hope":2034,"hospital":2035,"hotel":2036,"house":2037,"huge":2038,"human":2039,"hundred":2040,"husband":2041,"idea":2042,"identify":2043,"image":2044,"imagine":2045,"impact":2046,"imply":2047,"improve":2048,"including":2049,"increase":2050,"indeed":2051,"indicate":2052,"individual":2053,"industry":2054,"influence":2055,"inform":2056,"inside":2057,"instead":2058,"institution":2059,"interest":2060,"international":2061,"interview":2062,"introduce":2063,"investment":2064,"involve":2065,"issue":2066,"itself":2067,"job":2068,"journal":2069,"journey":2070,"judge":2071,"jump":2072,"justice":2073,"kill":2074,"kind":2075,"kitchen":2076,"knowledge":2077,"land":2078,"language":2079,"late":2080,"later":2081,"latter":2082,"laugh":2083,"launch":2084,"law":2085,"lawyer":2086,"lay":2087,"lead":2088,"leader":2089,"leading":2090,"learn":2091,"least":2092,"legal":2093,"letter":2094,"lie":2095,"life":2096,"lift":2097,"light":2098,"likely":2099,"listen":2100,"live":2101,"local":2102,"lord":2103,"lose":2104,"lost":2105,"lot":2106,"love":2107,"luck":2108,"lunch":2109,"machine":2110,"maintain":2111,"major":2112,"majority":2113,"manage":2114,"management":2115,"manager":2116,"manner":2117,"manufacturer":2118,"mark":2119,"market":2120,"marriage":2121,"master":2122,"material":2123,"matter":2124,"may":2125,"meaning":2126,"measure":2127,"media":2128,"medical":2129,"meet":2130,"meeting":2131,"member":2132,"mention":2133,"middle":2134,"might":2135,"military":2136,"million":2137,"mind":2138,"minute":2139,"miss":2140,"mission":2141,"mistake":2142,"mix":2143,"modern":2144,"mom":2145,"moment":2146,"money":2147,"moral":2148,"morning":2149,"mother":2150,"motion":2151,"movement":2152,"movie":2153,"music":2154,"narrative":2155,"nation":2156,"national":2157,"native":2158,"natural":2159,"nature":2160,"near":2161,"nearly":2162,"necessarily":2163,"necessary":2164,"neck":2165,"neighbor":2166,"nevertheless":2167,"night":2168,"nor":2169,"normal":2170,"north":2171,"nothing":2172,"notice":2173,"notion":2174,"nowhere":2175,"nuclear":2176,"occur":2177,"ocean":2178,"offer":2179,"office":2180,"officer":2181,"official":2182,"oil":2183,"OK":2184,"once":2185,"online":2186,"operate":2187,"operation":2188,"opinion":2189,"opportunity":2190,"opposition":2191,"order":2192,"organization":2193,"original":2194,"otherwise":2195,"ought":2196,"outside":2197,"overcome":2198,"owner":2199,"pain":2200,"paint":2201,"pair":2202,"paper":2203,"park":2204,"parliament":2205,"participant":2206,"particular":2207,"particularly":2208,"partner":2209,"party":2210,"pass":2211,"passage":2212,"past":2213,"patient":2214,"pattern":2215,"pay":2216,"peace":2217,"pension":2218,"percent":2219,"perfect":2220,"perform":2221,"performance":2222,"perhaps":2223,"period":2224,"permit":2225,"person":2226,"personal":2227,"perspective":2228,"phone":2229,"physical":2230,"pick":2231,"picture":2232,"piece":2233,"plan":2234,"plant":2235,"player":2236,"please":2237,"pleasure":2238,"plus":2239,"pocket":2240,"police":2241,"policy":2242,"political":2243,"politician":2244,"politics":2245,"poor":2246,"popular":2247,"population":2248,"position":2249,"possibility":2250,"possible":2251,"potentially":2252,"power":2253,"practice":2254,"prepare":2255,"presence":2256,"present":2257,"president":2258,"pressure":2259,"pretty":2260,"prevent":2261,"price":2262,"principle":2263,"prison":2264,"privilege":2265,"probably":2266,"procedure":2267,"produce":2268,"product":2269,"production":2270,"professional":2271,"professor":2272,"profile":2273,"profit":2274,"project":2275,"promise":2276,"promote":2277,"proper":2278,"proposal":2279,"propose":2280,"protect":2281,"protection":2282,"publication":2283,"publish":2284,"pull":2285,"purpose":2286,"pursue":2287,"quality":2288,"quarter":2289,"quick":2290,"quickly":2291,"quiet":2292,"race":2293,"radio":2294,"range":2295,"rate":2296,"reach":2297,"react":2298,"reaction":2299,"reader":2300,"reading":2301,"ready":2302,"real":2303,"reality":2304,"realize":2305,"really":2306,"reasonable":2307,"receive":2308,"recent":2309,"recently":2310,"recognize":2311,"recommend":2312,"record":2313,"recover":2314,"red":2315,"reflect":2316,"reform":2317,"region":2318,"relate":2319,"relationship":2320,"relative":2321,"relatively":2322,"release":2323,"relevant":2324,"relief":2325,"religion":2326,"religious":2327,"rely":2328,"remain":2329,"remember":2330,"remind":2331,"repeat":2332,"replace":2333,"report":2334,"reporter":2335,"represent":2336,"representation":2337,"republican":2338,"reputation":2339,"require":2340,"research":2341,"resource":2342,"respond":2343,"responsibility":2344,"responsible":2345,"rest":2346,"restaurant":2347,"retain":2348,"retire":2349,"reveal":2350,"review":2351,"revolution":2352,"rich":2353,"ride":2354,"rise":2355,"risk":2356,"river":2357,"road":2358,"rock":2359,"role":2360,"roll":2361,"room":2362,"rule":2363,"safe":2364,"safety":2365,"sale":2366,"scale":2367,"scene":2368,"schedule":2369,"school":2370,"scientist":2371,"score":2372,"screen":2373,"sea":2374,"season":2375,"seat":2376,"secret":2377,"section":2378,"security":2379,"seed":2380,"seek":2381,"self":2382,"sell":2383,"senate":2384,"senator":2385,"send":2386,"sense":2387,"serious":2388,"serve":2389,"service":2390,"settle":2391,"sexual":2392,"shadow":2393,"shape":2394,"share":2395,"sharp":2396,"sheet":2397,"ship":2398,"shock":2399,"shoe":2400,"shoot":2401,"shop":2402,"shot":2403,"shoulder":2404,"shut":2405,"sick":2406,"side":2407,"sight":2408,"sign":2409,"signal":2410,"significance":2411,"significant":2412,"silence":2413,"similar":2414,"simply":2415,"sing":2416,"sister":2417,"sit":2418,"site":2419,"situation":2420,"skill":2421,"skin":2422,"smile":2423,"society":2424,"soft":2425,"soldier":2426,"solid":2427,"somebody":2428,"somehow":2429,"someone":2430,"something":2431,"somewhat":2432,"son":2433,"song":2434,"soon":2435,"sound":2436,"south":2437,"speak":2438,"speaker":2439,"special":2440,"specific":2441,"speech":2442,"speed":2443,"spend":2444,"spin":2445,"spirit":2446,"spiritual":2447,"spokesman":2448,"sport":2449,"spot":2450,"spread":2451,"spring":2452,"staff":2453,"stage":2454,"standard":2455,"star":2456,"statement":2457,"station":2458,"stay":2459,"stick":2460,"stock":2461,"store":2462,"story":2463,"straight":2464,"strange":2465,"strategic":2466,"strategy":2467,"street":2468,"strength":2469,"stress":2470,"stretch":2471,"strike":2472,"strong":2473,"structure":2474,"struggle":2475,"student":2476,"study":2477,"subject":2478,"succeed":2479,"successful":2480,"suddenly":2481,"suffer":2482,"sufficient":2483,"suggest":2484,"suggestion":2485,"summer":2486,"supply":2487,"support":2488,"suppose":2489,"sure":2490,"surface":2491,"surgery":2492,"surprise":2493,"survey":2494,"survive":2495,"suspect":2496,"sustain":2497,"symbol":2498,"talent":2499,"talk":2500,"tape":2501,"taste":2502,"tax":2503,"teach":2504,"teacher":2505,"teaching":2506,"team":2507,"tear":2508,"technical":2509,"technique":2510,"technology":2511,"telephone":2512,"television":2513,"temperature":2514,"tend":2515,"term":2516,"testify":2517,"thank":2518,"themselves":2519,"therefore":2520,"thick":2521,"thin":2522,"thirty":2523,"threat":2524,"threaten":2525,"thus":2526,"ticket":2527,"tight":2528,"till":2529,"tiny":2530,"tip":2531,"title":2532,"today":2533,"tomorrow":2534,"tone":2535,"tonight":2536,"tool":2537,"top":2538,"totally":2539,"touch":2540,"tough":2541,"tour":2542,"toward":2543,"town":2544,"track":2545,"trade":2546,"tradition":2547,"traditional":2548,"traffic":2549,"transfer":2550,"transform":2551,"travel":2552,"treat":2553,"treatment":2554,"trial":2555,"trip":2556,"troop":2557,"trouble":2558,"truck":2559,"truly":2560,"trust":2561,"truth":2562,"tube":2563,"twice":2564,"typical":2565,"uncle":2566,"understand":2567,"understanding":2568,"unfortunately":2569,"unique":2570,"unit":2571,"United":2572,"universe":2573,"university":2574,"unless":2575,"unlike":2576,"unlikely":2577,"unusual":2578,"upper":2579,"urban":2580,"urge":2581,"used":2582,"useful":2583,"usual":2584,"usually":2585,"variety":2586,"various":2587,"vehicle":2588,"version":2589,"veteran":2590,"victim":2591,"victory":2592,"video":2593,"view":2594,"village":2595,"violence":2596,"visit":2597,"voice":2598,"volume":2599,"vote":2600,"voter":2601,"wage":2602,"wait":2603,"walk":2604,"wall":2605,"war":2606,"warm":2607,"warn":2608,"wash":2609,"watch":2610,"water":2611,"wave":2612,"weak":2613,"weapon":2614,"wear":2615,"weather":2616,"web":2617,"wedding":2618,"weekend":2619,"welcome":2620,"welfare":2621,"west":2622,"western":2623,"whatever":2624,"wheel":2625,"whenever":2626,"whereas":2627,"whether":2628,"white":2629,"whole":2630,"whom":2631,"whose":2632,"wide":2633,"widely":2634,"wife":2635,"wild":2636,"wind":2637,"window":2638,"wine":2639,"wing":2640,"winner":2641,"winter":2642,"wire":2643,"wish":2644,"woman":2645,"wonder":2646,"wonderful":2647,"wood":2648,"word":2649,"worker":2650,"working":2651,"works":2652,"worry":2653,"worth":2654,"writer":2655,"yard":2656,"yeah":2657,"youth":2658,"zone":2659,"ability":2660,"abroad":2661,"absent":2662,"absolute":2663,"absorb":2664,"abuse":2665,"academic":2666,"accept":2667,"access":2668,"accident":2669,"accompany":2670,"accomplish":2671,"account":2672,"accurate":2673,"accuse":2674,"achieve":2675,"acknowledge":2676,"acquire":2677,"adapt":2678,"addition":2679,"adjust":2680,"administration":2681,"admit":2682,"adopt":2683,"advance":2684,"advantage":2685,"adventure":2686,"advertise":2687,"advice":2688,"advise":2689,"advocate":2690,"affair":2691,"affect":2692,"afford":2693,"agency":2694,"agenda":2695,"agent":2696,"aggression":2697,"aggressive":2698,"aid":2699,"aim":2700,"air":2701,"airport":2702,"alarm":2703,"alcohol":2704,"alert":2705,"alive":2706,"alliance":2707,"allocate":2708,"ally":2709,"alter":2710,"alternative":2711,"amaze":2712,"ambition":2713,"amendment":2714,"amid":2715,"amongst":2716,"analyst":2717,"angle":2718,"angry":2719,"anniversary":2720,"announce":2721,"annual":2722,"anticipate":2723,"anxiety":2724,"anxious":2725,"apart":2726,"apartment":2727,"apologize":2728,"apparent":2729,"appeal":2730,"appearance":2731,"appetite":2732,"apple":2733,"applicant":2734,"application":2735,"apply":2736,"appoint":2737,"appreciate":2738,"appropriate":2739,"approval":2740,"approve":2741,"architecture":2742,"archive":2743,"arrange":2744,"arrangement":2745,"arrest":2746,"arrival":2747,"arrive":2748,"arrow":2749,"articulate":2750,"artificial":2751,"aside":2752,"aspect":2753,"assault":2754,"assemble":2755,"assembly":2756,"assert":2757,"assess":2758,"assessment":2759,"asset":2760,"assign":2761,"assist":2762,"assistance":2763,"associate":2764,"association":2765,"assume":2766,"assumption":2767,"atmosphere":2768,"attach":2769,"attack":2770,"attempt":2771,"attend":2772,"attention":2773,"attitude":2774,"attorney":2775,"attract":2776,"attraction":2777,"attractive":2778,"attribute":2779,"audience":2780,"auto":2781,"automatic":2782,"automatically":2783,"autonomy":2784,"avenue":2785,"average":2786,"award":2787,"aware":2788,"awareness":2789,"awful":2790,"background":2791,"bacteria":2792,"balance":2793,"bare":2794,"barely":2795,"barrier":2796,"basis":2797,"basket":2798,"bath":2799,"battery":2800,"bay":2801,"beach":2802,"bean":2803,"bear":2804,"beat":2805,"beautiful":2806,"bedroom":2807,"beer":2808,"behalf":2809,"behave":2810,"belief":2811,"believable":2812,"bell":2813,"belong":2814,"bench":2815,"bend":2816,"beneath":2817,"beneficial":2818,"beside":2819,"bet":2820,"betray":2821,"bible":2822,"bicycle":2823,"bid":2824,"bike":2825,"bill":2826,"bind":2827,"biological":2828,"birth":2829,"biscuit":2830,"bishop":2831,"bite":2832,"bitter":2833,"blade":2834,"blame":2835,"blank":2836,"blast":2837,"bleed":2838,"blend":2839,"bless":2840,"blind":2841,"block":2842,"blow":2843,"blue":2844,"blur":2845,"boast":2846,"boat":2847,"bomb":2848,"bond":2849,"bone":2850,"bonus":2851,"boom":2852,"boost":2853,"border":2854,"bore":2855,"borrow":2856,"bound":2857,"boundary":2858,"bowl":2859,"branch":2860,"brand":2861,"brave":2862,"bread":2863,"breadth":2864,"breast":2865,"breath":2866,"breathe":2867,"breathing":2868,"breed":2869,"brick":2870,"bride":2871,"briefly":2872,"brilliant":2873,"broadcast":2874,"broken":2875,"bronze":2876,"brow":2877,"brown":2878,"brush":2879,"bubble":2880,"bucket":2881,"buddy":2882,"buffalo":2883,"bunch":2884,"burden":2885,"burglar":2886,"burst":2887,"bury":2888,"bus":2889,"butter":2890,"button":2891,"cabin":2892,"cabinet":2893,"cable":2894,"cake":2895,"calendar":2896,"calm":2897,"camera":2898,"camp":2899,"campus":2900,"canal":2901,"cancel":2902,"candidate":2903,"candle":2904,"cap":2905,"capable":2906,"capacity":2907,"captain":2908,"capture":2909,"carbon":2910,"card":2911,"careful":2912,"carefully":2913,"carrier":2914,"cart":2915,"carve":2916,"cast":2917,"castle":2918,"casualty":2919,"catalog":2920,"catalogue":2921,"cattle":2922,"celebrate":2923,"celebration":2924,"cell":2925,"cellular":2926,"census":2927,"centimeter":2928,"ceremony":2929,"certainly":2930,"chain":2931,"chamber":2932,"champion":2933,"championship":2934,"channel":2935,"chapter":2936,"characteristic":2937,"charity":2938,"chart":2939,"chase":2940,"cheap":2941,"cheat":2942,"cheek":2943,"cheese":2944,"chemical":2945,"chest":2946,"chicken":2947,"chief":2948,"childhood":2949,"chip":2950,"chocolate":2951,"chorus":2952,"christian":2953,"Christmas":2954,"chronic":2955,"chunk":2956,"circle":2957,"circuit":2958,"circumstance":2959,"cite":2960,"civilian":2961,"clarify":2962,"clarity":2963,"clash":2964,"classic":2965,"classical":2966,"classification":2967,"classroom":2968,"clause":2969,"clean":2970,"clever":2971,"click":2972,"cliff":2973,"climate":2974,"climb":2975,"clinic":2976,"clinical":2977,"clock":2978,"clone":2979,"closed":2980,"closely":2981,"closer":2982,"closet":2983,"closing":2984,"cloth":2985,"clothe":2986,"clothes":2987,"clothing":2988,"cloud":2989,"cluster":2990,"coal":2991,"coalition":2992,"coast":2993,"coat":2994,"coffee":2995,"cognitive":2996,"coin":2997,"collapse":2998,"collar":2999,"colleague":3000,"collect":3001,"collective":3002,"colonial":3003,"colony":3004,"combat":3005,"combine":3006,"combined":3007,"comedy":3008,"comfort":3009,"command":3010,"commander":3011,"commerce":3012,"commercial":3013,"commission":3014,"commit":3015,"commitment":3016,"commodity":3017,"communicate":3018,"communication":3019,"communist":3020,"compact":3021,"companion":3022,"comparison":3023,"compel":3024,"compensate":3025,"compensation":3026,"compete":3027,"competitive":3028,"competitor":3029,"complain":3030,"complaint":3031,"complicate":3032,"complicated":3033,"comply":3034,"component":3035,"compose":3036,"composition":3037,"compound":3038,"comprehensive":3039,"comprise":3040,"compromise":3041,"compulsory":3042,"computer":3043,"conceal":3044,"concede":3045,"conceive":3046,"concentrate":3047,"concentration":3048,"concept":3049,"conception":3050,"concern":3051,"concerning":3052,"concert":3053,"conclusion":3054,"concrete":3055,"condemn":3056,"conduct":3057,"confess":3058,"confession":3059,"confidence":3060,"confident":3061,"confidential":3062,"confine":3063,"confirm":3064,"conflict":3065,"confront":3066,"confusion":3067,"congratulate":3068,"congress":3069,"connection":3070,"consciousness":3071,"consecutive":3072,"consensus":3073,"consent":3074,"consequence":3075,"consequently":3076,"conservation":3077,"conservative":3078,"considerable":3079,"considerably":3080,"consist":3081,"consistent":3082,"consistently":3083,"constant":3084,"constantly":3085,"constitute":3086,"constitution":3087,"constitutional":3088,"construct":3089,"construction":3090,"consult":3091,"consultant":3092,"consume":3093,"consumer":3094,"consumption":3095,"contact":3096,"contemporary":3097,"contend":3098,"contest":3099,"context":3100,"continent":3101,"continually":3102,"continuity":3103,"continuous":3104,"continuously":3105,"contradiction":3106,"contrary":3107,"contribute":3108,"contribution":3109,"contributor":3110,"controversial":3111,"controversy":3112,"convenience":3113,"convenient":3114,"convention":3115,"conventional":3116,"conversion":3117,"convert":3118,"convey":3119,"convict":3120,"conviction":3121,"convince":3122,"cook":3123,"cool":3124,"cooperate":3125,"cooperation":3126,"coordinate":3127,"coordination":3128,"cope":3129,"copper":3130,"copy":3131,"copyright":3132,"core":3133,"corn":3134,"corner":3135,"corporate":3136,"corporation":3137,"correction":3138,"correctly":3139,"correlate":3140,"correlation":3141,"correspond":3142,"correspondent":3143,"corridor":3144,"corruption":3145,"costly":3146,"cotton":3147,"council":3148,"counsel":3149,"counselor":3150,"counterpart":3151,"county":3152,"coup":3153,"courage":3154,"cousin":3155,"coverage":3156,"crack":3157,"craft":3158,"crash":3159,"creative":3160,"creativity":3161,"creator":3162,"creature":3163,"credibility":3164,"credit":3165,"creep":3166,"crew":3167,"criminal":3168,"crisis":3169,"criterion":3170,"critic":3171,"critical":3172,"criticism":3173,"criticize":3174,"crop":3175,"cross":3176,"crowd":3177,"crown":3178,"crucial":3179,"crude":3180,"cruel":3181,"cruise":3182,"crush":3183,"cry":3184,"crystal":3185,"cube":3186,"cuisine":3187,"cultivate":3188,"curious":3189,"currency":3190,"curriculum":3191,"curtain":3192,"curve":3193,"custody":3194,"custom":3195,"customary":3196,"cutting":3197,"cycle":3198,"dad":3199,"damage":3200,"damn":3201,"dance":3202,"danger":3203,"dangerous":3204,"dare":3205,"database":3206,"dawn":3207,"dead":3208,"deadline":3209,"deadly":3210,"deaf":3211,"dealer":3212,"dear":3213,"debt":3214,"decay":3215,"deceive":3216,"decent":3217,"decisive":3218,"deck":3219,"declaration":3220,"decline":3221,"decorate":3222,"decrease":3223,"decree":3224,"dedicate":3225,"deem":3226,"defeat":3227,"defend":3228,"defendant":3229,"defender":3230,"defensive":3231,"deficit":3232,"definite":3233,"definitely":3234,"definition":3235,"defy":3236,"delay":3237,"delegate":3238,"delegation":3239,"deliberate":3240,"deliberately":3241,"delicate":3242,"delicious":3243,"delight":3244,"deliver":3245,"delivery":3246,"demand":3247,"democracy":3248,"demographic":3249,"demonstrate":3250,"demonstration":3251,"denial":3252,"denote":3253,"depart":3254,"department":3255,"departure":3256,"depend":3257,"dependence":3258,"dependent":3259,"depict":3260,"deposit":3261,"depress":3262,"depression":3263,"deprive":3264,"depth":3265,"deputy":3266,"derive":3267,"descend":3268,"description":3269,"desert":3270,"deserve":3271,"designate":3272,"designer":3273,"desirable":3274,"desire":3275,"desk":3276,"desperate":3277,"desperately":3278,"destination":3279,"destroy":3280,"destruction":3281,"detailed":3282,"detain":3283,"detect":3284,"detection":3285,"detective":3286,"detention":3287,"deteriorate":3288,"determination":3289,"determined":3290,"developmental":3291,"devote":3292,"diabetes":3293,"diagnose":3294,"diagnosis":3295,"dialogue":3296,"diameter":3297,"diamond":3298,"diary":3299,"dictate":3300,"diet":3301,"differ":3302,"differentiate":3303,"differently":3304,"difficulty":3305,"dig":3306,"digest":3307,"digital":3308,"dignity":3309,"dilemma":3310,"dimension":3311,"diminish":3312,"dioxide":3313,"dip":3314,"diplomat":3315,"diplomatic":3316,"direct":3317,"directly":3318,"dirty":3319,"disability":3320,"disadvantage":3321,"disagree":3322,"disappear":3323,"disappoint":3324,"disappointment":3325,"disaster":3326,"disastrous":3327,"disc":3328,"discharge":3329,"discipline":3330,"disclose":3331,"discount":3332,"discourse":3333,"discovery":3334,"discrepancy":3335,"discretion":3336,"discrimination":3337,"dismiss":3338,"disorder":3339,"dispatch":3340,"display":3341,"disposal":3342,"dispose":3343,"dispute":3344,"disrupt":3345,"dissolve":3346,"distance":3347,"distant":3348,"distinct":3349,"distinction":3350,"distinctive":3351,"distinguish":3352,"distort":3353,"distract":3354,"distress":3355,"distribute":3356,"distributor":3357,"district":3358,"disturb":3359,"dive":3360,"diverse":3361,"diversity":3362,"divide":3363,"division":3364,"divorce":3365,"dock":3366,"doctor":3367,"doctrine":3368,"document":3369,"documentary":3370,"dollar":3371,"domain":3372,"dome":3373,"domestic":3374,"dominant":3375,"dominate":3376,"donation":3377,"donor":3378,"dose":3379,"dot":3380,"doubtful":3381,"downtown":3382,"draft":3383,"drag":3384,"drain":3385,"drama":3386,"dramatic":3387,"dramatically":3388,"drastic":3389,"drawing":3390,"drink":3391,"drought":3392,"drown":3393,"drum":3394,"drunk":3395,"dry":3396,"dual":3397,"dubious":3398,"duck":3399,"due":3400,"dull":3401,"dump":3402,"durable":3403,"duration":3404,"dust":3405,"duty":3406,"dynamics":3407,"eager":3408,"eagle":3409,"ear":3410,"earning":3411,"earth":3412,"ease":3413,"easily":3414,"eastern":3415,"echo":3416,"eclipse":3417,"ecological":3418,"ecology":3419,"economics":3420,"economist":3421,"ecosystem":3422,"edit":3423,"editorial":3424,"educate":3425,"educational":3426,"educator":3427,"effective":3428,"effectively":3429,"effectiveness":3430,"efficiency":3431,"efficient":3432,"efficiently":3433,"elaborate":3434,"elbow":3435,"elderly":3436,"elect":3437,"electoral":3438,"electric":3439,"electrical":3440,"electricity":3441,"electronic":3442,"electronics":3443,"elegant":3444,"elementary":3445,"eliminate":3446,"elimination":3447,"elite":3448,"elsewhere":3449,"email":3450,"embargo":3451,"embark":3452,"embarrass":3453,"embassy":3454,"embed":3455,"embody":3456,"embrace":3457,"emerge":3458,"emergence":3459,"emergency":3460,"emission":3461,"emotion":3462,"emotional":3463,"emphasis":3464,"emphasize":3465,"empire":3466,"empirical":3467,"employ":3468,"employer":3469,"employment":3470,"empower":3471,"enact":3472,"encompass":3473,"encounter":3474,"encouragement":3475,"endanger":3476,"endeavor":3477,"endorse":3478,"endorsement":3479,"endure":3480,"enforce":3481,"enforcement":3482,"engage":3483,"engagement":3484,"engine":3485,"engineering":3486,"enhance":3487,"enjoyment":3488,"enlarge":3489,"enormous":3490,"enrich":3491,"enroll":3492,"ensemble":3493,"ensure":3494,"enterprise":3495,"entertain":3496,"entertainment":3497,"enthusiasm":3498,"enthusiast":3499,"enthusiastic":3500,"entirely":3501,"entitle":3502,"entity":3503,"entrepreneur":3504,"envelope":3505,"epidemic":3506,"episode":3507,"equal":3508,"equality":3509,"equip":3510,"equipment":3511,"equivalent":3512,"era":3513,"erect":3514,"erupt":3515,"escalate":3516,"escape":3517,"essay":3518,"essence":3519,"essential":3520,"essentially":3521,"establishment":3522,"estate":3523,"estimate":3524,"estimation":3525,"eternal":3526,"ethical":3527,"ethics":3528,"ethnic":3529,"evacuate":3530,"evaluation":3531,"evenly":3532,"eventually":3533,"everyday":3534,"evident":3535,"evil":3536,"evoke":3537,"evolution":3538,"evolutionary":3539,"evolve":3540,"exact":3541,"exaggerate":3542,"examination":3543,"exceed":3544,"excellence":3545,"excellent":3546,"exception":3547,"exceptional":3548,"excess":3549,"excessive":3550,"exchange":3551,"excite":3552,"excitement":3553,"exciting":3554,"exclude":3555,"exclusion":3556,"exclusive":3557,"exclusively":3558,"excuse":3559,"execute":3560,"execution":3561,"exemplify":3562,"exercise":3563,"exert":3564,"exhaust":3565,"exhibit":3566,"exhibition":3567,"exile":3568,"existence":3569,"exit":3570,"expand":3571,"expansion":3572,"expectation":3573,"expedition":3574,"expel":3575,"expenditure":3576,"expense":3577,"expensive":3578,"expert":3579,"expertise":3580,"explicit":3581,"explicitly":3582,"explode":3583,"exploit":3584,"exploitation":3585,"exploration":3586,"explore":3587,"explosion":3588,"explosive":3589,"expose":3590,"exposure":3591,"express":3592,"extend":3593,"extension":3594,"extensive":3595,"extensively":3596,"extent":3597,"external":3598,"extinct":3599,"extinction":3600,"extract":3601,"extraordinary":3602,"extreme":3603,"fabric":3604,"fabulous":3605,"facade":3606,"facial":3607,"facilitate":3608,"facility":3609,"faction":3610,"faculty":3611,"fade":3612,"fair":3613,"fairly":3614,"fairness":3615,"faith":3616,"faithful":3617,"fake":3618,"fame":3619,"familiar":3620,"famine":3621,"fan":3622,"fancy":3623,"fantasy":3624,"fare":3625,"fascinate":3626,"fascinating":3627,"fashion":3628,"fat":3629,"fate":3630,"fatigue":3631,"fault":3632,"favor":3633,"favorable":3634,"favorite":3635,"fax":3636,"feast":3637,"feather":3638,"federation":3639,"fee":3640,"feed":3641,"feedback":3642,"fellow":3643,"fellowship":3644,"female":3645,"fence":3646,"fertile":3647,"fertilizer":3648,"festival":3649,"fetch":3650,"fever":3651,"fiber":3652,"fiction":3653,"fierce":3654,"fifteen":3655,"fifty":3656,"fig":3657,"fighter":3658,"finance":3659,"financially":3660,"financing":3661,"finger":3662,"finished":3663,"fire":3664,"firmly":3665,"fiscal":3666,"fisherman":3667,"fishing":3668,"fitness":3669,"fix":3670,"fixture":3671,"flag":3672,"flame":3673,"flash":3674,"flat":3675,"flavor":3676,"flee":3677,"fleet":3678,"flesh":3679,"flexibility":3680,"flexible":3681,"flight":3682,"flock":3683,"flood":3684,"flour":3685,"flow":3686,"flower":3687,"fluid":3688,"flush":3689,"folk":3690,"football":3691,"footnote":3692,"footstep":3693,"forbid":3694,"forbidden":3695,"forecast":3696,"forehead":3697,"foreigner":3698,"forest":3699,"forever":3700,"forge":3701,"forgive":3702,"fork":3703,"formal":3704,"format":3705,"formation":3706,"formulate":3707,"fort":3708,"forth":3709,"fortunate":3710,"fortune":3711,"forum":3712,"fossil":3713,"foster":3714,"foundation":3715,"founder":3716,"fountain":3717,"fraction":3718,"fracture":3719,"fragile":3720,"fragment":3721,"framework":3722,"franchise":3723,"frank":3724,"frankly":3725,"fraud":3726,"freely":3727,"freeze":3728,"freight":3729,"frequency":3730,"frequent":3731,"frequently":3732,"fresh":3733,"freshman":3734,"friction":3735,"friendship":3736,"frighten":3737,"frog":3738,"frontier":3739,"frost":3740,"frown":3741,"frozen":3742,"fruit":3743,"frustrate":3744,"frustration":3745,"fuel":3746,"fulfill":3747,"fun":3748,"functional":3749,"fundamental":3750,"funding":3751,"funeral":3752,"funny":3753,"fur":3754,"furious":3755,"furniture":3756,"further":3757,"furthermore":3758,"fury":3759,"fusion":3760,"gain":3761,"galaxy":3762,"gallery":3763,"gallon":3764,"gambling":3765,"gap":3766,"garage":3767,"garbage":3768,"garlic":3769,"garment":3770,"gasoline":3771,"gate":3772,"gather":3773,"gathering":3774,"gauge":3775,"gaze":3776,"gear":3777,"gender":3778,"gene":3779,"generally":3780,"generate":3781,"generator":3782,"generous":3783,"genetic":3784,"genetics":3785,"genius":3786,"genocide":3787,"genre":3788,"gentle":3789,"gently":3790,"genuine":3791,"genuinely":3792,"gesture":3793,"giant":3794,"gift":3795,"gigantic":3796,"glimpse":3797,"global":3798,"globalization":3799,"globe":3800,"glory":3801,"glove":3802,"glow":3803,"glucose":3804,"goddess":3805,"golden":3806,"golf":3807,"goodness":3808,"goods":3809,"gorgeous":3810,"gospel":3811,"gossip":3812,"govern":3813,"governance":3814,"grab":3815,"grace":3816,"grade":3817,"gradually":3818,"graduate":3819,"graduation":3820,"grain":3821,"gram":3822,"grammar":3823,"grand":3824,"grandfather":3825,"grandmother":3826,"graphic":3827,"grasp":3828,"grass":3829,"grateful":3830,"grave":3831,"gravity":3832,"gray":3833,"greatly":3834,"greenhouse":3835,"greet":3836,"grief":3837,"grin":3838,"grind":3839,"grip":3840,"grocery":3841,"gross":3842,"groundwater":3843,"guarantee":3844,"guard":3845,"guardian":3846,"guest":3847,"guidance":3848,"guide":3849,"guideline":3850,"guilty":3851,"guitar":3852,"gulf":3853,"gut":3854,"gym":3855,"habit":3856,"habitat":3857,"hair":3858,"hall":3859,"halt":3860,"hammer":3861,"handful":3862,"handling":3863,"handwriting":3864,"handy":3865,"happiness":3866,"harassment":3867,"harbor":3868,"hardly":3869,"hardware":3870,"harm":3871,"harmful":3872,"harmony":3873,"harvest":3874,"hat":3875,"hate":3876,"haul":3877,"hay":3878,"hazard":3879,"headache":3880,"headline":3881,"headquarters":3882,"heal":3883,"healthcare":3884,"healthy":3885,"hearing":3886,"heating":3887,"heaven":3888,"heavily":3889,"hedge":3890,"heel":3891,"height":3892,"helicopter":3893,"helmet":3894,"helpful":3895,"herb":3896,"heritage":3897,"hero":3898,"heroin":3899,"hesitate":3900,"hidden":3901,"hierarchy":3902,"highlight":3903,"highly":3904,"highway":3905,"hike":3906,"hill":3907,"himself":3908,"hip":3909,"hire":3910,"historian":3911,"historic":3912,"historical":3913,"hobby":3914,"holder":3915,"holding":3916,"hole":3917,"holiday":3918,"hollow":3919,"holy":3920,"homeland":3921,"homeless":3922,"homework":3923,"honesty":3924,"honey":3925,"honor":3926,"hook":3927,"hopeful":3928,"hopefully":3929,"horizon":3930,"horizontal":3931,"hormone":3932,"horn":3933,"horrible":3934,"horror":3935,"horse":3936,"hospitality":3937,"hostage":3938,"hostile":3939,"hot":3940,"hotline":3941,"hour":3942,"housing":3943,"hover":3944,"humane":3945,"humanitarian":3946,"humanity":3947,"humor":3948,"hunger":3949,"hungry":3950,"hunt":3951,"hunter":3952,"hunting":3953,"hurt":3954,"hut":3955,"hydrogen":3956,"hygiene":3957,"hypothesis":3958,"ice":3959,"icon":3960,"ideal":3961,"identical":3962,"identification":3963,"identity":3964,"ideology":3965,"ignorance":3966,"ignore":3967,"ill":3968,"illegal":3969,"illness":3970,"illusion":3971,"illustrate":3972,"illustration":3973,"imaginary":3974,"imagination":3975,"imitate":3976,"immediate":3977,"immediately":3978,"immense":3979,"immigrant":3980,"immigration":3981,"immune":3982,"immunity":3983,"implication":3984,"implicit":3985,"importance":3986,"impose":3987,"impossible":3988,"impress":3989,"impression":3990,"impressive":3991,"imprison":3992,"improbable":3993,"improvement":3994,"impulse":3995,"inability":3996,"inappropriate":3997,"incentive":3998,"incidence":3999,"incident":4000,"inclination":4001,"incline":4002,"inclusion":4003,"inclusive":4004,"income":4005,"incorporate":4006,"increasingly":4007,"incredible":4008,"incur":4009,"independence":4010,"independent":4011,"independently":4012,"indication":4013,"indicator":4014,"indictment":4015,"indigenous":4016,"indirect":4017,"indispensable":4018,"individuality":4019,"indoor":4020,"induce":4021,"indulge":4022,"industrial":4023,"industrialize":4024,"inequality":4025,"inevitable":4026,"inevitably":4027,"infant":4028,"infect":4029,"infection":4030,"infer":4031,"inference":4032,"inferior":4033,"infinite":4034,"infinity":4035,"inflation":4036,"inflict":4037,"influential":4038,"informal":4039,"infrastructure":4040,"ingredient":4041,"inhabit":4042,"inhabitant":4043,"inherent":4044,"inherit":4045,"inhibit":4046,"initially":4047,"initiate":4048,"initiative":4049,"inject":4050,"injection":4051,"injure":4052,"injury":4053,"inmate":4054,"inner":4055,"innocent":4056,"innovation":4057,"innovative":4058,"inquiry":4059,"insect":4060,"insertion":4061,"insight":4062,"insist":4063,"inspect":4064,"inspection":4065,"inspector":4066,"inspiration":4067,"inspire":4068,"install":4069,"installation":4070,"installment":4071,"instance":4072,"instant":4073,"instantly":4074,"instinct":4075,"institute":4076,"institutional":4077,"instruct":4078,"instruction":4079,"instructor":4080,"instrument":4081,"instrumental":4082,"insufficient":4083,"insult":4084,"insurance":4085,"intact":4086,"integrate":4087,"integration":4088,"integrity":4089,"intellectual":4090,"intelligence":4091,"intelligent":4092,"intend":4093,"intense":4094,"intensity":4095},"merges":[]}}
train_tiny.py CHANGED
@@ -6,10 +6,12 @@ from torch.optim import AdamW
6
  from torch.optim.lr_scheduler import LambdaLR
7
 
8
  sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
9
- from scripts.model_tiny import TinyModel
10
 
11
 
12
  def _format_item(item, tokenizer):
 
 
13
  if "messages" in item:
14
  return tokenizer.apply_chat_template(item["messages"], tokenize=False)
15
  system = item.get("system", "")
@@ -150,14 +152,8 @@ def train():
150
  vocab_size = tok.vocab_size
151
  max_seq = d_cfg.get("max_seq_length", 2048)
152
 
153
- model = TinyModel(
154
- vocab_size=vocab_size, hidden=128, intermediate=640,
155
- num_layers=3, num_heads=8, num_kv_heads=4,
156
- max_seq_len=max_seq, tie_weights=True,
157
- ).to(device)
158
- model.reset_weights()
159
- n_params = sum(p.numel() for p in model.parameters())
160
- print(f"Params: {n_params:,}")
161
 
162
  hf_repo = d_cfg.get("hf_repo")
163
  is_streaming = bool(hf_repo)
@@ -177,11 +173,11 @@ def train():
177
  eval_ds = ListDataset([_encode(_format_item(x, tok), tok, max_seq) for x in eval_raw])
178
  print(f"Train: {len(train_ds.samples)} Eval: {len(eval_ds.samples)}")
179
 
180
- bs = t_cfg.get("per_device_train_batch_size", 2)
181
- eval_bs = t_cfg.get("per_device_eval_batch_size", 2)
182
- ga_steps = t_cfg.get("gradient_accumulation_steps", 1)
183
- lr = t_cfg.get("learning_rate", 5e-4)
184
- epochs = t_cfg.get("num_train_epochs", 5)
185
  max_grad_norm = t_cfg.get("max_grad_norm", 1.0)
186
  log_steps = t_cfg.get("logging_steps", 5)
187
  save_steps = t_cfg.get("save_steps", 200)
@@ -194,8 +190,8 @@ def train():
194
  hf_repo_id = t_cfg.get("hf_repo_id", "")
195
  hf_token = os.environ.get("HF_TOKEN", "")
196
 
197
- # Resume
198
- ckpt_path = os.path.join(output_dir, "checkpoint.pt")
199
  step = 0
200
  opt_step = 0
201
  start_epoch = 1
@@ -203,15 +199,20 @@ def train():
203
  best_acc = 0.0
204
  cumul_tokens = 0
205
  global_step_offset = 0
 
206
 
207
- # Separate norms from weight decay
208
  decay_params = []
209
  no_decay_params = []
210
  for name, param in model.named_parameters():
 
 
211
  if "norm" in name or "ln_" in name:
212
  no_decay_params.append(param)
213
  else:
214
  decay_params.append(param)
 
 
215
  optimizer = AdamW([
216
  {"params": decay_params, "weight_decay": t_cfg.get("weight_decay", 0.1)},
217
  {"params": no_decay_params, "weight_decay": 0.0},
@@ -257,9 +258,9 @@ def train():
257
  eff_bs = bs * ga_steps
258
  print()
259
  print("=" * 72)
260
- print(f" Lumia-Tiny Training")
261
  print(f" Model: {n_params:,} params | Device: {device.upper()}")
262
- print(f" Vocab: {vocab_size} | Depth: 3 | Hidden: 128 | FF: 640 | Heads: 8/4")
263
  print(f" Epochs: {epochs} | Batch: {bs} | GA: {ga_steps} | Eff BS: {eff_bs} | LR: {lr}")
264
  print(f" Warmup: {warmup_opt_steps} opt steps | Total: {total_opt_steps} opt steps")
265
  print("=" * 72)
 
6
  from torch.optim.lr_scheduler import LambdaLR
7
 
8
  sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
9
+ from scripts.model_tiny import restore_from_v2
10
 
11
 
12
  def _format_item(item, tokenizer):
13
+ if "text" in item:
14
+ return item["text"]
15
  if "messages" in item:
16
  return tokenizer.apply_chat_template(item["messages"], tokenize=False)
17
  system = item.get("system", "")
 
152
  vocab_size = tok.vocab_size
153
  max_seq = d_cfg.get("max_seq_length", 2048)
154
 
155
+ # ── Create model with V2 restoration ────────────────────────────────────
156
+ model = restore_from_v2("checkpoint.pt").to(device)
 
 
 
 
 
 
157
 
158
  hf_repo = d_cfg.get("hf_repo")
159
  is_streaming = bool(hf_repo)
 
173
  eval_ds = ListDataset([_encode(_format_item(x, tok), tok, max_seq) for x in eval_raw])
174
  print(f"Train: {len(train_ds.samples)} Eval: {len(eval_ds.samples)}")
175
 
176
+ bs = t_cfg.get("per_device_train_batch_size", 8)
177
+ eval_bs = t_cfg.get("per_device_eval_batch_size", 8)
178
+ ga_steps = t_cfg.get("gradient_accumulation_steps", 4)
179
+ lr = t_cfg.get("learning_rate", 3e-4)
180
+ epochs = t_cfg.get("num_train_epochs", 1)
181
  max_grad_norm = t_cfg.get("max_grad_norm", 1.0)
182
  log_steps = t_cfg.get("logging_steps", 5)
183
  save_steps = t_cfg.get("save_steps", 200)
 
190
  hf_repo_id = t_cfg.get("hf_repo_id", "")
191
  hf_token = os.environ.get("HF_TOKEN", "")
192
 
193
+ n_params = sum(p.numel() for p in model.parameters())
194
+
195
  step = 0
196
  opt_step = 0
197
  start_epoch = 1
 
199
  best_acc = 0.0
200
  cumul_tokens = 0
201
  global_step_offset = 0
202
+ ckpt_path = os.path.join(output_dir, "checkpoint.pt")
203
 
204
+ # ── Optimiser ──────────────────────────────────────────────────────────
205
  decay_params = []
206
  no_decay_params = []
207
  for name, param in model.named_parameters():
208
+ if not param.requires_grad:
209
+ continue
210
  if "norm" in name or "ln_" in name:
211
  no_decay_params.append(param)
212
  else:
213
  decay_params.append(param)
214
+ if not decay_params and not no_decay_params:
215
+ print("[WARNING] No trainable parameters found!")
216
  optimizer = AdamW([
217
  {"params": decay_params, "weight_decay": t_cfg.get("weight_decay", 0.1)},
218
  {"params": no_decay_params, "weight_decay": 0.0},
 
258
  eff_bs = bs * ga_steps
259
  print()
260
  print("=" * 72)
261
+ print(f" PCT-V3 Training")
262
  print(f" Model: {n_params:,} params | Device: {device.upper()}")
263
+ print(f" Vocab: {vocab_size} | Depth: 6 | Hidden: 128 | Code: 96 | Heads: 8/4 | RPW+GPP+VCR")
264
  print(f" Epochs: {epochs} | Batch: {bs} | GA: {ga_steps} | Eff BS: {eff_bs} | LR: {lr}")
265
  print(f" Warmup: {warmup_opt_steps} opt steps | Total: {total_opt_steps} opt steps")
266
  print("=" * 72)
train_tiny.yaml CHANGED
@@ -1,39 +1,27 @@
1
- # Tiny Training Config — Custom PyTorch (ALiBi+SiLU+RMSNorm, V2)
2
  # Script: scripts/model_tiny.py
3
 
4
- model:
5
- name_or_path: "tiny-custom-pytorch-v2"
6
-
7
  data:
8
- # Local JSONL (used when hf_repo is not set)
9
- train_file: "data/tiny_data.jsonl"
10
- eval_split_ratio: 0.1
11
-
12
- # HF streaming (overrides train_file when set)
13
- hf_repo: "trl-lib/Capybara"
14
- hf_repo_name: ~
15
  hf_split: "train"
16
  hf_num_eval: 50
17
-
18
  max_seq_length: 2048
19
 
20
  training:
21
  output_dir: "outputs/tiny-sft"
22
- run_name: "lumia-tiny-v2"
23
- per_device_train_batch_size: 16
24
- per_device_eval_batch_size: 16
25
- gradient_accumulation_steps: 1
26
  max_grad_norm: 1.0
27
- num_train_epochs: 5
28
  max_steps: 50000
29
- learning_rate: 5.0e-4
30
  lr_scheduler_type: "cosine"
31
- warmup_ratio: 0.1
32
  weight_decay: 0.1
33
  use_cpu: false
34
  logging_steps: 5
35
- save_steps: 200
36
- save_total_limit: 3
37
- eval_steps: 200
38
  seed: 42
39
- hf_repo_id: "samcheng0/lumia-tiny"
 
1
+ # PCT-V3 Training Config — RPW+GPP+VCR
2
  # Script: scripts/model_tiny.py
3
 
 
 
 
4
  data:
5
+ hf_repo: "HuggingFaceFW/fineweb-edu"
6
+ hf_repo_name: "sample-100BT"
 
 
 
 
 
7
  hf_split: "train"
8
  hf_num_eval: 50
 
9
  max_seq_length: 2048
10
 
11
  training:
12
  output_dir: "outputs/tiny-sft"
13
+ run_name: "pct-v3-fwe"
14
+ per_device_train_batch_size: 8
15
+ per_device_eval_batch_size: 8
16
+ gradient_accumulation_steps: 4
17
  max_grad_norm: 1.0
18
+ num_train_epochs: 1
19
  max_steps: 50000
20
+ learning_rate: 3.0e-4
21
  lr_scheduler_type: "cosine"
22
+ warmup_ratio: 0.01
23
  weight_decay: 0.1
24
  use_cpu: false
25
  logging_steps: 5
26
+ save_steps: 500
 
 
27
  seed: 42