Instructions to use opencerebral/Boris-2-Think-Instruct with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use opencerebral/Boris-2-Think-Instruct with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="opencerebral/Boris-2-Think-Instruct", trust_remote_code=True) messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("opencerebral/Boris-2-Think-Instruct", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use opencerebral/Boris-2-Think-Instruct with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "opencerebral/Boris-2-Think-Instruct" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "opencerebral/Boris-2-Think-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/opencerebral/Boris-2-Think-Instruct
- SGLang
How to use opencerebral/Boris-2-Think-Instruct 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 "opencerebral/Boris-2-Think-Instruct" \ --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": "opencerebral/Boris-2-Think-Instruct", "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 "opencerebral/Boris-2-Think-Instruct" \ --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": "opencerebral/Boris-2-Think-Instruct", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use opencerebral/Boris-2-Think-Instruct with Docker Model Runner:
docker model run hf.co/opencerebral/Boris-2-Think-Instruct
Hugging Face |
Wiki |
License: Apache 2.0 |
Authors: OpenCerebral
Boris-2-Think-Instruct
Boris-2-Think-Instruct is a chat model that also reasons. It is Boris-2, a 144M-parameter model trained from scratch on a single NVIDIA V100, fine-tuned on general chat (smol-smoltalk) and short reasoning traces (OpenThink) together.
Every reply starts with a <think> block. For questions that need working out, the model writes a short trace in it and ends with Final answer:; for ordinary chat the block is empty and the model answers directly. It chooses on its own.
| Model | Use it for |
|---|---|
| Boris-2 | base model, text continuation |
| Boris-2-Instruct | chat |
| Boris-2-Think | question answering with reasoning (highest benchmark scores) |
| Boris-2-Think-Instruct | chat, with reasoning when a question needs it |
Examples
Greedy decoding, repetition penalty 1.1.
User: Tom has 3 boxes with 6 pencils each. He gives away 5 pencils. How many are left?
<think>
3 boxes Γ 6 pencils = 18 pencils total. He gives away 5, leaving 17.
</think>
Final answer: 17
User: Give me three tips for studying for a test.
<think>
</think>
1. Create a study schedule: Start by setting aside dedicated time each day or week to study for the test. ...
2. Gather relevant materials: ...
3. Take breaks: ...
The first answer shows the typical failure at this size: the setup is right (18 pencils) but the last subtraction is wrong (the answer is 13).
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "opencerebral/Boris-2-Think-Instruct"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, trust_remote_code=True)
msgs = [{"role": "user", "content": "What is 17 + 25?"}]
x = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt", return_dict=True)
y = model.generate(**x, max_new_tokens=300, stop_strings=["<|im_end|>"], tokenizer=tok)
reply = tok.decode(y[0, x["input_ids"].shape[1]:]).removesuffix("<|im_end|>")
thinking, _, answer = reply.partition("</think>")
print(answer.strip())
ChatML-style turns written as plain text (no tokens were added to the vocabulary). <|im_end|> spans several tokens and is not an end-of-sequence token, so pass it as a stop string as above. The default generation settings sample (temperature 0.7, top-p 0.9, repetition penalty 1.1); use do_sample=False for reasoning questions. Plain PyTorch custom code, no extra dependencies, no KV cache.
Results
Chat models next to base models from other labs, on the same nine benchmarks. All numbers are in benchmarks_comparison.csv.
Leaderboard benchmarks
Zero-shot, float32, lm-evaluation-harness 0.4.12 (the Open SLM Leaderboard's settings). ArithMark-3 uses the leaderboard's own bencharithmark-3.py (unmodified, default settings).
| Benchmark | Metric | Boris-2 | Boris-2-Instruct | Boris-2-Think | Boris-2-Think-Instruct |
|---|---|---|---|---|---|
| HellaSwag | acc_norm | 50.27 | 48.84 | 50.13 | 48.56 |
| ARC-Easy | acc_norm | 59.76 | 57.74 | 63.93 | 59.76 |
| ARC-Challenge | acc_norm | 32.00 | 31.48 | 34.81 | 32.00 |
| PIQA | acc_norm | 72.85 | 71.06 | 72.31 | 71.60 |
| ArithMark-3 | acc_norm | 45.10 | 43.70 | 49.20 | 47.00 |
| Open SLM Index | 34.15 | 31.85 | 36.05 | 33.29 |
The Index is the Open SLM Leaderboard formula: (N(HellaSwag,25) + N(mean(ARC-E, ARC-C),25) + N(PIQA,50) + 0.65 * N(ArithMark-3,25)) / 3.65, with N(v,c) = 100(v-c)/(100-c).
Chat fine-tuning costs a little on these benchmarks, as usual; the reasoning data wins most of it back on ArithMark-3 (+3.3 over Boris-2-Instruct) and on ARC-Easy (+2.0). For the highest scores use Boris-2-Think.
Chat and knowledge benchmarks
lm-evaluation-harness 0.4.12, float32, zero-shot, identical settings for every model. IFEval uses each model's chat template, greedy decoding, a stop at <|im_end|> and a cap of 256 new tokens (the task default is 1280; the cap is the same for every model). The other tasks are loglikelihood multiple choice without a chat template.
| Benchmark | Metric | Boris-2-Instruct | Boris-2-Think-Instruct | SmolLM2-135M-Instruct |
|---|---|---|---|---|
| IFEval | prompt-level strict | 19.41 | 17.38 | 19.59 |
| IFEval | prompt-level loose | 22.18 | 22.74 | 20.89 |
| IFEval | instruction-level strict | 29.86 | 28.78 | 32.73 |
| IFEval | instruction-level loose | 33.21 | 35.25 | 34.65 |
| TruthfulQA MC1 | acc | 25.34 | 25.58 | 23.99 |
| TruthfulQA MC2 | acc | 41.05 | 40.96 | 41.78 |
| MMLU (cloze) | acc | 28.41 | 28.61 | 27.72 |
| WinoGrande | acc | 52.09 | 51.93 | 51.07 |
| OpenBookQA | acc_norm | 34.60 | 33.00 | 33.20 |
| SciQ | acc_norm | 83.60 | 84.50 | 76.70 |
| CommonsenseQA | acc | 23.10 | 19.90 | 19.66 |
Single runs; differences under about 1.5 points (2 to 4 on IFEval) are within benchmark noise. On these tasks Boris-2-Think-Instruct and Boris-2-Instruct are about level; both lead SmolLM2-135M-Instruct on SciQ and match it elsewhere. smol-smoltalk includes IFEval-style constraint data (smol-constraints), which its authors decontaminated against IFEval; we did not run our own check.
Training
| Field | Value |
|---|---|
| Base model | Boris-2 (200.04B tokens) |
| Data | smol-smoltalk train split (460,341 conversations) + OpenThink hybrid train split twice (2 x 42,301) = 544,943 conversations, 426M tokens (319M trained on) |
| Format | every assistant reply is <think>\n{reasoning}\n</think>\n\n{reply}; the reasoning is empty for smol-smoltalk and for OpenThink's answer-only rows |
| Loss | assistant replies and their closing `< |
| Packing | conversations packed into 2048-token rows as separate documents (attention, Canon and the n-gram lookup reset at each one), shuffled together |
| Epochs / steps | 1 / 4,424 |
| Batch | 64 rows of 2048 tokens |
| Optimizer | AdamW, lr 1e-4, betas (0.9, 0.95), no weight decay, grad clip 1.0 |
| Schedule | linear warmup over 147 steps, cosine to zero |
| Precision | float16 mixed precision, float32 residual stream |
| Hardware | 1x NVIDIA V100 32GB, about 3 hours |
Loss on 1,600 held-out conversations (800 smol-smoltalk test, 800 OpenThink): 1.468 before fine-tuning, 0.983 after.
OpenThink's questions were checked against the evaluation sets of ARC, HellaSwag, PIQA, SciQ, OpenBookQA, WinoGrande and ArithMark-3 with nothing flagged; the scripts and reports are in its decontamination/ folder. The model architecture is unchanged from Boris-2; see the Boris-2 card for details and the pretraining data.
Limitations
A 144M-parameter model. Its reasoning is shallow and often wrong in the final step, it sometimes skips the trace on questions that need one (logic questions in particular), and it makes factual mistakes with confidence. Replies can run long and repeat. Its 2048-token context includes the whole conversation. It has no safety tuning beyond what smol-smoltalk contains. Do not rely on it for factual, medical, legal or financial answers.
Copyright & License
Copyright 2026 OpenCerebral
This project and all associated files (the "Work") are licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
- Downloads last month
- -
Model tree for opencerebral/Boris-2-Think-Instruct
Base model
opencerebral/Boris-2