Instructions to use KIEFERSA/Sophea-Nemo-3-Nano-v1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use KIEFERSA/Sophea-Nemo-3-Nano-v1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="KIEFERSA/Sophea-Nemo-3-Nano-v1", trust_remote_code=True) messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("KIEFERSA/Sophea-Nemo-3-Nano-v1", trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained("KIEFERSA/Sophea-Nemo-3-Nano-v1", trust_remote_code=True, 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=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use KIEFERSA/Sophea-Nemo-3-Nano-v1 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "KIEFERSA/Sophea-Nemo-3-Nano-v1" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "KIEFERSA/Sophea-Nemo-3-Nano-v1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/KIEFERSA/Sophea-Nemo-3-Nano-v1
- SGLang
How to use KIEFERSA/Sophea-Nemo-3-Nano-v1 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 "KIEFERSA/Sophea-Nemo-3-Nano-v1" \ --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": "KIEFERSA/Sophea-Nemo-3-Nano-v1", "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 "KIEFERSA/Sophea-Nemo-3-Nano-v1" \ --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": "KIEFERSA/Sophea-Nemo-3-Nano-v1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use KIEFERSA/Sophea-Nemo-3-Nano-v1 with Docker Model Runner:
docker model run hf.co/KIEFERSA/Sophea-Nemo-3-Nano-v1
📄 Released with the paper Thinking in a Low-Resource Language: What SFT Builds, What RL Fixes, What Accuracy Cannot See (arXiv:2608.17744). Every number on this card is measured, contextualized, and caveated in the paper; read it for the full evaluation protocol.
- Creator: Kiefer SA (Sophea AI Lab, Athens)
- Base model: nvidia/NemotronH-30B-A3B (Mamba/MoE hybrid, 31.6B total / 3.58B active, 6-of-128 routing)
- Languages: Greek and English (the reasoning trace follows the question's language)
- Decoding: thinking: the reasoning trace is carried in
<think>blocks and follows the question's language; direct mode is clean (zero unrequested traces across the study's<think>-carrier direct-mode generations, n=9,751)
Serve thinking, and mind one environment note. Under the library versions the study used (transformers 5.12.1), the shipped remote modeling code trains correctly but fails at generation (
prepare_inputs_for_generationindexes acache_positionthatgenerate()passes asNone); the study evaluated withtrust_remote_code=False.mamba-ssmis optional: installing it changed step time by 0%.
Intended use
- Greek and English reasoning where answer-channel integrity matters most: 0.0% leak, and negligible fallback on math and commonsense (1.7 / 1.8%)
- Deployments that also need the base's general Greek ability: the fine-tune gains +3.8 Greek macro on the Titan-1 suite (largely catch-up against a low base)
It does not obey an instruction to reason in English on a Greek question (0.0% override; the reverse direction works at 87.5%). Do not deploy it where an operator must force English traces. Not evaluated for safety-critical, legal, or medical use.
Fine-tuned from NemotronH-30B-A3B; shipped merged to dense weights.
Evaluation
Arrows mark the desirable direction for every metric: ↑ higher is better, ↓ lower is better.
Headline scorecard
| Axis | NemotronH-30B-A3B (base) | Sophea-Nemo-3-Nano-v1 |
|---|---|---|
| Greek-trace fidelity, Greek questions (ratio ≥ 0.9, n=5,156) ↑ | 0.0% (median ratio 0.23) | 97.4% |
| English traces on English questions ↑ | 100% | 100% |
| In-question language switches / 100 sentences ↓ | not measured | 0.0 |
| Answer-channel leak ↓ | not measured | 0.0% (the only release at zero) |
| Answer-format fallback, per domain (math/cs/logic) | 8.3 / 6.2 / 6.6% | 1.7 / 1.8 / 39.9% |
| Instructed override, el→EN / en→EL ↑ | n/a (already reasons in English) | 0.0% / 87.5% |
| Median trace length, tokens (own tokenizer) ↓ | 681 | 638 (parity, 1.07×) |
| Greek NLU macro, forgetting check (vs own base) ↑ | 48.6 | 52.4 (+3.8) |
| English NLU macro, forgetting check (vs own base) ↑ | 78.4 | 76.4 (−2.0) |
The claim replicates on a third, non-transformer architecture: the base reasons in Greek on 0% of the benchmark, the fine-tune on 97.4%, at an accuracy cost of −0.6 pp on that instrument, with generation-cap truncation falling 10.8% → 2.6% and measured loops in its traces dropping 15.0 → 0.0 per thousand rows.
Per-benchmark detail
Per-domain, Greek think lane
| Domain (Greek think lane) | Base acc ↑ | Sophea-Nemo-3-Nano-v1 acc ↑ | Base fallback ↓ | Sophea-Nemo-3-Nano-v1 fallback ↓ |
|---|---|---|---|---|
| Math (two math slices) | 86.6 | 71.5 | 8.3% | 1.7% |
| Commonsense (HellaSwag + Winogrande) | 49.2 | 39.7 | 6.2% | 1.8% |
| Logic (ProofWriter, macro-recall) | 26.8 | 9.8 | 6.6% | 39.9% |
Read the logic cell carefully: the 9.8 macro-recall is substantially a format floor, not a capability reading. The release's fallback is negligible on math and commonsense (1.7 / 1.8%) and 39.9% on logic, the one domain where its answer form breaks; logic is also the hardest axis for every arm in the study, base models included. On the override probe this family returns 5–9% of rows too short to score (Qwen: 0%), consistent with a low reasoning ceiling.
Forgetting check: Titan-1 suite (non-reasoning mode)
This suite exists to answer one question: did the Greek fine-tune damage general ability? It did not. Against its own base, across 14 bilingual NLU benchmarks: +3.8 Greek / −2.0 English; the fine-tune gains on the Greek side and the English movement is within the range seed noise alone produces on this class of suite. Read the numbers below as a forgetting check, not a capability leaderboard.
| Benchmark (Titan-1 suite) | Base | Sophea-Nemo-3-Nano-v1 |
|---|---|---|
| ARC-Challenge-el | 54.2 | 59.0 |
| ARC-Easy-el | 62.3 | 70.1 |
| Belebele-el | 67.0 | 78.0 |
| GreekMMLU | 58.8 | 53.3 |
| HellaSwag-el | 39.2 | 47.6 |
| Medical-MCQA-el | 27.8 | 31.2 |
| TruthfulQA-el | 31.7 | 33.2 |
| Winogrande-el | 53.3 | 58.3 |
| MMLU-el | 43.2 | 40.8 |
| Greek macro | 48.6 | 52.4 |
| ARC-Challenge (en) | 88.3 | 82.2 |
| ARC-Easy (en) | 96.2 | 93.4 |
| HellaSwag (en) | 67.9 | 73.1 |
| Winogrande (en) | 69.9 | 72.9 |
| MMLU (en) | 69.9 | 60.5 |
| English macro | 78.4 | 76.4 |
Register control improves 40 → 44 of 46 and grammaticality roughly doubles, 13 → 27 of 58, driven by the agreement axis (judge-scored counts, directional evidence only).
Usage
Serve with vLLM (OpenAI-compatible):
vllm serve KIEFERSA/Sophea-Nemo-3-Nano-v1 --served-model-name sophea-nemo-3-nano-v1
Client (OpenAI SDK):
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
resp = client.chat.completions.create(
model="sophea-nemo-3-nano-v1",
messages=[{"role": "user", "content": "Ένα κατάστημα πουλά στυλό προς 1,50 € το ένα. Πόσο κοστίζουν 12 στυλό;"}],
temperature=0.7,
)
print(resp.choices[0].message.content) # <think> trace in the question's language, then the answer
Steering the trace language (partial, measured per checkpoint): append "Think step by step IN ENGLISH." to a Greek question, or "Σκέψου βήμα προς βήμα ΣΤΑ ΕΛΛΗΝΙΚΑ." to an English one. On this checkpoint the English suffix is not obeyed (0.0%); the Greek suffix on an English question is obeyed on 87.5% of items.
License
The fine-tuning additions are released under Apache-2.0. The model inherits the base model's license terms (nvidia/NemotronH-30B-A3B); verify the base model's license before use.
Citation
This model is a release artifact of arXiv:2608.17744. If you use it, please cite:
@misc{kirouane2026thinking,
title={Thinking in a Low-Resource Language: What SFT Builds, What RL Fixes, What Accuracy Cannot See},
author={Ayoub Kirouane and Christos Petrocheilos},
year={2026},
eprint={2608.17744},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2608.17744},
}
- Downloads last month
- 37
Collection including KIEFERSA/Sophea-Nemo-3-Nano-v1
Paper for KIEFERSA/Sophea-Nemo-3-Nano-v1
Evaluation results
- Greek-trace fidelity (ratio >= 0.9) on Greek reasoning benchmark (5,156 items, think lane)self-reported0.974
- Greek macro on Titan-1 Greek NLU suite (9 benchmarks, non-reasoning mode)self-reported0.524
- English macro on English retention suite (5 benchmarks)self-reported0.764