Instructions to use RecursiveSI/flint with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use RecursiveSI/flint with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="RecursiveSI/flint") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("RecursiveSI/flint") model = AutoModelForCausalLM.from_pretrained("RecursiveSI/flint", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use RecursiveSI/flint with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "RecursiveSI/flint" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "RecursiveSI/flint", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/RecursiveSI/flint
- SGLang
How to use RecursiveSI/flint with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "RecursiveSI/flint" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "RecursiveSI/flint", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "RecursiveSI/flint" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "RecursiveSI/flint", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use RecursiveSI/flint with Docker Model Runner:
docker model run hf.co/RecursiveSI/flint
Commit ·
2a247be
0
Parent(s):
Initial release
Browse files- .gitattributes +38 -0
- LICENSE +201 -0
- README.md +108 -0
- assets/flint-logo.png +3 -0
- assets/flint_benchmarks_nvfp4.png +3 -0
- chat_template.jinja +61 -0
- config.json +115 -0
- generation_config.json +14 -0
- model-00001-of-00015.safetensors +3 -0
- model-00002-of-00015.safetensors +3 -0
- model-00003-of-00015.safetensors +3 -0
- model-00004-of-00015.safetensors +3 -0
- model-00005-of-00015.safetensors +3 -0
- model-00006-of-00015.safetensors +3 -0
- model-00007-of-00015.safetensors +3 -0
- model-00008-of-00015.safetensors +3 -0
- model-00009-of-00015.safetensors +3 -0
- model-00010-of-00015.safetensors +3 -0
- model-00011-of-00015.safetensors +3 -0
- model-00012-of-00015.safetensors +3 -0
- model-00013-of-00015.safetensors +3 -0
- model-00014-of-00015.safetensors +3 -0
- model-00015-of-00015.safetensors +3 -0
- model.safetensors.index.json +0 -0
- sglang/Dockerfile +14 -0
- sglang/NOTICE +41 -0
- sglang/README.md +202 -0
- sglang/example_client.py +71 -0
- sglang/example_tools.py +178 -0
- sglang/fa4-learned-sink-fix.patch +101 -0
- sglang/flint_sglang-0.1.4-py3-none-any.whl +0 -0
- sglang/install.sh +69 -0
- sglang/serve_b300.sh +39 -0
- sglang/serve_h200.sh +38 -0
- sglang/serve_node_8x.sh +25 -0
- tokenizer.json +3 -0
- tokenizer_config.json +1295 -0
.gitattributes
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
tokenizer.json filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
assets/flint-logo.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
assets/flint_benchmarks_nvfp4.png filter=lfs diff=lfs merge=lfs -text
|
LICENSE
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Apache License
|
| 2 |
+
Version 2.0, January 2004
|
| 3 |
+
http://www.apache.org/licenses/
|
| 4 |
+
|
| 5 |
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
| 6 |
+
|
| 7 |
+
1. Definitions.
|
| 8 |
+
|
| 9 |
+
"License" shall mean the terms and conditions for use, reproduction,
|
| 10 |
+
and distribution as defined by Sections 1 through 9 of this document.
|
| 11 |
+
|
| 12 |
+
"Licensor" shall mean the copyright owner or entity authorized by
|
| 13 |
+
the copyright owner that is granting the License.
|
| 14 |
+
|
| 15 |
+
"Legal Entity" shall mean the union of the acting entity and all
|
| 16 |
+
other entities that control, are controlled by, or are under common
|
| 17 |
+
control with that entity. For the purposes of this definition,
|
| 18 |
+
"control" means (i) the power, direct or indirect, to cause the
|
| 19 |
+
direction or management of such entity, whether by contract or
|
| 20 |
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
| 21 |
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
| 22 |
+
|
| 23 |
+
"You" (or "Your") shall mean an individual or Legal Entity
|
| 24 |
+
exercising permissions granted by this License.
|
| 25 |
+
|
| 26 |
+
"Source" form shall mean the preferred form for making modifications,
|
| 27 |
+
including but not limited to software source code, documentation
|
| 28 |
+
source, and configuration files.
|
| 29 |
+
|
| 30 |
+
"Object" form shall mean any form resulting from mechanical
|
| 31 |
+
transformation or translation of a Source form, including but
|
| 32 |
+
not limited to compiled object code, generated documentation,
|
| 33 |
+
and conversions to other media types.
|
| 34 |
+
|
| 35 |
+
"Work" shall mean the work of authorship, whether in Source or
|
| 36 |
+
Object form, made available under the License, as indicated by a
|
| 37 |
+
copyright notice that is included in or attached to the work
|
| 38 |
+
(an example is provided in the Appendix below).
|
| 39 |
+
|
| 40 |
+
"Derivative Works" shall mean any work, whether in Source or Object
|
| 41 |
+
form, that is based on (or derived from) the Work and for which the
|
| 42 |
+
editorial revisions, annotations, elaborations, or other modifications
|
| 43 |
+
represent, as a whole, an original work of authorship. For the purposes
|
| 44 |
+
of this License, Derivative Works shall not include works that remain
|
| 45 |
+
separable from, or merely link (or bind by name) to the interfaces of,
|
| 46 |
+
the Work and Derivative Works thereof.
|
| 47 |
+
|
| 48 |
+
"Contribution" shall mean any work of authorship, including
|
| 49 |
+
the original version of the Work and any modifications or additions
|
| 50 |
+
to that Work or Derivative Works thereof, that is intentionally
|
| 51 |
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
| 52 |
+
or by an individual or Legal Entity authorized to submit on behalf of
|
| 53 |
+
the copyright owner. For the purposes of this definition, "submitted"
|
| 54 |
+
means any form of electronic, verbal, or written communication sent
|
| 55 |
+
to the Licensor or its representatives, including but not limited to
|
| 56 |
+
communication on electronic mailing lists, source code control systems,
|
| 57 |
+
and issue tracking systems that are managed by, or on behalf of, the
|
| 58 |
+
Licensor for the purpose of discussing and improving the Work, but
|
| 59 |
+
excluding communication that is conspicuously marked or otherwise
|
| 60 |
+
designated in writing by the copyright owner as "Not a Contribution."
|
| 61 |
+
|
| 62 |
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
| 63 |
+
on behalf of whom a Contribution has been received by Licensor and
|
| 64 |
+
subsequently incorporated within the Work.
|
| 65 |
+
|
| 66 |
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
| 67 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 68 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 69 |
+
copyright license to reproduce, prepare Derivative Works of,
|
| 70 |
+
publicly display, publicly perform, sublicense, and distribute the
|
| 71 |
+
Work and such Derivative Works in Source or Object form.
|
| 72 |
+
|
| 73 |
+
3. Grant of Patent License. Subject to the terms and conditions of
|
| 74 |
+
this License, each Contributor hereby grants to You a perpetual,
|
| 75 |
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
| 76 |
+
(except as stated in this section) patent license to make, have made,
|
| 77 |
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
| 78 |
+
where such license applies only to those patent claims licensable
|
| 79 |
+
by such Contributor that are necessarily infringed by their
|
| 80 |
+
Contribution(s) alone or by combination of their Contribution(s)
|
| 81 |
+
with the Work to which such Contribution(s) was submitted. If You
|
| 82 |
+
institute patent litigation against any entity (including a
|
| 83 |
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
| 84 |
+
or a Contribution incorporated within the Work constitutes direct
|
| 85 |
+
or contributory patent infringement, then any patent licenses
|
| 86 |
+
granted to You under this License for that Work shall terminate
|
| 87 |
+
as of the date such litigation is filed.
|
| 88 |
+
|
| 89 |
+
4. Redistribution. You may reproduce and distribute copies of the
|
| 90 |
+
Work or Derivative Works thereof in any medium, with or without
|
| 91 |
+
modifications, and in Source or Object form, provided that You
|
| 92 |
+
meet the following conditions:
|
| 93 |
+
|
| 94 |
+
(a) You must give any other recipients of the Work or
|
| 95 |
+
Derivative Works a copy of this License; and
|
| 96 |
+
|
| 97 |
+
(b) You must cause any modified files to carry prominent notices
|
| 98 |
+
stating that You changed the files; and
|
| 99 |
+
|
| 100 |
+
(c) You must retain, in the Source form of any Derivative Works
|
| 101 |
+
that You distribute, all copyright, patent, trademark, and
|
| 102 |
+
attribution notices from the Source form of the Work,
|
| 103 |
+
excluding those notices that do not pertain to any part of
|
| 104 |
+
the Derivative Works; and
|
| 105 |
+
|
| 106 |
+
(d) If the Work includes a "NOTICE" text file as part of its
|
| 107 |
+
distribution, then any Derivative Works that You distribute must
|
| 108 |
+
include a readable copy of the attribution notices contained
|
| 109 |
+
within such NOTICE file, excluding those notices that do not
|
| 110 |
+
pertain to any part of the Derivative Works, in at least one
|
| 111 |
+
of the following places: within a NOTICE text file distributed
|
| 112 |
+
as part of the Derivative Works; within the Source form or
|
| 113 |
+
documentation, if provided along with the Derivative Works; or,
|
| 114 |
+
within a display generated by the Derivative Works, if and
|
| 115 |
+
wherever such third-party notices normally appear. The contents
|
| 116 |
+
of the NOTICE file are for informational purposes only and
|
| 117 |
+
do not modify the License. You may add Your own attribution
|
| 118 |
+
notices within Derivative Works that You distribute, alongside
|
| 119 |
+
or as an addendum to the NOTICE text from the Work, provided
|
| 120 |
+
that such additional attribution notices cannot be construed
|
| 121 |
+
as modifying the License.
|
| 122 |
+
|
| 123 |
+
You may add Your own copyright statement to Your modifications and
|
| 124 |
+
may provide additional or different license terms and conditions
|
| 125 |
+
for use, reproduction, or distribution of Your modifications, or
|
| 126 |
+
for any such Derivative Works as a whole, provided Your use,
|
| 127 |
+
reproduction, and distribution of the Work otherwise complies with
|
| 128 |
+
the conditions stated in this License.
|
| 129 |
+
|
| 130 |
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
| 131 |
+
any Contribution intentionally submitted for inclusion in the Work
|
| 132 |
+
by You to the Licensor shall be under the terms and conditions of
|
| 133 |
+
this License, without any additional terms or conditions.
|
| 134 |
+
Notwithstanding the above, nothing herein shall supersede or modify
|
| 135 |
+
the terms of any separate license agreement you may have executed
|
| 136 |
+
with Licensor regarding such Contributions.
|
| 137 |
+
|
| 138 |
+
6. Trademarks. This License does not grant permission to use the trade
|
| 139 |
+
names, trademarks, service marks, or product names of the Licensor,
|
| 140 |
+
except as required for reasonable and customary use in describing the
|
| 141 |
+
origin of the Work and reproducing the content of the NOTICE file.
|
| 142 |
+
|
| 143 |
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
| 144 |
+
agreed to in writing, Licensor provides the Work (and each
|
| 145 |
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
| 146 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
| 147 |
+
implied, including, without limitation, any warranties or conditions
|
| 148 |
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
| 149 |
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
| 150 |
+
appropriateness of using or redistributing the Work and assume any
|
| 151 |
+
risks associated with Your exercise of permissions under this License.
|
| 152 |
+
|
| 153 |
+
8. Limitation of Liability. In no event and under no legal theory,
|
| 154 |
+
whether in tort (including negligence), contract, or otherwise,
|
| 155 |
+
unless required by applicable law (such as deliberate and grossly
|
| 156 |
+
negligent acts) or agreed to in writing, shall any Contributor be
|
| 157 |
+
liable to You for damages, including any direct, indirect, special,
|
| 158 |
+
incidental, or consequential damages of any character arising as a
|
| 159 |
+
result of this License or out of the use or inability to use the
|
| 160 |
+
Work (including but not limited to damages for loss of goodwill,
|
| 161 |
+
work stoppage, computer failure or malfunction, or any and all
|
| 162 |
+
other commercial damages or losses), even if such Contributor
|
| 163 |
+
has been advised of the possibility of such damages.
|
| 164 |
+
|
| 165 |
+
9. Accepting Warranty or Additional Liability. While redistributing
|
| 166 |
+
the Work or Derivative Works thereof, You may choose to offer,
|
| 167 |
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
| 168 |
+
or other liability obligations and/or rights consistent with this
|
| 169 |
+
License. However, in accepting such obligations, You may act only
|
| 170 |
+
on Your own behalf and on Your sole responsibility, not on behalf
|
| 171 |
+
of any other Contributor, and only if You agree to indemnify,
|
| 172 |
+
defend, and hold each Contributor harmless for any liability
|
| 173 |
+
incurred by, or claims asserted against, such Contributor by reason
|
| 174 |
+
of your accepting any such warranty or additional liability.
|
| 175 |
+
|
| 176 |
+
END OF TERMS AND CONDITIONS
|
| 177 |
+
|
| 178 |
+
APPENDIX: How to apply the Apache License to your work.
|
| 179 |
+
|
| 180 |
+
To apply the Apache License to your work, attach the following
|
| 181 |
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
| 182 |
+
replaced with your own identifying information. (Don't include
|
| 183 |
+
the brackets!) The text should be enclosed in the appropriate
|
| 184 |
+
comment syntax for the file format. We also recommend that a
|
| 185 |
+
file or class name and description of purpose be included on the
|
| 186 |
+
same "printed page" as the copyright notice for easier
|
| 187 |
+
identification within third-party archives.
|
| 188 |
+
|
| 189 |
+
Copyright [yyyy] [name of copyright owner]
|
| 190 |
+
|
| 191 |
+
Licensed under the Apache License, Version 2.0 (the "License");
|
| 192 |
+
you may not use this file except in compliance with the License.
|
| 193 |
+
You may obtain a copy of the License at
|
| 194 |
+
|
| 195 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
| 196 |
+
|
| 197 |
+
Unless required by applicable law or agreed to in writing, software
|
| 198 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
| 199 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 200 |
+
See the License for the specific language governing permissions and
|
| 201 |
+
limitations under the License.
|
README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
library_name: transformers
|
| 4 |
+
pipeline_tag: text-generation
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
<p align="center">
|
| 8 |
+
<img src="assets/flint-logo.png" width="160" alt="Flint logo">
|
| 9 |
+
</p>
|
| 10 |
+
|
| 11 |
+
<h1 align="center">Recursive Flint</h1>
|
| 12 |
+
|
| 13 |
+
<p align="center">
|
| 14 |
+
<a href="https://www.recursive.com/updates/introducing-recursive-flint">Blog</a> |
|
| 15 |
+
<a href="https://huggingface.co/RecursiveSI">Hugging Face</a> |
|
| 16 |
+
<a href="https://github.com/recursive-oss/rec">Local engine</a> |
|
| 17 |
+
<a href="https://docs.recursive.com/getting-started">Documentation</a>
|
| 18 |
+
</p>
|
| 19 |
+
|
| 20 |
+
Flint is Recursive’s mixture-of-experts language model for coding agents, with 39.8 billion total parameters and approximately 2.5 billion active per token. It is designed to investigate codebases, fix bugs, implement features, and write tests.
|
| 21 |
+
|
| 22 |
+
Flint supports text input and output, reasoning, and multi-turn tool use. In our release evaluations, it scores 54.9% on Terminal-Bench 2.1, 89.7% on SWE-bench Pro v2, and 74.2% on SWE-bench Verified.
|
| 23 |
+
|
| 24 |
+
This repository contains the BF16 checkpoint, model configuration, tokenizer, chat template, and an SGLang serving kit. Quantized variants are prepared separately for NVIDIA and Apple Silicon runtimes.
|
| 25 |
+
|
| 26 |
+
## Evaluation
|
| 27 |
+
|
| 28 |
+

|
| 29 |
+
|
| 30 |
+
Flint results use temperature 1.0, top-p 0.95, and top-k 20. Terminal-Bench uses Terminus 2; SWE-bench uses mini-swe-agent. Agentic scores report average pass@1 over at least five attempts. † marks scores measured by Recursive; other comparison scores are developer-reported.
|
| 31 |
+
|
| 32 |
+
Evaluation setups vary across sources. Flint’s Terminal-Bench score counts solutions obtained through web retrieval as unsuccessful; developer-reported scores may not apply the same adjustment.
|
| 33 |
+
|
| 34 |
+
## Model specifications
|
| 35 |
+
|
| 36 |
+
| Property | Flint |
|
| 37 |
+
| :---- | :---- |
|
| 38 |
+
| Developer | Recursive |
|
| 39 |
+
| Architecture | Decoder-only mixture-of-experts Transformer |
|
| 40 |
+
| Total parameters | 39.8B |
|
| 41 |
+
| Active parameters per token | Approximately 2.5B, including the output head¹ |
|
| 42 |
+
| Layers | 49: 2 dense layers followed by 47 MoE layers |
|
| 43 |
+
| Attention | 35 sliding-window layers and 14 full-attention layers |
|
| 44 |
+
| Sliding window | 513 tokens: the current token and 512 preceding tokens |
|
| 45 |
+
| Attention heads | 32 query heads and 4 key/value heads; head dimension 128 |
|
| 46 |
+
| Attention normalization | Per-head QK RMSNorm and learned per-head attention sinks |
|
| 47 |
+
| Position encoding | RoPE on sliding-window layers; no positional encoding on full-attention layers |
|
| 48 |
+
| Experts per MoE layer | 256 routed experts, with 6 selected per token, plus an always-active shared expert |
|
| 49 |
+
| Documented context configuration | 262,144 tokens, including prompt and generated output |
|
| 50 |
+
| Vocabulary | 150,144 tokens |
|
| 51 |
+
| Input / output | Text / text |
|
| 52 |
+
| Stated knowledge cutoff | June 2026 |
|
| 53 |
+
|
| 54 |
+
¹ The active-parameter convention includes the output head and excludes the full input embedding matrix. The active body alone is approximately 2.2B parameters. “40B-A2.5B” is the rounded model-size designation.
|
| 55 |
+
|
| 56 |
+
## Getting started
|
| 57 |
+
|
| 58 |
+
Flint runs on one B300 or H200 GPU per replica with the SGLang kit in `sglang/`. Transformers modeling code is not included yet.
|
| 59 |
+
|
| 60 |
+
```bash
|
| 61 |
+
pip install -U huggingface_hub openai
|
| 62 |
+
hf download RecursiveSI/flint --local-dir flint && cd flint # about 80 GB
|
| 63 |
+
docker build -t flint-sglang sglang
|
| 64 |
+
docker run -d --name flint --gpus '"device=0"' --ipc=host -p 127.0.0.1:30000:30000 \
|
| 65 |
+
-v "$PWD:/model" -e MODEL=/model flint-sglang bash /model/sglang/serve_b300.sh # H200: serve_h200.sh
|
| 66 |
+
until curl -sf localhost:30000/health_generate >/dev/null; do sleep 15; done # progress: docker logs -f flint
|
| 67 |
+
python3 sglang/example_client.py --base-url http://localhost:30000/v1 # reasoning and a tool call
|
| 68 |
+
```
|
| 69 |
+
|
| 70 |
+
```python
|
| 71 |
+
from openai import OpenAI
|
| 72 |
+
|
| 73 |
+
client = OpenAI(base_url="http://localhost:30000/v1", api_key="unused")
|
| 74 |
+
response = client.chat.completions.create(
|
| 75 |
+
model="flint",
|
| 76 |
+
messages=[{"role": "user", "content": "Write a Python function that merges overlapping intervals."}],
|
| 77 |
+
max_tokens=32768,
|
| 78 |
+
)
|
| 79 |
+
print(response.choices[0].message.content)
|
| 80 |
+
```
|
| 81 |
+
|
| 82 |
+
[`sglang/README.md`](sglang/README.md) covers requirements, serve-script options, multi-GPU deployments, and API details.
|
| 83 |
+
|
| 84 |
+
### Recommended generation settings
|
| 85 |
+
|
| 86 |
+
| Setting | Value |
|
| 87 |
+
| :---- | :---- |
|
| 88 |
+
| Temperature | 1.0 |
|
| 89 |
+
| Top-p / top-k | 0.95 / 20 |
|
| 90 |
+
| Output budget for hard problems | At least 32768 tokens, including reasoning |
|
| 91 |
+
|
| 92 |
+
The server applies these sampling settings when a request omits them. Flint supports OpenAI-compatible tool calls. Use the checkpoint’s chat template and preserve returned `reasoning_content` in conversation history. Prompt and output share the context window.
|
| 93 |
+
|
| 94 |
+
## Training
|
| 95 |
+
|
| 96 |
+
Flint was trained from scratch through pretraining, mid-training, supervised fine-tuning, and reinforcement learning. Training includes text and code, instruction following, and agentic tasks.
|
| 97 |
+
|
| 98 |
+
## Limitations and responsible use
|
| 99 |
+
|
| 100 |
+
Flint’s supervised fine-tuning included safety-oriented examples, but the model can still produce incorrect or harmful content, faulty code, or inappropriate tool calls. Test generated code and review consequential changes before applying them. Tool-using applications should enforce their own permissions and execution boundaries; structured tool-call grammar does not prevent the model from choosing an unsafe or incorrect action.
|
| 101 |
+
|
| 102 |
+
Long reasoning can increase latency and exhaust the output budget before an answer is complete. The context configuration is a capacity limit, not a guarantee of uniform accuracy across all sequence lengths or tasks. Results can vary with checkpoint precision and inference runtime; evaluate the specific checkpoint and runtime you intend to deploy.
|
| 103 |
+
|
| 104 |
+
## License and reporting
|
| 105 |
+
|
| 106 |
+
Flint is released under the [Apache 2.0 license](LICENSE). Hosted API terms and data practices are separate from the weight license.
|
| 107 |
+
|
| 108 |
+
For model and serving issues, contact support@recursive.com and include the checkpoint revision, runtime version, hardware, launch command, and a minimal reproduction. Report safety concerns or suspected misuse to safety@recursive.com, and security vulnerabilities to security@recursive.com.
|
assets/flint-logo.png
ADDED
|
Git LFS Details
|
assets/flint_benchmarks_nvfp4.png
ADDED
|
Git LFS Details
|
chat_template.jinja
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{%- macro flint_text(t) -%}
|
| 2 |
+
{%- if t is string -%}
|
| 3 |
+
{{- t | replace("\x00", "") | replace("<think>", "") | replace("</think>", "") | replace("<|begin_of_text|>", "<|begin_of_text|>") | replace("<|end_of_text|>", "<|end_of_text|>") | replace("<|system|>", "<|system|>") | replace("<|developer|>", "<|developer|>") | replace("<|user|>", "<|user|>") | replace("<|assistant|>", "<|assistant|>") | replace("<|observation|>", "<|observation|>") -}}
|
| 4 |
+
{%- else -%}
|
| 5 |
+
{{- t -}}
|
| 6 |
+
{%- endif -%}
|
| 7 |
+
{%- endmacro -%}
|
| 8 |
+
{%- set tool_preamble -%}
|
| 9 |
+
{%- if tools %}<|system|>
|
| 10 |
+
# Tools
|
| 11 |
+
|
| 12 |
+
You may call one or more functions to assist with the user query.
|
| 13 |
+
|
| 14 |
+
You are provided with function signatures within <tools></tools> XML tags:
|
| 15 |
+
<tools>
|
| 16 |
+
{%- for tool in tools %}
|
| 17 |
+
{%- set fn = tool.function if tool.function is defined else tool %}
|
| 18 |
+
{{ fn | tojson(ensure_ascii=False) }}
|
| 19 |
+
{%- endfor %}
|
| 20 |
+
</tools>
|
| 21 |
+
|
| 22 |
+
For each function call, output the function name and arguments within the following XML format:
|
| 23 |
+
<tool_call>{function-name}<arg_key>{arg-key-1}</arg_key><arg_value>{arg-value-1}</arg_value>...</tool_call>
|
| 24 |
+
{% endif -%}
|
| 25 |
+
{%- endset -%}
|
| 26 |
+
{%- set ns = namespace(tools_pending=true) -%}
|
| 27 |
+
{%- for m in messages -%}
|
| 28 |
+
{%- if ns.tools_pending and m.role != 'system' -%}
|
| 29 |
+
{{ tool_preamble }}
|
| 30 |
+
{%- set ns.tools_pending = false -%}
|
| 31 |
+
{%- endif -%}
|
| 32 |
+
{%- if m.role == 'system' -%}
|
| 33 |
+
<|system|>{{ flint_text(m.content) }}
|
| 34 |
+
{%- elif m.role == 'developer' -%}
|
| 35 |
+
<|developer|>{{ flint_text(m.content) }}
|
| 36 |
+
{%- elif m.role == 'user' -%}
|
| 37 |
+
<|user|>{{ flint_text(m.content) }}
|
| 38 |
+
{%- elif m.role == 'assistant' -%}
|
| 39 |
+
<|assistant|>
|
| 40 |
+
{%- if m.reasoning_content %}<think>{{ m.reasoning_content }}</think>{% endif -%}
|
| 41 |
+
{%- if m.content %}{{ m.content }}{% endif -%}
|
| 42 |
+
{%- if m.tool_calls -%}
|
| 43 |
+
{%- for tc in m.tool_calls -%}
|
| 44 |
+
{%- set fn = tc.function if tc.function is defined else tc -%}
|
| 45 |
+
<tool_call>{{ fn.name }}
|
| 46 |
+
{%- for k, v in fn.arguments.items() -%}
|
| 47 |
+
<arg_key>{{ k }}</arg_key><arg_value>{{ v | tojson(ensure_ascii=False) if v is not string else v }}</arg_value>
|
| 48 |
+
{%- endfor -%}
|
| 49 |
+
</tool_call>
|
| 50 |
+
{%- endfor -%}
|
| 51 |
+
{%- endif -%}
|
| 52 |
+
{%- elif m.role == 'tool' -%}
|
| 53 |
+
<|observation|><tool_response>{{ flint_text(m.content) }}</tool_response>
|
| 54 |
+
{%- endif -%}
|
| 55 |
+
{%- endfor -%}
|
| 56 |
+
{%- if ns.tools_pending -%}
|
| 57 |
+
{{ tool_preamble }}
|
| 58 |
+
{%- endif -%}
|
| 59 |
+
{%- if add_generation_prompt -%}
|
| 60 |
+
<|assistant|>
|
| 61 |
+
{%- endif -%}
|
config.json
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"FlintForCausalLM"
|
| 4 |
+
],
|
| 5 |
+
"model_type": "flint",
|
| 6 |
+
"attention_bias": false,
|
| 7 |
+
"attention_dropout": 0.0,
|
| 8 |
+
"bos_token_id": 150000,
|
| 9 |
+
"decoder_sparse_step": 1,
|
| 10 |
+
"eos_token_id": [
|
| 11 |
+
150001,
|
| 12 |
+
150003,
|
| 13 |
+
150005,
|
| 14 |
+
150018
|
| 15 |
+
],
|
| 16 |
+
"head_dim": 128,
|
| 17 |
+
"hidden_act": "silu",
|
| 18 |
+
"hidden_size": 2048,
|
| 19 |
+
"initializer_range": 0.02,
|
| 20 |
+
"intermediate_size": 6144,
|
| 21 |
+
"layer_types": [
|
| 22 |
+
"full_attention",
|
| 23 |
+
"full_attention",
|
| 24 |
+
"sliding_attention",
|
| 25 |
+
"sliding_attention",
|
| 26 |
+
"sliding_attention",
|
| 27 |
+
"full_attention",
|
| 28 |
+
"sliding_attention",
|
| 29 |
+
"sliding_attention",
|
| 30 |
+
"sliding_attention",
|
| 31 |
+
"full_attention",
|
| 32 |
+
"sliding_attention",
|
| 33 |
+
"sliding_attention",
|
| 34 |
+
"sliding_attention",
|
| 35 |
+
"full_attention",
|
| 36 |
+
"sliding_attention",
|
| 37 |
+
"sliding_attention",
|
| 38 |
+
"sliding_attention",
|
| 39 |
+
"full_attention",
|
| 40 |
+
"sliding_attention",
|
| 41 |
+
"sliding_attention",
|
| 42 |
+
"sliding_attention",
|
| 43 |
+
"full_attention",
|
| 44 |
+
"sliding_attention",
|
| 45 |
+
"sliding_attention",
|
| 46 |
+
"sliding_attention",
|
| 47 |
+
"full_attention",
|
| 48 |
+
"sliding_attention",
|
| 49 |
+
"sliding_attention",
|
| 50 |
+
"sliding_attention",
|
| 51 |
+
"full_attention",
|
| 52 |
+
"sliding_attention",
|
| 53 |
+
"sliding_attention",
|
| 54 |
+
"sliding_attention",
|
| 55 |
+
"full_attention",
|
| 56 |
+
"sliding_attention",
|
| 57 |
+
"sliding_attention",
|
| 58 |
+
"sliding_attention",
|
| 59 |
+
"full_attention",
|
| 60 |
+
"sliding_attention",
|
| 61 |
+
"sliding_attention",
|
| 62 |
+
"sliding_attention",
|
| 63 |
+
"full_attention",
|
| 64 |
+
"sliding_attention",
|
| 65 |
+
"sliding_attention",
|
| 66 |
+
"sliding_attention",
|
| 67 |
+
"full_attention",
|
| 68 |
+
"sliding_attention",
|
| 69 |
+
"sliding_attention",
|
| 70 |
+
"full_attention"
|
| 71 |
+
],
|
| 72 |
+
"max_position_embeddings": 262144,
|
| 73 |
+
"mlp_only_layers": [
|
| 74 |
+
0,
|
| 75 |
+
1
|
| 76 |
+
],
|
| 77 |
+
"moe_intermediate_size": 512,
|
| 78 |
+
"norm_topk_prob": true,
|
| 79 |
+
"num_attention_heads": 32,
|
| 80 |
+
"num_experts": 256,
|
| 81 |
+
"num_experts_per_tok": 6,
|
| 82 |
+
"num_hidden_layers": 49,
|
| 83 |
+
"num_key_value_heads": 4,
|
| 84 |
+
"no_rope_layer_indices": [
|
| 85 |
+
0,
|
| 86 |
+
1,
|
| 87 |
+
5,
|
| 88 |
+
9,
|
| 89 |
+
13,
|
| 90 |
+
17,
|
| 91 |
+
21,
|
| 92 |
+
25,
|
| 93 |
+
29,
|
| 94 |
+
33,
|
| 95 |
+
37,
|
| 96 |
+
41,
|
| 97 |
+
45,
|
| 98 |
+
48
|
| 99 |
+
],
|
| 100 |
+
"output_router_logits": false,
|
| 101 |
+
"pad_token_id": 150001,
|
| 102 |
+
"rms_norm_eps": 1e-06,
|
| 103 |
+
"rope_theta": 10000.0,
|
| 104 |
+
"router_aux_loss_coef": 0.0005,
|
| 105 |
+
"router_score_function": "sigmoid",
|
| 106 |
+
"shared_expert_intermediate_size": 1024,
|
| 107 |
+
"sliding_window": 513,
|
| 108 |
+
"softmax_type": "learnable",
|
| 109 |
+
"tie_word_embeddings": false,
|
| 110 |
+
"torch_dtype": "bfloat16",
|
| 111 |
+
"use_cache": true,
|
| 112 |
+
"use_sliding_window": true,
|
| 113 |
+
"vocab_size": 150144,
|
| 114 |
+
"transformers_version": "5.12.1"
|
| 115 |
+
}
|
generation_config.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"bos_token_id": 150000,
|
| 3 |
+
"eos_token_id": [
|
| 4 |
+
150001,
|
| 5 |
+
150003,
|
| 6 |
+
150005,
|
| 7 |
+
150018
|
| 8 |
+
],
|
| 9 |
+
"pad_token_id": 150001,
|
| 10 |
+
"do_sample": true,
|
| 11 |
+
"temperature": 1.0,
|
| 12 |
+
"top_p": 0.95,
|
| 13 |
+
"top_k": 20
|
| 14 |
+
}
|
model-00001-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:68cd9eaa364a7d72216972f96cde0c308167779e70237e5912ef74aeab758007
|
| 3 |
+
size 5369025064
|
model-00002-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:73c8cab39d0eee3c90bbcf2ed521895434dab3dd624943b3f91507cfabc5c311
|
| 3 |
+
size 5369025168
|
model-00003-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ce22b7f058fdf8911c5a5aa851cd497b6bb804587398b1e3294e427d4bdd1052
|
| 3 |
+
size 5369026736
|
model-00004-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f1d4f30d95f889e7e1a20cfa13ee43745a240b3e80ae60c9464eea3207ca4e51
|
| 3 |
+
size 5369027984
|
model-00005-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:fbf98aef1c1a1b125d49e65b73330f1c00b64f0256edd871d4926f9c73685397
|
| 3 |
+
size 5369027520
|
model-00006-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:842c5070e8fc19b97575b14ec152cca9fd57a248fb0e21c7b53a50f019372ab4
|
| 3 |
+
size 5369027848
|
model-00007-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b41e9e17f6b992b383a171d5a3b32efbb624cb3a8cece1ca925c06c339d7aa17
|
| 3 |
+
size 5369027984
|
model-00008-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8c791da3f5e8dab4700f76725e6d235f8e7125ea09ce927a11c5261df17a65e6
|
| 3 |
+
size 5369027632
|
model-00009-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:73b01b243634f802f8945717bbebd4df625dd55de3b5ce392469f0b4fe7f15f2
|
| 3 |
+
size 5369027848
|
model-00010-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bc105215b9a6061bca130fbda3d566b9597eaf5b1bf51316da81e624085460bb
|
| 3 |
+
size 5369027984
|
model-00011-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2105fde6c535b135fc95413279e69016a28569a08e992eb8fea17bad385d9349
|
| 3 |
+
size 5369027632
|
model-00012-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ae1d074ba5ca8b456251eaac9d7b54ab0c7c1121821a4abb4a78cceb2ad9641f
|
| 3 |
+
size 5367976344
|
model-00013-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e91ccbbe2d681c2c128298700595d8c6ac6764ef88b7ff8c6327a6e5cfa5ef8c
|
| 3 |
+
size 5368466032
|
model-00014-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5c6801977bd0bf6822befa658e490cbf37c81ab4190cdcc72839aac72329b2a8
|
| 3 |
+
size 5369027736
|
model-00015-of-00015.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:58635712b79734cbcad6324157606c674d12303665badc2965955496bb8263bc
|
| 3 |
+
size 4410368544
|
model.safetensors.index.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
sglang/Dockerfile
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Flint serving image: SGLang v0.5.16 + the flint_sglang model package + the FA4 learned-sink fix.
|
| 2 |
+
# Build from the directory that contains this file, install.sh, the flint_sglang wheel and the patch:
|
| 3 |
+
# docker build -t flint-sglang .
|
| 4 |
+
# Host requirement: NVIDIA driver >= 580 (CUDA 13), or CUDA forward compatibility on older
|
| 5 |
+
# datacenter drivers (the image ships it in /usr/local/cuda/compat).
|
| 6 |
+
# lmsysorg/sglang:v0.5.16-cu130 (multi-arch index digest the kit was validated with)
|
| 7 |
+
FROM lmsysorg/sglang@sha256:7b6a35df9839fd593a94a1eaee82d7777f472225d9f3ad1f8a2e0cb2bd1785d0
|
| 8 |
+
|
| 9 |
+
COPY install.sh fa4-learned-sink-fix.patch flint_sglang-*.whl /tmp/flint-build/
|
| 10 |
+
RUN bash /tmp/flint-build/install.sh /tmp/flint-build && rm -rf /tmp/flint-build
|
| 11 |
+
|
| 12 |
+
ENV FLASHINFER_VERSION=0.6.16.post1 \
|
| 13 |
+
SGLANG_EXTERNAL_MODEL_PACKAGE=flint_sglang \
|
| 14 |
+
FLASHINFER_USE_CUDA_NORM=1
|
sglang/NOTICE
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
flint_sglang builds on SGLang (https://github.com/sgl-project/sglang).
|
| 2 |
+
Copyright 2023-2024 SGLang Team. Licensed under the Apache License, Version 2.0 (see LICENSE).
|
| 3 |
+
Portions of flint_sglang/model.py are adapted from SGLang and modified.
|
| 4 |
+
|
| 5 |
+
fa4-learned-sink-fix.patch modifies the FlashAttention-4 kernel vendored in SGLang
|
| 6 |
+
(https://github.com/Dao-AILab/flash-attention). It fixes learned-sink normalization and includes
|
| 7 |
+
the TMEM-allocation barrier change from Dao-AILab/flash-attention#2913. That code is distributed
|
| 8 |
+
under the following license:
|
| 9 |
+
|
| 10 |
+
BSD 3-Clause License
|
| 11 |
+
|
| 12 |
+
Copyright (c) 2022, the respective contributors, as shown by the AUTHORS file.
|
| 13 |
+
All rights reserved.
|
| 14 |
+
|
| 15 |
+
Redistribution and use in source and binary forms, with or without
|
| 16 |
+
modification, are permitted provided that the following conditions are met:
|
| 17 |
+
|
| 18 |
+
* Redistributions of source code must retain the above copyright notice, this
|
| 19 |
+
list of conditions and the following disclaimer.
|
| 20 |
+
|
| 21 |
+
* Redistributions in binary form must reproduce the above copyright notice,
|
| 22 |
+
this list of conditions and the following disclaimer in the documentation
|
| 23 |
+
and/or other materials provided with the distribution.
|
| 24 |
+
|
| 25 |
+
* Neither the name of the copyright holder nor the names of its
|
| 26 |
+
contributors may be used to endorse or promote products derived from
|
| 27 |
+
this software without specific prior written permission.
|
| 28 |
+
|
| 29 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| 30 |
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| 31 |
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
| 32 |
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
| 33 |
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
| 34 |
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
| 35 |
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
| 36 |
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
| 37 |
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| 38 |
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| 39 |
+
|
| 40 |
+
install.sh downloads third-party packages at build time (including nvidia-cutlass-dsl, distributed
|
| 41 |
+
under the NVIDIA Software License Agreement); they are governed by their own licenses.
|
sglang/README.md
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Serving Flint with SGLang
|
| 2 |
+
|
| 3 |
+
This directory is Flint's serving kit for SGLang 0.5.16: the `flint_sglang` model package (a wheel), a
|
| 4 |
+
Dockerfile, `install.sh` for existing containers, the FA4 learned-sink patch, serve scripts and two
|
| 5 |
+
example clients. The commands below pin a commit of this repository.
|
| 6 |
+
|
| 7 |
+
Flint reasons at length on hard problems (see `max_tokens` below).
|
| 8 |
+
|
| 9 |
+
## Quick start (Docker, one GPU)
|
| 10 |
+
|
| 11 |
+
Requirements:
|
| 12 |
+
- One GPU with ≥141 GB per replica: B300/B200 (Blackwell) or H200 (Hopper). 80 GB GPUs are not supported.
|
| 13 |
+
- NVIDIA driver ≥ 580 (CUDA 13). Older datacenter drivers (e.g. R570) work through the CUDA
|
| 14 |
+
forward-compatibility libraries in the image (`/usr/local/cuda/compat`), which recent NVIDIA
|
| 15 |
+
Container Toolkit and enroot setups pick up automatically. Tested: B300 with 580.126.20, H200 with 570.133.20.
|
| 16 |
+
- Building the image needs access to Docker Hub, pypi.org/files.pythonhosted.org, flashinfer.ai and
|
| 17 |
+
github.com (FlashInfer release assets).
|
| 18 |
+
- About 80 GB of disk for the weights plus about 50 GB for the image.
|
| 19 |
+
|
| 20 |
+
```bash
|
| 21 |
+
pip install -U huggingface_hub openai
|
| 22 |
+
REV=$(python3 -c "from huggingface_hub import HfApi; print(HfApi().model_info('RecursiveSI/flint').sha)")
|
| 23 |
+
hf download RecursiveSI/flint --revision "$REV" --local-dir "flint-$REV"
|
| 24 |
+
cd "flint-$REV" && hf cache verify RecursiveSI/flint --revision "$REV" --local-dir . # verify the download
|
| 25 |
+
docker build -t "flint-sglang:${REV:0:12}" sglang
|
| 26 |
+
docker run -d --name flint --gpus '"device=0"' --ipc=host -p 127.0.0.1:30000:30000 \
|
| 27 |
+
-v "$PWD:/model" -e MODEL=/model "flint-sglang:${REV:0:12}" \
|
| 28 |
+
bash /model/sglang/serve_b300.sh # on H200: serve_h200.sh
|
| 29 |
+
until curl -sf localhost:30000/health_generate >/dev/null; do sleep 15; done # progress: docker logs -f flint
|
| 30 |
+
python3 sglang/example_client.py --base-url http://localhost:30000/v1
|
| 31 |
+
python3 sglang/example_tools.py --base-url http://localhost:30000/v1 # nested tool arguments, parallel calls
|
| 32 |
+
```
|
| 33 |
+
|
| 34 |
+
The first start takes about 4 minutes on a B300 with the weights on fast local storage (longer when
|
| 35 |
+
many replicas read the weights from network storage at once; budget up to 15 minutes). The log
|
| 36 |
+
shows `Flint weights loaded: 585 parameters matched the checkpoint.` and then
|
| 37 |
+
`The server is fired up and ready to roll!`. `example_client.py` prints the reasoning, a
|
| 38 |
+
`get_weather` call for Paris, and a final answer that uses the tool result (sunny, 21C).
|
| 39 |
+
`example_tools.py` books a meeting and fills a cart through tools with nested argument schemas
|
| 40 |
+
(enums, patterns, bounds, arrays of objects) and makes three parallel weather calls. It answers each
|
| 41 |
+
call with a canned result, which Flint's final answers report.
|
| 42 |
+
|
| 43 |
+
## Serve scripts
|
| 44 |
+
|
| 45 |
+
Requests use the model name `flint`. Arguments after the script name are appended to
|
| 46 |
+
`sglang.launch_server`, so a repeated flag overrides the script's value, e.g.
|
| 47 |
+
`bash /model/sglang/serve_b300.sh --mem-fraction-static 0.85`.
|
| 48 |
+
|
| 49 |
+
| Variable | Default | Notes |
|
| 50 |
+
|---|---|---|
|
| 51 |
+
| `MODEL` | `RecursiveSI/flint` | Use the local download (`/model` in Docker). With the Hub id the server downloads 79.6 GB at start-up. |
|
| 52 |
+
| `REVISION` | unset | Hub commit when `MODEL` is a Hub id (ignored for local paths). |
|
| 53 |
+
| `PORT` | `30000` | Replica port. |
|
| 54 |
+
| `CUDA_VISIBLE_DEVICES` | all GPUs | GPU of a single replica (the server uses the first visible GPU). |
|
| 55 |
+
| `FLINT_TRITON_CACHE_BASE` | `$HOME/.triton/cache` | Kernel cache root; each replica uses its own `flint-<host>-<port>` subdirectory. Mount a volume here to keep compiled kernels across container restarts. |
|
| 56 |
+
|
| 57 |
+
The servers listen on 0.0.0.0 without authentication: publish ports only on localhost or a private
|
| 58 |
+
network, or append `--api-key <key>` and give clients the same key.
|
| 59 |
+
|
| 60 |
+
## Validated configurations
|
| 61 |
+
|
| 62 |
+
One GPU per replica:
|
| 63 |
+
- B300 (x86_64): `serve_b300.sh` (`--attention-backend fa4 --moe-runner-backend flashinfer_trtllm_routed`).
|
| 64 |
+
B200 and GB200/GB300 (arm64) use the same flags but are not validated yet.
|
| 65 |
+
- H200: `serve_h200.sh` (`--attention-backend fa3 --moe-runner-backend triton`).
|
| 66 |
+
|
| 67 |
+
Both use `--enable-fp32-lm-head --context-length 262144`. The other settings are those Flint was
|
| 68 |
+
evaluated with on each GPU type (B300: `--mem-fraction-static 0.8 --swa-full-tokens-ratio 0.05`;
|
| 69 |
+
H200: `0.9` / `0.4`).
|
| 70 |
+
|
| 71 |
+
The model refuses to start with a MoE runner other than `flashinfer_trtllm_routed`, `triton` or
|
| 72 |
+
`auto` (`flashinfer_trtllm` and `triton_kernel` bypass Flint's sigmoid routing), with any
|
| 73 |
+
`--moe-a2a-backend`, with an unpatched FA4 kernel, or if FlashInfer does not use its CUDA RMSNorm
|
| 74 |
+
kernels (`FLASHINFER_USE_CUDA_NORM=1`, which the image and `flint_sglang` set). `--attention-backend
|
| 75 |
+
flashinfer` does not support attention sinks. Tensor, expert or pipeline parallelism, DP attention,
|
| 76 |
+
quantized weights or KV cache (e.g. FP8) and speculative decoding are not validated.
|
| 77 |
+
|
| 78 |
+
## Several replicas behind a router
|
| 79 |
+
|
| 80 |
+
Replicas are independent single-GPU servers; the router (`sglang_router` 0.3.2, included in the
|
| 81 |
+
image) spreads requests over them.
|
| 82 |
+
|
| 83 |
+
```bash
|
| 84 |
+
# 8 replicas on one 8-GPU node, ports 30000-30007 (Blackwell; on H200 add -e SERVE_SCRIPT=serve_h200.sh)
|
| 85 |
+
docker run -d --name flint-8x --gpus all --ipc=host -p 30000-30007:30000-30007 \
|
| 86 |
+
-v "$PWD:/model" -e MODEL=/model "flint-sglang:${REV:0:12}" bash /model/sglang/serve_node_8x.sh
|
| 87 |
+
# router on any host that can reach every replica
|
| 88 |
+
docker run -d --name flint-router --network host "flint-sglang:${REV:0:12}" \
|
| 89 |
+
python3 -m sglang_router.launch_router --host 0.0.0.0 --port 8000 --policy cache_aware \
|
| 90 |
+
--worker-urls $(for n in node0 node1; do for p in $(seq 30000 30007); do printf 'http://%s:%d ' $n $p; done; done)
|
| 91 |
+
```
|
| 92 |
+
|
| 93 |
+
`serve_node_8x.sh` stops all 8 replicas when one exits; for independent restarts run one container
|
| 94 |
+
per GPU instead (`--gpus '"device=N"'`, `-e PORT=3000N`).
|
| 95 |
+
|
| 96 |
+
## Existing container (no image build), e.g. enroot/pyxis
|
| 97 |
+
|
| 98 |
+
Inside a container of the base image pinned in `sglang/Dockerfile` (`lmsysorg/sglang:v0.5.16-cu130`),
|
| 99 |
+
with network access:
|
| 100 |
+
|
| 101 |
+
```bash
|
| 102 |
+
bash flint-$REV/sglang/install.sh flint-$REV/sglang # ends with: Flint support installed (flint_sglang-0.1.4-py3-none-any.whl).
|
| 103 |
+
MODEL=$PWD/flint-$REV PORT=30000 bash flint-$REV/sglang/serve_h200.sh # Blackwell: serve_b300.sh
|
| 104 |
+
```
|
| 105 |
+
|
| 106 |
+
`install.sh` changes the container in place (FlashInfer 0.6.16.post1, CUTLASS DSL 4.6.2, the patched
|
| 107 |
+
FA4 kernel, `flint_sglang`), can be re-run, and works without root if the container's system Python
|
| 108 |
+
is writable (enroot/pyxis containers are). Keep or save that container (pyxis:
|
| 109 |
+
`--container-save=flint-sglang.sqsh`); a fresh copy of the base image has no Flint support. On H200
|
| 110 |
+
the FA4 patch is applied but unused.
|
| 111 |
+
|
| 112 |
+
## Capacity and tuning
|
| 113 |
+
|
| 114 |
+
- KV cache per token: 28 KiB on the 14 full-attention layers (≈7.5 GB for one 262,144-token
|
| 115 |
+
sequence) plus 70 KiB on the 35 sliding-window layers, which keep only the last 513 tokens of
|
| 116 |
+
each running request.
|
| 117 |
+
- `--mem-fraction-static` is the share of GPU memory for the weights (79.6 GB) plus the KV pools.
|
| 118 |
+
- `--swa-full-tokens-ratio` sizes the sliding-window pool relative to the full-attention pool:
|
| 119 |
+
raise it for many concurrent short requests, lower it for few long ones.
|
| 120 |
+
|
| 121 |
+
## Chat format and API usage
|
| 122 |
+
|
| 123 |
+
Tool definitions appear after leading system messages, before the first developer or other role.
|
| 124 |
+
|
| 125 |
+
- Use `/v1/chat/completions` with the parsers and grammar backend in the serve scripts
|
| 126 |
+
(`--tool-call-parser flint --reasoning-parser flint --grammar-backend flint`). Flint refuses to
|
| 127 |
+
start without `--grammar-backend flint` and `--reasoning-parser flint`, or with
|
| 128 |
+
`--enable-strict-thinking` or `--constrained-json-disable-any-whitespace`, which that backend
|
| 129 |
+
doesn't support. Without a tool-call parser, tool calls stay as literal `<tool_call>` text in
|
| 130 |
+
`content`.
|
| 131 |
+
- Tool-call grammar: `--tool-call-parser flint` parses Flint's tool calls and constrains every
|
| 132 |
+
request with `tools` (unless `tool_choice` is `none`) with XGrammar to Flint's format: an optional
|
| 133 |
+
`<think>…</think>` (from `--grammar-backend flint`), text without protocol markers, then tool calls
|
| 134 |
+
to the request's tools: any number with `tool_choice` `auto`, at least one with `required`, exactly
|
| 135 |
+
one call of the named function with a named choice. As in OpenAI's API, a tool's arguments must
|
| 136 |
+
match its JSON schema only when the tool is sent with `"strict": true`; they are then also written
|
| 137 |
+
in the order the tool declares its parameters (list optional parameters where they belong). Follow
|
| 138 |
+
OpenAI's strict-mode rules: give every object `properties` or `additionalProperties` and every array
|
| 139 |
+
`items` (otherwise XGrammar accepts no value for the object and only `[]` for the array); a strict
|
| 140 |
+
schema XGrammar can't compile (for example a pattern with a lookahead) fails the request. Other
|
| 141 |
+
tools keep the call format but not their schema.
|
| 142 |
+
`parallel_tool_calls: false` allows a single call. The turn still ends with Flint's stop tokens.
|
| 143 |
+
- Tool-call limits:
|
| 144 |
+
- A strict string value (an enum, `const`, `pattern`, `format` or `maxLength`) written with whitespace
|
| 145 |
+
around it fails its schema: XGrammar allows the whitespace and the parser keeps it. Flint rarely
|
| 146 |
+
does this; it has been seen on a prompt that asks it to print a tool call as text.
|
| 147 |
+
- A string argument can't contain the literal text `</tool_call>`. The format has no escaping, so the
|
| 148 |
+
parser ends the call there and reads the rest as output: text Flint copies into an argument can
|
| 149 |
+
add a call, without arguments, to a listed tool.
|
| 150 |
+
- When streaming, a call whose last argument is a JSON object can arrive without its final `}`.
|
| 151 |
+
SGLang adds it back only for the response's last call.
|
| 152 |
+
- With `tool_choice: "none"` nothing is constrained, so call markup Flint writes can reach `content`.
|
| 153 |
+
- Structured output: `response_format` (`json_schema`, `json_object` or `structural_tag`) and SGLang's
|
| 154 |
+
`regex` and `ebnf` parameters constrain `content`. Flint may first reason in `<think>…</think>`
|
| 155 |
+
(returned in `reasoning_content`), and the constraint applies to the answer after it. A request with
|
| 156 |
+
both `tools` and a response format gets only the response format, and `<tool_call>` text in the
|
| 157 |
+
answer is still read as a tool call. Use `/v1/chat/completions`: `/generate` and `/v1/completions`
|
| 158 |
+
return Flint's raw text, including any `<think>…</think>` written before a constrained answer.
|
| 159 |
+
- Sampling: temperature 1.0, top_p 0.95, top_k 20. These are the `generation_config.json` defaults
|
| 160 |
+
the server applies when a request omits them; OpenAI clients pass `top_k` via `extra_body`.
|
| 161 |
+
Greedy decoding is not validated.
|
| 162 |
+
- Reasoning: the model decides on each turn whether to reason in `<think>…</think>` (there is no
|
| 163 |
+
switch or budget). Reasoning is returned in `reasoning_content` and counts toward `max_tokens`:
|
| 164 |
+
on GPQA-Diamond it used a median of 4.3K tokens (p95 33K, p99 46K; about 5% of answers exceed 32K).
|
| 165 |
+
Use `max_tokens` of at least 32768 for hard problems (Flint was evaluated with up to 81920); `finish_reason: "length"` means the
|
| 166 |
+
turn was cut off, possibly before any content or tool call. Keep `reasoning_content` on assistant
|
| 167 |
+
messages when you send the conversation back. `thinking` / `enable_thinking` in
|
| 168 |
+
`chat_template_kwargs` have no effect: the `flint` reasoning parser reads `<think>…</think>` when
|
| 169 |
+
Flint writes it and never assumes a turn starts in reasoning, so turns without reasoning keep their
|
| 170 |
+
content and their tool-call grammar.
|
| 171 |
+
- Messages: content must be a string (flatten content-part arrays). A `developer` message uses
|
| 172 |
+
its own `<|developer|>` role marker (token ID 150018). There is no default system prompt. As in
|
| 173 |
+
training, the template removes NUL characters and `<think>`/`</think>` from system, developer,
|
| 174 |
+
user and tool text and escapes role markers there (`<|user|>` becomes `<|user|>`). It does
|
| 175 |
+
not escape the tool tags (`<tool_call>`, `<tool_response>`, `<arg_key>`, `<arg_value>`); strip
|
| 176 |
+
those from untrusted tool output.
|
| 177 |
+
- Tools: send `tools` with every request. Each function definition is rendered as the template
|
| 178 |
+
receives it; through the server that is `description`, `name`, `parameters` and `strict` (other
|
| 179 |
+
fields are dropped). Send `function.arguments` back unchanged (the JSON string you received) and
|
| 180 |
+
one `tool` message per call, in the order of `tool_calls`. When calling `apply_chat_template`
|
| 181 |
+
directly, decode argument strings into dictionaries first.
|
| 182 |
+
- Generation stops at `<|end_of_text|>`, `<|user|>`, `<|observation|>` or `<|developer|>`
|
| 183 |
+
(ids 150001, 150003, 150005, 150018). No BOS token is used for chat.
|
| 184 |
+
|
| 185 |
+
## Versions and verification
|
| 186 |
+
|
| 187 |
+
- Quote the full commit SHA (`$REV`) in results and bug reports. Download each commit into a new
|
| 188 |
+
directory (`hf download` does not delete files removed upstream).
|
| 189 |
+
- Serving kit: SGLang 0.5.16 (base image pinned by digest in `sglang/Dockerfile`; includes
|
| 190 |
+
transformers 5.12.1, torch 2.11.0+cu130, sglang-router 0.3.2), `flint_sglang` 0.1.4, FlashInfer
|
| 191 |
+
0.6.16.post1, nvidia-cutlass-dsl 4.6.2, quack-kernels 0.6.4, apache-tvm-ffi 0.1.12.
|
| 192 |
+
|
| 193 |
+
When reporting a problem, include the commit SHA, the image ID (`docker inspect --format '{{.Id}}'
|
| 194 |
+
flint-sglang:<tag>`), `nvidia-smi` output, the launch command including extra arguments, the start-up
|
| 195 |
+
log and, for output problems, the request JSON and the raw response.
|
| 196 |
+
|
| 197 |
+
## Transformers
|
| 198 |
+
|
| 199 |
+
The tokenizer and chat template load with `AutoTokenizer.from_pretrained`; decode each
|
| 200 |
+
`tool_calls[].function.arguments` string into a dict before `apply_chat_template`. Transformers does
|
| 201 |
+
not support Flint yet, so `config.json` loads with `FlintConfig.from_pretrained` from
|
| 202 |
+
`flint_sglang.configuration_flint` (transformers ≥ 5.8, tested with 5.12.1) rather than `AutoConfig`.
|
sglang/example_client.py
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Minimal OpenAI-compatible client for a Flint SGLang server, with one tool-calling round trip.
|
| 2 |
+
|
| 3 |
+
pip install openai
|
| 4 |
+
python3 example_client.py --base-url http://localhost:30000/v1 [--api-key KEY]
|
| 5 |
+
"""
|
| 6 |
+
|
| 7 |
+
import argparse
|
| 8 |
+
import json
|
| 9 |
+
import os
|
| 10 |
+
|
| 11 |
+
from openai import OpenAI
|
| 12 |
+
|
| 13 |
+
SAMPLING = {"temperature": 1.0, "top_p": 0.95, "extra_body": {"top_k": 20}}
|
| 14 |
+
MAX_TOKENS = 32768 # reasoning counts toward max_tokens
|
| 15 |
+
|
| 16 |
+
TOOLS = [
|
| 17 |
+
{
|
| 18 |
+
"type": "function",
|
| 19 |
+
"function": {
|
| 20 |
+
"name": "get_weather",
|
| 21 |
+
"description": "Get the current weather for a city.",
|
| 22 |
+
"parameters": {
|
| 23 |
+
"type": "object",
|
| 24 |
+
"properties": {"city": {"type": "string", "description": "City name"}},
|
| 25 |
+
"required": ["city"],
|
| 26 |
+
},
|
| 27 |
+
},
|
| 28 |
+
}
|
| 29 |
+
]
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
def main() -> None:
|
| 33 |
+
parser = argparse.ArgumentParser()
|
| 34 |
+
parser.add_argument("--base-url", default="http://localhost:30000/v1")
|
| 35 |
+
parser.add_argument("--api-key", default=os.environ.get("FLINT_API_KEY", "unused"))
|
| 36 |
+
args = parser.parse_args()
|
| 37 |
+
client = OpenAI(base_url=args.base_url, api_key=args.api_key)
|
| 38 |
+
|
| 39 |
+
messages = [
|
| 40 |
+
{"role": "system", "content": "You are a helpful assistant."},
|
| 41 |
+
{"role": "user", "content": "What's the weather in Paris right now?"},
|
| 42 |
+
]
|
| 43 |
+
first = client.chat.completions.create(
|
| 44 |
+
model="flint", messages=messages, tools=TOOLS, max_tokens=MAX_TOKENS, **SAMPLING
|
| 45 |
+
)
|
| 46 |
+
choice = first.choices[0]
|
| 47 |
+
reply = choice.message
|
| 48 |
+
print("reasoning:", getattr(reply, "reasoning_content", None))
|
| 49 |
+
print("tool calls:", reply.tool_calls)
|
| 50 |
+
if choice.finish_reason == "length":
|
| 51 |
+
print(f"cut off: the turn used all {MAX_TOKENS} tokens (reasoning counts toward max_tokens)")
|
| 52 |
+
return
|
| 53 |
+
if not reply.tool_calls:
|
| 54 |
+
print("content:", reply.content)
|
| 55 |
+
return
|
| 56 |
+
|
| 57 |
+
# Echo the assistant turn (including reasoning_content) back unchanged, then add tool results.
|
| 58 |
+
messages.append(reply.model_dump(exclude_none=True))
|
| 59 |
+
for call in reply.tool_calls:
|
| 60 |
+
city = json.loads(call.function.arguments)["city"]
|
| 61 |
+
messages.append(
|
| 62 |
+
{"role": "tool", "tool_call_id": call.id, "content": json.dumps({"city": city, "forecast": "sunny, 21C"})}
|
| 63 |
+
)
|
| 64 |
+
second = client.chat.completions.create(
|
| 65 |
+
model="flint", messages=messages, tools=TOOLS, max_tokens=MAX_TOKENS, **SAMPLING
|
| 66 |
+
)
|
| 67 |
+
print("final answer:", second.choices[0].message.content)
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
if __name__ == "__main__":
|
| 71 |
+
main()
|
sglang/example_tools.py
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Tool calls with nested argument schemas against a Flint SGLang server.
|
| 2 |
+
|
| 3 |
+
pip install openai
|
| 4 |
+
python3 example_tools.py --base-url http://localhost:30000/v1 [--api-key KEY]
|
| 5 |
+
|
| 6 |
+
The serve scripts start SGLang with --tool-call-parser flint, which constrains each assistant turn that
|
| 7 |
+
has tools to Flint's tool-call format: tool names must be ones the request lists, and the arguments of a
|
| 8 |
+
tool sent with "strict": true must match its JSON schema (types, enums, patterns, numeric bounds,
|
| 9 |
+
required fields). The tools below send "strict": true; other tools keep the format but not the schema.
|
| 10 |
+
Each call gets a canned result (tool_result below), which Flint's final answers report.
|
| 11 |
+
"""
|
| 12 |
+
|
| 13 |
+
import argparse
|
| 14 |
+
import json
|
| 15 |
+
import os
|
| 16 |
+
|
| 17 |
+
from openai import OpenAI
|
| 18 |
+
|
| 19 |
+
SAMPLING = {"temperature": 1.0, "top_p": 0.95, "extra_body": {"top_k": 20}}
|
| 20 |
+
MAX_TOKENS = 32768 # reasoning counts toward max_tokens
|
| 21 |
+
TIME = {"type": "string", "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"}
|
| 22 |
+
WEATHER = {"paris": ("sunny", 21), "tokyo": ("cloudy", 17), "lima": ("light rain", 19)} # canned (conditions, °C)
|
| 23 |
+
|
| 24 |
+
TOOLS = [
|
| 25 |
+
{
|
| 26 |
+
"type": "function",
|
| 27 |
+
"function": {
|
| 28 |
+
"name": "create_event",
|
| 29 |
+
"strict": True,
|
| 30 |
+
"description": "Create a calendar event.",
|
| 31 |
+
"parameters": {
|
| 32 |
+
"type": "object",
|
| 33 |
+
"properties": {
|
| 34 |
+
"title": {"type": "string"},
|
| 35 |
+
"date": {"type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", "description": "YYYY-MM-DD"},
|
| 36 |
+
"start_time": {**TIME, "description": "24-hour HH:MM"},
|
| 37 |
+
"duration_minutes": {"type": "integer", "minimum": 5, "maximum": 480},
|
| 38 |
+
"attendees": {
|
| 39 |
+
"type": "array",
|
| 40 |
+
"minItems": 1,
|
| 41 |
+
"items": {
|
| 42 |
+
"type": "object",
|
| 43 |
+
"properties": {"name": {"type": "string"}, "email": {"type": "string"}},
|
| 44 |
+
"required": ["name", "email"],
|
| 45 |
+
"additionalProperties": False,
|
| 46 |
+
},
|
| 47 |
+
},
|
| 48 |
+
"reminders_minutes": {"type": "array", "items": {"type": "integer", "minimum": 0}},
|
| 49 |
+
"priority": {"type": "string", "enum": ["LOW", "NORMAL", "HIGH_PRIORITY"]},
|
| 50 |
+
},
|
| 51 |
+
"required": ["title", "date", "start_time", "duration_minutes", "attendees", "priority"],
|
| 52 |
+
"additionalProperties": False,
|
| 53 |
+
},
|
| 54 |
+
},
|
| 55 |
+
},
|
| 56 |
+
{
|
| 57 |
+
"type": "function",
|
| 58 |
+
"function": {
|
| 59 |
+
"name": "add_to_cart",
|
| 60 |
+
"strict": True,
|
| 61 |
+
"description": "Add products to the shopping cart.",
|
| 62 |
+
"parameters": {
|
| 63 |
+
"type": "object",
|
| 64 |
+
"properties": {
|
| 65 |
+
"items": {
|
| 66 |
+
"type": "array",
|
| 67 |
+
"minItems": 1,
|
| 68 |
+
"items": {
|
| 69 |
+
"type": "object",
|
| 70 |
+
"properties": {
|
| 71 |
+
"sku": {"type": "string", "pattern": "^[A-Z]{3}-[0-9]{4}$"},
|
| 72 |
+
"quantity": {"type": "integer", "minimum": 1, "maximum": 99},
|
| 73 |
+
"gift_wrap": {"type": "boolean"},
|
| 74 |
+
},
|
| 75 |
+
"required": ["sku", "quantity", "gift_wrap"],
|
| 76 |
+
"additionalProperties": False,
|
| 77 |
+
},
|
| 78 |
+
},
|
| 79 |
+
"coupon": {"type": "string", "description": "Coupon code; omit when there is none"},
|
| 80 |
+
},
|
| 81 |
+
"required": ["items"],
|
| 82 |
+
"additionalProperties": False,
|
| 83 |
+
},
|
| 84 |
+
},
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"type": "function",
|
| 88 |
+
"function": {
|
| 89 |
+
"name": "get_weather",
|
| 90 |
+
"strict": True,
|
| 91 |
+
"description": "Get the current weather for a city.",
|
| 92 |
+
"parameters": {
|
| 93 |
+
"type": "object",
|
| 94 |
+
"properties": {
|
| 95 |
+
"city": {"type": "string"},
|
| 96 |
+
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
|
| 97 |
+
},
|
| 98 |
+
"required": ["city", "unit"],
|
| 99 |
+
"additionalProperties": False,
|
| 100 |
+
},
|
| 101 |
+
},
|
| 102 |
+
},
|
| 103 |
+
]
|
| 104 |
+
|
| 105 |
+
REQUESTS = [
|
| 106 |
+
"Book 'Q4 planning' on October 21st, 2026 at 2:30 PM for 45 minutes with Ana (ana@example.com) and Bo "
|
| 107 |
+
"(bo@example.com). Remind us 10 minutes and one hour before. It is urgent.",
|
| 108 |
+
"Add two gift-wrapped mugs (SKU MUG-0042) and one notebook (SKU NTB-1001, no gift wrap) to my cart. No coupon.",
|
| 109 |
+
"What's the weather in Paris, Tokyo and Lima? Use celsius.",
|
| 110 |
+
]
|
| 111 |
+
|
| 112 |
+
|
| 113 |
+
def main() -> None:
|
| 114 |
+
parser = argparse.ArgumentParser()
|
| 115 |
+
parser.add_argument("--base-url", default="http://localhost:30000/v1")
|
| 116 |
+
parser.add_argument("--api-key", default=os.environ.get("FLINT_API_KEY", "unused"))
|
| 117 |
+
args = parser.parse_args()
|
| 118 |
+
client = OpenAI(base_url=args.base_url, api_key=args.api_key)
|
| 119 |
+
for request in REQUESTS:
|
| 120 |
+
run(client, request)
|
| 121 |
+
|
| 122 |
+
|
| 123 |
+
def run(client: OpenAI, request: str) -> None:
|
| 124 |
+
print(f"\n>>> {request}")
|
| 125 |
+
messages = [{"role": "user", "content": request}]
|
| 126 |
+
choice = client.chat.completions.create(
|
| 127 |
+
model="flint", messages=messages, tools=TOOLS, max_tokens=MAX_TOKENS, **SAMPLING
|
| 128 |
+
).choices[0]
|
| 129 |
+
if choice.finish_reason == "length":
|
| 130 |
+
print(f"cut off: the turn used all {MAX_TOKENS} tokens (reasoning counts toward max_tokens)")
|
| 131 |
+
return
|
| 132 |
+
reply = choice.message
|
| 133 |
+
if not reply.tool_calls:
|
| 134 |
+
print("content:", reply.content)
|
| 135 |
+
return
|
| 136 |
+
for call in reply.tool_calls:
|
| 137 |
+
print(f"{call.function.name}:", json.dumps(json.loads(call.function.arguments), ensure_ascii=False))
|
| 138 |
+
|
| 139 |
+
# Echo the assistant turn back unchanged, answer every call, and let Flint finish the turn.
|
| 140 |
+
messages.append(reply.model_dump(exclude_none=True))
|
| 141 |
+
for call in reply.tool_calls:
|
| 142 |
+
result = tool_result(call.function.name, json.loads(call.function.arguments))
|
| 143 |
+
print(f"{call.function.name} result:", json.dumps(result, ensure_ascii=False))
|
| 144 |
+
messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})
|
| 145 |
+
final = client.chat.completions.create(
|
| 146 |
+
model="flint", messages=messages, tools=TOOLS, max_tokens=MAX_TOKENS, **SAMPLING
|
| 147 |
+
)
|
| 148 |
+
print("final answer:", final.choices[0].message.content)
|
| 149 |
+
|
| 150 |
+
|
| 151 |
+
def tool_result(name: str, arguments: dict) -> dict:
|
| 152 |
+
"""Canned result for one call, standing in for a real calendar, shop and weather service."""
|
| 153 |
+
if name == "get_weather":
|
| 154 |
+
conditions, celsius = WEATHER.get(arguments["city"].lower(), ("clear", 20))
|
| 155 |
+
temperature = celsius if arguments["unit"] == "celsius" else round(celsius * 9 / 5 + 32)
|
| 156 |
+
return {
|
| 157 |
+
"city": arguments["city"],
|
| 158 |
+
"conditions": conditions,
|
| 159 |
+
"temperature": temperature,
|
| 160 |
+
"unit": arguments["unit"],
|
| 161 |
+
}
|
| 162 |
+
if name == "create_event":
|
| 163 |
+
return {
|
| 164 |
+
"status": "created",
|
| 165 |
+
"event_id": "evt_1042",
|
| 166 |
+
"title": arguments["title"],
|
| 167 |
+
"date": arguments["date"],
|
| 168 |
+
"start_time": arguments["start_time"],
|
| 169 |
+
}
|
| 170 |
+
return {
|
| 171 |
+
"status": "added",
|
| 172 |
+
"cart_id": "cart_77",
|
| 173 |
+
"items_added": sum(item["quantity"] for item in arguments["items"]),
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
|
| 177 |
+
if __name__ == "__main__":
|
| 178 |
+
main()
|
sglang/fa4-learned-sink-fix.patch
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
--- a/python/sglang/jit_kernel/flash_attn/cute/flash_fwd_sm100.py
|
| 2 |
+
+++ b/python/sglang/jit_kernel/flash_attn/cute/flash_fwd_sm100.py
|
| 3 |
+
@@ -448,6 +448,12 @@
|
| 4 |
+
self.load_warp_ids = (14, 15)
|
| 5 |
+
self.empty_warp_ids = ()
|
| 6 |
+
|
| 7 |
+
+ self.tmem_alloc_warp_ids = (
|
| 8 |
+
+ self.mma_warp_id,
|
| 9 |
+
+ *self.softmax0_warp_ids,
|
| 10 |
+
+ *self.softmax1_warp_ids,
|
| 11 |
+
+ *self.correction_warp_ids,
|
| 12 |
+
+ )
|
| 13 |
+
if self.use_correction_warps_for_epi:
|
| 14 |
+
self.empty_warp_ids = self.empty_warp_ids + self.epilogue_warp_ids
|
| 15 |
+
self.epilogue_warp_ids = self.correction_warp_ids
|
| 16 |
+
@@ -1732,15 +1738,7 @@
|
| 17 |
+
|
| 18 |
+
tmem_alloc_barrier = pipeline.NamedBarrier(
|
| 19 |
+
barrier_id=int(NamedBarrierFwdSm100.TmemPtr),
|
| 20 |
+
- num_threads=cute.arch.WARP_SIZE
|
| 21 |
+
- * len(
|
| 22 |
+
- (
|
| 23 |
+
- self.mma_warp_id,
|
| 24 |
+
- *self.softmax0_warp_ids,
|
| 25 |
+
- *self.softmax1_warp_ids,
|
| 26 |
+
- *self.correction_warp_ids,
|
| 27 |
+
- )
|
| 28 |
+
- ),
|
| 29 |
+
+ num_threads=cute.arch.WARP_SIZE * len(self.tmem_alloc_warp_ids),
|
| 30 |
+
)
|
| 31 |
+
# Tensor memory dealloc barrier init
|
| 32 |
+
tmem = cutlass.utils.TmemAllocator(
|
| 33 |
+
@@ -2207,11 +2205,11 @@
|
| 34 |
+
# ///////////////////////////////////////////////////////////////////////////////
|
| 35 |
+
# MMA
|
| 36 |
+
# ///////////////////////////////////////////////////////////////////////////////
|
| 37 |
+
+ tmem.allocate(cute.arch.get_max_tmem_alloc_cols("sm_100"))
|
| 38 |
+
+ if warp_idx in self.tmem_alloc_warp_ids:
|
| 39 |
+
+ tmem.wait_for_alloc()
|
| 40 |
+
if warp_idx == self.mma_warp_id:
|
| 41 |
+
cute.arch.setmaxregister_decrease(self.num_regs_other)
|
| 42 |
+
- # Alloc tensor memory buffer
|
| 43 |
+
- tmem.allocate(cute.arch.get_max_tmem_alloc_cols("sm_100"))
|
| 44 |
+
- tmem.wait_for_alloc()
|
| 45 |
+
tmem_ptr = tmem.retrieve_ptr(self.qk_acc_dtype)
|
| 46 |
+
self.mma(
|
| 47 |
+
tiled_mma_qk,
|
| 48 |
+
@@ -2278,8 +2276,6 @@
|
| 49 |
+
) or (const_expr(self.q_stage == 1) and warp_idx <= self.softmax0_warp_ids[-1]):
|
| 50 |
+
# increase register after decreasing
|
| 51 |
+
cute.arch.setmaxregister_increase(self.num_regs_softmax)
|
| 52 |
+
- # sync with mma warp before retrieving tmem ptr
|
| 53 |
+
- tmem.wait_for_alloc()
|
| 54 |
+
tmem_ptr = tmem.retrieve_ptr(self.qk_acc_dtype)
|
| 55 |
+
softmax_loop = partial(
|
| 56 |
+
self.softmax_loop,
|
| 57 |
+
@@ -2335,8 +2331,6 @@
|
| 58 |
+
# ///////////////////////////////////////////////////////////////////////////////
|
| 59 |
+
if warp_idx >= self.correction_warp_ids[0] and warp_idx < self.mma_warp_id:
|
| 60 |
+
cute.arch.setmaxregister_decrease(self.num_regs_correction)
|
| 61 |
+
- # sync with mma warp before retrieving tmem ptr
|
| 62 |
+
- tmem.wait_for_alloc()
|
| 63 |
+
tmem_ptr = tmem.retrieve_ptr(self.qk_acc_dtype)
|
| 64 |
+
self.correction_loop(
|
| 65 |
+
thr_mma_qk,
|
| 66 |
+
@@ -4740,6 +4734,7 @@
|
| 67 |
+
else:
|
| 68 |
+
row_max = None
|
| 69 |
+
pipeline_sm_stats.consumer_release_w_index(stage)
|
| 70 |
+
+ sink_rescale = Float32(1.0)
|
| 71 |
+
if const_expr(learnable_sink is not None):
|
| 72 |
+
LOG2_E = math.log2(math.e)
|
| 73 |
+
sink_val = learnable_sink_val[stage]
|
| 74 |
+
@@ -4749,18 +4744,22 @@
|
| 75 |
+
row_max = sink_val * (LOG2_E / softmax_scale_log2_eff)
|
| 76 |
+
row_sum = max_offset_scale
|
| 77 |
+
else:
|
| 78 |
+
- row_sum += cute.math.exp2(
|
| 79 |
+
- sink_val * LOG2_E
|
| 80 |
+
- - row_max * softmax_scale_log2_eff
|
| 81 |
+
- + max_offset,
|
| 82 |
+
+ old_max_log2 = row_max * softmax_scale_log2_eff
|
| 83 |
+
+ new_max_log2 = max(old_max_log2, sink_val * LOG2_E)
|
| 84 |
+
+ sink_rescale = cute.math.exp2(
|
| 85 |
+
+ old_max_log2 - new_max_log2, fastmath=True
|
| 86 |
+
+ )
|
| 87 |
+
+ row_sum = row_sum * sink_rescale + cute.math.exp2(
|
| 88 |
+
+ sink_val * LOG2_E - new_max_log2 + max_offset,
|
| 89 |
+
fastmath=True,
|
| 90 |
+
)
|
| 91 |
+
+ row_max = new_max_log2 / softmax_scale_log2_eff
|
| 92 |
+
acc_O_mn_row_is_zero_or_nan = row_sum == 0.0 or row_sum != row_sum
|
| 93 |
+
stats[stage] = (row_sum, row_max, acc_O_mn_row_is_zero_or_nan)
|
| 94 |
+
scale = cute.arch.rcp_approx(
|
| 95 |
+
row_sum if not acc_O_mn_row_is_zero_or_nan else 1.0
|
| 96 |
+
)
|
| 97 |
+
- scale = scale * v_descale
|
| 98 |
+
+ scale = scale * sink_rescale * v_descale
|
| 99 |
+
# Wait for the last O to be ready from the MMA warp
|
| 100 |
+
pipeline_o_acc.consumer_wait_w_index_phase(
|
| 101 |
+
stage, o_corr_consumer_phase
|
sglang/flint_sglang-0.1.4-py3-none-any.whl
ADDED
|
Binary file (23 kB). View file
|
|
|
sglang/install.sh
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# Install Flint support into an lmsysorg/sglang:v0.5.16-cu130 environment.
|
| 3 |
+
# Used by the Dockerfile; can also be run (and re-run, e.g. to upgrade) inside an existing
|
| 4 |
+
# container of that image, as root or not.
|
| 5 |
+
#
|
| 6 |
+
# bash install.sh <dir containing fa4-learned-sink-fix.patch and one flint_sglang-*.whl>
|
| 7 |
+
#
|
| 8 |
+
# Needs network access to pypi.org/files.pythonhosted.org, flashinfer.ai and github.com
|
| 9 |
+
# (FlashInfer release assets). For air-gapped hosts, pre-download the wheels and run with
|
| 10 |
+
# PIP_NO_INDEX=1 PIP_FIND_LINKS=<wheel dir>.
|
| 11 |
+
set -euo pipefail
|
| 12 |
+
|
| 13 |
+
SRC_DIR="${1:-$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)}"
|
| 14 |
+
# The image installs SGLang into the system Python; allow pip to update it there (PEP 668).
|
| 15 |
+
export PIP_BREAK_SYSTEM_PACKAGES=1 PIP_ROOT_USER_ACTION=ignore PIP_NO_CACHE_DIR=1
|
| 16 |
+
|
| 17 |
+
# flashinfer 0.6.16.post1: the base image's 0.6.14 can hang trtllm MoE kernels on Blackwell.
|
| 18 |
+
# The python, cubin and jit-cache wheels must move together.
|
| 19 |
+
pip install --force-reinstall --no-deps \
|
| 20 |
+
--extra-index-url "https://flashinfer.ai/whl" \
|
| 21 |
+
--extra-index-url "https://flashinfer.ai/whl/cu130" \
|
| 22 |
+
"flashinfer-python==0.6.16.post1" \
|
| 23 |
+
"flashinfer-cubin==0.6.16.post1" \
|
| 24 |
+
"flashinfer-jit-cache==0.6.16.post1"
|
| 25 |
+
|
| 26 |
+
# CuTe-DSL runtime used to JIT-compile the FA4 attention kernels (4.6.0/4.6.1 hang on sm_103).
|
| 27 |
+
pip install --force-reinstall --no-deps \
|
| 28 |
+
"nvidia-cutlass-dsl==4.6.2" \
|
| 29 |
+
"nvidia-cutlass-dsl-libs-base==4.6.2" \
|
| 30 |
+
"nvidia-cutlass-dsl-libs-core==4.6.2" \
|
| 31 |
+
"nvidia-cutlass-dsl-libs-cu12==4.6.2" \
|
| 32 |
+
"nvidia-cutlass-dsl-libs-cu13==4.6.2" \
|
| 33 |
+
"quack-kernels==0.6.4" \
|
| 34 |
+
"apache-tvm-ffi==0.1.12"
|
| 35 |
+
|
| 36 |
+
python3 - <<'EOF'
|
| 37 |
+
from importlib.metadata import version as v
|
| 38 |
+
expected = {
|
| 39 |
+
"flashinfer-python": "0.6.16.post1", "flashinfer-cubin": "0.6.16.post1", "flashinfer-jit-cache": "0.6.16.post1",
|
| 40 |
+
"nvidia-cutlass-dsl": "4.6.2", "nvidia-cutlass-dsl-libs-base": "4.6.2", "nvidia-cutlass-dsl-libs-core": "4.6.2",
|
| 41 |
+
"nvidia-cutlass-dsl-libs-cu12": "4.6.2", "nvidia-cutlass-dsl-libs-cu13": "4.6.2",
|
| 42 |
+
"quack-kernels": "0.6.4", "apache-tvm-ffi": "0.1.12",
|
| 43 |
+
}
|
| 44 |
+
bad = {p: v(p) for p, want in expected.items() if not v(p).startswith(want)}
|
| 45 |
+
assert not bad, f"unexpected package versions: {bad}"
|
| 46 |
+
EOF
|
| 47 |
+
|
| 48 |
+
# FA4 learned-sink normalization and TMEM-allocation barrier fix for SGLang's vendored
|
| 49 |
+
# FlashAttention-4 SM100 forward kernel. Required for --attention-backend fa4.
|
| 50 |
+
SGL_DIR="$(python3 -c "import pathlib, sglang; print(pathlib.Path(sglang.__file__).parent)")"
|
| 51 |
+
KERNEL="$SGL_DIR/jit_kernel/flash_attn/cute/flash_fwd_sm100.py"
|
| 52 |
+
PATCHED_SHA=6ead08491135efdf2bf40d649a0f5ad732542287c530240ea1726a5c64f8ade3
|
| 53 |
+
if echo "$PATCHED_SHA $KERNEL" | sha256sum -c --status -; then
|
| 54 |
+
echo "FA4 learned-sink fix already applied."
|
| 55 |
+
else
|
| 56 |
+
echo "9b27db3b1d1b64bcd6e15bd47648bb3f22fe5614f79794f850c3808612efd949 $KERNEL" | sha256sum -c -
|
| 57 |
+
patch -p3 -d "$SGL_DIR" < "$SRC_DIR/fa4-learned-sink-fix.patch"
|
| 58 |
+
echo "$PATCHED_SHA $KERNEL" | sha256sum -c -
|
| 59 |
+
fi
|
| 60 |
+
|
| 61 |
+
shopt -s nullglob
|
| 62 |
+
wheels=("$SRC_DIR"/flint_sglang-*.whl)
|
| 63 |
+
if [[ ${#wheels[@]} -ne 1 ]]; then
|
| 64 |
+
echo "expected exactly one flint_sglang-*.whl in $SRC_DIR, found ${#wheels[@]}" >&2
|
| 65 |
+
exit 1
|
| 66 |
+
fi
|
| 67 |
+
pip install --force-reinstall --no-deps "${wheels[0]}"
|
| 68 |
+
python3 -c "from importlib.metadata import entry_points; assert any(e.name == 'flint' for e in entry_points(group='sglang.srt.plugins'))"
|
| 69 |
+
echo "Flint support installed ($(basename "${wheels[0]}"))."
|
sglang/serve_b300.sh
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# One Flint replica on one Blackwell GPU. Validated on B300 (x86_64); B200 and GB200/GB300
|
| 3 |
+
# (arm64 image) use the same flags but are not yet validated.
|
| 4 |
+
#
|
| 5 |
+
# MODEL=/path/to/flint CUDA_VISIBLE_DEVICES=0 PORT=30000 bash serve_b300.sh
|
| 6 |
+
#
|
| 7 |
+
# Extra arguments are passed through to sglang.launch_server.
|
| 8 |
+
set -euo pipefail
|
| 9 |
+
|
| 10 |
+
MODEL="${MODEL:-RecursiveSI/flint}"
|
| 11 |
+
PORT="${PORT:-30000}"
|
| 12 |
+
revision_args=()
|
| 13 |
+
if [[ -n "${REVISION:-}" ]]; then
|
| 14 |
+
revision_args=(--revision "$REVISION")
|
| 15 |
+
fi
|
| 16 |
+
|
| 17 |
+
export SGLANG_EXTERNAL_MODEL_PACKAGE="${SGLANG_EXTERNAL_MODEL_PACKAGE:-flint_sglang}"
|
| 18 |
+
export FLASHINFER_USE_CUDA_NORM="${FLASHINFER_USE_CUDA_NORM:-1}"
|
| 19 |
+
# One Triton cache per replica: replicas compiling the same kernels into one cache directory can race.
|
| 20 |
+
export TRITON_CACHE_DIR="${FLINT_TRITON_CACHE_BASE:-${HOME:-/tmp}/.triton/cache}/flint-$(hostname)-${PORT}"
|
| 21 |
+
|
| 22 |
+
exec python3 -m sglang.launch_server \
|
| 23 |
+
--model-path "$MODEL" "${revision_args[@]}" \
|
| 24 |
+
--served-model-name flint \
|
| 25 |
+
--host 0.0.0.0 --port "$PORT" \
|
| 26 |
+
--tp-size 1 \
|
| 27 |
+
--attention-backend fa4 \
|
| 28 |
+
--moe-runner-backend flashinfer_trtllm_routed \
|
| 29 |
+
--enable-fp32-lm-head \
|
| 30 |
+
--context-length 262144 \
|
| 31 |
+
--chunked-prefill-size 4096 \
|
| 32 |
+
--swa-full-tokens-ratio 0.05 \
|
| 33 |
+
--mem-fraction-static 0.8 \
|
| 34 |
+
--disable-piecewise-cuda-graph \
|
| 35 |
+
--disable-flashinfer-autotune \
|
| 36 |
+
--tool-call-parser flint \
|
| 37 |
+
--reasoning-parser flint \
|
| 38 |
+
--grammar-backend flint \
|
| 39 |
+
"$@"
|
sglang/serve_h200.sh
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# One Flint replica on one Hopper H200 GPU (141 GB). FA4 and the trtllm MoE kernels are
|
| 3 |
+
# Blackwell-only, so this uses FA3 attention and Triton MoE. 80 GB H100s cannot hold the BF16
|
| 4 |
+
# weights on one GPU.
|
| 5 |
+
#
|
| 6 |
+
# MODEL=/path/to/flint CUDA_VISIBLE_DEVICES=0 PORT=30000 bash serve_h200.sh
|
| 7 |
+
#
|
| 8 |
+
# Extra arguments are passed through to sglang.launch_server.
|
| 9 |
+
set -euo pipefail
|
| 10 |
+
|
| 11 |
+
MODEL="${MODEL:-RecursiveSI/flint}"
|
| 12 |
+
PORT="${PORT:-30000}"
|
| 13 |
+
revision_args=()
|
| 14 |
+
if [[ -n "${REVISION:-}" ]]; then
|
| 15 |
+
revision_args=(--revision "$REVISION")
|
| 16 |
+
fi
|
| 17 |
+
|
| 18 |
+
export SGLANG_EXTERNAL_MODEL_PACKAGE="${SGLANG_EXTERNAL_MODEL_PACKAGE:-flint_sglang}"
|
| 19 |
+
export FLASHINFER_USE_CUDA_NORM="${FLASHINFER_USE_CUDA_NORM:-1}"
|
| 20 |
+
# One Triton cache per replica: replicas compiling the same kernels into one cache directory can race.
|
| 21 |
+
export TRITON_CACHE_DIR="${FLINT_TRITON_CACHE_BASE:-${HOME:-/tmp}/.triton/cache}/flint-$(hostname)-${PORT}"
|
| 22 |
+
|
| 23 |
+
exec python3 -m sglang.launch_server \
|
| 24 |
+
--model-path "$MODEL" "${revision_args[@]}" \
|
| 25 |
+
--served-model-name flint \
|
| 26 |
+
--host 0.0.0.0 --port "$PORT" \
|
| 27 |
+
--tp-size 1 \
|
| 28 |
+
--attention-backend fa3 \
|
| 29 |
+
--moe-runner-backend triton \
|
| 30 |
+
--enable-fp32-lm-head \
|
| 31 |
+
--context-length 262144 \
|
| 32 |
+
--chunked-prefill-size 4096 \
|
| 33 |
+
--swa-full-tokens-ratio 0.4 \
|
| 34 |
+
--mem-fraction-static 0.9 \
|
| 35 |
+
--tool-call-parser flint \
|
| 36 |
+
--reasoning-parser flint \
|
| 37 |
+
--grammar-backend flint \
|
| 38 |
+
"$@"
|
sglang/serve_node_8x.sh
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# Eight Flint replicas on one 8-GPU node, one GPU each, on ports BASE_PORT..BASE_PORT+7.
|
| 3 |
+
# If one replica exits, all are stopped. Put a router in front of all replicas across nodes (on a
|
| 4 |
+
# port outside those ranges), e.g. for 2 nodes:
|
| 5 |
+
#
|
| 6 |
+
# python3 -m sglang_router.launch_router --host 0.0.0.0 --port 8000 --policy cache_aware \
|
| 7 |
+
# --worker-urls http://node0:30000 ... http://node0:30007 http://node1:30000 ... http://node1:30007
|
| 8 |
+
#
|
| 9 |
+
# MODEL=/path/to/flint BASE_PORT=30000 bash serve_node_8x.sh # Blackwell
|
| 10 |
+
# MODEL=/path/to/flint SERVE_SCRIPT=serve_h200.sh bash serve_node_8x.sh # H200
|
| 11 |
+
#
|
| 12 |
+
# Extra arguments are passed through to every replica's sglang.launch_server.
|
| 13 |
+
set -euo pipefail
|
| 14 |
+
|
| 15 |
+
BASE_PORT="${BASE_PORT:-30000}"
|
| 16 |
+
SERVE_SCRIPT="${SERVE_SCRIPT:-serve_b300.sh}"
|
| 17 |
+
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
| 18 |
+
|
| 19 |
+
pids=()
|
| 20 |
+
for gpu in 0 1 2 3 4 5 6 7; do
|
| 21 |
+
CUDA_VISIBLE_DEVICES="$gpu" PORT="$((BASE_PORT + gpu))" bash "$here/$SERVE_SCRIPT" "$@" &
|
| 22 |
+
pids+=("$!")
|
| 23 |
+
done
|
| 24 |
+
trap 'kill "${pids[@]}" 2>/dev/null; wait' EXIT INT TERM
|
| 25 |
+
wait -n "${pids[@]}"
|
tokenizer.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a263cce0b7e2b03f7ee07ce809783ef4b47f160c3f268a4ea1524f638da45b68
|
| 3 |
+
size 10879128
|
tokenizer_config.json
ADDED
|
@@ -0,0 +1,1295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_bos_token": false,
|
| 3 |
+
"add_eos_token": false,
|
| 4 |
+
"added_tokens_decoder": {
|
| 5 |
+
"150000": {
|
| 6 |
+
"content": "<|begin_of_text|>",
|
| 7 |
+
"single_word": false,
|
| 8 |
+
"lstrip": false,
|
| 9 |
+
"rstrip": false,
|
| 10 |
+
"normalized": false,
|
| 11 |
+
"special": true
|
| 12 |
+
},
|
| 13 |
+
"150001": {
|
| 14 |
+
"content": "<|end_of_text|>",
|
| 15 |
+
"single_word": false,
|
| 16 |
+
"lstrip": false,
|
| 17 |
+
"rstrip": false,
|
| 18 |
+
"normalized": false,
|
| 19 |
+
"special": true
|
| 20 |
+
},
|
| 21 |
+
"150002": {
|
| 22 |
+
"content": "<|system|>",
|
| 23 |
+
"single_word": false,
|
| 24 |
+
"lstrip": false,
|
| 25 |
+
"rstrip": false,
|
| 26 |
+
"normalized": false,
|
| 27 |
+
"special": true
|
| 28 |
+
},
|
| 29 |
+
"150003": {
|
| 30 |
+
"content": "<|user|>",
|
| 31 |
+
"single_word": false,
|
| 32 |
+
"lstrip": false,
|
| 33 |
+
"rstrip": false,
|
| 34 |
+
"normalized": false,
|
| 35 |
+
"special": true
|
| 36 |
+
},
|
| 37 |
+
"150004": {
|
| 38 |
+
"content": "<|assistant|>",
|
| 39 |
+
"single_word": false,
|
| 40 |
+
"lstrip": false,
|
| 41 |
+
"rstrip": false,
|
| 42 |
+
"normalized": false,
|
| 43 |
+
"special": true
|
| 44 |
+
},
|
| 45 |
+
"150005": {
|
| 46 |
+
"content": "<|observation|>",
|
| 47 |
+
"single_word": false,
|
| 48 |
+
"lstrip": false,
|
| 49 |
+
"rstrip": false,
|
| 50 |
+
"normalized": false,
|
| 51 |
+
"special": true
|
| 52 |
+
},
|
| 53 |
+
"150006": {
|
| 54 |
+
"content": "<think>",
|
| 55 |
+
"single_word": false,
|
| 56 |
+
"lstrip": false,
|
| 57 |
+
"rstrip": false,
|
| 58 |
+
"normalized": false,
|
| 59 |
+
"special": false
|
| 60 |
+
},
|
| 61 |
+
"150007": {
|
| 62 |
+
"content": "</think>",
|
| 63 |
+
"single_word": false,
|
| 64 |
+
"lstrip": false,
|
| 65 |
+
"rstrip": false,
|
| 66 |
+
"normalized": false,
|
| 67 |
+
"special": false
|
| 68 |
+
},
|
| 69 |
+
"150008": {
|
| 70 |
+
"content": "<tools>",
|
| 71 |
+
"single_word": false,
|
| 72 |
+
"lstrip": false,
|
| 73 |
+
"rstrip": false,
|
| 74 |
+
"normalized": false,
|
| 75 |
+
"special": false
|
| 76 |
+
},
|
| 77 |
+
"150009": {
|
| 78 |
+
"content": "</tools>",
|
| 79 |
+
"single_word": false,
|
| 80 |
+
"lstrip": false,
|
| 81 |
+
"rstrip": false,
|
| 82 |
+
"normalized": false,
|
| 83 |
+
"special": false
|
| 84 |
+
},
|
| 85 |
+
"150010": {
|
| 86 |
+
"content": "<tool_call>",
|
| 87 |
+
"single_word": false,
|
| 88 |
+
"lstrip": false,
|
| 89 |
+
"rstrip": false,
|
| 90 |
+
"normalized": false,
|
| 91 |
+
"special": false
|
| 92 |
+
},
|
| 93 |
+
"150011": {
|
| 94 |
+
"content": "</tool_call>",
|
| 95 |
+
"single_word": false,
|
| 96 |
+
"lstrip": false,
|
| 97 |
+
"rstrip": false,
|
| 98 |
+
"normalized": false,
|
| 99 |
+
"special": false
|
| 100 |
+
},
|
| 101 |
+
"150012": {
|
| 102 |
+
"content": "<arg_key>",
|
| 103 |
+
"single_word": false,
|
| 104 |
+
"lstrip": false,
|
| 105 |
+
"rstrip": false,
|
| 106 |
+
"normalized": false,
|
| 107 |
+
"special": false
|
| 108 |
+
},
|
| 109 |
+
"150013": {
|
| 110 |
+
"content": "</arg_key>",
|
| 111 |
+
"single_word": false,
|
| 112 |
+
"lstrip": false,
|
| 113 |
+
"rstrip": false,
|
| 114 |
+
"normalized": false,
|
| 115 |
+
"special": false
|
| 116 |
+
},
|
| 117 |
+
"150014": {
|
| 118 |
+
"content": "<arg_value>",
|
| 119 |
+
"single_word": false,
|
| 120 |
+
"lstrip": false,
|
| 121 |
+
"rstrip": false,
|
| 122 |
+
"normalized": false,
|
| 123 |
+
"special": false
|
| 124 |
+
},
|
| 125 |
+
"150015": {
|
| 126 |
+
"content": "</arg_value>",
|
| 127 |
+
"single_word": false,
|
| 128 |
+
"lstrip": false,
|
| 129 |
+
"rstrip": false,
|
| 130 |
+
"normalized": false,
|
| 131 |
+
"special": false
|
| 132 |
+
},
|
| 133 |
+
"150016": {
|
| 134 |
+
"content": "<tool_response>",
|
| 135 |
+
"single_word": false,
|
| 136 |
+
"lstrip": false,
|
| 137 |
+
"rstrip": false,
|
| 138 |
+
"normalized": false,
|
| 139 |
+
"special": false
|
| 140 |
+
},
|
| 141 |
+
"150017": {
|
| 142 |
+
"content": "</tool_response>",
|
| 143 |
+
"single_word": false,
|
| 144 |
+
"lstrip": false,
|
| 145 |
+
"rstrip": false,
|
| 146 |
+
"normalized": false,
|
| 147 |
+
"special": false
|
| 148 |
+
},
|
| 149 |
+
"150018": {
|
| 150 |
+
"content": "<|developer|>",
|
| 151 |
+
"single_word": false,
|
| 152 |
+
"lstrip": false,
|
| 153 |
+
"rstrip": false,
|
| 154 |
+
"normalized": false,
|
| 155 |
+
"special": true
|
| 156 |
+
},
|
| 157 |
+
"150019": {
|
| 158 |
+
"content": "<|reserved_150019|>",
|
| 159 |
+
"single_word": false,
|
| 160 |
+
"lstrip": false,
|
| 161 |
+
"rstrip": false,
|
| 162 |
+
"normalized": false,
|
| 163 |
+
"special": true
|
| 164 |
+
},
|
| 165 |
+
"150020": {
|
| 166 |
+
"content": "<|reserved_150020|>",
|
| 167 |
+
"single_word": false,
|
| 168 |
+
"lstrip": false,
|
| 169 |
+
"rstrip": false,
|
| 170 |
+
"normalized": false,
|
| 171 |
+
"special": true
|
| 172 |
+
},
|
| 173 |
+
"150021": {
|
| 174 |
+
"content": "<|reserved_150021|>",
|
| 175 |
+
"single_word": false,
|
| 176 |
+
"lstrip": false,
|
| 177 |
+
"rstrip": false,
|
| 178 |
+
"normalized": false,
|
| 179 |
+
"special": true
|
| 180 |
+
},
|
| 181 |
+
"150022": {
|
| 182 |
+
"content": "<|reserved_150022|>",
|
| 183 |
+
"single_word": false,
|
| 184 |
+
"lstrip": false,
|
| 185 |
+
"rstrip": false,
|
| 186 |
+
"normalized": false,
|
| 187 |
+
"special": true
|
| 188 |
+
},
|
| 189 |
+
"150023": {
|
| 190 |
+
"content": "<|reserved_150023|>",
|
| 191 |
+
"single_word": false,
|
| 192 |
+
"lstrip": false,
|
| 193 |
+
"rstrip": false,
|
| 194 |
+
"normalized": false,
|
| 195 |
+
"special": true
|
| 196 |
+
},
|
| 197 |
+
"150024": {
|
| 198 |
+
"content": "<|reserved_150024|>",
|
| 199 |
+
"single_word": false,
|
| 200 |
+
"lstrip": false,
|
| 201 |
+
"rstrip": false,
|
| 202 |
+
"normalized": false,
|
| 203 |
+
"special": true
|
| 204 |
+
},
|
| 205 |
+
"150025": {
|
| 206 |
+
"content": "<|reserved_150025|>",
|
| 207 |
+
"single_word": false,
|
| 208 |
+
"lstrip": false,
|
| 209 |
+
"rstrip": false,
|
| 210 |
+
"normalized": false,
|
| 211 |
+
"special": true
|
| 212 |
+
},
|
| 213 |
+
"150026": {
|
| 214 |
+
"content": "<|reserved_150026|>",
|
| 215 |
+
"single_word": false,
|
| 216 |
+
"lstrip": false,
|
| 217 |
+
"rstrip": false,
|
| 218 |
+
"normalized": false,
|
| 219 |
+
"special": true
|
| 220 |
+
},
|
| 221 |
+
"150027": {
|
| 222 |
+
"content": "<|reserved_150027|>",
|
| 223 |
+
"single_word": false,
|
| 224 |
+
"lstrip": false,
|
| 225 |
+
"rstrip": false,
|
| 226 |
+
"normalized": false,
|
| 227 |
+
"special": true
|
| 228 |
+
},
|
| 229 |
+
"150028": {
|
| 230 |
+
"content": "<|reserved_150028|>",
|
| 231 |
+
"single_word": false,
|
| 232 |
+
"lstrip": false,
|
| 233 |
+
"rstrip": false,
|
| 234 |
+
"normalized": false,
|
| 235 |
+
"special": true
|
| 236 |
+
},
|
| 237 |
+
"150029": {
|
| 238 |
+
"content": "<|reserved_150029|>",
|
| 239 |
+
"single_word": false,
|
| 240 |
+
"lstrip": false,
|
| 241 |
+
"rstrip": false,
|
| 242 |
+
"normalized": false,
|
| 243 |
+
"special": true
|
| 244 |
+
},
|
| 245 |
+
"150030": {
|
| 246 |
+
"content": "<|reserved_150030|>",
|
| 247 |
+
"single_word": false,
|
| 248 |
+
"lstrip": false,
|
| 249 |
+
"rstrip": false,
|
| 250 |
+
"normalized": false,
|
| 251 |
+
"special": true
|
| 252 |
+
},
|
| 253 |
+
"150031": {
|
| 254 |
+
"content": "<|reserved_150031|>",
|
| 255 |
+
"single_word": false,
|
| 256 |
+
"lstrip": false,
|
| 257 |
+
"rstrip": false,
|
| 258 |
+
"normalized": false,
|
| 259 |
+
"special": true
|
| 260 |
+
},
|
| 261 |
+
"150032": {
|
| 262 |
+
"content": "<|reserved_150032|>",
|
| 263 |
+
"single_word": false,
|
| 264 |
+
"lstrip": false,
|
| 265 |
+
"rstrip": false,
|
| 266 |
+
"normalized": false,
|
| 267 |
+
"special": true
|
| 268 |
+
},
|
| 269 |
+
"150033": {
|
| 270 |
+
"content": "<|reserved_150033|>",
|
| 271 |
+
"single_word": false,
|
| 272 |
+
"lstrip": false,
|
| 273 |
+
"rstrip": false,
|
| 274 |
+
"normalized": false,
|
| 275 |
+
"special": true
|
| 276 |
+
},
|
| 277 |
+
"150034": {
|
| 278 |
+
"content": "<|reserved_150034|>",
|
| 279 |
+
"single_word": false,
|
| 280 |
+
"lstrip": false,
|
| 281 |
+
"rstrip": false,
|
| 282 |
+
"normalized": false,
|
| 283 |
+
"special": true
|
| 284 |
+
},
|
| 285 |
+
"150035": {
|
| 286 |
+
"content": "<|reserved_150035|>",
|
| 287 |
+
"single_word": false,
|
| 288 |
+
"lstrip": false,
|
| 289 |
+
"rstrip": false,
|
| 290 |
+
"normalized": false,
|
| 291 |
+
"special": true
|
| 292 |
+
},
|
| 293 |
+
"150036": {
|
| 294 |
+
"content": "<|reserved_150036|>",
|
| 295 |
+
"single_word": false,
|
| 296 |
+
"lstrip": false,
|
| 297 |
+
"rstrip": false,
|
| 298 |
+
"normalized": false,
|
| 299 |
+
"special": true
|
| 300 |
+
},
|
| 301 |
+
"150037": {
|
| 302 |
+
"content": "<|reserved_150037|>",
|
| 303 |
+
"single_word": false,
|
| 304 |
+
"lstrip": false,
|
| 305 |
+
"rstrip": false,
|
| 306 |
+
"normalized": false,
|
| 307 |
+
"special": true
|
| 308 |
+
},
|
| 309 |
+
"150038": {
|
| 310 |
+
"content": "<|reserved_150038|>",
|
| 311 |
+
"single_word": false,
|
| 312 |
+
"lstrip": false,
|
| 313 |
+
"rstrip": false,
|
| 314 |
+
"normalized": false,
|
| 315 |
+
"special": true
|
| 316 |
+
},
|
| 317 |
+
"150039": {
|
| 318 |
+
"content": "<|reserved_150039|>",
|
| 319 |
+
"single_word": false,
|
| 320 |
+
"lstrip": false,
|
| 321 |
+
"rstrip": false,
|
| 322 |
+
"normalized": false,
|
| 323 |
+
"special": true
|
| 324 |
+
},
|
| 325 |
+
"150040": {
|
| 326 |
+
"content": "<|reserved_150040|>",
|
| 327 |
+
"single_word": false,
|
| 328 |
+
"lstrip": false,
|
| 329 |
+
"rstrip": false,
|
| 330 |
+
"normalized": false,
|
| 331 |
+
"special": true
|
| 332 |
+
},
|
| 333 |
+
"150041": {
|
| 334 |
+
"content": "<|reserved_150041|>",
|
| 335 |
+
"single_word": false,
|
| 336 |
+
"lstrip": false,
|
| 337 |
+
"rstrip": false,
|
| 338 |
+
"normalized": false,
|
| 339 |
+
"special": true
|
| 340 |
+
},
|
| 341 |
+
"150042": {
|
| 342 |
+
"content": "<|reserved_150042|>",
|
| 343 |
+
"single_word": false,
|
| 344 |
+
"lstrip": false,
|
| 345 |
+
"rstrip": false,
|
| 346 |
+
"normalized": false,
|
| 347 |
+
"special": true
|
| 348 |
+
},
|
| 349 |
+
"150043": {
|
| 350 |
+
"content": "<|reserved_150043|>",
|
| 351 |
+
"single_word": false,
|
| 352 |
+
"lstrip": false,
|
| 353 |
+
"rstrip": false,
|
| 354 |
+
"normalized": false,
|
| 355 |
+
"special": true
|
| 356 |
+
},
|
| 357 |
+
"150044": {
|
| 358 |
+
"content": "<|reserved_150044|>",
|
| 359 |
+
"single_word": false,
|
| 360 |
+
"lstrip": false,
|
| 361 |
+
"rstrip": false,
|
| 362 |
+
"normalized": false,
|
| 363 |
+
"special": true
|
| 364 |
+
},
|
| 365 |
+
"150045": {
|
| 366 |
+
"content": "<|reserved_150045|>",
|
| 367 |
+
"single_word": false,
|
| 368 |
+
"lstrip": false,
|
| 369 |
+
"rstrip": false,
|
| 370 |
+
"normalized": false,
|
| 371 |
+
"special": true
|
| 372 |
+
},
|
| 373 |
+
"150046": {
|
| 374 |
+
"content": "<|reserved_150046|>",
|
| 375 |
+
"single_word": false,
|
| 376 |
+
"lstrip": false,
|
| 377 |
+
"rstrip": false,
|
| 378 |
+
"normalized": false,
|
| 379 |
+
"special": true
|
| 380 |
+
},
|
| 381 |
+
"150047": {
|
| 382 |
+
"content": "<|reserved_150047|>",
|
| 383 |
+
"single_word": false,
|
| 384 |
+
"lstrip": false,
|
| 385 |
+
"rstrip": false,
|
| 386 |
+
"normalized": false,
|
| 387 |
+
"special": true
|
| 388 |
+
},
|
| 389 |
+
"150048": {
|
| 390 |
+
"content": "<|reserved_150048|>",
|
| 391 |
+
"single_word": false,
|
| 392 |
+
"lstrip": false,
|
| 393 |
+
"rstrip": false,
|
| 394 |
+
"normalized": false,
|
| 395 |
+
"special": true
|
| 396 |
+
},
|
| 397 |
+
"150049": {
|
| 398 |
+
"content": "<|reserved_150049|>",
|
| 399 |
+
"single_word": false,
|
| 400 |
+
"lstrip": false,
|
| 401 |
+
"rstrip": false,
|
| 402 |
+
"normalized": false,
|
| 403 |
+
"special": true
|
| 404 |
+
},
|
| 405 |
+
"150050": {
|
| 406 |
+
"content": "<|reserved_150050|>",
|
| 407 |
+
"single_word": false,
|
| 408 |
+
"lstrip": false,
|
| 409 |
+
"rstrip": false,
|
| 410 |
+
"normalized": false,
|
| 411 |
+
"special": true
|
| 412 |
+
},
|
| 413 |
+
"150051": {
|
| 414 |
+
"content": "<|reserved_150051|>",
|
| 415 |
+
"single_word": false,
|
| 416 |
+
"lstrip": false,
|
| 417 |
+
"rstrip": false,
|
| 418 |
+
"normalized": false,
|
| 419 |
+
"special": true
|
| 420 |
+
},
|
| 421 |
+
"150052": {
|
| 422 |
+
"content": "<|reserved_150052|>",
|
| 423 |
+
"single_word": false,
|
| 424 |
+
"lstrip": false,
|
| 425 |
+
"rstrip": false,
|
| 426 |
+
"normalized": false,
|
| 427 |
+
"special": true
|
| 428 |
+
},
|
| 429 |
+
"150053": {
|
| 430 |
+
"content": "<|reserved_150053|>",
|
| 431 |
+
"single_word": false,
|
| 432 |
+
"lstrip": false,
|
| 433 |
+
"rstrip": false,
|
| 434 |
+
"normalized": false,
|
| 435 |
+
"special": true
|
| 436 |
+
},
|
| 437 |
+
"150054": {
|
| 438 |
+
"content": "<|reserved_150054|>",
|
| 439 |
+
"single_word": false,
|
| 440 |
+
"lstrip": false,
|
| 441 |
+
"rstrip": false,
|
| 442 |
+
"normalized": false,
|
| 443 |
+
"special": true
|
| 444 |
+
},
|
| 445 |
+
"150055": {
|
| 446 |
+
"content": "<|reserved_150055|>",
|
| 447 |
+
"single_word": false,
|
| 448 |
+
"lstrip": false,
|
| 449 |
+
"rstrip": false,
|
| 450 |
+
"normalized": false,
|
| 451 |
+
"special": true
|
| 452 |
+
},
|
| 453 |
+
"150056": {
|
| 454 |
+
"content": "<|reserved_150056|>",
|
| 455 |
+
"single_word": false,
|
| 456 |
+
"lstrip": false,
|
| 457 |
+
"rstrip": false,
|
| 458 |
+
"normalized": false,
|
| 459 |
+
"special": true
|
| 460 |
+
},
|
| 461 |
+
"150057": {
|
| 462 |
+
"content": "<|reserved_150057|>",
|
| 463 |
+
"single_word": false,
|
| 464 |
+
"lstrip": false,
|
| 465 |
+
"rstrip": false,
|
| 466 |
+
"normalized": false,
|
| 467 |
+
"special": true
|
| 468 |
+
},
|
| 469 |
+
"150058": {
|
| 470 |
+
"content": "<|reserved_150058|>",
|
| 471 |
+
"single_word": false,
|
| 472 |
+
"lstrip": false,
|
| 473 |
+
"rstrip": false,
|
| 474 |
+
"normalized": false,
|
| 475 |
+
"special": true
|
| 476 |
+
},
|
| 477 |
+
"150059": {
|
| 478 |
+
"content": "<|reserved_150059|>",
|
| 479 |
+
"single_word": false,
|
| 480 |
+
"lstrip": false,
|
| 481 |
+
"rstrip": false,
|
| 482 |
+
"normalized": false,
|
| 483 |
+
"special": true
|
| 484 |
+
},
|
| 485 |
+
"150060": {
|
| 486 |
+
"content": "<|reserved_150060|>",
|
| 487 |
+
"single_word": false,
|
| 488 |
+
"lstrip": false,
|
| 489 |
+
"rstrip": false,
|
| 490 |
+
"normalized": false,
|
| 491 |
+
"special": true
|
| 492 |
+
},
|
| 493 |
+
"150061": {
|
| 494 |
+
"content": "<|reserved_150061|>",
|
| 495 |
+
"single_word": false,
|
| 496 |
+
"lstrip": false,
|
| 497 |
+
"rstrip": false,
|
| 498 |
+
"normalized": false,
|
| 499 |
+
"special": true
|
| 500 |
+
},
|
| 501 |
+
"150062": {
|
| 502 |
+
"content": "<|reserved_150062|>",
|
| 503 |
+
"single_word": false,
|
| 504 |
+
"lstrip": false,
|
| 505 |
+
"rstrip": false,
|
| 506 |
+
"normalized": false,
|
| 507 |
+
"special": true
|
| 508 |
+
},
|
| 509 |
+
"150063": {
|
| 510 |
+
"content": "<|reserved_150063|>",
|
| 511 |
+
"single_word": false,
|
| 512 |
+
"lstrip": false,
|
| 513 |
+
"rstrip": false,
|
| 514 |
+
"normalized": false,
|
| 515 |
+
"special": true
|
| 516 |
+
},
|
| 517 |
+
"150064": {
|
| 518 |
+
"content": "<|reserved_150064|>",
|
| 519 |
+
"single_word": false,
|
| 520 |
+
"lstrip": false,
|
| 521 |
+
"rstrip": false,
|
| 522 |
+
"normalized": false,
|
| 523 |
+
"special": true
|
| 524 |
+
},
|
| 525 |
+
"150065": {
|
| 526 |
+
"content": "<|reserved_150065|>",
|
| 527 |
+
"single_word": false,
|
| 528 |
+
"lstrip": false,
|
| 529 |
+
"rstrip": false,
|
| 530 |
+
"normalized": false,
|
| 531 |
+
"special": true
|
| 532 |
+
},
|
| 533 |
+
"150066": {
|
| 534 |
+
"content": "<|reserved_150066|>",
|
| 535 |
+
"single_word": false,
|
| 536 |
+
"lstrip": false,
|
| 537 |
+
"rstrip": false,
|
| 538 |
+
"normalized": false,
|
| 539 |
+
"special": true
|
| 540 |
+
},
|
| 541 |
+
"150067": {
|
| 542 |
+
"content": "<|reserved_150067|>",
|
| 543 |
+
"single_word": false,
|
| 544 |
+
"lstrip": false,
|
| 545 |
+
"rstrip": false,
|
| 546 |
+
"normalized": false,
|
| 547 |
+
"special": true
|
| 548 |
+
},
|
| 549 |
+
"150068": {
|
| 550 |
+
"content": "<|reserved_150068|>",
|
| 551 |
+
"single_word": false,
|
| 552 |
+
"lstrip": false,
|
| 553 |
+
"rstrip": false,
|
| 554 |
+
"normalized": false,
|
| 555 |
+
"special": true
|
| 556 |
+
},
|
| 557 |
+
"150069": {
|
| 558 |
+
"content": "<|reserved_150069|>",
|
| 559 |
+
"single_word": false,
|
| 560 |
+
"lstrip": false,
|
| 561 |
+
"rstrip": false,
|
| 562 |
+
"normalized": false,
|
| 563 |
+
"special": true
|
| 564 |
+
},
|
| 565 |
+
"150070": {
|
| 566 |
+
"content": "<|reserved_150070|>",
|
| 567 |
+
"single_word": false,
|
| 568 |
+
"lstrip": false,
|
| 569 |
+
"rstrip": false,
|
| 570 |
+
"normalized": false,
|
| 571 |
+
"special": true
|
| 572 |
+
},
|
| 573 |
+
"150071": {
|
| 574 |
+
"content": "<|reserved_150071|>",
|
| 575 |
+
"single_word": false,
|
| 576 |
+
"lstrip": false,
|
| 577 |
+
"rstrip": false,
|
| 578 |
+
"normalized": false,
|
| 579 |
+
"special": true
|
| 580 |
+
},
|
| 581 |
+
"150072": {
|
| 582 |
+
"content": "<|reserved_150072|>",
|
| 583 |
+
"single_word": false,
|
| 584 |
+
"lstrip": false,
|
| 585 |
+
"rstrip": false,
|
| 586 |
+
"normalized": false,
|
| 587 |
+
"special": true
|
| 588 |
+
},
|
| 589 |
+
"150073": {
|
| 590 |
+
"content": "<|reserved_150073|>",
|
| 591 |
+
"single_word": false,
|
| 592 |
+
"lstrip": false,
|
| 593 |
+
"rstrip": false,
|
| 594 |
+
"normalized": false,
|
| 595 |
+
"special": true
|
| 596 |
+
},
|
| 597 |
+
"150074": {
|
| 598 |
+
"content": "<|reserved_150074|>",
|
| 599 |
+
"single_word": false,
|
| 600 |
+
"lstrip": false,
|
| 601 |
+
"rstrip": false,
|
| 602 |
+
"normalized": false,
|
| 603 |
+
"special": true
|
| 604 |
+
},
|
| 605 |
+
"150075": {
|
| 606 |
+
"content": "<|reserved_150075|>",
|
| 607 |
+
"single_word": false,
|
| 608 |
+
"lstrip": false,
|
| 609 |
+
"rstrip": false,
|
| 610 |
+
"normalized": false,
|
| 611 |
+
"special": true
|
| 612 |
+
},
|
| 613 |
+
"150076": {
|
| 614 |
+
"content": "<|reserved_150076|>",
|
| 615 |
+
"single_word": false,
|
| 616 |
+
"lstrip": false,
|
| 617 |
+
"rstrip": false,
|
| 618 |
+
"normalized": false,
|
| 619 |
+
"special": true
|
| 620 |
+
},
|
| 621 |
+
"150077": {
|
| 622 |
+
"content": "<|reserved_150077|>",
|
| 623 |
+
"single_word": false,
|
| 624 |
+
"lstrip": false,
|
| 625 |
+
"rstrip": false,
|
| 626 |
+
"normalized": false,
|
| 627 |
+
"special": true
|
| 628 |
+
},
|
| 629 |
+
"150078": {
|
| 630 |
+
"content": "<|reserved_150078|>",
|
| 631 |
+
"single_word": false,
|
| 632 |
+
"lstrip": false,
|
| 633 |
+
"rstrip": false,
|
| 634 |
+
"normalized": false,
|
| 635 |
+
"special": true
|
| 636 |
+
},
|
| 637 |
+
"150079": {
|
| 638 |
+
"content": "<|reserved_150079|>",
|
| 639 |
+
"single_word": false,
|
| 640 |
+
"lstrip": false,
|
| 641 |
+
"rstrip": false,
|
| 642 |
+
"normalized": false,
|
| 643 |
+
"special": true
|
| 644 |
+
},
|
| 645 |
+
"150080": {
|
| 646 |
+
"content": "<|reserved_150080|>",
|
| 647 |
+
"single_word": false,
|
| 648 |
+
"lstrip": false,
|
| 649 |
+
"rstrip": false,
|
| 650 |
+
"normalized": false,
|
| 651 |
+
"special": true
|
| 652 |
+
},
|
| 653 |
+
"150081": {
|
| 654 |
+
"content": "<|reserved_150081|>",
|
| 655 |
+
"single_word": false,
|
| 656 |
+
"lstrip": false,
|
| 657 |
+
"rstrip": false,
|
| 658 |
+
"normalized": false,
|
| 659 |
+
"special": true
|
| 660 |
+
},
|
| 661 |
+
"150082": {
|
| 662 |
+
"content": "<|reserved_150082|>",
|
| 663 |
+
"single_word": false,
|
| 664 |
+
"lstrip": false,
|
| 665 |
+
"rstrip": false,
|
| 666 |
+
"normalized": false,
|
| 667 |
+
"special": true
|
| 668 |
+
},
|
| 669 |
+
"150083": {
|
| 670 |
+
"content": "<|reserved_150083|>",
|
| 671 |
+
"single_word": false,
|
| 672 |
+
"lstrip": false,
|
| 673 |
+
"rstrip": false,
|
| 674 |
+
"normalized": false,
|
| 675 |
+
"special": true
|
| 676 |
+
},
|
| 677 |
+
"150084": {
|
| 678 |
+
"content": "<|reserved_150084|>",
|
| 679 |
+
"single_word": false,
|
| 680 |
+
"lstrip": false,
|
| 681 |
+
"rstrip": false,
|
| 682 |
+
"normalized": false,
|
| 683 |
+
"special": true
|
| 684 |
+
},
|
| 685 |
+
"150085": {
|
| 686 |
+
"content": "<|reserved_150085|>",
|
| 687 |
+
"single_word": false,
|
| 688 |
+
"lstrip": false,
|
| 689 |
+
"rstrip": false,
|
| 690 |
+
"normalized": false,
|
| 691 |
+
"special": true
|
| 692 |
+
},
|
| 693 |
+
"150086": {
|
| 694 |
+
"content": "<|reserved_150086|>",
|
| 695 |
+
"single_word": false,
|
| 696 |
+
"lstrip": false,
|
| 697 |
+
"rstrip": false,
|
| 698 |
+
"normalized": false,
|
| 699 |
+
"special": true
|
| 700 |
+
},
|
| 701 |
+
"150087": {
|
| 702 |
+
"content": "<|reserved_150087|>",
|
| 703 |
+
"single_word": false,
|
| 704 |
+
"lstrip": false,
|
| 705 |
+
"rstrip": false,
|
| 706 |
+
"normalized": false,
|
| 707 |
+
"special": true
|
| 708 |
+
},
|
| 709 |
+
"150088": {
|
| 710 |
+
"content": "<|reserved_150088|>",
|
| 711 |
+
"single_word": false,
|
| 712 |
+
"lstrip": false,
|
| 713 |
+
"rstrip": false,
|
| 714 |
+
"normalized": false,
|
| 715 |
+
"special": true
|
| 716 |
+
},
|
| 717 |
+
"150089": {
|
| 718 |
+
"content": "<|reserved_150089|>",
|
| 719 |
+
"single_word": false,
|
| 720 |
+
"lstrip": false,
|
| 721 |
+
"rstrip": false,
|
| 722 |
+
"normalized": false,
|
| 723 |
+
"special": true
|
| 724 |
+
},
|
| 725 |
+
"150090": {
|
| 726 |
+
"content": "<|reserved_150090|>",
|
| 727 |
+
"single_word": false,
|
| 728 |
+
"lstrip": false,
|
| 729 |
+
"rstrip": false,
|
| 730 |
+
"normalized": false,
|
| 731 |
+
"special": true
|
| 732 |
+
},
|
| 733 |
+
"150091": {
|
| 734 |
+
"content": "<|reserved_150091|>",
|
| 735 |
+
"single_word": false,
|
| 736 |
+
"lstrip": false,
|
| 737 |
+
"rstrip": false,
|
| 738 |
+
"normalized": false,
|
| 739 |
+
"special": true
|
| 740 |
+
},
|
| 741 |
+
"150092": {
|
| 742 |
+
"content": "<|reserved_150092|>",
|
| 743 |
+
"single_word": false,
|
| 744 |
+
"lstrip": false,
|
| 745 |
+
"rstrip": false,
|
| 746 |
+
"normalized": false,
|
| 747 |
+
"special": true
|
| 748 |
+
},
|
| 749 |
+
"150093": {
|
| 750 |
+
"content": "<|reserved_150093|>",
|
| 751 |
+
"single_word": false,
|
| 752 |
+
"lstrip": false,
|
| 753 |
+
"rstrip": false,
|
| 754 |
+
"normalized": false,
|
| 755 |
+
"special": true
|
| 756 |
+
},
|
| 757 |
+
"150094": {
|
| 758 |
+
"content": "<|reserved_150094|>",
|
| 759 |
+
"single_word": false,
|
| 760 |
+
"lstrip": false,
|
| 761 |
+
"rstrip": false,
|
| 762 |
+
"normalized": false,
|
| 763 |
+
"special": true
|
| 764 |
+
},
|
| 765 |
+
"150095": {
|
| 766 |
+
"content": "<|reserved_150095|>",
|
| 767 |
+
"single_word": false,
|
| 768 |
+
"lstrip": false,
|
| 769 |
+
"rstrip": false,
|
| 770 |
+
"normalized": false,
|
| 771 |
+
"special": true
|
| 772 |
+
},
|
| 773 |
+
"150096": {
|
| 774 |
+
"content": "<|reserved_150096|>",
|
| 775 |
+
"single_word": false,
|
| 776 |
+
"lstrip": false,
|
| 777 |
+
"rstrip": false,
|
| 778 |
+
"normalized": false,
|
| 779 |
+
"special": true
|
| 780 |
+
},
|
| 781 |
+
"150097": {
|
| 782 |
+
"content": "<|reserved_150097|>",
|
| 783 |
+
"single_word": false,
|
| 784 |
+
"lstrip": false,
|
| 785 |
+
"rstrip": false,
|
| 786 |
+
"normalized": false,
|
| 787 |
+
"special": true
|
| 788 |
+
},
|
| 789 |
+
"150098": {
|
| 790 |
+
"content": "<|reserved_150098|>",
|
| 791 |
+
"single_word": false,
|
| 792 |
+
"lstrip": false,
|
| 793 |
+
"rstrip": false,
|
| 794 |
+
"normalized": false,
|
| 795 |
+
"special": true
|
| 796 |
+
},
|
| 797 |
+
"150099": {
|
| 798 |
+
"content": "<|reserved_150099|>",
|
| 799 |
+
"single_word": false,
|
| 800 |
+
"lstrip": false,
|
| 801 |
+
"rstrip": false,
|
| 802 |
+
"normalized": false,
|
| 803 |
+
"special": true
|
| 804 |
+
},
|
| 805 |
+
"150100": {
|
| 806 |
+
"content": "<|reserved_150100|>",
|
| 807 |
+
"single_word": false,
|
| 808 |
+
"lstrip": false,
|
| 809 |
+
"rstrip": false,
|
| 810 |
+
"normalized": false,
|
| 811 |
+
"special": true
|
| 812 |
+
},
|
| 813 |
+
"150101": {
|
| 814 |
+
"content": "<|reserved_150101|>",
|
| 815 |
+
"single_word": false,
|
| 816 |
+
"lstrip": false,
|
| 817 |
+
"rstrip": false,
|
| 818 |
+
"normalized": false,
|
| 819 |
+
"special": true
|
| 820 |
+
},
|
| 821 |
+
"150102": {
|
| 822 |
+
"content": "<|reserved_150102|>",
|
| 823 |
+
"single_word": false,
|
| 824 |
+
"lstrip": false,
|
| 825 |
+
"rstrip": false,
|
| 826 |
+
"normalized": false,
|
| 827 |
+
"special": true
|
| 828 |
+
},
|
| 829 |
+
"150103": {
|
| 830 |
+
"content": "<|reserved_150103|>",
|
| 831 |
+
"single_word": false,
|
| 832 |
+
"lstrip": false,
|
| 833 |
+
"rstrip": false,
|
| 834 |
+
"normalized": false,
|
| 835 |
+
"special": true
|
| 836 |
+
},
|
| 837 |
+
"150104": {
|
| 838 |
+
"content": "<|reserved_150104|>",
|
| 839 |
+
"single_word": false,
|
| 840 |
+
"lstrip": false,
|
| 841 |
+
"rstrip": false,
|
| 842 |
+
"normalized": false,
|
| 843 |
+
"special": true
|
| 844 |
+
},
|
| 845 |
+
"150105": {
|
| 846 |
+
"content": "<|reserved_150105|>",
|
| 847 |
+
"single_word": false,
|
| 848 |
+
"lstrip": false,
|
| 849 |
+
"rstrip": false,
|
| 850 |
+
"normalized": false,
|
| 851 |
+
"special": true
|
| 852 |
+
},
|
| 853 |
+
"150106": {
|
| 854 |
+
"content": "<|reserved_150106|>",
|
| 855 |
+
"single_word": false,
|
| 856 |
+
"lstrip": false,
|
| 857 |
+
"rstrip": false,
|
| 858 |
+
"normalized": false,
|
| 859 |
+
"special": true
|
| 860 |
+
},
|
| 861 |
+
"150107": {
|
| 862 |
+
"content": "<|reserved_150107|>",
|
| 863 |
+
"single_word": false,
|
| 864 |
+
"lstrip": false,
|
| 865 |
+
"rstrip": false,
|
| 866 |
+
"normalized": false,
|
| 867 |
+
"special": true
|
| 868 |
+
},
|
| 869 |
+
"150108": {
|
| 870 |
+
"content": "<|reserved_150108|>",
|
| 871 |
+
"single_word": false,
|
| 872 |
+
"lstrip": false,
|
| 873 |
+
"rstrip": false,
|
| 874 |
+
"normalized": false,
|
| 875 |
+
"special": true
|
| 876 |
+
},
|
| 877 |
+
"150109": {
|
| 878 |
+
"content": "<|reserved_150109|>",
|
| 879 |
+
"single_word": false,
|
| 880 |
+
"lstrip": false,
|
| 881 |
+
"rstrip": false,
|
| 882 |
+
"normalized": false,
|
| 883 |
+
"special": true
|
| 884 |
+
},
|
| 885 |
+
"150110": {
|
| 886 |
+
"content": "<|reserved_150110|>",
|
| 887 |
+
"single_word": false,
|
| 888 |
+
"lstrip": false,
|
| 889 |
+
"rstrip": false,
|
| 890 |
+
"normalized": false,
|
| 891 |
+
"special": true
|
| 892 |
+
},
|
| 893 |
+
"150111": {
|
| 894 |
+
"content": "<|reserved_150111|>",
|
| 895 |
+
"single_word": false,
|
| 896 |
+
"lstrip": false,
|
| 897 |
+
"rstrip": false,
|
| 898 |
+
"normalized": false,
|
| 899 |
+
"special": true
|
| 900 |
+
},
|
| 901 |
+
"150112": {
|
| 902 |
+
"content": "<|reserved_150112|>",
|
| 903 |
+
"single_word": false,
|
| 904 |
+
"lstrip": false,
|
| 905 |
+
"rstrip": false,
|
| 906 |
+
"normalized": false,
|
| 907 |
+
"special": true
|
| 908 |
+
},
|
| 909 |
+
"150113": {
|
| 910 |
+
"content": "<|reserved_150113|>",
|
| 911 |
+
"single_word": false,
|
| 912 |
+
"lstrip": false,
|
| 913 |
+
"rstrip": false,
|
| 914 |
+
"normalized": false,
|
| 915 |
+
"special": true
|
| 916 |
+
},
|
| 917 |
+
"150114": {
|
| 918 |
+
"content": "<|reserved_150114|>",
|
| 919 |
+
"single_word": false,
|
| 920 |
+
"lstrip": false,
|
| 921 |
+
"rstrip": false,
|
| 922 |
+
"normalized": false,
|
| 923 |
+
"special": true
|
| 924 |
+
},
|
| 925 |
+
"150115": {
|
| 926 |
+
"content": "<|reserved_150115|>",
|
| 927 |
+
"single_word": false,
|
| 928 |
+
"lstrip": false,
|
| 929 |
+
"rstrip": false,
|
| 930 |
+
"normalized": false,
|
| 931 |
+
"special": true
|
| 932 |
+
},
|
| 933 |
+
"150116": {
|
| 934 |
+
"content": "<|reserved_150116|>",
|
| 935 |
+
"single_word": false,
|
| 936 |
+
"lstrip": false,
|
| 937 |
+
"rstrip": false,
|
| 938 |
+
"normalized": false,
|
| 939 |
+
"special": true
|
| 940 |
+
},
|
| 941 |
+
"150117": {
|
| 942 |
+
"content": "<|reserved_150117|>",
|
| 943 |
+
"single_word": false,
|
| 944 |
+
"lstrip": false,
|
| 945 |
+
"rstrip": false,
|
| 946 |
+
"normalized": false,
|
| 947 |
+
"special": true
|
| 948 |
+
},
|
| 949 |
+
"150118": {
|
| 950 |
+
"content": "<|reserved_150118|>",
|
| 951 |
+
"single_word": false,
|
| 952 |
+
"lstrip": false,
|
| 953 |
+
"rstrip": false,
|
| 954 |
+
"normalized": false,
|
| 955 |
+
"special": true
|
| 956 |
+
},
|
| 957 |
+
"150119": {
|
| 958 |
+
"content": "<|reserved_150119|>",
|
| 959 |
+
"single_word": false,
|
| 960 |
+
"lstrip": false,
|
| 961 |
+
"rstrip": false,
|
| 962 |
+
"normalized": false,
|
| 963 |
+
"special": true
|
| 964 |
+
},
|
| 965 |
+
"150120": {
|
| 966 |
+
"content": "<|reserved_150120|>",
|
| 967 |
+
"single_word": false,
|
| 968 |
+
"lstrip": false,
|
| 969 |
+
"rstrip": false,
|
| 970 |
+
"normalized": false,
|
| 971 |
+
"special": true
|
| 972 |
+
},
|
| 973 |
+
"150121": {
|
| 974 |
+
"content": "<|reserved_150121|>",
|
| 975 |
+
"single_word": false,
|
| 976 |
+
"lstrip": false,
|
| 977 |
+
"rstrip": false,
|
| 978 |
+
"normalized": false,
|
| 979 |
+
"special": true
|
| 980 |
+
},
|
| 981 |
+
"150122": {
|
| 982 |
+
"content": "<|reserved_150122|>",
|
| 983 |
+
"single_word": false,
|
| 984 |
+
"lstrip": false,
|
| 985 |
+
"rstrip": false,
|
| 986 |
+
"normalized": false,
|
| 987 |
+
"special": true
|
| 988 |
+
},
|
| 989 |
+
"150123": {
|
| 990 |
+
"content": "<|reserved_150123|>",
|
| 991 |
+
"single_word": false,
|
| 992 |
+
"lstrip": false,
|
| 993 |
+
"rstrip": false,
|
| 994 |
+
"normalized": false,
|
| 995 |
+
"special": true
|
| 996 |
+
},
|
| 997 |
+
"150124": {
|
| 998 |
+
"content": "<|reserved_150124|>",
|
| 999 |
+
"single_word": false,
|
| 1000 |
+
"lstrip": false,
|
| 1001 |
+
"rstrip": false,
|
| 1002 |
+
"normalized": false,
|
| 1003 |
+
"special": true
|
| 1004 |
+
},
|
| 1005 |
+
"150125": {
|
| 1006 |
+
"content": "<|reserved_150125|>",
|
| 1007 |
+
"single_word": false,
|
| 1008 |
+
"lstrip": false,
|
| 1009 |
+
"rstrip": false,
|
| 1010 |
+
"normalized": false,
|
| 1011 |
+
"special": true
|
| 1012 |
+
},
|
| 1013 |
+
"150126": {
|
| 1014 |
+
"content": "<|reserved_150126|>",
|
| 1015 |
+
"single_word": false,
|
| 1016 |
+
"lstrip": false,
|
| 1017 |
+
"rstrip": false,
|
| 1018 |
+
"normalized": false,
|
| 1019 |
+
"special": true
|
| 1020 |
+
},
|
| 1021 |
+
"150127": {
|
| 1022 |
+
"content": "<|reserved_150127|>",
|
| 1023 |
+
"single_word": false,
|
| 1024 |
+
"lstrip": false,
|
| 1025 |
+
"rstrip": false,
|
| 1026 |
+
"normalized": false,
|
| 1027 |
+
"special": true
|
| 1028 |
+
},
|
| 1029 |
+
"150128": {
|
| 1030 |
+
"content": "<|reserved_150128|>",
|
| 1031 |
+
"single_word": false,
|
| 1032 |
+
"lstrip": false,
|
| 1033 |
+
"rstrip": false,
|
| 1034 |
+
"normalized": false,
|
| 1035 |
+
"special": true
|
| 1036 |
+
},
|
| 1037 |
+
"150129": {
|
| 1038 |
+
"content": "<|reserved_150129|>",
|
| 1039 |
+
"single_word": false,
|
| 1040 |
+
"lstrip": false,
|
| 1041 |
+
"rstrip": false,
|
| 1042 |
+
"normalized": false,
|
| 1043 |
+
"special": true
|
| 1044 |
+
},
|
| 1045 |
+
"150130": {
|
| 1046 |
+
"content": "<|reserved_150130|>",
|
| 1047 |
+
"single_word": false,
|
| 1048 |
+
"lstrip": false,
|
| 1049 |
+
"rstrip": false,
|
| 1050 |
+
"normalized": false,
|
| 1051 |
+
"special": true
|
| 1052 |
+
},
|
| 1053 |
+
"150131": {
|
| 1054 |
+
"content": "<|reserved_150131|>",
|
| 1055 |
+
"single_word": false,
|
| 1056 |
+
"lstrip": false,
|
| 1057 |
+
"rstrip": false,
|
| 1058 |
+
"normalized": false,
|
| 1059 |
+
"special": true
|
| 1060 |
+
},
|
| 1061 |
+
"150132": {
|
| 1062 |
+
"content": "<|reserved_150132|>",
|
| 1063 |
+
"single_word": false,
|
| 1064 |
+
"lstrip": false,
|
| 1065 |
+
"rstrip": false,
|
| 1066 |
+
"normalized": false,
|
| 1067 |
+
"special": true
|
| 1068 |
+
},
|
| 1069 |
+
"150133": {
|
| 1070 |
+
"content": "<|reserved_150133|>",
|
| 1071 |
+
"single_word": false,
|
| 1072 |
+
"lstrip": false,
|
| 1073 |
+
"rstrip": false,
|
| 1074 |
+
"normalized": false,
|
| 1075 |
+
"special": true
|
| 1076 |
+
},
|
| 1077 |
+
"150134": {
|
| 1078 |
+
"content": "<|reserved_150134|>",
|
| 1079 |
+
"single_word": false,
|
| 1080 |
+
"lstrip": false,
|
| 1081 |
+
"rstrip": false,
|
| 1082 |
+
"normalized": false,
|
| 1083 |
+
"special": true
|
| 1084 |
+
},
|
| 1085 |
+
"150135": {
|
| 1086 |
+
"content": "<|reserved_150135|>",
|
| 1087 |
+
"single_word": false,
|
| 1088 |
+
"lstrip": false,
|
| 1089 |
+
"rstrip": false,
|
| 1090 |
+
"normalized": false,
|
| 1091 |
+
"special": true
|
| 1092 |
+
},
|
| 1093 |
+
"150136": {
|
| 1094 |
+
"content": "<|reserved_150136|>",
|
| 1095 |
+
"single_word": false,
|
| 1096 |
+
"lstrip": false,
|
| 1097 |
+
"rstrip": false,
|
| 1098 |
+
"normalized": false,
|
| 1099 |
+
"special": true
|
| 1100 |
+
},
|
| 1101 |
+
"150137": {
|
| 1102 |
+
"content": "<|reserved_150137|>",
|
| 1103 |
+
"single_word": false,
|
| 1104 |
+
"lstrip": false,
|
| 1105 |
+
"rstrip": false,
|
| 1106 |
+
"normalized": false,
|
| 1107 |
+
"special": true
|
| 1108 |
+
},
|
| 1109 |
+
"150138": {
|
| 1110 |
+
"content": "<|reserved_150138|>",
|
| 1111 |
+
"single_word": false,
|
| 1112 |
+
"lstrip": false,
|
| 1113 |
+
"rstrip": false,
|
| 1114 |
+
"normalized": false,
|
| 1115 |
+
"special": true
|
| 1116 |
+
},
|
| 1117 |
+
"150139": {
|
| 1118 |
+
"content": "<|reserved_150139|>",
|
| 1119 |
+
"single_word": false,
|
| 1120 |
+
"lstrip": false,
|
| 1121 |
+
"rstrip": false,
|
| 1122 |
+
"normalized": false,
|
| 1123 |
+
"special": true
|
| 1124 |
+
},
|
| 1125 |
+
"150140": {
|
| 1126 |
+
"content": "<|reserved_150140|>",
|
| 1127 |
+
"single_word": false,
|
| 1128 |
+
"lstrip": false,
|
| 1129 |
+
"rstrip": false,
|
| 1130 |
+
"normalized": false,
|
| 1131 |
+
"special": true
|
| 1132 |
+
},
|
| 1133 |
+
"150141": {
|
| 1134 |
+
"content": "<|reserved_150141|>",
|
| 1135 |
+
"single_word": false,
|
| 1136 |
+
"lstrip": false,
|
| 1137 |
+
"rstrip": false,
|
| 1138 |
+
"normalized": false,
|
| 1139 |
+
"special": true
|
| 1140 |
+
},
|
| 1141 |
+
"150142": {
|
| 1142 |
+
"content": "<|reserved_150142|>",
|
| 1143 |
+
"single_word": false,
|
| 1144 |
+
"lstrip": false,
|
| 1145 |
+
"rstrip": false,
|
| 1146 |
+
"normalized": false,
|
| 1147 |
+
"special": true
|
| 1148 |
+
},
|
| 1149 |
+
"150143": {
|
| 1150 |
+
"content": "<|reserved_150143|>",
|
| 1151 |
+
"single_word": false,
|
| 1152 |
+
"lstrip": false,
|
| 1153 |
+
"rstrip": false,
|
| 1154 |
+
"normalized": false,
|
| 1155 |
+
"special": true
|
| 1156 |
+
}
|
| 1157 |
+
},
|
| 1158 |
+
"additional_special_tokens": [
|
| 1159 |
+
"<|system|>",
|
| 1160 |
+
"<|user|>",
|
| 1161 |
+
"<|assistant|>",
|
| 1162 |
+
"<|observation|>",
|
| 1163 |
+
"<|developer|>",
|
| 1164 |
+
"<|reserved_150019|>",
|
| 1165 |
+
"<|reserved_150020|>",
|
| 1166 |
+
"<|reserved_150021|>",
|
| 1167 |
+
"<|reserved_150022|>",
|
| 1168 |
+
"<|reserved_150023|>",
|
| 1169 |
+
"<|reserved_150024|>",
|
| 1170 |
+
"<|reserved_150025|>",
|
| 1171 |
+
"<|reserved_150026|>",
|
| 1172 |
+
"<|reserved_150027|>",
|
| 1173 |
+
"<|reserved_150028|>",
|
| 1174 |
+
"<|reserved_150029|>",
|
| 1175 |
+
"<|reserved_150030|>",
|
| 1176 |
+
"<|reserved_150031|>",
|
| 1177 |
+
"<|reserved_150032|>",
|
| 1178 |
+
"<|reserved_150033|>",
|
| 1179 |
+
"<|reserved_150034|>",
|
| 1180 |
+
"<|reserved_150035|>",
|
| 1181 |
+
"<|reserved_150036|>",
|
| 1182 |
+
"<|reserved_150037|>",
|
| 1183 |
+
"<|reserved_150038|>",
|
| 1184 |
+
"<|reserved_150039|>",
|
| 1185 |
+
"<|reserved_150040|>",
|
| 1186 |
+
"<|reserved_150041|>",
|
| 1187 |
+
"<|reserved_150042|>",
|
| 1188 |
+
"<|reserved_150043|>",
|
| 1189 |
+
"<|reserved_150044|>",
|
| 1190 |
+
"<|reserved_150045|>",
|
| 1191 |
+
"<|reserved_150046|>",
|
| 1192 |
+
"<|reserved_150047|>",
|
| 1193 |
+
"<|reserved_150048|>",
|
| 1194 |
+
"<|reserved_150049|>",
|
| 1195 |
+
"<|reserved_150050|>",
|
| 1196 |
+
"<|reserved_150051|>",
|
| 1197 |
+
"<|reserved_150052|>",
|
| 1198 |
+
"<|reserved_150053|>",
|
| 1199 |
+
"<|reserved_150054|>",
|
| 1200 |
+
"<|reserved_150055|>",
|
| 1201 |
+
"<|reserved_150056|>",
|
| 1202 |
+
"<|reserved_150057|>",
|
| 1203 |
+
"<|reserved_150058|>",
|
| 1204 |
+
"<|reserved_150059|>",
|
| 1205 |
+
"<|reserved_150060|>",
|
| 1206 |
+
"<|reserved_150061|>",
|
| 1207 |
+
"<|reserved_150062|>",
|
| 1208 |
+
"<|reserved_150063|>",
|
| 1209 |
+
"<|reserved_150064|>",
|
| 1210 |
+
"<|reserved_150065|>",
|
| 1211 |
+
"<|reserved_150066|>",
|
| 1212 |
+
"<|reserved_150067|>",
|
| 1213 |
+
"<|reserved_150068|>",
|
| 1214 |
+
"<|reserved_150069|>",
|
| 1215 |
+
"<|reserved_150070|>",
|
| 1216 |
+
"<|reserved_150071|>",
|
| 1217 |
+
"<|reserved_150072|>",
|
| 1218 |
+
"<|reserved_150073|>",
|
| 1219 |
+
"<|reserved_150074|>",
|
| 1220 |
+
"<|reserved_150075|>",
|
| 1221 |
+
"<|reserved_150076|>",
|
| 1222 |
+
"<|reserved_150077|>",
|
| 1223 |
+
"<|reserved_150078|>",
|
| 1224 |
+
"<|reserved_150079|>",
|
| 1225 |
+
"<|reserved_150080|>",
|
| 1226 |
+
"<|reserved_150081|>",
|
| 1227 |
+
"<|reserved_150082|>",
|
| 1228 |
+
"<|reserved_150083|>",
|
| 1229 |
+
"<|reserved_150084|>",
|
| 1230 |
+
"<|reserved_150085|>",
|
| 1231 |
+
"<|reserved_150086|>",
|
| 1232 |
+
"<|reserved_150087|>",
|
| 1233 |
+
"<|reserved_150088|>",
|
| 1234 |
+
"<|reserved_150089|>",
|
| 1235 |
+
"<|reserved_150090|>",
|
| 1236 |
+
"<|reserved_150091|>",
|
| 1237 |
+
"<|reserved_150092|>",
|
| 1238 |
+
"<|reserved_150093|>",
|
| 1239 |
+
"<|reserved_150094|>",
|
| 1240 |
+
"<|reserved_150095|>",
|
| 1241 |
+
"<|reserved_150096|>",
|
| 1242 |
+
"<|reserved_150097|>",
|
| 1243 |
+
"<|reserved_150098|>",
|
| 1244 |
+
"<|reserved_150099|>",
|
| 1245 |
+
"<|reserved_150100|>",
|
| 1246 |
+
"<|reserved_150101|>",
|
| 1247 |
+
"<|reserved_150102|>",
|
| 1248 |
+
"<|reserved_150103|>",
|
| 1249 |
+
"<|reserved_150104|>",
|
| 1250 |
+
"<|reserved_150105|>",
|
| 1251 |
+
"<|reserved_150106|>",
|
| 1252 |
+
"<|reserved_150107|>",
|
| 1253 |
+
"<|reserved_150108|>",
|
| 1254 |
+
"<|reserved_150109|>",
|
| 1255 |
+
"<|reserved_150110|>",
|
| 1256 |
+
"<|reserved_150111|>",
|
| 1257 |
+
"<|reserved_150112|>",
|
| 1258 |
+
"<|reserved_150113|>",
|
| 1259 |
+
"<|reserved_150114|>",
|
| 1260 |
+
"<|reserved_150115|>",
|
| 1261 |
+
"<|reserved_150116|>",
|
| 1262 |
+
"<|reserved_150117|>",
|
| 1263 |
+
"<|reserved_150118|>",
|
| 1264 |
+
"<|reserved_150119|>",
|
| 1265 |
+
"<|reserved_150120|>",
|
| 1266 |
+
"<|reserved_150121|>",
|
| 1267 |
+
"<|reserved_150122|>",
|
| 1268 |
+
"<|reserved_150123|>",
|
| 1269 |
+
"<|reserved_150124|>",
|
| 1270 |
+
"<|reserved_150125|>",
|
| 1271 |
+
"<|reserved_150126|>",
|
| 1272 |
+
"<|reserved_150127|>",
|
| 1273 |
+
"<|reserved_150128|>",
|
| 1274 |
+
"<|reserved_150129|>",
|
| 1275 |
+
"<|reserved_150130|>",
|
| 1276 |
+
"<|reserved_150131|>",
|
| 1277 |
+
"<|reserved_150132|>",
|
| 1278 |
+
"<|reserved_150133|>",
|
| 1279 |
+
"<|reserved_150134|>",
|
| 1280 |
+
"<|reserved_150135|>",
|
| 1281 |
+
"<|reserved_150136|>",
|
| 1282 |
+
"<|reserved_150137|>",
|
| 1283 |
+
"<|reserved_150138|>",
|
| 1284 |
+
"<|reserved_150139|>",
|
| 1285 |
+
"<|reserved_150140|>",
|
| 1286 |
+
"<|reserved_150141|>",
|
| 1287 |
+
"<|reserved_150142|>",
|
| 1288 |
+
"<|reserved_150143|>"
|
| 1289 |
+
],
|
| 1290 |
+
"bos_token": "<|begin_of_text|>",
|
| 1291 |
+
"clean_up_tokenization_spaces": false,
|
| 1292 |
+
"eos_token": "<|end_of_text|>",
|
| 1293 |
+
"model_max_length": 262144,
|
| 1294 |
+
"tokenizer_class": "PreTrainedTokenizerFast"
|
| 1295 |
+
}
|