sasha-smirnov commited on
Commit
999b9e3
·
verified ·
1 Parent(s): 9b7ca79

Initial publish via td-embeddings

Browse files
README.md ADDED
@@ -0,0 +1,292 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - ja
5
+ library_name: sentence-transformers
6
+ pipeline_tag: feature-extraction
7
+ base_model: cl-nagoya/ruri-v3-70m
8
+ tags:
9
+ - onnx
10
+ - teradata
11
+ - byom
12
+ - embeddings
13
+ - feature-extraction
14
+ - modernbert
15
+ - sentence-transformers
16
+ ---
17
+
18
+
19
+
20
+ > Read the disclaimer below before using this model.
21
+
22
+ ----
23
+
24
+ # ruri-v3-70m -- ONNX for Teradata BYOM
25
+
26
+ This repository hosts an **ONNX-converted** version of the upstream
27
+ model [`cl-nagoya/ruri-v3-70m`](https://huggingface.co/cl-nagoya/ruri-v3-70m),
28
+ packaged for the Teradata Vantage `mldb.ONNXEmbeddings` BYOM
29
+ function. It is **not** the original PyTorch model -- only the
30
+ inference graph and tokenizer needed for in-database embedding
31
+ generation.
32
+
33
+ What's different from upstream:
34
+
35
+ - **Format**: ONNX (opset 14, IR version 8 -- BYOM 6+ compatible),
36
+ produced from the upstream weights with architecture-aware
37
+ post-processing baked in.
38
+ - **Precision**: dynamic int8 quantization. See the variants table
39
+ below for what is shipped for this model.
40
+ - **Pooling and post-processing**: this graph emits the raw
41
+ `sentence_embedding` tensor. Pooling rule is
42
+ **mean** and the model expects
43
+ a query-time instruction prefix (see "Instruction prefix" below).
44
+ - **Verification**: every variant's cosine fidelity vs. the
45
+ upstream PyTorch reference is recorded on a fixed
46
+ JMTEB retrieval (2 of 8 subsets: jagovfaqs_22k, nlp_journal_title_abs) sample. Numbers may not generalize
47
+ to your data.
48
+
49
+ ## Model details
50
+
51
+ | | |
52
+ |---|---|
53
+ | Upstream repo | [`cl-nagoya/ruri-v3-70m`](https://huggingface.co/cl-nagoya/ruri-v3-70m) |
54
+ | Architecture | `ModernBertModel` (encoder) |
55
+ | Parameters | 70,002,816 |
56
+ | Output dimensions | 384 |
57
+ | Pooling | `mean` |
58
+ | Instruction prefix | yes |
59
+ | Max input tokens (advertised) | 8192 |
60
+ | Languages | 1 |
61
+ | License | apache-2.0 |
62
+ | ONNX opset | 14 |
63
+ | ONNX IR version | 8 (BYOM 6+ compatible) |
64
+
65
+ <details>
66
+ <summary>Full language list (1)</summary>
67
+
68
+ - `ja`
69
+
70
+ </details>
71
+
72
+ ### Instruction prefix
73
+
74
+ This model was trained with a **role-specific prefix scheme**: the text
75
+ you encode must be prefixed according to what you are using the
76
+ embedding *for*. The prefix wording is not customisable -- the model
77
+ only understands these specific strings, and the trailing `: ` (ASCII
78
+ colon + ASCII space) is part of the prefix.
79
+
80
+ | Prefix | Use it for |
81
+ |---|---|
82
+ | (empty string) | semantic similarity and general-purpose encoding |
83
+ | `トピック: ` | classification, clustering, and topical encoding |
84
+ | `検索クエリ: ` | retrieval -- the **query** side |
85
+ | `検索文書: ` | retrieval -- the **document** side |
86
+
87
+ **The two sides of a retrieval pair take *different* prefixes.** This
88
+ is the part most easily got wrong: prefixing both sides with the same
89
+ string, or prefixing only one side, degrades retrieval quality without
90
+ producing any error. Prefix your queries with
91
+ `検索クエリ: ` and the passages you index
92
+ with `検索文書: `.
93
+
94
+ The ONNX graph itself is prefix-agnostic -- the prefix is plain text
95
+ that flows through the tokenizer. Downstream BYOM SQL is responsible
96
+ for prepending it, typically with a CTE that concatenates the prefix
97
+ onto each input row.
98
+
99
+ Worked example -- the same subject encoded on each side of a retrieval
100
+ pair:
101
+
102
+ ```
103
+ query: 検索クエリ: 瑠璃色はどんな色?
104
+ document: 検索文書: 瑠璃色(るりいろ)は、紫みを帯びた濃い青。
105
+ ```
106
+
107
+ Example SQL (queries and documents prefixed separately, then embedded
108
+ through the same model):
109
+
110
+ ```sql
111
+ WITH prefixed_queries AS (
112
+ SELECT id,
113
+ '検索クエリ: ' || query_text AS txt
114
+ FROM my_query_table
115
+ ),
116
+ prefixed_documents AS (
117
+ SELECT id,
118
+ '検索文書: ' || body_text AS txt
119
+ FROM my_document_table
120
+ )
121
+ SELECT *
122
+ FROM mldb.ONNXEmbeddings(
123
+ ON prefixed_queries
124
+ ON embeddings_models AS ModelTable DIMENSION
125
+ ON embeddings_tokenizers AS TokenizerTable DIMENSION
126
+ USING
127
+ Accumulate('id')
128
+ ModelOutputTensor('sentence_embedding')
129
+ ) AS s;
130
+ ```
131
+
132
+ See
133
+ [`cl-nagoya/ruri-v3-70m`](https://huggingface.co/cl-nagoya/ruri-v3-70m) for the
134
+ canonical guidance.
135
+
136
+ ## Quantization variants
137
+
138
+ This repository ships the following variants. The **Size** column is the
139
+ on-disk size of the ONNX weight file in megabytes (MB, 10^6 bytes).
140
+ Quality numbers may not generalize to your data; they come from a fixed
141
+ sample of JMTEB retrieval (2 of 8 subsets: jagovfaqs_22k, nlp_journal_title_abs).
142
+
143
+ Those numbers were measured with inputs tokenized at a maximum sequence
144
+ length of **512 tokens**.
145
+
146
+ | Variant | Size (MB) | p50 cosine | R@1 | Δ R@1 vs fp32 |
147
+ |---|---|---|---|---|
148
+ | `fp32` | 280.3 | 1.000000 | 0.927 | — |
149
+ | `per_channel` | 72.7 | 0.952567 | 0.891 | -0.036 |
150
+ | `ffn_skip` | 139.6 | 0.999625 | 0.929 | +0.002 |
151
+
152
+
153
+ How to read the quality columns:
154
+
155
+ - **p50 cosine** is the median cosine similarity between this
156
+ variant's embeddings and the fp32 ONNX reference, computed over
157
+ a fixed evaluation set. Higher means closer to the unquantized
158
+ model; **1.0** is identical. On the `fp32` row the comparison is
159
+ against the upstream PyTorch model instead, so that row measures
160
+ export drift rather than quantization drift.
161
+ - **R@1** is **absolute top-1 retrieval accuracy** on that evaluation
162
+ sample: each query is ranked against the whole document pool, and R@1
163
+ is the fraction of queries whose own canonical document comes back
164
+ first. Higher is better. It is *not* a comparison against fp32 --
165
+ every row is measured exactly the same way.
166
+ - **Δ R@1 vs fp32** is that row's R@1 minus the `fp32` row's, on the same
167
+ corpus at the same sequence length. Because every row is measured the
168
+ same way, the `fp32` row is this model's unquantized ceiling, and this
169
+ column is the retrieval quality actually given up to quantization.
170
+ Read it when choosing between variants: two artifacts can post similar
171
+ absolute R@1 while one has given up several times as much against its
172
+ own ceiling, and only the delta shows that.
173
+
174
+ Notes:
175
+ - **fp32**: full-precision reference. Useful for an accuracy ceiling,
176
+ but BYOM users almost always want one of the int8 variants for
177
+ in-database scoring -- they are 3-4x smaller and load much faster.
178
+ - **per_channel**: dynamic int8 with weights quantized **per
179
+ output channel**. Each output channel keeps its own scale, so
180
+ layer-wide outliers don't blow up the quantization range. The
181
+ artifact is roughly **4x smaller than fp32** and is the right
182
+ default when storage, memory, or load time matters more than the
183
+ last percent of retrieval quality.
184
+ - **ffn_skip**: dynamic int8 with the feed-forward (FFN) MatMul
185
+ layers kept in **fp32**, while attention and projection MatMuls
186
+ stay quantized. The FFN layers are where most of the quantization
187
+ error in transformer blocks concentrates; leaving them in fp32
188
+ recovers most of the quality loss for a modest size increase.
189
+ The artifact is roughly **3x smaller than fp32** (larger than the
190
+ per_channel int8 sibling).
191
+
192
+ ## Quickstart: using this model with Teradata BYOM
193
+
194
+ Requires Teradata Vantage with **BYOM 6+** (`mldb.ONNXEmbeddings`).
195
+
196
+ ```python
197
+ import getpass
198
+ import teradataml as tdml
199
+ from huggingface_hub import hf_hub_download
200
+
201
+ repo_id = "Teradata/ruri-v3-70m"
202
+ model_id = "ruri-v3-70m" # arbitrary, used as the BYOM model_id
203
+ onnx_file = "onnx/model-per_channel.onnx"
204
+
205
+ # 1. Download the ONNX + tokenizer for the chosen variant.
206
+ hf_hub_download(repo_id=repo_id, filename=onnx_file, local_dir="./")
207
+ hf_hub_download(repo_id=repo_id, filename="tokenizer.json", local_dir="./")
208
+
209
+ # 2. Connect to Vantage.
210
+ tdml.create_context(
211
+ host=input("host: "),
212
+ username=input("user: "),
213
+ password=getpass.getpass("password: "),
214
+ )
215
+
216
+ # 3. Load model + tokenizer into BYOM tables (one-time per model_id).
217
+ tdml.save_byom(model_id=model_id, model_file=onnx_file,
218
+ table_name="embeddings_models")
219
+ tdml.save_byom(model_id=model_id, model_file="tokenizer.json",
220
+ table_name="embeddings_tokenizers")
221
+ ```
222
+
223
+ Then call `mldb.ONNXEmbeddings` against an input table whose
224
+ `txt` column carries the strings to embed:
225
+
226
+ ```sql
227
+ SELECT *
228
+ FROM mldb.ONNXEmbeddings(
229
+ ON (SELECT id, txt FROM your_input_table) AS InputTable
230
+ ON (SELECT model_id, model FROM embeddings_models
231
+ WHERE model_id = 'ruri-v3-70m') AS ModelTable DIMENSION
232
+ ON (SELECT model_id, tokenizer FROM embeddings_tokenizers
233
+ WHERE model_id = 'ruri-v3-70m') AS TokenizerTable DIMENSION
234
+ USING
235
+ Accumulate('id')
236
+ ModelOutputTensor('sentence_embedding')
237
+ OutputFormat('FLOAT32(384)')
238
+ OverwriteCachedModel('*')
239
+ ) AS t
240
+ ORDER BY id;
241
+ ```
242
+
243
+ Pooling rule **`mean`** is applied **inside** the converted
244
+ ONNX graph -- the output tensor named above already contains the
245
+ pooled, post-processed embedding vector. For instruction-prefix models, prepend
246
+ the recommended instruction text to each input `txt` before calling
247
+ `ONNXEmbeddings`; the prefix is plain text that the tokenizer handles
248
+ unchanged.
249
+
250
+ ## Original model attribution
251
+
252
+ The original weights and training methodology belong to
253
+ **the Ruri authors at Nagoya University**. Please cite their work, not this
254
+ repository, in academic contexts. The canonical upstream model card
255
+ is at
256
+ [`cl-nagoya/ruri-v3-70m`](https://huggingface.co/cl-nagoya/ruri-v3-70m);
257
+ refer to it for benchmarks, training details, intended use, and
258
+ citation information.
259
+
260
+ `cl-nagoya/ruri-v3-70m` is itself derived from earlier models, and **not every
261
+ model in that chain is under the same license as this one**. The
262
+ `license` field in this repository's metadata can only carry a single
263
+ value (apache-2.0 -- the license of `cl-nagoya/ruri-v3-70m`), so the
264
+ full chain is stated here:
265
+
266
+ | Upstream model | License | Relationship |
267
+ |---|---|---|
268
+ | [`cl-nagoya/ruri-v3-70m`](https://huggingface.co/cl-nagoya/ruri-v3-70m) | apache-2.0 | the model converted here |
269
+ | [`cl-nagoya/ruri-v3-pt-70m`](https://huggingface.co/cl-nagoya/ruri-v3-pt-70m) | apache-2.0 | direct base (Ruri v3 pretrained backbone) |
270
+ | [`sbintuitions/modernbert-ja-70m`](https://huggingface.co/sbintuitions/modernbert-ja-70m) | mit | ModernBERT-Ja base of the pretrained backbone |
271
+
272
+ Your use of this artifact is subject to the terms of **every** license
273
+ in that chain. Check each upstream model card for its authoritative
274
+ license text.
275
+
276
+ ## Reporting issues
277
+
278
+ For ONNX-conversion or BYOM-compatibility issues specific to this
279
+ Teradata-converted artifact, please open a **Discussion** on this
280
+ model's Hugging Face page. Questions about the underlying model
281
+ quality, training, or intended use should go to the upstream
282
+ maintainer's model card.
283
+
284
+ ----
285
+
286
+ DISCLAIMER: The content herein ("Content") is provided "AS IS" and is not covered by any Teradata Operations, Inc. and its affiliates ("Teradata") agreements. Its listing here does not constitute certification or endorsement by Teradata.
287
+
288
+ To the extent any of the Content contains or is related to any artificial intelligence ("AI") or other language learning models ("Models") that interoperate with the products and services of Teradata, by accessing, bringing, deploying or using such Models, you acknowledge and agree that you are solely responsible for ensuring compliance with all applicable laws, regulations, and restrictions governing the use, deployment, and distribution of AI technologies. This includes, but is not limited to, AI Diffusion Rules, European Union AI Act, AI-related laws and regulations, privacy laws, export controls, and financial or sector-specific regulations.
289
+
290
+ While Teradata may provide support, guidance, or assistance in the deployment or implementation of Models to interoperate with Teradata's products and/or services, you remain fully responsible for ensuring that your Models, data, and applications comply with all relevant legal and regulatory obligations. Our assistance does not constitute legal or regulatory approval, and Teradata disclaims any liability arising from non-compliance with applicable laws.
291
+
292
+ You must determine the suitability of the Models for any purpose. Given the probabilistic nature of machine learning and modeling, the use of the Models may in some situations result in incorrect output that does not accurately reflect the action generated. You should evaluate the accuracy of any output as appropriate for your use case, including by using human review of the output.
config.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "outputs/ft/vanilla/cl-nagoya__ruri-v3-pt-70m/B512E1LR1e-05L8192Temp0.01/default14",
3
+ "architectures": [
4
+ "ModernBertModel"
5
+ ],
6
+ "attention_bias": false,
7
+ "attention_dropout": 0.0,
8
+ "bos_token_id": 1,
9
+ "classifier_activation": "gelu",
10
+ "classifier_bias": false,
11
+ "classifier_dropout": 0.0,
12
+ "classifier_pooling": "cls",
13
+ "cls_token_id": 6,
14
+ "decoder_bias": true,
15
+ "deterministic_flash_attn": false,
16
+ "embedding_dropout": 0.0,
17
+ "eos_token_id": 2,
18
+ "global_attn_every_n_layers": 3,
19
+ "global_rope_theta": 160000.0,
20
+ "gradient_checkpointing": false,
21
+ "hidden_activation": "gelu",
22
+ "hidden_size": 384,
23
+ "initializer_cutoff_factor": 2.0,
24
+ "initializer_range": 0.02,
25
+ "intermediate_size": 1536,
26
+ "layer_norm_eps": 1e-05,
27
+ "local_attention": 128,
28
+ "local_rope_theta": 10000.0,
29
+ "max_position_embeddings": 8192,
30
+ "mlp_bias": false,
31
+ "mlp_dropout": 0.0,
32
+ "model_type": "modernbert",
33
+ "norm_bias": false,
34
+ "norm_eps": 1e-05,
35
+ "num_attention_heads": 6,
36
+ "num_hidden_layers": 13,
37
+ "pad_token_id": 3,
38
+ "position_embedding_type": "rope",
39
+ "reference_compile": false,
40
+ "repad_logits_with_grad": false,
41
+ "sep_token_id": 4,
42
+ "sparse_pred_ignore_index": -100,
43
+ "sparse_prediction": false,
44
+ "torch_dtype": "float32",
45
+ "transformers_version": "4.48.3",
46
+ "vocab_size": 102400
47
+ }
onnx/model-ffn_skip.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bdd04431dd716f720df04d0b31aed4c39a6558d610fb4f6eaabe4706f9217bf4
3
+ size 139644978
onnx/model-fp32.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4219242d44c62ec855056496b7806a570bede1512faf6c4779861e2e3baba91c
3
+ size 280334146
onnx/model-per_channel.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bad7aa60569b87adb359be39786606e891d81205b26ef59c3649c125acb447d3
3
+ size 72656615
special_tokens_map.json ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": {
3
+ "content": "<s>",
4
+ "lstrip": false,
5
+ "normalized": false,
6
+ "rstrip": false,
7
+ "single_word": false
8
+ },
9
+ "cls_token": {
10
+ "content": "<cls>",
11
+ "lstrip": false,
12
+ "normalized": false,
13
+ "rstrip": false,
14
+ "single_word": false
15
+ },
16
+ "eos_token": {
17
+ "content": "</s>",
18
+ "lstrip": false,
19
+ "normalized": false,
20
+ "rstrip": false,
21
+ "single_word": false
22
+ },
23
+ "mask_token": {
24
+ "content": "<mask>",
25
+ "lstrip": false,
26
+ "normalized": false,
27
+ "rstrip": false,
28
+ "single_word": false
29
+ },
30
+ "pad_token": {
31
+ "content": "<pad>",
32
+ "lstrip": false,
33
+ "normalized": false,
34
+ "rstrip": false,
35
+ "single_word": false
36
+ },
37
+ "sep_token": {
38
+ "content": "<sep>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false
43
+ },
44
+ "unk_token": {
45
+ "content": "<unk>",
46
+ "lstrip": false,
47
+ "normalized": false,
48
+ "rstrip": false,
49
+ "single_word": false
50
+ }
51
+ }
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": true,
3
+ "add_dummy_prefix_space": false,
4
+ "add_eos_token": true,
5
+ "add_prefix_space": false,
6
+ "added_tokens_decoder": {
7
+ "0": {
8
+ "content": "<unk>",
9
+ "lstrip": false,
10
+ "normalized": false,
11
+ "rstrip": false,
12
+ "single_word": false,
13
+ "special": true
14
+ },
15
+ "1": {
16
+ "content": "<s>",
17
+ "lstrip": false,
18
+ "normalized": false,
19
+ "rstrip": false,
20
+ "single_word": false,
21
+ "special": true
22
+ },
23
+ "2": {
24
+ "content": "</s>",
25
+ "lstrip": false,
26
+ "normalized": false,
27
+ "rstrip": false,
28
+ "single_word": false,
29
+ "special": true
30
+ },
31
+ "3": {
32
+ "content": "<pad>",
33
+ "lstrip": false,
34
+ "normalized": false,
35
+ "rstrip": false,
36
+ "single_word": false,
37
+ "special": true
38
+ },
39
+ "4": {
40
+ "content": "<sep>",
41
+ "lstrip": false,
42
+ "normalized": false,
43
+ "rstrip": false,
44
+ "single_word": false,
45
+ "special": true
46
+ },
47
+ "5": {
48
+ "content": "<mask>",
49
+ "lstrip": false,
50
+ "normalized": false,
51
+ "rstrip": false,
52
+ "single_word": false,
53
+ "special": true
54
+ },
55
+ "6": {
56
+ "content": "<cls>",
57
+ "lstrip": false,
58
+ "normalized": false,
59
+ "rstrip": false,
60
+ "single_word": false,
61
+ "special": true
62
+ },
63
+ "7": {
64
+ "content": "<|system|>",
65
+ "lstrip": false,
66
+ "normalized": false,
67
+ "rstrip": false,
68
+ "single_word": false,
69
+ "special": false
70
+ },
71
+ "8": {
72
+ "content": "<|assistant|>",
73
+ "lstrip": false,
74
+ "normalized": false,
75
+ "rstrip": false,
76
+ "single_word": false,
77
+ "special": false
78
+ },
79
+ "9": {
80
+ "content": "<|user|>",
81
+ "lstrip": false,
82
+ "normalized": false,
83
+ "rstrip": false,
84
+ "single_word": false,
85
+ "special": false
86
+ },
87
+ "10": {
88
+ "content": "<|available_tools|>",
89
+ "lstrip": false,
90
+ "normalized": false,
91
+ "rstrip": false,
92
+ "single_word": false,
93
+ "special": false
94
+ },
95
+ "11": {
96
+ "content": "<|tool_calls|>",
97
+ "lstrip": false,
98
+ "normalized": false,
99
+ "rstrip": false,
100
+ "single_word": false,
101
+ "special": false
102
+ },
103
+ "12": {
104
+ "content": "<|tool_results|>",
105
+ "lstrip": false,
106
+ "normalized": false,
107
+ "rstrip": false,
108
+ "single_word": false,
109
+ "special": false
110
+ },
111
+ "13": {
112
+ "content": "<|code|>",
113
+ "lstrip": false,
114
+ "normalized": false,
115
+ "rstrip": false,
116
+ "single_word": false,
117
+ "special": false
118
+ },
119
+ "14": {
120
+ "content": "<|file|>",
121
+ "lstrip": false,
122
+ "normalized": false,
123
+ "rstrip": false,
124
+ "single_word": false,
125
+ "special": false
126
+ },
127
+ "102397": {
128
+ "content": "<|prefix|>",
129
+ "lstrip": false,
130
+ "normalized": false,
131
+ "rstrip": false,
132
+ "single_word": false,
133
+ "special": false
134
+ },
135
+ "102398": {
136
+ "content": "<|suffix|>",
137
+ "lstrip": false,
138
+ "normalized": false,
139
+ "rstrip": false,
140
+ "single_word": false,
141
+ "special": false
142
+ },
143
+ "102399": {
144
+ "content": "<|middle|>",
145
+ "lstrip": false,
146
+ "normalized": false,
147
+ "rstrip": false,
148
+ "single_word": false,
149
+ "special": false
150
+ }
151
+ },
152
+ "bos_token": "<s>",
153
+ "clean_up_tokenization_spaces": false,
154
+ "cls_token": "<cls>",
155
+ "do_lower_case": false,
156
+ "eos_token": "</s>",
157
+ "extra_ids": 0,
158
+ "extra_special_tokens": {},
159
+ "keep_accents": true,
160
+ "legacy": false,
161
+ "mask_token": "<mask>",
162
+ "model_max_length": 8192,
163
+ "pad_token": "<pad>",
164
+ "padding_side": "right",
165
+ "sep_token": "<sep>",
166
+ "sp_model_kwargs": {},
167
+ "spaces_between_special_tokens": false,
168
+ "tokenizer_class": "LlamaTokenizer",
169
+ "unk_token": "<unk>",
170
+ "use_default_system_prompt": false
171
+ }