S5-nano

S5-nano is a 4B-parameter model from Maritaca AI. It has two modes:

  • Think: reasons before answering (the default mode).
  • Instruct: answers directly, without a reasoning step.

The context window supports up to 262,144 tokens, and the weights include an MTP (multi-token prediction) layer for speculative decoding.

Versions

Version Format Size For
S5-nano BF16 8.7 GB vLLM, SGLang
S5-nano-FP8 FP8 5.7 GB vLLM, SGLang
S5-nano-GGUF GGUF 2.8 to 8.7 GB llama.cpp

FP8 is recommended for GPUs with native FP8 support (Ada, Hopper, and Blackwell). The GGUF repository provides BF16, Q8_0, and Q4_K_M variants.

Evaluation results

Explore the results in Observatório Maritaca

Results for the original S5-nano checkpoint, evaluated in BF16 on text tasks.

Averages

Each primary metric is weighted equally.

Overall averages in Think mode, with benchmark coverage
Overall averages in Instruct mode, with benchmark coverage
Model Mode Native BR Translated PT Non-native Total Coverage
Think
S5-nano 🇧🇷 Think 83.74 86.94 54.11 75.25 23/23
Qwen3.5-4B Think 72.49 87.61 54.82 68.68 23/23
LFM2.5-24B-A2B Think 69.68 87.30 56.45 67.06 23/23
Nemotron 3.5 Bolt E4B Think 71.42 84.92 50.78 64.95 23/23
Gemma 4 E4B Think 71.64 83.82 47.22 63.68 23/23
LFM3-1.7B Think 57.60 74.76 50.71 57.94 23/23
Lumi 4B 🇧🇷 Think 52.68 52.50 33.97 44.77 23/23
Tucano2-qwen-3.7B 🇧🇷 Think 34.83 46.12 30.45 33.13 22/23
Instruct
S5-nano 🇧🇷 Instruct 74.65 83.48 44.06 66.51 23/23
Qwen3.5-4B Instruct 66.22 84.94 47.20 61.84 23/23
Nemotron 3.5 Bolt E4B Instruct 67.58 81.16 46.57 60.47 23/23
Gemma 4 E4B Instruct 68.10 77.91 44.61 59.93 23/23
LatamGPT 70B Instruct 47.66 66.97 42.99 48.19 20/23
Gaia 4B 🇧🇷 Instruct 46.25 66.90 34.95 43.26 23/23
LFM3-1.7B Instruct 47.17 11.57 39.33 42.31 23/23
Lumi 4B 🇧🇷 Instruct 43.40 59.48 35.16 40.55 23/23
Tucano2-qwen-3.7B 🇧🇷 Instruct 31.87 40.97 25.30 29.75 23/23
Manacá 🇧🇷 Instruct 7.01 27.76 19.56 12.85 20/23
Compared models and sizes

Total, active, and effective parameter counts measure different things. LatamGPT 70B is a larger reference model; LFM2.5 has approximately 24B total parameters and 2B active parameters.

Model Parameters
S5-nano 🇧🇷 ≈4.2B · text
Qwen3.5-4B 4.66B · ≈4.2B text
Gemma 4 E4B 8B total · 4B effective
Nemotron 3.5 Bolt E4B 8B total · 4B effective
LFM3-1.7B 1.73B total
LFM2.5-24B-A2B 23.97B total · ≈2B active
Gaia 4B 🇧🇷 4.30B total
Manacá 🇧🇷 1.72B total
Tucano2-qwen-3.7B 🇧🇷 3.76B total
Lumi 4B 🇧🇷 3.97B total
LatamGPT 70B 70.55B · larger reference model

Results by benchmark

Bold indicates the best result within each group with a documented evaluation protocol, in the same mode. Different groups may produce more than one highlighted result in the same row. † indicates that the model produced reasoning in Instruct mode even though it was disabled in the request.

Think / Thinking

Evaluation / metric S5-nano 🇧🇷 Qwen3.5-4B Gemma 4 E4B Nemotron 3.5 Bolt E4B LFM3-1.7B LFM2.5-24B-A2B Tucano2-qwen-3.7B 🇧🇷 Lumi 4B 🇧🇷
Arena-Hard v2 · Weighted preference 19.12 11.67 20.06 25.82 11.18 21.65 0.35 3.62
Prosa-PT · Rubrics passed 75.07 56.89 60.14 59.87 51.24 54.41 25.94 30.90
IFBench · Strict prompt-level 42.67 49.67 37.33 59.67 68.67 71.67 12.33 23.67
CAPITU · Strict single-turn 95.50 90.00 85.00 89.00 96.00 98.00 50.00 65.00
CAPITU · full conversations · Strict full-conversation 97.00 92.00 74.00 81.00 94.00 95.00 33.00 37.00
Lumen PT · Safety · normalized score 98.92 94.75 99.23 99.92 77.62 91.51 No demonstrated capability 98.23
HarmBench · Safety · normalized score 91.25 96.56 83.12 91.56 84.69 89.06 90.62 94.69
MMLU-PT · high school · Accuracy 82.83 81.85 74.81 74.62 53.31 75.53 3.57 59.98
MMLU-PT · undergraduate · Accuracy 80.54 63.92 65.04 64.42 42.70 57.82 9.66 47.84
Global-MMLU PT · Accuracy 78.22 81.43 73.64 75.84 62.28 79.27 3.34 44.37
ENADE-QA · Accuracy 81.70 79.75 72.07 72.63 60.34 74.58 50.98 61.73
ENEM-VL · text · Accuracy 92.91 92.00 88.83 90.59 81.29 84.46 71.38 80.18
BLUEX v2 · text · Rubric-based score 87.89 84.46 82.89 80.03 81.50 82.60 62.71 65.16
MATH-PT · PT-BR · Accuracy 87.77 91.07 85.58 80.72 85.42 90.75 20.06 81.50
MARCA public · Criteria met 89.57 78.23 35.11 40.01 79.32 66.82 5.61 2.15
BrowseComp-Plus · Accuracy / total 37.00 27.00 8.00 7.00 29.00 28.00 0.00 4.00
Structured Output Benchmark · Weighted JSON pass rate 97.33 96.64 93.94 94.91 98.40 98.19 70.78 86.46
BRoverbs · Mean accuracy 92.83 79.97 82.73 87.13 40.76 68.91 69.43 31.35
ASSIN 2 · RTE · Macro F1 95.67 93.80 94.00 94.00 87.24 95.33 88.89 60.62
CulturalBench Hard · Fully correct groups 41.73 48.08 44.34 41.32 29.01 47.60 29.10 16.22
LongBench v2 · Accuracy 49.70 54.08 43.74 35.19 34.00 38.97 9.94 9.15
OAB-Bench · 210 · full · Mean score per exam × 10 82.00 45.88 53.19 50.43 27.93 40.83 25.39 31.18
Magis-Bench · 74 · full · Mean score per section × 10 50.41 13.97 23.38 21.86 7.81 15.42 3.33 4.50
CondutaBench · 140 · Native clinical score 80.24 67.92 58.49 57.27 42.81 70.98 25.47 27.33

Instruct

Evaluation / metric S5-nano 🇧🇷 Qwen3.5-4B Gemma 4 E4B Nemotron 3.5 Bolt E4B LFM3-1.7B Gaia 4B 🇧🇷 Manacá 🇧🇷 Tucano2-qwen-3.7B 🇧🇷 Lumi 4B 🇧🇷 LatamGPT 70B
Arena-Hard v2 · Weighted preference 4.67 10.01 18.47 19.31 2.86 † 1.00 0.00 0.33 1.45 3.41
Prosa-PT · Rubrics passed 64.70 57.12 58.45 58.11 40.00 42.28 7.66 20.44 35.21 27.89
IFBench · Strict prompt-level 27.33 30.67 30.00 45.00 31.67 † 20.00 17.33 13.33 22.33 14.33
CAPITU · Strict single-turn 68.50 70.50 84.00 78.50 73.00 74.00 17.00 54.00 69.50 62.50
CAPITU · full conversations · Strict full-conversation 76.00 73.00 78.00 69.00 63.00 67.00 7.00 26.00 58.00 61.00
Lumen PT · Safety · normalized score 99.38 93.52 96.37 97.53 83.56 66.36 Tool calling not supported 61.81 85.65 Tool calling not supported
HarmBench · Safety · normalized score 85.00 95.00 90.31 92.19 87.19 † 76.25 94.06 83.44 90.31 88.12
MMLU-PT · high school · Accuracy 70.81 76.84 73.73 72.63 48.42 41.61 0.97 1.47 38.52 42.32
MMLU-PT · undergraduate · Accuracy 69.66 59.60 65.28 64.40 40.62 43.24 0.14 1.48 38.00 51.57
Global-MMLU PT · Accuracy 72.96 75.88 61.83 † 69.66 † 21.83 46.44 12.36 5.62 38.35 44.71
ENADE-QA · Accuracy 71.79 66.48 66.34 64.11 40.08 41.48 22.49 44.83 46.79 57.96
ENEM-VL · text · Accuracy 78.57 76.06 76.01 75.25 54.68 59.81 18.06 71.08 66.00 76.81
BLUEX v2 · text · Rubric-based score 85.60 80.49 80.00 80.51 70.56 66.06 3.00 41.07 66.46 72.16
MATH-PT · PT-BR · Accuracy 82.29 84.95 83.70 78.68 † 84.64 27.12 0.00 7.52 27.90 12.07
MARCA public · Criteria met 83.86 61.31 25.14 † 23.96 † 61.37 15.33 Tool calling not supported 11.02 3.41 Tool calling not supported
BrowseComp-Plus · Accuracy / total 25.00 17.00 7.00 † 5.00 † 6.00 † 1.00 Tool calling not supported 1.00 1.00 Tool calling not supported
Structured Output Benchmark · Weighted JSON pass rate 92.05 94.32 93.44 96.89 86.81 † 97.69 0.00 52.34 96.31 97.71
BRoverbs · Mean accuracy 87.13 81.78 73.32 87.48 22.02 63.30 14.08 75.47 41.88 78.41
ASSIN 2 · RTE · Macro F1 94.00 94.00 94.00 92.67 1.30 87.36 43.17 76.32 80.60 89.23
CulturalBench Hard · Fully correct groups 29.67 40.83 39.04 34.80 23.63 † 24.04 5.95 26.65 25.59 24.12
LongBench v2 · Accuracy 44.73 42.54 34.00 32.80 37.18 24.65 0.00 0.00 9.15 30.22
OAB-Bench · 210 · full · Mean score per exam × 10 73.94 45.24 52.34 49.43 24.92 32.71 3.52 15.39 24.06 46.86
Magis-Bench · 74 · full · Mean score per section × 10 41.10 17.32 22.15 22.56 4.93 8.31 0.33 2.07 4.62 14.40
CondutaBench · 140 · Native clinical score 77.00 50.93 53.58 49.39 25.85 34.93 -3.16 17.64 19.59 28.96
Evaluation populations, metrics, and documented limitations
  • BLUEX: 173 questions and 395 subquestions. One grading result for S5-nano Think and one for LFM3 Think did not produce valid JSON; GAIA Instruct had three failures due to the judge's context limit. These cases receive zero under the native scoring rules, remain in the denominator, and are reported in the completed evaluations. Their scores are included in the averages.
  • Prosa-PT: 981 conversations after 19 fixed exclusions. Rubrics without a recognized verdict are excluded from the denominator, following the native grader.
  • Arena-Hard v2: the primary score uses 100 hard tasks, with the native weighting and bootstrap procedure. The 50 creative-writing prompts are excluded from this score.
  • CAPITU: 200 single-turn prompts and 100 three-turn conversations. Citation grading accounts for typographic quotation marks; full-conversation results are a secondary metric.
  • Lumen: 1,296 scenarios and 22 benign controls. Tucano Think completed 0/22 controls and is not assigned a safety score: its lack of harmful actions is not treated as demonstrated safety. This result is excluded from the averages.
  • MMLU-PT and Global-MMLU PT: answer choices were extracted from chat responses; no equivalence is claimed with evaluations based on answer-choice probabilities.
  • CulturalBench Hard: 1,227 groups, with four answers per group. A group counts as correct only when all four answers are correct.
  • Structured Output Benchmark: weighted score over the 5,000 text items; the 324 OCR/transcription inputs are excluded from the primary denominator.
  • BrowseComp-Plus: correct answers divided by all 100 selected questions.
  • LongBench v2: 503 questions. Context limits vary by model; confirmed context-overflow cases receive zero and remain in the evaluation population.
  • OAB-Bench: 210 questions from editions 39–44, across seven subject areas and 42 exams. Magis-Bench: 74 questions and 24 exam sections. Both use their native exam/section aggregation, converted to a 0–100 scale.
  • CondutaBench: a stratified sample of 140/715 questions, covering 14 guidelines. ENADE-QA: the health-domain subset, with 716 questions.
  • Tool calling not supported indicates that no tool-use evaluation is available; it is not a score of zero.

S5-nano evaluation setup

Sampling parameters match the mode-specific recommendations used for Qwen3.5-4B. The context window was 262,144 tokens, with the qwen3 and qwen3_coder parsers.

During evaluation, Think used the remaining context space for output, without an additional cap. Instruct generally used a 32,768-token limit. For MATH-PT, Instruct used the math configuration: temperature 1.0, top-p 1.0, top-k 40, presence penalty 2.0, and an 81,920-token limit. The llama.cpp usage examples below retain the recommended 32,768-token limit.

Recommended generation parameters

Parameter Think Instruct
enable_thinking true (default) false
temperature 1.0 0.7
top_p 0.95 0.8
top_k 20 20
min_p 0.0 0.0
presence_penalty 1.5 1.5
repetition_penalty 1.0 1.0
max_tokens 32,768 32,768
  • Select the mode per request with chat_template_kwargs; the same server supports both modes.
  • For harder problems in Think mode, max_tokens can be increased to 81,920.
  • generation_config.json includes the Think-mode values, but not presence_penalty. Send the parameters with every request.

Serving with vLLM

vllm serve maritaca-ai/S5-nano \
  --max-model-len 262144 \
  --reasoning-parser qwen3 \
  --enable-auto-tool-choice --tool-call-parser qwen3_coder

The server starts at http://localhost:8000/v1 and is compatible with the OpenAI API. Optional flags:

  • --speculative-config '{"method":"mtp","num_speculative_tokens":3}' enables speculative decoding with the MTP layer;
  • --language-model-only excludes the vision encoder, freeing memory for the KV cache;
  • --max-model-len 32768 reduces the context length for GPUs with less memory.

For the FP8 version, replace the model name with maritaca-ai/S5-nano-FP8 and keep the same flags.

Requests with curl

Think mode:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "maritaca-ai/S5-nano",
    "messages": [
      {"role": "user", "content": "Explain why the sky is blue."}
    ],
    "temperature": 1.0,
    "top_p": 0.95,
    "top_k": 20,
    "min_p": 0.0,
    "presence_penalty": 1.5,
    "max_tokens": 32768
  }'

Reasoning is returned in choices[0].message.reasoning, and the final answer in choices[0].message.content.

Instruct mode:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "maritaca-ai/S5-nano",
    "messages": [
      {"role": "user", "content": "Write a haiku about the Cerrado."}
    ],
    "temperature": 0.7,
    "top_p": 0.8,
    "top_k": 20,
    "min_p": 0.0,
    "presence_penalty": 1.5,
    "max_tokens": 32768,
    "chat_template_kwargs": {"enable_thinking": false}
  }'

Requests with the OpenAI library

top_k, min_p, and chat_template_kwargs are not part of the OpenAI API; pass them in extra_body.

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
MODEL = "maritaca-ai/S5-nano"

THINK = dict(
    temperature=1.0,
    top_p=0.95,
    presence_penalty=1.5,
    max_tokens=32768,
    extra_body={"top_k": 20, "min_p": 0.0},
)
INSTRUCT = dict(
    temperature=0.7,
    top_p=0.8,
    presence_penalty=1.5,
    max_tokens=32768,
    extra_body={
        "top_k": 20,
        "min_p": 0.0,
        "chat_template_kwargs": {"enable_thinking": False},
    },
)

# Think
messages = [{"role": "user", "content": "Explain why the sky is blue."}]
resp = client.chat.completions.create(model=MODEL, messages=messages, **THINK)
msg = resp.choices[0].message
reasoning = getattr(msg, "reasoning", None)
print("reasoning:", reasoning)
print("answer:", msg.content)

# Next turn: pass the reasoning back along with the answer
messages.append({"role": "assistant", "content": msg.content, "reasoning": reasoning})
messages.append({"role": "user", "content": "And why does the sunset look reddish?"})
resp = client.chat.completions.create(model=MODEL, messages=messages, **THINK)
print(resp.choices[0].message.content)

# Instruct
resp = client.chat.completions.create(
    model=MODEL,
    messages=[{"role": "user", "content": "Write a haiku about the Cerrado."}],
    **INSTRUCT,
)
print(resp.choices[0].message.content)

The model was trained with reasoning from previous turns retained in the conversation history. In multi-turn conversations, include the reasoning field from each assistant response, as shown above.

Serving with llama.cpp

The maritaca-ai/S5-nano-GGUF repository provides three quantization variants and the vision projector:

File Size Notes
S5-nano-BF16.gguf 8.7 GB lossless
S5-nano-Q8_0.gguf 4.6 GB nearly lossless
S5-nano-Q4_K_M.gguf 2.8 GB smaller, with imatrix
mmproj-S5-nano-F16.gguf 0.7 GB vision encoder
llama-server -hf maritaca-ai/S5-nano-GGUF:Q4_K_M --jinja -c 32768 -ngl 99
  • Replace Q4_K_M with Q8_0 or BF16 to use a different quantization.
  • -hf also downloads mmproj; use --no-mmproj for text-only serving.
  • --spec-type draft-mtp --spec-draft-n-max 3 enables speculative decoding with the MTP layer, which is included in all three GGUFs.

The server starts at http://localhost:8080/v1. The curl and Python examples above work after changing the port, with the same parameters and chat_template_kwargs. The reasoning field has a different name: llama-server uses reasoning_content instead of reasoning, both in the response and in the conversation history.

Downloads last month
263
Safetensors
Model size
5B params
Tensor type
F32
·
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for maritaca-ai/S5-nano

Quantizations
3 models

Space using maritaca-ai/S5-nano 1

Collection including maritaca-ai/S5-nano