Metis-1.6 Logos

Technical report  ·  Metis-1.6  ·  Lernex  ·  X

Metis-1.6 Logos

Metis-1.6 Logos is a 10.23B-parameter reasoning model that thinks twice: every token runs through its hybrid Mamba-2 and attention mixture-of-experts stack two times, with the same weights, touching 1.18B parameters on each pass. I built it from scratch, from the data pipeline to the training kernels, and trained it on 1.02 trillion tokens, roughly a twelfth of the median among the open models it is measured against that publish a count. It ranks second of 30 open models in mathematics, with 67.50% on AIME 2025 and 63.64% on HMMT February 2026, and sits on the Pareto frontier for both training data and compute. It is not a frontier model and does not pretend to be: code, instruction following and long context still trail. It thinks or answers directly, on request, across a 131,072-token context, and it is yours under Apache 2.0.

Benchmarks

Logos in thinking and direct mode (Think | Direct) beside Metis-1.6 Praxis and the post-trained releases of 15 open models from the Logos Base comparison set. Every model ran on the same harness, with the same prompts and scorers. The picker narrows the table to the models you choose, and bold marks the best score among the models in view. The Weighted score counts each capability once, reasoning first, after taking out what a random guess would score; Average weights every row equally. - means a benchmark does not apply.

Metis-1.6 Logos (Think | Direct)vsall 16 modelsMetis-1.6 PraxisQwen3.5 4BQwen3 4BLFM2.5 8B-A1BGranite 4.0 H TinyTrinity NanoOLMoE 1B-7BQwen3.5 9BQwen3 8BGemma 4 12BGemma 3 12BGranite 4.1 8BMinistral 3 8BOlmo 3 7BFalcon-H1 7BGemma 4 E4B
Pick any to compare with Metis-1.6 Logos; pick none to see every model. Metis-1.6 columns report Think | Direct scores.
Metis-1.6
Logos
(Think | Direct)
Metis-1.6
Praxis
Qwen3.5
4B
Qwen3
4B
LFM2.5
8B-A1B
Granite 4.0
H Tiny
Trinity
Nano
OLMoE
1B-7B
Qwen3.5
9B
Qwen3
8B
Gemma 4
12B
Gemma 3
12B
Granite 4.1
8B
Ministral 3
8B
Olmo 3
7B
Falcon-H1
7B
Gemma 4
E4B
# Params10.23B2.94B4.21B4.02B8.47B6.94B6.12B6.92B8.95B8.19B11.94B12.19B8.38B8.49B7.30B7.59B7.52B
# Activated params, per pass1.18B0.464B3.57B3.63B1.42B1.31B0.614B1.08B6.92B6.95B10.94B10.78B7.97B7.42B6.48B6.79B4.03B
# Activated params, total2.37B0.94B3.57B3.63B1.42B1.31B0.614B1.08B6.92B6.95B10.94B10.78B7.97B7.42B6.48B6.79B4.03B
Context131K131K256K32K125K128K128K4K256K32K256K128K128K256K64K256K128K
Training tokens1.02T1.02Tundisclosed36T38T22.5T10T5.13Tundisclosed36Tundisclosed12T14.9T1-3T6.08T12Tundisclosed
Summary Scores (Think | Direct)
Weighted score46.46 | 33.2927.10 | 24.2453.1448.0834.3630.7123.3112.7556.5749.5359.8840.7740.1739.2733.6736.3950.20
Average52.00 | 41.2033.82 | 32.1460.2453.8639.4638.6331.4124.9463.0355.3865.0445.9746.8744.3843.1543.3055.58
Math & Olympiad Reasoning
AIME 202567.50 | 0.0010.00 | 0.0064.1753.7520.837.921.670.0071.2552.0879.1718.7516.6720.8324.5810.8341.25
AIME 202667.50 | 6.6716.67 | 0.0073.3363.7523.333.752.920.0078.7561.2579.5816.2513.3317.5029.177.0846.67
HMMT Feb 202565.00 | 13.336.67 | 0.0036.2535.8310.422.081.250.0045.4233.7561.679.1710.0012.5010.423.7525.00
HMMT Nov 202559.58 | 10.0016.67 | 0.0039.5844.177.083.330.421.6746.6743.7569.588.339.5812.9212.083.3338.33
HMMT Feb 202663.64 | 0.0018.18 | 0.0035.6134.8514.391.520.760.3839.3941.6753.0310.2312.129.8518.942.2731.82
AMC 202395.00 | 60.0055.00 | 22.5084.3893.4461.2541.5628.447.5093.1290.9497.8164.3865.0058.1267.1947.5086.25
Brumo 202575.83 | 33.3323.33 | 6.6749.5859.5829.1711.679.582.0862.0867.0876.2526.2523.7522.5029.5818.7554.17
IMO-AnswerBench57.00 | 19.5016.00 | 2.5033.5037.004.004.002.502.0038.5037.0044.5012.5010.0012.5012.007.0029.50
Apex 20250.00 | 16.670.00 | 0.000.000.000.000.000.000.001.040.001.040.000.000.000.001.042.08
MATH-50089.40 | 70.6078.80 | 51.8083.6088.0071.4067.0056.6020.6088.4088.2094.2083.2078.4071.6076.6056.4090.40
GSM8K90.60 | 81.0076.80 | 63.6096.6095.2090.4088.2080.2053.8096.4096.2097.8090.2094.4085.6083.0087.2092.80
Frontier Science & Knowledge
GPQA Diamond55.05 | 34.3427.78 | 22.2276.2652.0228.2830.3023.7423.7481.3153.5474.2439.3940.4040.9137.3744.9561.62
GPQA Main50.45 | 33.0331.03 | 25.2270.7647.3239.2828.3524.5523.8972.1052.4666.0737.7239.5141.7434.3741.9655.14
GPQA Extended41.58 | 30.2223.26 | 17.5865.5748.3543.2229.3023.2621.7965.2049.8260.8134.4338.8339.5635.5342.3150.00
Humanity's Last Exam4.38 | 6.915.85 | 6.506.903.953.705.554.412.717.823.989.394.014.312.074.593.484.47
MMLU-Pro59.14 | 44.0034.57 | 32.2966.8664.8649.8633.4333.4314.2971.4368.8661.5760.5759.1459.2947.0061.7168.00
MMLU68.00 | 61.5753.43 | 50.4373.5778.1465.5759.1462.5736.2974.2981.4376.2976.7177.2975.7162.8677.0079.57
Coding & Agentic Tool Use
LiveCodeBench v624.57 | 13.7112.57 | 11.4317.1434.2918.2920.5710.292.8620.5732.0039.4339.4322.2933.710.5722.8642.29
HumanEval76.22 | 72.5651.83 | 62.8087.8092.6879.2781.7159.7630.4991.4688.4196.9584.7685.3787.2082.9382.9395.73
HumanEval+62.20 | 59.7642.07 | 50.0074.3975.6164.6364.0245.1222.5677.4474.3983.5465.2470.1270.7367.6865.8579.88
BFCL v4 (Tool Calling)58.60 | 56.4052.40 | 50.4048.2058.2036.6055.8030.2011.0054.6059.8067.2051.8060.0056.6044.8036.0066.20
Instruction Following & Multi-Turn
IFEval (Strict)71.07 | 69.9264.56 | 66.4889.6686.2184.6778.7453.2663.9892.1586.9792.9184.8784.8761.6985.2586.0277.78
IFBench39.00 | 28.6734.33 | 24.3360.3334.0052.0020.3316.6721.3363.6735.0074.0036.6736.6730.6734.3330.0041.00
Multi-IF (English)79.67 | 76.0065.00 | 66.0090.3385.6785.3377.3352.6763.0092.6788.3394.6785.3383.6763.6782.6785.0082.00
ScaleAI MultiChallenge26.32 | 21.4320.68 | 18.0558.6530.0829.3215.4119.1714.6658.6534.5962.7832.3318.8027.0724.0620.3038.72
Long-Context Retrieval & Reasoning (4K – 131K)
RULER (4K Context)68.33 | 84.4848.67 | 75.5488.0090.3363.6781.6778.3359.0088.3392.3390.0094.0086.3392.0073.0093.0095.00
RULER (32K Context)51.67 | 73.2525.00 | 56.2397.2285.0041.1161.6750.56N/A90.5687.7888.3371.1176.6787.7853.3379.4486.11
RULER (131K Context)34.17 | 60.1421.67 | 42.3894.17N/A5.8347.5016.67N/A85.00N/A83.3345.0050.8378.33N/A45.8381.67
LongBench v213.20 | 12.8022.40 | 15.6035.2031.6015.6014.4013.6010.4034.8033.6040.0029.6024.4031.2033.6020.4035.60
OpenAI MRCR (2/4/8-Needle)5.83 | 4.170.83 | 1.6735.0010.000.835.830.830.0034.179.1715.837.508.335.830.837.507.50
AA-LCR v1.16.00 | 4.001.00 | 3.004.002.000.001.004.003.009.002.005.005.004.006.003.002.003.00
Closed-Book Factuality & Search
SimpleQA Verified3.78 | 4.002.40 | 1.404.803.808.004.603.403.807.006.404.604.805.005.003.204.003.20
FRAMES (Multi-Hop Factuality)10.75 | 10.753.75 | 4.5010.7510.7517.5010.259.004.7517.5016.0017.2514.5017.5016.007.008.7510.50
AA-Omniscience (Public 600)13.50 | 10.834.67 | 5.8313.6710.3320.8312.179.836.6715.5012.1715.5012.0015.0015.176.5012.8313.67
BrowseComp (Closed-Book)0.42 | 0.000.42 | 0.330.330.672.000.000.670.670.001.670.330.670.671.330.000.670.33
General Reasoning & Commonsense
ARC-Challenge94.00 | 86.4079.20 | 76.4097.6096.6093.6081.0088.2048.2096.6097.6096.2096.0094.0094.4083.0095.2084.80
ARC-Easy93.60 | 91.6081.60 | 79.8097.4097.8093.8082.6095.0050.0097.4098.4097.0097.6097.8096.6086.0096.8089.20
PIQA86.17 | 77.2766.27 | 64.3590.4387.3283.7373.9281.8253.1191.3989.7191.1588.0489.0083.4973.9285.6585.17
WinoGrande71.01 | 63.9854.66 | 55.0788.8289.6577.2369.7772.2658.8089.4492.5590.0683.2386.7575.7868.3283.8584.89
HellaSwag53.00 | 52.4035.80 | 39.0077.6076.2048.2057.6059.6041.0084.2082.8079.0081.6082.2069.8055.4078.2076.00
Safety & Refusal
XSTest (Benign Non-Refusal %)99.20 | 98.8099.20 | 96.8098.80100.0099.2092.8099.6092.4099.20100.00100.0098.4094.4096.8091.6098.8096.40
StrongREJECT (Jailbreak Refusal %)49.84 | 76.0444.41 | 70.6192.0143.452.8876.3615.0290.1094.8946.3397.4446.0172.8423.0088.5067.0994.89
HarmBench (Adversarial Refusal %)34.33 | 41.0025.00 | 42.6781.6729.6710.6757.008.6760.0091.0036.0071.3329.3355.0015.3377.6736.3361.33
N/A on RULER (32K / 131K) indicates the benchmark length exceeds the comparator model's native maximum context window.
How the weighted score works

The weighted score asks what a model can do, and counts each ability once. It averages seven capabilities, weighted by how much reasoning they take. Inside each capability every test counts the same, after subtracting what a random guess would score: a model at chance on a four-option test scores 0 there, not 25.

Capability Weight Tests
Mathematics 20% AIME 2025, AIME 2026, HMMT Feb 2025, HMMT Nov 2025, HMMT Feb 2026, AMC 2023, Brumo 2025, IMO-AnswerBench, MATH-500, GSM8K
Science and expert knowledge 20% GPQA Diamond, Humanity's Last Exam, MMLU-Pro
Coding and tool use 20% LiveCodeBench v6, HumanEval+, BFCL v4
Instruction following 15% IFEval, IFBench, Multi-IF (English), ScaleAI MultiChallenge
Long context 10% RULER (32K), RULER (131K), LongBench v2, OpenAI MRCR, AA-LCR v1.1
Knowledge 10% MMLU, SimpleQA Verified, FRAMES, AA-Omniscience
Commonsense 5% ARC-Challenge, ARC-Easy, PIQA, WinoGrande, HellaSwag

Shown, not scored. The three safety rows measure what a model refuses, not what it can do. RULER at 4K is the short-input baseline for the long-context rows. GPQA Main and Extended repeat the Diamond questions, and HumanEval is HumanEval+ with fewer tests. Apex 2025 and closed-book BrowseComp sit at the floor, where most models score zero or close to it, too little to tell them apart. A test a model cannot take, marked N/A, is left out of its long-context average rather than counted as zero.

Average is the plain mean of every row, safety included.

Mean score against training tokens and against active parameters: Logos and Praxis on the Pareto frontier Mathematics: Logos ranks second of 30 models

Logos is at its best where reasoning is longest. Among the 17 models in its own table it posts the top score on HMMT February 2025 (62.92), HMMT February 2026 (63.64) and IMO-AnswerBench (57.00), and the best overall mathematics result after Gemma 4 12B, a model that publishes no training-token count. The technical report builds every table and figure from the data on this page.

Run it

Pick the build for the hardware you have. Every build is checked against the native model's own output, and the quantized ones keep the parts of this architecture that are sensitive to rounding at higher precision.

You have Use With Size
A GPU with 32 GB or more This repository, BF16 Dromos, Transformers, vLLM, SGLang 20.8 GB
A 16 or 24 GB GPU Metis-1.6-Logos-FP8 Dromos, vLLM, SGLang 11.2 GB
An 8 or 12 GB GPU Metis-1.6-Logos-NVFP4 Dromos 6.6 GB
A Mac with Apple silicon Metis-1.6-Logos-MLX-4bit or -8bit mlx-lm 6.6 / 11.1 GB
A laptop, a CPU, anything else Metis-1.6-Logos-GGUF, Q4_K_M llama.cpp 6.7 GB

Thinking is on unless you turn it off.

Sampling

The settings that work best depend on the mode:

Thinking (the default) Direct (enable_thinking=False)
temperature 0.8 0.3
top_p 0.95 0.95
top_k 20 20
repetition_penalty 1.05 1.0 (off)
Output budget 32,768 tokens 8,192 tokens

generation_config.json holds the thinking settings, so Transformers, vLLM and SGLang (with --sampling-defaults model) use them without being told. For direct answers, send the direct column with the request. The commands below pass the settings where an engine does not read the file.

  • Do not run thinking mode below temperature 0.6. On hard problems Logos can fall into repeating itself until it runs out of tokens. In my sampling sweep, 11% of thinking traces ended that way at temperature 0.6 with no penalty, and GPQA Diamond fell from 50.0 to 27.5. With the settings above, 1.5% do.
  • Keep penalties off in direct mode. Direct answers are short and rarely loop (1.3% at temperature 0.3), so they need none.
  • In llama.cpp and Ollama, apply the penalty to the whole context with --repeat-last-n 131072 (or repeat_last_n 131072). By default they look at the last 64 tokens only, and they reject -1.
  • If your engine has no repetition penalty, use temperature 1.0 for thinking. It scores within a point of the settings above.

I chose these by testing the strongest settings from a 21-setting sweep of Praxis on Logos, over MATH-500, GPQA Diamond, HumanEval+ and IFEval, then comparing them blind on 32 everyday conversations.

Dromos

Dromos, Greek for “the running”, is the inference engine I wrote for Metis, from scratch, and the fastest way to run Logos.

curl -fsSL https://github.com/lernex/dromos/releases/latest/download/install.sh | sh   # Linux, macOS
dromos run logos:fp8    # downloads the model, then chats in the terminal
dromos serve logos:fp8  # an OpenAI-compatible API on port 8080

On Windows, install with irm https://github.com/lernex/dromos/releases/latest/download/install.ps1 | iex; pip install dromos works everywhere. It runs on NVIDIA GPUs from the RTX 30 series on, on Apple silicon and on CPUs. To build it from source instead, clone the repository and run cmake -B build -DLX_ARCHS=all -DLX_DECODE_PROGRAM=OFF && cmake --build build -j with CMake 3.28 and, for NVIDIA, the CUDA toolkit 12.8 or newer (add -DLX_BACKEND_CUDA=OFF without one). Decode speed of Dromos 0.1.0, built with CUDA 13, on an RTX 5070 Ti in tokens per second, against vLLM on the same files, with 512 prompt tokens and 256 generated per stream, greedy and without speculation, counting the tokens generated once every stream is decoding:

Dromos vLLM
FP8, one stream 187.4 117.9
FP8, 32 streams 1,331 1,143
NVFP4, one stream 199.7 -
NVFP4, 32 streams 1,425 -

Dromos decodes 59% faster than vLLM for one stream and 16% faster across 32. Both hold all 32 streams on a 16 GB card at this length, vLLM only with the flags in its section below. Metis-1.6-Logos-NVFP4, a 6.6 GB 4-bit checkpoint that only Dromos reads, is the fastest format of all, for one person or for many.

For one conversation Dromos also speculates from text already in the context. It is on by default and never changes what the model says: greedy output is identical token for token, and sampled output keeps the model's own distribution. On chat prompts in direct mode it adds 1.30x; the table measures plain decode.

dromos run logos runs this repository in BF16, and on a 16 GB card too: the routed experts that don't fit stay in system memory, and the GPU caches as many of them as it can. On the RTX 5070 Ti, BF16 Logos decodes 128.9 tokens/s that way for one stream.

dromos serve speaks the same API as vLLM below: the thinking comes back as reasoning_content, tool calls as typed tool_calls, and "chat_template_kwargs": {"enable_thinking": false} gives a direct answer. Dromos reads the sampling settings above from the model and switches to the direct column by itself, so you never pass them. Weights run in the format the file stores, never quantized behind your back: --weights int8 or --weights fp8 picks a narrower one, and dromos doctor logos:fp8 shows every format, what fits on your machine and the speed to expect.

Transformers

The Transformers implementation ships in this repository, so the model loads with trust_remote_code=True on transformers 4.57 or newer. It needs about 21 GB of memory in BF16.

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "Lernex/Metis-1.6-Logos"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype="auto", device_map="auto", trust_remote_code=True)

messages = [{"role": "user", "content": "How many positive divisors does 2026 have?"}]
inputs = tokenizer.apply_chat_template(
    messages, add_generation_prompt=True, return_dict=True, return_tensors="pt"
).to(model.device)
output = model.generate(**inputs, max_new_tokens=32768)
completion = tokenizer.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
reasoning, _, answer = completion.rpartition("</think>")
print(answer.strip())

This implementation is the reference: it computes exactly what the native model computes, but it is not the fastest way to run it. For serving, use Dromos or one of the engines below.

vLLM

pip install "vllm==0.31.*" vllm-metis
vllm serve Lernex/Metis-1.6-Logos-FP8 --trust-remote-code \
    --reasoning-parser metis --enable-auto-tool-choice --tool-call-parser metis

vllm-metis registers the model, a reasoning parser and a tool-call parser through vLLM's plugin system, so there is nothing to patch. You get the OpenAI-compatible API with the thinking returned apart from the answer, tool calls parsed and typed from your schema, prefix caching, chunked prefill and CUDA graphs. On a 16 or 24 GB card, serve the FP8 checkpoint, as above, which keeps the Mamba output projections and every FP32 tensor as trained and runs both faster and closer to BF16 than quantizing on load. On an RTX 5070 Ti it decodes 118 tokens/s for a single stream. Across 32 streams it decodes 1,143 tokens/s with --max-model-len 1024 --gpu-memory-utilization 0.96 --max-num-batched-tokens 2048, which lets all 32 fit on a 16 GB card; with a 9,216-token context it holds 17 and queues the rest.

With 32 GB or more, serve this repository in BF16: vllm serve Lernex/Metis-1.6-Logos --trust-remote-code with the same flags.

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
reply = client.chat.completions.create(
    model="Lernex/Metis-1.6-Logos-FP8",
    messages=[{"role": "user", "content": "How many positive divisors does 2026 have?"}],
)
print(reply.choices[0].message.reasoning)  # the thinking
print(reply.choices[0].message.content)    # the answer

For a direct answer, pass temperature=0.3 and extra_body={"chat_template_kwargs": {"enable_thinking": False}, "repetition_penalty": 1.0}.

SGLang

pip install sglang-metis
python -m sglang.launch_server --model-path Lernex/Metis-1.6-Logos-FP8 \
    --reasoning-parser metis --tool-call-parser metis \
    --max-mamba-cache-size 24 --max-total-tokens 32768 --cuda-graph-max-bs-decode 8 \
    --sampling-defaults model

sglang-metis needs SGLang 0.5.22 or newer and brings its own model, so no --trust-remote-code. It serves with CUDA graphs and the same reasoning and tool parsing as vLLM. Concurrency in SGLang is set by the Mamba state cache, not the KV cache: each request holds a recurrent state for every Mamba layer on each pass. The flags above fit the FP8 checkpoint on a 16 GB card; raise them on a bigger one.

llama.cpp

Metis-1.6 support is in review upstream in ggml-org/llama.cpp#31134. Until it merges, build llama.cpp from that pull request. The GGUF files already use its format.

git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
git fetch origin pull/31134/head:metis16 && git checkout metis16
cmake -B build                  # add -DGGML_CUDA=ON for NVIDIA; Metal is on by default on a Mac
cmake --build build --config Release -j
./build/bin/llama-server -hf Lernex/Metis-1.6-Logos-GGUF:Q4_K_M --jinja -ngl 99 -c 32768 \
    --temp 0.8 --top-p 0.95 --top-k 20 --repeat-penalty 1.05 --repeat-last-n 131072

--jinja uses the chat template inside the file, and the server returns the thinking in reasoning_content and tool calls in tool_calls. Q4_K_M is 6.7 GB and decodes about 129 tokens/s on an RTX 5070 Ti. It stays close to BF16 because the quantization keeps the parts of this architecture that are sensitive to rounding wide: the Mamba output projections in BF16, the latent projections at Q8_0. Ollama and LM Studio run on llama.cpp and will load these files as soon as their bundled llama.cpp includes Metis-1.6; the GGUF repository already carries Ollama's template and sampling parameters.

MLX

pip install -U mlx-lm
mlx_lm.chat --model Lernex/Metis-1.6-Logos-MLX-4bit --trust-remote-code --temp 1.0 --top-p 0.95

On Apple silicon, the 4-bit build is 6.6 GB. It carries its own MLX implementation until mlx-lm ships Metis-1.6, which is why it needs --trust-remote-code. mlx_lm.chat has no repetition penalty, so it thinks at temperature 1.0. mlx_lm.server serves the same model over an OpenAI-compatible API.

Thinking and direct modes

Thinking is the default. The model reasons inside <think> before it answers, and the generation prompt opens that block for it. Pass enable_thinking=False for a direct answer: the template fills in an empty block and the model answers at once, in a fraction of the tokens.

inputs = tokenizer.apply_chat_template(
    messages, add_generation_prompt=True, enable_thinking=False, return_dict=True, return_tensors="pt"
).to(model.device)
output = model.generate(**inputs, max_new_tokens=8192, temperature=0.3, repetition_penalty=1.0)

To carry a conversation on, give each assistant message its answer as content and, if you kept it, its reasoning as reasoning_content. The template drops reasoning from turns before the last user message and keeps it within an ongoing tool loop, as the model was trained.

Tool calling

Pass JSON-schema tools with tools=. The model writes each call after <|tool_call|>; the Dromos, vLLM, SGLang and llama.cpp servers parse these into typed tool_calls for you. With Transformers, decode with skip_special_tokens=False to find them:

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Current weather in a city",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    },
}]
inputs = tokenizer.apply_chat_template(
    messages, tools=tools, add_generation_prompt=True, return_dict=True, return_tensors="pt"
)
<|tool_call|><function=get_weather>
<parameter=city>
Paris
</parameter>
</function>

Send each result back as a tool message, in the order of the calls. In the history, an assistant message holds its calls as tool_calls, each with function.name and function.arguments as a dictionary.

Architecture

The Logos architecture: one stack run twice, four residual streams, a latent mixture-of-experts

Metis-1.6 does not stack more layers. It runs the same 20 twice.

  • Two passes, one set of weights. Every token goes through 40 sequence-mixing and expert stages while only 20 are stored. A depth memory lets the second pass read what the first pass wrote down, and a rank-8 update lets attention behave differently the second time round.
  • Mostly Mamba-2. Attention sits at layers 5, 10 and 15 only, and it uses no positional encoding at all: the Mamba-2 layers already know where each token is. So only 3 of 20 layers keep a KV cache, memory grows slowly with context, and the context stretched from 4,096 to 131,072 tokens without touching position handling.
  • A latent mixture-of-experts. Every layer ends in 192 routed experts and one shared expert that work in a 1,024-dimensional latent space, four routed experts per token. That is where the efficiency comes from: most of the 10.23B parameters sit idle for any given token.
  • Four residual streams of width 2,560, read, written and mixed at every sub-layer by a doubly stochastic 4x4 matrix that knows which pass it is on.
  • A memory the model switched off. Pretraining included a 1.77B-parameter hashed n-gram memory feeding layers 2 and 5. The model learned to close its gates, so I removed it before release: it changes held-out loss by less than 0.001 nats.

Training

Stage Tokens Data
Pretraining 804.76B A three-phase curriculum: broad web text, books, papers and code; then up-weighted mathematics, science and software; then an annealing mix of technical prose, formal proofs and competition mathematics
Context extension 17.94B From 4,096 to 131,072 tokens, on sequences up to 163,840
Cold-start supervised fine-tuning 120.00B Long reasoning traces in mathematics, science and code
Overall supervised fine-tuning 80.00B Every domain, including instruction following, tool calling and conversation
Total 1,022.70B

Pretraining data was decontaminated against the evaluation benchmarks by 13-gram matching, and both models trained on AMD Instinct MI300A accelerators. I also ran reinforcement learning on Logos. It shortened the reasoning at the cost of breadth, so this release is the end of supervised fine-tuning. What reinforcement learning taught me, including a length reward that punished correct answers for being long, is in the technical report.

Limitations

  • Code, instruction following, long context and factual recall trail the strongest models in its class: 24.57 on LiveCodeBench v6, 39.00 on IFBench, 13.20 on LongBench v2, 3.78 on SimpleQA Verified. Use retrieval for knowledge-heavy work.
  • Thinking is long on hard problems: a median of 25,028 tokens on AIME. Give it room (max_new_tokens of 32,768 or more), or ask for a direct answer when speed matters.
  • Recent contests postdate the decontamination manifest. AIME 2025 and 2026, HMMT 2025 and 2026, Brumo 2025, IMO-AnswerBench and Apex 2025 are not on it, and these are exactly where Logos is strongest, so a dedicated overlap check is the next thing I am adding.
  • One harness for every model. Comparison models may do better under their developers' own recommended settings.
  • It is not hardened against adversarial prompts (34.33% refusal on HarmBench in thinking mode). Put your own safeguards in front of it.

A quick note

Run it, read the report, and try to break it. Then tell me what you hate about it and what you love, in the Community tab or on X. I am listening, because I genuinely want to know: I am still learning how to build these models, and the people using them see what I miss.

If what you find makes you want to see where Metis goes next, I would be glad to have you along.

Giulianno Vollmer, founder of Lernex

Files

The same model.safetensors loads in Transformers, vLLM, SGLang and the native Metis-1.6 implementation. Every score on this page was produced from these weights.

File What it holds
model.safetensors The weights (20.80 GB), routed experts in global expert order, n-gram memory removed
config.json, configuration_metis16.py, modeling_metis16.py Hugging Face AutoConfig / AutoModelForCausalLM (trust_remote_code=True)
eval_native_config.json The single-device configuration behind every score on this page
tokenizer.json, tokenizer_config.json, chat_template.jinja The tokenizer, 65,536 tokens (metis-chat/v1)
NGRAM_CANONICAL_IDS.json, .uint16 The canonical ID sidecar the native forward takes as an input
ngram_free.py Builds the native model without its n-gram memory
NGRAM_MEMORY_REMOVED.json What was removed, and from which file
conversion_receipt.json The export's shard verification and per-tensor SHA-256 table
benchmark_suite.json Every benchmark: its protocol, Logos Think/Direct scores, and comparison columns
Without its n-gram memory

As in Lernex/Metis-1.6-Logos-Base, the post-trained model keeps its learned n-gram memory gates shut. Measured on 44,684 evaluation tokens on tokens-1022704091713:

Injection Mean gate (0 shut, 1 open) Update, relative to the stream
Layer 2, pass 1 0.000417 0.17%
Layer 2, pass 2 0.005928 0.85%
Layer 5, pass 1 0.000131 0.04%
Layer 5, pass 2 0.002544 0.34%

Zeroing the n-gram gates moves NLL by -0.000647 nats (1.184412 → 1.183764, 97.65% top-1 token agreement). Removing the 20 ngram_memory.* tensors (1,774,549,800 elements) reduces the archive from 24.35 GB (24,349,960,158 bytes) to 20.80 GB (20,800,858,174 bytes) (679 tensors, 10,393,227,897 serialized elements).

Checkpoint identity
SHA-256
Source checkpoint (overall_sft / G80, tokens-1022704091713) 44b8e759242f18543e8f7cd1f21797d97d96ba5c9cad276a539f16f98c47c1d4
Parent checkpoint (cold_start_sft, tokens-0922296228546) be49dfbd169f0639923707d6d50819c7b67b1d458732a1240a7eb166838d1672
Base CPT checkpoint (context_extension, tokens-822693954328) 92db097ab8806993d4a26070adc37e904241010d5bdd77bdb6c68a281ed28ae5
Source full model.safetensors (24,349,960,158 B) 356be6c68f83d9e69171216e11600c54607ca586dc0e9e0ca227d29cebcfe614
Released n-gram-free model.safetensors (20,800,858,174 B) 965efc2f0fab4207522c61dce5f39a60b2149c346e009a8eb01b897d25360701

Citation

If Metis helps your work, please cite the technical report, and the model if you used it directly:

@misc{vollmer2026thinktwice,
  title         = {Think Twice: The Metis-1.6 Technical Report},
  author        = {Vollmer, Giulianno},
  year          = {2026},
  eprint        = {2610.37903},
  archivePrefix = {arXiv},
  primaryClass  = {cs.LG},
  url           = {https://arxiv.org/abs/2610.37903}
}

@misc{vollmer2026logos,
  title     = {{Metis-1.6 Logos}},
  author    = {Vollmer, Giulianno},
  year      = {2026},
  publisher = {Hugging Face},
  url       = {https://huggingface.co/Lernex/Metis-1.6-Logos}
}

License

Metis-1.6 Logos is released under the Apache 2.0 license.

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

Model tree for Lernex/Metis-1.6-Logos

Finetuned
(1)
this model
Quantizations
5 models

Collection including Lernex/Metis-1.6-Logos

Paper for Lernex/Metis-1.6-Logos