Metis-1.6 Praxis Base

Technical report  ·  Metis-1.6  ·  Lernex  ·  X

Metis-1.6 Praxis Base

Praxis Base is the pretrained base of Metis-1.6: a 2.94B-parameter mixture of experts that interleaves Mamba-2 and attention, runs every token through its stack twice, and touches 0.46B parameters on each pass. I trained it from scratch on 0.82 trillion tokens, none of them question-answer, instruction or chat data, and it reads 131,072 tokens of context. The base models it is measured against below saw 1 to 36 trillion, where their labs say. It continues text; for a model that follows instructions, use Metis-1.6 Praxis.

Benchmarks

Praxis beside 16 base models from other labs, every one run on this server through the same harness, prompts and scorers, and ordered by Average, highest first. The picker above the table narrows it to the models you choose; bold is always the best score among the models in view. … is queued and - does not apply. Updated October 21, 2026, 00:47 UTC; the table fills in as runs finish.

Metis-1.6 Praxis Basevsall 16 modelsOuro 2.6BQwen3.5 4BQwen3 4BNanbeige4.2 3BMinistral 3 3BGranite 4.1 3BFalcon-H1 3BOuro 1.4BGemma 4 E4BSmolLM3 3BLFM2.5 2.6BGemma 3 4BQwen3.5 2BLlama 3.2 3BGemma 4 E2BQwen3.5 0.8B
Pick any to compare with Praxis; pick none to see every model. Best first by Average.
Metis-1.6
Praxis Base
Ouro
2.6B
Qwen3.5
4B
Qwen3
4B
Nanbeige4.2
3B
Ministral 3
3B
Granite 4.1
3B
Falcon-H1
3B
Ouro
1.4B
Gemma 4
E4B
SmolLM3
3B
LFM2.5
2.6B
Gemma 3
4B
Qwen3.5
2B
Llama 3.2
3B
Gemma 4
E2B
Qwen3.5
0.8B
# Params2.94B2.67B4.21B4.02B4.17B3.43B3.40B3.15B1.43B7.52B3.08B2.70B3.88B1.88B3.21B4.65B0.752B
# Activated params, per pass0.464B2.47B3.57B3.63B3.15B3.03B3.15B2.81B1.23B4.03B2.81B2.44B3.21B1.37B2.82B1.90B0.498B
# Activated params, total0.94B9.87B3.57B3.63B6.30B3.03B3.15B2.81B4.93B4.03B2.81B2.44B3.21B1.37B2.82B1.90B0.498B
Context128K64K256K32K128K256K128K128K64K128K64K125K128K256K128K128K256K
Training tokens0.82T7.7Tundisclosed36T28T1-3T14.9T2.5T7.7Tundisclosed11.2T34T4Tundisclosed9Tundisclosedundisclosed
Q&A or instruction data in pretrainingnoneyes, in ChatMLundisclosedyesyesundisclosedyesyesyes, in ChatMLundisclosedyesundisclosedundisclosedundisclosedundisclosedundisclosedundisclosed
Obeys a bare instruction5.5%5.5%36.0%81.5%86.0%28.5%72.0%14.5%2.0%4.0%1.0%34.5%9.0%31.0%8.0%3.0%20.5%
Overall
Average24.6643.1542.9342.8841.2340.5939.9939.8138.7838.5537.1735.9334.3734.1730.9230.5327.98
Average, with long context27.72-45.57----42.42-41.54--37.2038.72-33.5732.64
Frontier reasoning and knowledge
Humanity's Last Exam3.894.233.343.993.484.174.363.944.414.224.405.564.363.804.493.803.99
HLE-Diamond3.433.322.885.081.654.124.813.984.003.713.985.084.673.303.714.123.57
HLE-Verified (Gold)4.004.874.004.354.704.875.223.654.705.044.006.265.743.654.175.224.17
GPQA27.9026.3425.6722.9925.8928.5724.7823.4425.8926.1225.4522.3226.1224.3325.4526.5627.01
GPQA Diamond24.2428.7924.2425.2528.2829.2925.7620.2027.2727.2729.8025.2528.2823.7426.2629.8025.76
SuperGPQA11.1225.8127.1128.0732.5825.1521.3724.4922.3224.7123.4022.8517.4121.4319.2516.4915.98
MMLU-Pro14.1948.8448.6245.7445.8440.9233.3640.6341.4338.1933.1837.0127.9236.6124.3024.7425.05
BIG-Bench Extra Hard1.667.012.177.9212.067.487.854.183.892.196.287.633.214.092.853.691.84
ARC-AGI-20.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.00
SimpleQA Verified2.703.004.803.204.303.002.402.501.504.004.003.603.102.604.202.301.80
Math
AIME 20260.000.000.003.330.000.000.000.006.670.000.000.000.000.000.000.000.00
HMMT Feb 20260.003.030.003.033.030.003.033.033.030.000.000.000.000.000.000.000.00
AIME 20250.000.000.000.000.000.000.000.003.330.000.000.000.000.000.000.000.00
MATH-50016.2040.8044.0048.2020.6036.0039.0043.401.8020.6038.8041.2024.0032.806.009.2020.40
Omni-MATH5.8315.2714.7913.3012.0811.6810.4812.8321.416.1410.3412.406.509.243.503.757.25
GSM8K22.5982.3480.8972.3369.1471.1172.4868.9978.4756.4167.9373.1636.8559.0626.3821.8338.59
GSM8K-Platinum23.5785.2881.9775.5279.5771.6372.8771.8879.4057.2469.4877.5039.6263.0327.0523.2439.70
MGSM6.2537.6750.9851.1345.3544.4440.8440.7338.2243.2035.3144.1129.8935.7116.0416.8022.95
Coding
LiveCodeBench0.0021.5916.5915.4424.7316.0416.3216.4317.4213.6812.972.097.424.567.864.731.15
HumanEval+16.4634.7644.5151.2244.5135.9843.2955.4933.5425.0031.1031.1028.6629.8825.0021.3419.51
MBPP+35.9882.8072.4980.4278.0470.6376.1975.6676.9865.3466.1447.8862.4349.4755.2950.7936.24
CRUXEval-O12.4933.7430.3228.6631.5225.4227.0627.9728.0924.2922.0418.1421.2420.4518.5216.0513.01
CRUXEval-I20.8450.5948.9644.0050.9440.5544.0140.0941.5737.1335.7327.2432.8236.2328.9126.8530.91
BigCodeBench7.2840.4435.7041.849.1233.9543.1632.7228.7731.8428.7722.1924.3917.5419.3914.567.63
MultiPL-E8.8030.4132.0241.8244.6127.6642.3939.7525.2218.6221.7212.8221.5217.4817.1113.178.99
SciCode0.000.000.000.000.000.001.540.000.000.000.000.000.000.000.000.000.00
Long context
RULER (4K)75.5491.6987.1792.4192.9188.5186.5591.2486.6888.9987.9284.6186.7891.1687.6089.6886.49
RULER (8K)66.86-62.0975.7975.8785.9482.5583.0572.8476.7480.9679.3574.5187.4581.8466.5581.81
RULER (16K)61.53-65.6570.1785.9182.0576.9575.47-74.4078.2972.5969.0783.8478.8568.2576.20
RULER (32K)56.23-59.9261.31-76.7875.3572.00-70.9071.8063.5868.1680.6375.7366.5472.65
RULER (64K)50.76-89.25---69.5358.59-70.3873.2754.3757.1680.5174.2459.7375.45
RULER (128K)42.38-80.58----53.33-60.99--51.8369.15-47.6968.14
LongBench v223.2628.8332.0131.6137.1825.6526.2427.2423.2627.2428.6328.4326.8430.8226.8426.2426.84
Knowledge and languages
TriviaQA38.2953.0650.5850.6227.8956.2450.3940.7343.9264.9358.1343.4060.5932.7159.5453.4619.54
MMMLU28.5748.3359.9157.2654.6655.5946.6846.7640.9956.9145.8748.5447.2646.9340.9341.9140.17
TruthfulQA MC237.4949.4052.3053.3850.3644.9647.6841.8546.7244.9845.9843.6539.6745.8639.3038.1844.93
AGIEval (English)18.4642.8944.8345.9243.7435.7235.3640.6034.8736.4529.6033.8031.6733.1324.1228.8423.73
General
MMLU39.6273.7474.2171.1975.7668.6761.5665.5568.3166.5459.7164.0957.8961.5254.9453.9552.90
MMLU (5-shot)43.2674.6272.9773.0775.4571.1964.4068.2067.4270.6561.4463.8159.6153.8856.5957.6648.11
MMLU (cloze)38.8048.8248.4149.3251.9949.2645.3944.8446.6748.7244.6438.3446.3538.2242.5444.0835.28
MMLU-Redux41.2476.2978.4875.8578.9972.5765.4469.7971.0969.8362.9566.4761.5466.3257.6957.0456.59
MMLU-Redux (5-shot)44.4177.4776.4477.4778.8074.8668.0172.2770.3873.3864.0966.1062.9656.8559.1960.8350.49
BIG-Bench Hard31.1880.3480.4571.3780.0371.1763.9570.8671.0862.7459.7551.8251.6063.4347.2942.8846.81
DROP29.9162.5567.8860.1426.1659.1165.6254.0651.0556.8044.5247.1045.6454.2243.9141.1639.77
HellaSwag66.5376.4375.2373.7575.8873.7674.6771.2271.6178.5175.1366.1875.8165.9474.2273.7154.92
PIQA76.3380.0379.2278.0780.1479.2779.3377.6978.5180.7478.6775.8480.0974.8177.9178.7871.87
ARC-Easy65.7880.6076.2276.1879.4683.0079.2577.0676.8985.1976.8580.8981.5771.4272.1480.0567.42
ARC-Challenge38.2358.7055.2951.9655.6358.0249.8354.1052.5659.7352.1351.6254.5245.8246.2552.3040.44
WinoGrande61.6468.7571.0370.9670.0969.6969.0666.3066.5470.2468.2765.9869.6964.6470.0965.4360.06
OpenBookQA40.4043.8042.4041.0044.0041.6043.8042.4041.6046.0044.8043.2043.0037.8040.6044.4036.00

Benchmark average against training tokens: Praxis and the other base models

Reading the table

Columns. Every column is a base model, never an instruct one, run on this server through the same harness, prompts, shot counts, windows and scorers as Praxis, in BF16 with greedy decoding wherever Praxis decodes greedily. Praxis stays in the first column, boxed; the rest are ordered by their Average, highest first, and a column still running joins the order when its Average lands. Picking models in the menu above the table narrows it to Praxis and those models, and the bold moves to the best of what is in view; unpicking them all brings every column back. Each header links to that model's weights. … is queued; - does not apply, such as a RULER length past a model's context window or past what fits the 16 GB evaluation GPU.

Average. The unweighted mean over the 44 benchmarks every finished column has a score for, so each average covers the same tests. The long-context tests are left out: RULER past 4K, since not every model can run that long, and LongBench v2, whose documents are cut to each model's own window, so its score measures how far a model can read as much as what it knows.

Average, with long context. The same 44 plus LongBench v2 and RULER at 8K, 16K, 32K, 64K and 128K, for the models that can run at every length.

# Params. The language model alone. Vision and audio encoders and multi-token-prediction heads are not counted.

# Activated params. The weights one token runs through, counted one way for every column: token embeddings, the readout and per-layer embedding tables are lookups rather than compute and are left out. Per pass is one trip through the stack; total is a token's whole path. Praxis makes two passes (every non-expert weight plus 4 of 128 routed experts per layer, each pass), Ouro four recurrent steps, Nanbeige 4.2 two loops, every other model one.

Training tokens. As each lab publishes it for the base model. Praxis: 804.76B of pretraining and 18B of context extension. Ministral 3's 1-3T is the range its paper gives for the whole family; Qwen3.5 and Gemma 4 publish no figure. Gemma 3, Llama 3.2 and Ministral 3 were distilled from larger models' output distributions, which carry more per token than text alone.

Q&A or instruction data in pretraining. What each lab says went into its base model's pretraining, in its own report or card. Metis-1.6 Praxis: no question-answer, instruction or chat data; 87.9B of its 804.76B pretraining tokens are synthetic teaching prose. Ouro: its final 300B-token stage is drawn from 20+ supervised fine-tuning datasets converted to the ChatML chat format, and SFT data is 9.6% of its second stage (report). Granite 4.1: chain-of-thought and synthetic instruction data, about a quarter of its third phase (blog). Qwen3: trillions of synthesized tokens including question answering and instructions (report). Nanbeige 4.2: up-weighted synthetic QA and some agentic trajectories (report). SmolLM3: instruction and reasoning datasets in its last pretraining stage (blog). Falcon-H1: question-answer pairs, chain-of-thought solutions and synthetic QA (report). Qwen3.5, Gemma 4, Gemma 3, LFM2.5, Ministral 3 and Llama 3.2 do not say; Qwen3.5's card notes its chat-template tokens were trained in the base model, and Gemma 3, Ministral 3 and Llama 3.2 learned from larger models' outputs without saying whether that teacher was a base or an instruct model. A base model that has seen these formats starts closer to an instruct model, which helps most on zero- and few-shot question answering.

Obeys a bare instruction. The same 200 lines for every column: one-line instructions whose answer takes no knowledge or skill (say a word, copy a sentence, change its case, answer yes or no), sent as the instruction and a newline, with no chat template and no examples. The figure is the share answered exactly on the first line, greedy. A model trained on documents alone tends to carry on the page instead, repeating the instruction or starting a post; one that has trained on instructions answers them.

Not on this card. 13 benchmarks that need instruction following, a judge model, tools or an agent loop join the table with the post-trained Metis-1.6.

How each benchmark is run

Praxis's operating point. Native BF16, forced depth 2, four routed experts per token, deterministic routing, depth-memory gates at 1.0, no n-gram memory and the full 131,072-token window. Prompts longer than 4,096 tokens run as 4,096-token blocks that each continue the model's cache: one block is bit-identical to the ordinary forward, and splitting moves the score by 0.035 nats per token with 98% of next-token choices agreeing, no more than batching already does to this model. These are scores for that fixed setting, not for every depth or routing policy the architecture allows.

Every other column runs in BF16 through vLLM (Nanbeige 4.2 through Transformers), fed the harness's exact token ids.

Harness. lm-evaluation-harness 0.4.13, except where a benchmark ships its own grader (LiveCodeBench, BigCodeBench, MultiPL-E, SciCode, BIG-Bench Extra Hard, ARC-AGI-2), which is used unchanged. Each benchmark runs at its standard shot count for base models. The exceptions are deliberate: TriviaQA at 5 shots, SuperGPQA and SimpleQA Verified in base-model form, and the competition math rows on MATH-500's 4-shot prompt so they compare with it directly. benchmark_suite.json holds every row with its protocol and every column's score.

Multiple choice, 0-shot, scored by answer likelihood. Length-normalized for HellaSwag, ARC, OpenBookQA and PIQA. MMMLU questions too long for the window count wrong.
GPQA, GPQA Diamond, MMMLU, TruthfulQA MC2, AGIEval (English), MMLU, MMLU-Redux, HellaSwag, PIQA, ARC-Easy, ARC-Challenge, WinoGrande and OpenBookQA

Multiple choice, 5-shot, scored by answer likelihood. SuperGPQA uses five fixed demonstrations in place of its generative official protocol, and counts the questions too long for the window wrong.
SuperGPQA, MMLU-Pro, MMLU (5-shot) and MMLU-Redux (5-shot)

Multiple choice with no options shown. Each answer's own text is scored after the question, 0-shot, normalized by its length in bytes. The other MMLU rows show lettered options and score the letter, which also tests whether a small model can tie a letter to its option; this one does not.
MMLU (cloze)

Text only, no judge model. Multiple choice scored by answer likelihood; short answers generated greedily and matched exactly or as an equivalent. Items too long for the window count wrong. Not comparable with official HLE scores, which are judged and include images.
Humanity's Last Exam, HLE-Diamond and HLE-Verified (Gold)

Greedy generation, answer matched. GSM8K and GSM8K-Platinum 5-shot, strict match. SimpleQA Verified 5-shot, normalized match, no grader model. TriviaQA 5-shot. MGSM 8-shot native chain of thought in all 11 languages, items that outgrow the window counted wrong. BIG-Bench Hard 3-shot chain of thought. DROP 3-shot F1.
SimpleQA Verified, GSM8K, GSM8K-Platinum, MGSM, TriviaQA, BIG-Bench Hard and DROP

Minerva 4-shot prompt, greedy. MATH-500 by exact match with a 256-token cap; AIME, HMMT and Omni-MATH checked by math_verify, Omni-MATH without its judge model.
AIME 2026, HMMT Feb 2026, AIME 2025, MATH-500 and Omni-MATH

Code run against the tests, greedy. HumanEval+ 0-shot, MBPP+ 3-shot, and BigCodeBench's complete split, all 1,140 tasks with 4 GB of memory each (the official 30 GB is sized for a larger machine; 99.5% of reference solutions pass here). Prompts are right-stripped, as the reference harnesses do.
HumanEval+, MBPP+ and BigCodeBench

Code, pass@1 from 10 samples at temperature 0.2. LiveCodeBench with its official base-model prompt on the January to April 2025 problems, CRUXEval 2-shot, MultiPL-E as the mean of 18 languages.
LiveCodeBench, CRUXEval-O, CRUXEval-I and MultiPL-E

The benchmark's own prompt and scorer. BIG-Bench Extra Hard 0-shot, items too long for the window counted wrong. ARC-AGI-2 as text grids, two attempts. SciCode without background, the reply starting at the step's function header.
BIG-Bench Extra Hard, ARC-AGI-2 and SciCode

RULER, 13 tasks at each length. Haystacks built with each model's own tokenizer: 500 items per task up to 16K, the first 200 at 32K, the first 100 at 64K and 128K. No model is run past its context window, or past what fits the 16 GB evaluation GPU at that length.
RULER

LongBench v2, 0-shot. All 503 questions in the official prompt, scored by the answer letter's likelihood. A prompt longer than the window is cut in the middle, as the official protocol does. Chance is 25.
LongBench v2

Praxis, row by row
  • Humanity's Last Exam: 2,158 text-only items; multiple choice 15.40, short answer 0.30.
  • HLE-Diamond: 728 text-only items; multiple choice 13.73, short answer 0.70.
  • HLE-Verified (Gold): 575 text-only items; multiple choice 11.56, short answer 0.75.
  • MATH-500 by math_verify: 16.20.
  • GSM8K flexible extraction: 22.90.
  • MGSM by language, strict match: bn 0.0, de 6.0, en 26.8, es 7.2, fr 12.4, ja 1.2, ru 4.8, sw 1.6, te 0.0, th 2.0, zh 6.8. With flexible answer extraction the 11-language average is 8.11.
  • MultiPL-E by language: js 16.5, ts 14.9, cpp 14.7, java 11.8, php 10.9, lua 10.1, jl 9.7, scala 9.2, go 8.5, pl 8.0, cs 7.5, rs 7.1, d 7.1, rb 7.0, r 6.5, swift 4.9, rkt 2.9, sh 1.4.
  • SciCode: 0 of 65 problems solved end to end, 0 of 288 steps (0.00).
  • LongBench v2 by document length: short 21.67, medium 25.12, long 22.22. Below chance because of a letter habit, not the documents: the model answers A 42% of the time, and A is correct 19% of the time.
  • TruthfulQA MC1: 22.52.
  • MMLU cloze without length normalization: 36.38.
Contamination screening

Praxis's pretraining data was screened against a pinned registry of 63 benchmark sources (203 evaluation splits). A document matching any held-out item exactly, after normalization, or on long shared n-grams (13 tokens for text, 12 for code) was removed whole. That covers most of the suite above, including LiveCodeBench through its sixth release, which spans the January to April 2025 window scored here. AIME 2026 and HMMT February 2026 were written after the training data.

Screening lowers the risk; it does not prove absence. Paraphrased or translated copies can pass n-gram filters, and benchmarks outside the registry (SuperGPQA, BIG-Bench Extra Hard, AGIEval, PIQA, BigCodeBench, ARC-AGI-2) were not screened.

From Metis-1.5

Benchmark Metric Praxis Base 1.5-base 1.5-think Gain over 1.5-think
MMLU acc 39.62 23.6 23.3 +16.32
HellaSwag acc_norm 66.53 30.4 31.0 +35.53
ARC-Easy acc_norm 65.78 41.3 41.7 +24.08
ARC-Challenge acc_norm 38.23 25.9 28.2 +10.03
OpenBookQA acc_norm 40.40 29.6 28.6 +11.80
PIQA acc_norm 76.33 54.7 54.6 +21.73
WinoGrande acc 61.64 51.5 51.8 +9.84
Average 55.51 36.71 37.03 +18.48

Seven zero-shot tasks, full test sets. Metis-1.5 had 898M parameters (about 340M active) and saw 50B tokens. Its scores are the ones published on the Metis-1.5-think card, measured by its own JAX likelihood harness, so a point either way is noise and ten are not. The two 1.5 columns sit within a point of each other, so the gap is pretraining, not post-training.

Long context

Context extension trained on 18B tokens of sequences up to 163,840 tokens. On 384 held-out records at 131,072 tokens, a planted needle's top-1 recall rose from 18% to 66%, and the far context now lowers loss by 0.22 nats per token where before it raised it by 3.9. RULER at every length from 4K to 128K is in the table above.

The extension gate
Metric Before extension This checkpoint
Full-context tail NLL 5.735 1.614
Short-context tail NLL 1.861 1.833
Long-context gain (short minus full) -3.875 +0.220
Base-window NLL 1.703 1.665
Needle top-1 accuracy 0.180 0.656
Needle target log-probability -5.918 -1.871

Measured before training and at this checkpoint; lower NLL is better. Loss on short windows improved too, but that held-out text came from the extension's own mix.

What extension cost on short benchmarks
Benchmark 4K, before extension This checkpoint Change
Average of these 44 25.52 24.66 -0.86
Humanity's Last Exam 5.14 3.89 -1.25
HLE-Diamond 3.59 3.43 -0.16
HLE-Verified (Gold) 5.24 4.00 -1.24
GPQA 29.69 27.90 -1.79
GPQA Diamond 27.78 24.24 -3.54
SuperGPQA 10.96 11.12 +0.16
MMLU-Pro 13.60 14.19 +0.59
BIG-Bench Extra Hard 1.22 1.66 +0.44
ARC-AGI-2 0.00 0.00 0.00
SimpleQA Verified 2.50 2.70 +0.20
AIME 2026 0.00 0.00 0.00
HMMT Feb 2026 0.00 0.00 0.00
AIME 2025 0.00 0.00 0.00
MATH-500 19.20 16.20 -3.00
Omni-MATH 6.17 5.83 -0.34
GSM8K 24.72 22.59 -2.13
GSM8K-Platinum 25.31 23.57 -1.74
MGSM 8.15 6.25 -1.90
LiveCodeBench 0.44 0.00 -0.44
HumanEval+ 17.68 16.46 -1.22
MBPP+ 42.33 35.98 -6.35
CRUXEval-O 14.04 12.49 -1.55
CRUXEval-I 23.04 20.84 -2.20
BigCodeBench 10.09 7.28 -2.81
MultiPL-E 10.47 8.80 -1.67
SciCode 0.00 0.00 0.00
RULER (4K) 68.17 75.54 +7.37
TriviaQA 40.72 38.29 -2.43
MMMLU 28.09 28.57 +0.48
TruthfulQA MC2 36.71 37.49 +0.78
AGIEval (English) 18.25 18.46 +0.21
MMLU 39.65 39.62 -0.03
MMLU (5-shot) 43.58 43.26 -0.32
MMLU (cloze) 39.30 38.80 -0.50
MMLU-Redux 41.39 41.24 -0.15
MMLU-Redux (5-shot) 45.31 44.41 -0.90
BIG-Bench Hard 33.44 31.18 -2.26
DROP 29.36 29.91 +0.55
HellaSwag 67.50 66.53 -0.97
PIQA 77.42 76.33 -1.09
ARC-Easy 69.74 65.78 -3.96
ARC-Challenge 39.76 38.23 -1.53
WinoGrande 62.43 61.64 -0.79
OpenBookQA 40.60 40.40 -0.20

The 4K column is the checkpoint before extension as this repository first held it (see the earlier revision, below). MMLU 5-shot, GSM8K, GPQA, GPQA Diamond, MMLU-Pro, MATH-500 and Humanity's Last Exam in it are the training cluster's measurements of the same file; every other score is from this server. Extension cost under a point on average, most of it in code and math (MBPP+ fell 6.4 points, MATH-500 3.0) and ARC-Easy (4.0), while RULER at 4K gained 7.4.

Quickstart

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 6.2 GB of memory in BF16. It is a base model, so give it the beginning of a document, not a question.

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "Lernex/Metis-1.6-Praxis-Base"
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)

prompt = "The three laws of thermodynamics state that"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=200, do_sample=True, temperature=0.7, top_p=0.95)
print(tokenizer.decode(output[0], skip_special_tokens=True))

This implementation computes exactly what the native model computes, and it is the same code as the post-trained model's: the two checkpoints share every tensor name and shape. The vLLM and SGLang plugins and the llama.cpp converter in the Metis-1.6 Praxis card read the same configuration; they were validated on the post-trained weights.

Architecture

Parameters 2.94B; 0.46B per pass, two passes per token
Architecture 12 layers of Mamba-2 and attention, width 2,048; 128 routed experts, 4 per token
Context 131,072 tokens; attention has no positional encoding
Training 822.76B tokens: 804.76B of pretraining, then 18B of sequences up to 163,840 tokens
Vocabulary 65,536 tokens
Weights BF16 with FP32 routers and state-space parameters, one file for Transformers and the native implementation
The Praxis 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 12 twice.

  • Two passes, one set of weights. Every token goes through 24 sequence-mixing and expert stages while only 12 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 4 and 8 only, and it uses no positional encoding at all: the Mamba-2 layers already know where each token is. So only 2 of 12 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 128 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 2.94B parameters sit idle for any given token.
  • Four residual streams of width 2,048, 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 0.60B-parameter hashed n-gram memory feeding layers 2 and 4. The model learned to close its gates, so I removed it before release: it moves held-out bits per byte from 0.78110 to 0.78123.

A quick note

Run it, build on it, 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 and in the native Metis-1.6 implementation; for the native one, build the model inside ngram_free.without_ngram_memory(), since the native code always builds an n-gram memory and this archive has none. Every score on this page was produced from these weights.

File What it holds
model.safetensors The weights, routed experts in global expert order
native_config.json The Metis-1.6 family configuration
eval_native_config.json The single-device configuration behind every score on this page
tokenizer.json The tokenizer, 65,536 tokens
NGRAM_CANONICAL_IDS.json, .uint16 The canonical ID sidecar the native forward takes as an input
ngram_free.py Builds the 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, Praxis's score and every lab column's
config.json, configuration_metis16.py, modeling_metis16.py Hugging Face AutoConfig / AutoModelForCausalLM (trust_remote_code=True)
tokenizer_config.json, special_tokens_map.json, generation_config.json Tokenizer and generation settings for Transformers
Without its n-gram memory

Metis-1.6 was trained with a hashed n-gram memory: 0.60B parameters of tables, looked up from the preceding tokens and added to the residual stream through a learned gate at layers 2 and 4. Praxis learned to keep that gate shut. Measured on 300,000 characters of prose at this checkpoint:

Injection Mean gate (0 shut, 1 open) Update, relative to the stream
Layer 2, pass 1 0.0006 0.15%
Layer 2, pass 2 0.0008 0.09%
Layer 4, pass 1 0.0003 0.09%
Layer 4, pass 2 0.0060 0.29%

Removing it moves bits per byte from 0.78110 to 0.78123, and the seven zero-shot tasks from a 55.36 average to 55.51, every task within the half-point a rerun moves it. So this archive has none of it: no tables, no projection, no gates, 602,180,520 parameters fewer. It is exactly the trained model with its n-gram gates at zero, which is how every score on this page was measured, since the memory's only path into the model is that gated addition. A fix for how the memory trains is part of the next generation.

The earlier revision

Until October 5, 2026 this repository held the 4,096-token checkpoint from before context extension. Its n-gram tables were written with their rows in expert-parallel shard order rather than the global order the model reads them in, so every n-gram lookup on that archive returned an unrelated row. The training cluster's evaluation read the same file, so its scores, and every score first published here, measured the model with its n-gram memory scrambled. Restored to global order (each repaired table then matches the extended checkpoint's row for row, median cosine 1.000 against 0.000), the same checkpoint scored 56.75 on the seven zero-shot tasks against 56.73 as first archived: a memory the model keeps shut cannot be broken by scrambling or fixed by repair. Its scores stay on this page, under long context, for what they are. Its weights, and this checkpoint's own with the n-gram memory still in, were removed from this repository, history included, to keep private storage for current weights.

Checkpoint identity
SHA-256
Checkpoint 0ecb0918cd31527aced61d8d6325150c94cd5657d8352b4010580394755c546e
Pretraining checkpoint it was extended from 91aec83eac8f4cc90c90a29ad56cbcb309ea4c710e1a799e6ff9a2268661ffb1
Context-extension stage configuration 501a745878846542e4a0ea1535880d3ab0d938b4f4c65d51f4cf757c972261b1
Exposure plan 4f9e04f1a327878cca9cd584504e768309d861b6c911e2a2871b77c519917f19
model.safetensors 4a29eba773aa80c059b8dfde514429e5b3f202bbb0faf93fb91ac711e491c3bc
The same checkpoint with its n-gram memory dfb8873baa676ab4dfc9cbd98ed2f9b3785d72bc7c7781334483266c84c96040

model.safetensors keeps every name, dtype, shape and byte of the evaluated state dict except the n-gram memory's 20 tensors: 418 tensors and 3,077,520,828 serialized elements, a count that includes the tied embedding and readout twice, plus buffers, so it is larger than the parameter count. conversion_receipt.json describes the export with the n-gram memory: the source shard verification, its file hashes and a per-tensor dtype, shape and SHA-256 table. Every tensor kept here is byte-identical to its entry there.

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{vollmer2026praxisbase,
  title     = {{Metis-1.6 Praxis Base}},
  author    = {Vollmer, Giulianno},
  year      = {2026},
  publisher = {Hugging Face},
  url       = {https://huggingface.co/Lernex/Metis-1.6-Praxis-Base}
}

License

Metis-1.6 Praxis Base is released under the Apache 2.0 license.

Downloads last month
-
Safetensors
Model size
3B 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-Praxis-Base

Finetunes
1 model

Collection including Lernex/Metis-1.6-Praxis-Base

Papers for Lernex/Metis-1.6-Praxis-Base