{
 "claim": "The headline is 230M parameters, and the bf16 checkpoint really is 230,688,512 \u2014 I summed the safetensors header rather than trusting the label. But 68,104,192 of them (29.52%) are the embedding table, which is tied and therefore also the output head, and 64,402 of its 66,508 rows belong to the base model's English vocabulary. The chess prompt is made only of the 2,106 added tokens and the only outputs read are value and move tokens, so those 65,947,648 parameters \u2014 28.59% of the model \u2014 are never addressed at inference. The published ONNX export agrees: it prunes the table to 2,106 rows, and its fp32 data file is 659,025,920 bytes, i.e. 164,756,480 float32 values. The artifact you actually play against in the browser is a 4-bit, 164.8M-parameter model.",
 "method": "HTTP range-read the first 8 bytes of model.safetensors for the header length, then the header itself; parsed the JSON and summed the product of every tensor shape (132 tensors, no lm_head.weight, so embeddings are tied). ONNX sizes are Content-Length from the Hub file listing; the fp32 parameter count is that size divided by 4.",
 "source": "https://huggingface.co/mlabonne/LFM2.5-230M-Chess/blob/main/model.safetensors",
 "captured": "2026-09-18",
 "note": "164,756,480 is 15,616 more than 162,584,320 + 2,156,544; the remainder is graph-level constants the exporter materialises. No claim is made that the q4 export scores 2004 Elo \u2014 nothing published re-measures the quantised model.",
 "columns": [
  {
   "key": "artifact",
   "label": "artifact"
  },
  {
   "key": "params",
   "label": "parameters",
   "align": "right"
  },
  {
   "key": "bytes",
   "label": "bytes on disk",
   "align": "right"
  },
  {
   "key": "what",
   "label": "what it is"
  }
 ],
 "rows": [
  {
   "artifact": "mlabonne/LFM2.5-230M-Chess, model.safetensors (bf16)",
   "params": 230688512,
   "bytes": 461391768,
   "what": "the checkpoint the 2004 Elo is attributed to"
  },
  {
   "artifact": "  of which model.embed_tokens.weight [66508, 1024]",
   "params": 68104192,
   "bytes": null,
   "what": "29.52% of the model; tied, so it is also the output head"
  },
  {
   "artifact": "  of which the 2,106 chess rows [2106, 1024]",
   "params": 2156544,
   "bytes": null,
   "what": "0.93% of the model \u2014 the entire chess vocabulary"
  },
  {
   "artifact": "  of which the 64,402 inherited base-vocab rows",
   "params": 65947648,
   "bytes": null,
   "what": "28.59% of the model, unreachable: no English token is ever an input or an output"
  },
  {
   "artifact": "everything that is not the embedding table",
   "params": 162584320,
   "bytes": null,
   "what": "the part that actually computes"
  },
  {
   "artifact": "LFM2.5-230M-Chess-ONNX, onnx/model.onnx_data (fp32)",
   "params": 164756480,
   "bytes": 659025920,
   "what": "vocab pruned to 2,106 rows; 659,025,920 / 4 float32 values"
  },
  {
   "artifact": "LFM2.5-230M-Chess-ONNX, onnx/model_q4.onnx_data",
   "params": 164756480,
   "bytes": 223439008,
   "what": "4-bit; this is what the browser demo downloads and runs"
  }
 ]
}