S5-nano-GGUF
Versões GGUF do S5-nano para o llama.cpp e programas compatíveis.
| Arquivo | Tamanho | Observação |
|---|---|---|
S5-nano-BF16.gguf |
8,7 GB | sem perda |
S5-nano-Q8_0.gguf |
4,6 GB | quase sem perda |
S5-nano-Q4_K_M.gguf |
2,8 GB | menor, com imatrix |
mmproj-S5-nano-F16.gguf |
0,7 GB | encoder de visão |
Os três modelos incluem a camada de MTP.
Resultados de avaliação
Resultados do checkpoint original do S5-nano, avaliado em BF16, em tarefas de texto.
Médias
Cada métrica primária tem peso igual.
| Modelo | Modo | Nativo BR | Traduzido PT | Não nativo | Total | Cobertura |
|---|---|---|---|---|---|---|
| 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 |
Parâmetros totais, ativos e efetivos descrevem medidas diferentes. LatamGPT 70B é uma referência de maior porte; LFM2.5 tem cerca de 24B parâmetros totais e 2B ativos.
| Modelo | Parâmetros |
|---|---|
| S5-nano 🇧🇷 | ≈4,2B · texto |
| Qwen3.5-4B | 4,66B · ≈4,2B texto |
| Gemma 4 E4B | 8B total · 4B efetivos |
| Nemotron 3.5 Bolt E4B | 8B total · 4B efetivos |
| LFM3-1.7B | 1,73B total |
| LFM2.5-24B-A2B | 23,97B total · ≈2B ativos |
| 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 · referência maior |
Resultados por benchmark
Negrito indica o melhor resultado em cada grupo com protocolo documentado, dentro do mesmo modo. Grupos diferentes podem gerar mais de um destaque na mesma linha. † indica que houve thinking no modo Instruct, apesar de desabilitado na requisição.
Think / Thinking
| Avaliação / métrica | 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 · Preferência ponderada | 19,12 | 11,67 | 20,06 | 25,82 | 11,18 | 21,65 | 0,35 | 3,62 |
| Prosa-PT · Rubricas aprovadas | 75,07 | 56,89 | 60,14 | 59,87 | 51,24 | 54,41 | 25,94 | 30,90 |
| IFBench · Prompt estrito | 42,67 | 49,67 | 37,33 | 59,67 | 68,67 | 71,67 | 12,33 | 23,67 |
| CAPITU · Turno único estrito | 95,50 | 90,00 | 85,00 | 89,00 | 96,00 | 98,00 | 50,00 | 65,00 |
| CAPITU · conversas completas · Conversa completa estrita | 97,00 | 92,00 | 74,00 | 81,00 | 94,00 | 95,00 | 33,00 | 37,00 |
| Lumen PT · Segurança · nota normalizada | 98,92 | 94,75 | 99,23 | 99,92 | 77,62 | 91,51 | Sem capacidade demonstrada | 98,23 |
| HarmBench · Segurança · nota normalizada | 91,25 | 96,56 | 83,12 | 91,56 | 84,69 | 89,06 | 90,62 | 94,69 |
| MMLU-PT · ensino médio · Acurácia | 82,83 | 81,85 | 74,81 | 74,62 | 53,31 | 75,53 | 3,57 | 59,98 |
| MMLU-PT · graduação · Acurácia | 80,54 | 63,92 | 65,04 | 64,42 | 42,70 | 57,82 | 9,66 | 47,84 |
| Global-MMLU PT · Acurácia | 78,22 | 81,43 | 73,64 | 75,84 | 62,28 | 79,27 | 3,34 | 44,37 |
| ENADE-QA · Acurácia | 81,70 | 79,75 | 72,07 | 72,63 | 60,34 | 74,58 | 50,98 | 61,73 |
| ENEM-VL · texto · Acurácia | 92,91 | 92,00 | 88,83 | 90,59 | 81,29 | 84,46 | 71,38 | 80,18 |
| BLUEX v2 · texto · Nota por rubricas | 87,89 | 84,46 | 82,89 | 80,03 | 81,50 | 82,60 | 62,71 | 65,16 |
| MATH-PT · PT-BR · Acurácia | 87,77 | 91,07 | 85,58 | 80,72 | 85,42 | 90,75 | 20,06 | 81,50 |
| MARCA público · Critérios atendidos | 89,57 | 78,23 | 35,11 | 40,01 | 79,32 | 66,82 | 5,61 | 2,15 |
| BrowseComp-Plus · Acurácia / total | 37,00 | 27,00 | 8,00 | 7,00 | 29,00 | 28,00 | 0,00 | 4,00 |
| Structured Output Benchmark · JSON Pass Rate ponderado | 97,33 | 96,64 | 93,94 | 94,91 | 98,40 | 98,19 | 70,78 | 86,46 |
| BRoverbs · Acurácia média | 92,83 | 79,97 | 82,73 | 87,13 | 40,76 | 68,91 | 69,43 | 31,35 |
| ASSIN 2 · RTE · F1 macro | 95,67 | 93,80 | 94,00 | 94,00 | 87,24 | 95,33 | 88,89 | 60,62 |
| CulturalBench Hard · Grupos completos corretos | 41,73 | 48,08 | 44,34 | 41,32 | 29,01 | 47,60 | 29,10 | 16,22 |
| LongBench v2 · Acurácia | 49,70 | 54,08 | 43,74 | 35,19 | 34,00 | 38,97 | 9,94 | 9,15 |
| OAB-Bench · 210 · completo · Nota média por prova × 10 | 82,00 | 45,88 | 53,19 | 50,43 | 27,93 | 40,83 | 25,39 | 31,18 |
| Magis-Bench · 74 · completo · Nota média por seção × 10 | 50,41 | 13,97 | 23,38 | 21,86 | 7,81 | 15,42 | 3,33 | 4,50 |
| CondutaBench · 140 · Nota clínica nativa | 80,24 | 67,92 | 58,49 | 57,27 | 42,81 | 70,98 | 25,47 | 27,33 |
Instruct
| Avaliação / métrica | 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 · Preferência ponderada | 4,67 | 10,01 | 18,47 | 19,31 | 2,86 † | 1,00 | 0,00 | 0,33 | 1,45 | 3,41 |
| Prosa-PT · Rubricas aprovadas | 64,70 | 57,12 | 58,45 | 58,11 | 40,00 | 42,28 | 7,66 | 20,44 | 35,21 | 27,89 |
| IFBench · Prompt estrito | 27,33 | 30,67 | 30,00 | 45,00 | 31,67 † | 20,00 | 17,33 | 13,33 | 22,33 | 14,33 |
| CAPITU · Turno único estrito | 68,50 | 70,50 | 84,00 | 78,50 | 73,00 | 74,00 | 17,00 | 54,00 | 69,50 | 62,50 |
| CAPITU · conversas completas · Conversa completa estrita | 76,00 | 73,00 | 78,00 | 69,00 | 63,00 | 67,00 | 7,00 | 26,00 | 58,00 | 61,00 |
| Lumen PT · Segurança · nota normalizada | 99,38 | 93,52 | 96,37 | 97,53 | 83,56 | 66,36 | Sem suporte a tool call | 61,81 | 85,65 | Sem suporte a tool call |
| HarmBench · Segurança · nota normalizada | 85,00 | 95,00 | 90,31 | 92,19 | 87,19 † | 76,25 | 94,06 | 83,44 | 90,31 | 88,12 |
| MMLU-PT · ensino médio · Acurácia | 70,81 | 76,84 | 73,73 | 72,63 | 48,42 | 41,61 | 0,97 | 1,47 | 38,52 | 42,32 |
| MMLU-PT · graduação · Acurácia | 69,66 | 59,60 | 65,28 | 64,40 | 40,62 | 43,24 | 0,14 | 1,48 | 38,00 | 51,57 |
| Global-MMLU PT · Acurácia | 72,96 | 75,88 | 61,83 † | 69,66 † | 21,83 | 46,44 | 12,36 | 5,62 | 38,35 | 44,71 |
| ENADE-QA · Acurácia | 71,79 | 66,48 | 66,34 | 64,11 | 40,08 | 41,48 | 22,49 | 44,83 | 46,79 | 57,96 |
| ENEM-VL · texto · Acurácia | 78,57 | 76,06 | 76,01 | 75,25 | 54,68 | 59,81 | 18,06 | 71,08 | 66,00 | 76,81 |
| BLUEX v2 · texto · Nota por rubricas | 85,60 | 80,49 | 80,00 | 80,51 | 70,56 | 66,06 | 3,00 | 41,07 | 66,46 | 72,16 |
| MATH-PT · PT-BR · Acurácia | 82,29 | 84,95 | 83,70 | 78,68 † | 84,64 | 27,12 | 0,00 | 7,52 | 27,90 | 12,07 |
| MARCA público · Critérios atendidos | 83,86 | 61,31 | 25,14 † | 23,96 † | 61,37 | 15,33 | Sem suporte a tool call | 11,02 | 3,41 | Sem suporte a tool call |
| BrowseComp-Plus · Acurácia / total | 25,00 | 17,00 | 7,00 † | 5,00 † | 6,00 † | 1,00 | Sem suporte a tool call | 1,00 | 1,00 | Sem suporte a tool call |
| Structured Output Benchmark · JSON Pass Rate ponderado | 92,05 | 94,32 | 93,44 | 96,89 | 86,81 † | 97,69 | 0,00 | 52,34 | 96,31 | 97,71 |
| BRoverbs · Acurácia média | 87,13 | 81,78 | 73,32 | 87,48 | 22,02 | 63,30 | 14,08 | 75,47 | 41,88 | 78,41 |
| ASSIN 2 · RTE · F1 macro | 94,00 | 94,00 | 94,00 | 92,67 | 1,30 | 87,36 | 43,17 | 76,32 | 80,60 | 89,23 |
| CulturalBench Hard · Grupos completos corretos | 29,67 | 40,83 | 39,04 | 34,80 | 23,63 † | 24,04 | 5,95 | 26,65 | 25,59 | 24,12 |
| LongBench v2 · Acurácia | 44,73 | 42,54 | 34,00 | 32,80 | 37,18 | 24,65 | 0,00 | 0,00 | 9,15 | 30,22 |
| OAB-Bench · 210 · completo · Nota média por prova × 10 | 73,94 | 45,24 | 52,34 | 49,43 | 24,92 | 32,71 | 3,52 | 15,39 | 24,06 | 46,86 |
| Magis-Bench · 74 · completo · Nota média por seção × 10 | 41,10 | 17,32 | 22,15 | 22,56 | 4,93 | 8,31 | 0,33 | 2,07 | 4,62 | 14,40 |
| CondutaBench · 140 · Nota clínica nativa | 77,00 | 50,93 | 53,58 | 49,39 | 25,85 | 34,93 | -3,16 | 17,64 | 19,59 | 28,96 |
- BLUEX: 173 questões e 395 subquestões. Uma correção do S5-nano Think e uma do LFM3 Think terminaram sem JSON válido; o GAIA Instruct teve três falhas por contexto do juiz. Essas limitações recebem zero nativo, permanecem no denominador e são reportadas nas avaliações concluídas. As notas participam das médias.
- Prosa-PT: 981 conversas após 19 exclusões fixas. Rubricas sem veredicto reconhecido ficam fora do denominador, conforme o corretor nativo.
- Arena-Hard v2: a nota principal usa 100 tarefas difíceis, com pesos e bootstrap nativos. Os 50 prompts de escrita criativa não entram nessa nota.
- CAPITU: 200 prompts de turno único e 100 conversas de três turnos. A correção de citações contempla aspas tipográficas; conversas completas são uma métrica secundária.
- Lumen: 1.296 cenários e 22 controles benignos. Tucano Think concluiu 0/22 controles e não recebe uma nota de segurança: sua ausência de ações nocivas não é tratada como segurança demonstrada. Esse resultado fica fora das médias.
- MMLU-PT e Global-MMLU PT: as alternativas foram extraídas de respostas em chat; não se afirma equivalência com avaliações por probabilidade das alternativas.
- CulturalBench Hard: 1.227 grupos, com quatro respostas por grupo. O grupo só conta como correto quando todas as quatro respostas estão corretas.
- Structured Output Benchmark: nota ponderada dos 5.000 itens textuais; as 324 entradas de OCR/transcrição não entram no denominador principal.
- BrowseComp-Plus: acertos divididos por todas as 100 questões selecionadas.
- LongBench v2: 503 questões. Os limites de contexto variam por modelo; casos com estouro confirmado seguem a política de zero por caso, mantendo a população.
- OAB-Bench: 210 questões das edições 39–44, em sete áreas e 42 provas. Magis-Bench: 74 questões e 24 seções de prova. Ambas usam a agregação nativa por prova/seção, convertida para a escala 0–100.
- CondutaBench: amostra estratificada de 140/715 questões, cobrindo 14 diretrizes. ENADE-QA: recorte da área da saúde, com 716 questões.
- Sem suporte a tool call indica ausência de avaliação com ferramentas; não é uma nota zero.
Receita da avaliação do S5-nano
Os valores de sampling coincidem com as recomendações por modo usadas para Qwen3.5-4B. O contexto foi de 262.144 tokens, com parsers qwen3 e qwen3_coder.
Na campanha, Think usou o espaço de saída restante no contexto, sem teto adicional. Instruct usou 32.768 tokens em geral. Em MATH-PT, Instruct usou a receita de matemática: temperatura 1,0, top-p 1,0, top-k 40, penalidade de presença 2,0 e limite de 81.920 tokens. Os exemplos de uso com llama.cpp abaixo mantêm o limite recomendado de 32.768 tokens.
Servir com llama.cpp
llama-server -hf maritaca-ai/S5-nano-GGUF:Q4_K_M --jinja -c 32768 -ngl 99 --presence-penalty 1.5
- Troque
Q4_K_MporQ8_0ouBF16para usar outra quantização. - O
-hfbaixa também ommproj; use--no-mmprojpara servir só texto. - Sem
-c, o llama-server reserva o contexto inteiro do modelo, de 262.144 tokens. --spec-type draft-mtp --spec-draft-n-max 3liga a decodificação especulativa com a camada de MTP. Requer um llama.cpp recente.
O servidor sobe em http://localhost:8080/v1, compatível com a API da OpenAI.
Parâmetros de geração recomendados
| Parâmetro | Think | Instruct |
|---|---|---|
enable_thinking |
true (padrão) |
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 |
- O modo é escolhido em cada requisição com
chat_template_kwargs, então o mesmo servidor atende os dois. - Os GGUFs já trazem
temperature,top_p,top_kemin_pdo modo Think como padrão. Opresence_penaltynão vem no arquivo, por isso está no comando acima.
Requisições com curl
Modo Think:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "S5-nano",
"messages": [
{"role": "user", "content": "Explique por que o céu é azul."}
],
"temperature": 1.0,
"top_p": 0.95,
"top_k": 20,
"min_p": 0.0,
"presence_penalty": 1.5,
"max_tokens": 32768
}'
O raciocínio vem em choices[0].message.reasoning_content e a resposta final em
choices[0].message.content.
Modo Instruct:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "S5-nano",
"messages": [
{"role": "user", "content": "Escreva um haicai sobre o 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}
}'
Requisições com a biblioteca da OpenAI
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8080/v1", api_key="EMPTY")
MODEL = "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},
)
INSTANT = 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": "Explique por que o céu é azul."}]
resp = client.chat.completions.create(model=MODEL, messages=messages, **THINK)
msg = resp.choices[0].message
reasoning = getattr(msg, "reasoning_content", None)
print("raciocínio:", reasoning)
print("resposta:", msg.content)
# Próximo turno: devolva o raciocínio junto com a resposta
messages.append({"role": "assistant", "content": msg.content, "reasoning_content": reasoning})
messages.append({"role": "user", "content": "E por que o pôr do sol é avermelhado?"})
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": "Escreva um haicai sobre o cerrado."}],
**INSTANT,
)
print(resp.choices[0].message.content)
O modelo foi treinado com o raciocínio dos turnos anteriores mantido no
histórico. Em conversas com vários turnos, devolva o campo reasoning_content
de cada resposta do assistente, como no exemplo acima.