Liquid AI released LFM2.5-24B-A2B on October 13, 2026, with downloadable base and post-trained weights. It retains the predecessor's hybrid convolution/attention and sparse feed-forward architecture; the release adds a larger vocabulary, longer context and revised training. This article explains the released text-generation checkpoint, rather than treating the inherited architecture as a newly invented mechanism.1
Two separate savings matter: four of 64 experts run per token in each MoE layer, and only ten of 40 layers retain a growing attention cache. Neither saving makes the complete model a two-billion-parameter memory allocation. All memory values below are calculations, not measurements from a GPU run.
The exact checkpoint
The audit uses model revision 1769516ac588c4c558089c94f27d96b0dc67b183 and Transformers implementation revision 28034545c35acac05793695bd5c878f66e6b544e, checked October 14, 2026. The latter is a code reference, not a claim that Liquid's benchmarks used that commit. The checkpoint identifies Lfm2MoeForCausalLM; its configuration records Transformers 5.12.1.23
| Configuration | Value |
|---|---|
| Hidden width / layers | 2,048 / 40 |
| Token mixers | 30 short convolutions, 10 full attention |
| Attention layer indices, zero-based | 2, 6, 10, 14, 18, 22, 26, 30, 34, 38 |
| Dense feed-forward layers | 0, 1 |
| MoE layers / experts / selected experts | 38 / 64 / 4 |
| Dense / expert intermediate width | 11,776 / 1,536 |
| Query heads / KV heads / head width | 32 / 8 / 64 |
| Convolution kernel / ordinary state width | 3 / 3 tokens |
| Vocabulary / maximum positions | 128,000 / 131,072 |
| RoPE | default, theta = 10,000,000 |
| Embedding/output weights | tied |
These are configuration facts except head width, which follows from 2,048 / 32, and state width, which is confirmed by the cache implementation. The first two layers are dense and convolutional. Choosing a token mixer and choosing a feed-forward implementation are independent decisions.24
For batch size and sequence length , a block preserves . It applies RMS normalization before its mixer, adds a residual, then applies another RMS normalization before its dense or sparse feed-forward network and adds a second residual.3
The router has two different scores
Flatten the normalized hidden states to , with . A router matrix produces 64 logits per token. The implementation applies sigmoid independently to them. With use_expert_bias=true, a stored 64-element bias affects the top-four selection, but is excluded from the mixture weights.3
The checkpoint enables this normalization and sets the routed scaling factor to 1. In exact arithmetic, the weights sum to slightly less than one because of the epsilon; finite precision can round away that difference. A selected expert applies a gated SiLU MLP; each has three matrices containing weights. The runtime representation can pack its two input matrices together; that packing does not change the function.23
Here is an illustrative token with five candidate scores; the other 59 experts have lower selection scores. These are synthetic numbers, not checkpoint measurements.
| Expert | Sigmoid score | Bias | Selection score | Selected? | Mixture weight, approximately |
|---|---|---|---|---|---|
| A | 0.80 | 0 | 0.80 | yes | 0.32 |
| B | 0.70 | 0 | 0.70 | yes | 0.28 |
| C | 0.60 | 0 | 0.60 | yes | 0.24 |
| D | 0.50 | 0 | 0.50 | no | 0 |
| E | 0.40 | 0.20 | 0.60 | yes | 0.16 |
E displaces D, but contributes using 0.40, not its biased 0.60. Using the selection scores as weights would implement a different model. So would replacing sigmoid with softmax: although both preserve logit order without bias, their normalized weight ratios differ, and adding bias after the activation can also change the selected set.
The inference code reads the stored bias; it does not adapt it to the current serving batch. Separating selection from contribution allows selection preferences without directly inflating output coefficients. It does not prove equal expert loads in production, nor reveal the training-time bias update rule. A batch may activate many or all experts across different tokens. Dispatch, token regrouping and uneven expert loads still matter; see expert parallelism.
A short convolution is a local mixer, not an embedding lookup
The convolution path projects a normalized hidden vector into three width-2,048 streams, called B, C and x in the code. To avoid confusing that stream name with batch size, call them . Multiply , run a depthwise causal convolution of width three, then multiply by and project back to width 2,048.3
The equation indexes kernel coefficients by lag; tensor-storage order may be reversed. The streams are direct linear projections, without a sigmoid on these multiplicative gates. โDouble-gatedโ describes the multiplication before and after convolution. There is no cross-channel mixing inside the depthwise kernel; the surrounding dense projections provide it. This is neither Engram-style hashed retrieval nor an input-independent memory table.
The immediate receptive field is three positions. Stacked layers expand it, and the interleaved attention layers provide access to the full preceding sequence. A convolution layer alone cannot retrieve any arbitrary earlier token merely because the model accepts 131,072 positions. During ordinary cached decode, the implementation stores three recent vectors per convolution layer. The mathematical recurrence needs two preceding positions for its next output, but the runtime allocates a three-position state. Rollback recording can retain additional history.4
Full attention remains in ten layers
Each attention layer projects , and . Four query heads share each KV head. Queries and keys receive per-head RMS normalization followed by RoPE; values do not. The configured RoPE is the default formula with theta , not YaRN. The causal attention scale is .23
is the causal mask. The expression is the logical operation; a fused kernel need not materialize its score matrix. Full attention still has quadratic prefill arithmetic and a decode read that grows with cached length. Replacing 30 attention layers reduces those terms without eliminating them.
For BF16 keys and values, one sequence of cached tokens requires the following logical payload, excluding allocation padding, activations and workspaces:2
| Cached tokens, one sequence | LFM2.5 KV payload | Hypothetical 40-layer GQA payload |
|---|---|---|
| 8,192 | 0.15625 GiB | 0.625 GiB |
| 32,768 | 0.625 GiB | 2.5 GiB |
| 131,072 | 2.5 GiB | 10 GiB |
The hypothetical comparison keeps the same head geometry and dtype and gives every layer full attention; it is not a quality comparison with another released model. Ordinary convolution state adds bytes, or 360 KiB per sequence, independent of context length. Multiply payloads by independent concurrent sequences, accounting separately for shared prefixes and runtime layout. The KV-cache guide explains that distinction.
Active weights do not define resident memory
The weight index reports 23,971,585,280 parameters and 47,943,180,288 tensor bytes, approximately 44.65 GiB. That is serialized tensor payload, not peak device memory. Sparse execution skips unselected expert computations; it does not discard their weights from a fully resident deployment.5
Across 38 MoE layers, expert weights account for about 22.951 billion parameters. Replacing all 64 experts with four selected experts in this count gives approximately 2.455 billion active parameters, agreeing with the card's 2.45B figure. It counts all non-expert weights, including the tied vocabulary matrix, even though the input embedding is a row lookup. It is not an exact FLOP or memory-traffic estimate.56
The tied vocabulary matrix alone has weights: 500 MiB at BF16. Tying avoids a second matrix allocation, but the output projection still scores 128,000 vocabulary entries. Full BF16 tensor payload plus one maximum-length BF16 KV cache is already about 47.15 GiB, before all other allocations. Quantization or offload changes that budget and introduces its own accuracy, bandwidth and runtime constraints; see quantization.
Counting a multiply-add as two FLOPs, the selected expert matrix products cost approximately GFLOPs per token. Computing all 64 experts would cost 16 times as much for that term. This explains the arithmetic saving while retaining a larger pool of trained expert functions; it does not establish a 16-fold end-to-end speedup or a quality advantage over a dense model. Attention, shared projections, the vocabulary head, dispatch and memory traffic remain outside that estimate.
What to verify in a deployment
The inspected Transformers implementation separates attention backend selection, prefill convolution and one-token convolution-state updates. It provides PyTorch convolution fallbacks and kernel substitution hooks; the default expert path groups tokens by expert and accumulates weighted outputs. A configured model name does not identify which optimized kernels actually executed.3
Liquid's published GPU test used one B300, SGLang 0.5.22, BF16, 1,024 input tokens and up to 256 output tokens, with continuously replenished requests at fixed concurrency. Its reported aggregate throughput is not single-request decode speed, a 131k-context test, or an isolated measurement of the router's benefit. No such benchmark was reproduced here.1
Pin weights, tokenizer and runtime; verify the chat template and the actual convolution, expert and attention kernel paths. Measure prompt latency, per-request decode latency, aggregate throughput and task accuracy at your intended context and concurrency. The reasoning-only post-trained model can produce additional thinking tokens, so time to a usable answer also depends on output length. The card lists DSpark speculative decoding as coming soon, not a released speedup.6
The 131,072-position ceiling covers input and generated tokens together, including thinking tokens. A configured context limit alone does not establish reliable retrieval or task accuracy at that length.
The weights use LFM Open License v1.0, with a commercial revenue threshold; review the pinned license for deployment eligibility.7 This checkpoint generates text. Liquid d1-3B is a separate released decision model with shared question branches. A common family name does not make their serving paths interchangeable.
Primary sources
Footnotes
-
Liquid AI release, October 13, 2026; architecture continuity and GPU measurement conditions. โฉ โฉ2
-
Released checkpoint configuration at the same revision. โฉ โฉ2 โฉ3 โฉ4 โฉ5
-
Transformers LFM2 MoE implementation at 28034545c35acac05793695bd5c878f66e6b544e:
Lfm2MoeTopKRouter,Lfm2MoeExperts,Lfm2MoeShortConv,Lfm2MoeAttention,Lfm2MoeDecoderLayer. โฉ โฉ2 โฉ3 โฉ4 โฉ5 โฉ6 โฉ7 -
Transformers cache implementation at the same revision:
LinearAttentionLayer,lazy_initialization,update_conv_state, rollback recording. โฉ โฉ2 -
Safetensors index and tensor-payload metadata at the same revision. โฉ โฉ2
-
Model card at revision 1769516ac588c4c558089c94f27d96b0dc67b183. โฉ โฉ2