PocketLLM model support¶
PocketLLM uses model-specific runtimes rather than treating every checkpoint as the same Transformer. The table below describes the current repository state.
One checkpoint has a runtime in this build. The multi-card runtimes left with the cut, and so did the single-card ones that were driven by the C++ front end. Their pages remain as measurement records and are marked Stale in the table; a stale row is a claim about a checkpoint, not an instruction for running it here.
Status definitions¶
A status is a claim about evidence, so each one names the evidence it stands on rather than asserting a level. The record behind a row is that model's page, and where a run needed its own document it is under performance.
| Status | What it means, and what proves it |
|---|---|
| Text + server | The complete model has generated tokens from a real checkpoint on the stated hardware, and pocketllm serve answers OpenAI chat and completions against it. Proven by the run record on the model page — for V4.1 and MiMo also behind the server, for Qwen by the concurrency validation. |
| Text, CLI only | Full-model text-in/text-out generation is covered through a CLI or benchmark entrypoint. There is no OpenAI adapter for it. |
| Experimental | Functionality exists with an explicit caveat on performance, determinism or output parity. The caveat is the ## Known limitations entry that carries it. |
| Inspect only | Metadata and tensor validation exist without a complete generation runtime: the audit is the evidence, not generated text. |
| Stale (record only) | The runtime this row's numbers came from is no longer in this repository — it left with the multi-card cut, or it was driven by the retired C++ front end. The page is kept for the measurement, and it says at the top that nothing on it runs here. |
Support matrix¶
The headline result for each model is on its page, together with the conditions it was taken under. This table is the runtime status and nothing else, so a row stays scannable.
| Model | Architecture | Format | Runtime | Status | Design |
|---|---|---|---|---|---|
| DeepSeek-V4-Flash | MLA + sparse attention + MoE | Safetensors FP4/FP8, GGUF Q2 | PyTorch and C++/CUDA, TP4 | Text + server | Design |
| MiniMax-M2.7 | GQA + 256-expert MoE | GGUF UD-IQ1_M |
Raw-block CUDA, TP4 | Text, CLI only | Design |
| GLM-5.2 | DSA/MLA-indexed + dense prefix + MoE | GGUF UD-Q2_K_XL |
Raw-block CUDA, TP4 | Text, CLI only | Design |
| Qwen3.8-27B-FP8 | 48 Gated DeltaNet + 16 GQA | Safetensors FP8 E4M3 | C++/CUDA, TP4 | Text + server | Design |
| Qwen3.8-27B-NVFP4 | Same text architecture | Safetensors NVFP4 + FP8 | C++/CUDA, TP2 | Text, CLI only | Design |
| Qwen3.8-27B (official BF16) | Same text architecture | Safetensors BF16, vision tower | C++/CUDA, audit only; C++/Ascend TP4 | Text + server on Ascend TP4 | Design |
| Ternary-Bonsai-2-27B | Same text architecture | GGUF PTQ1_0, 1.75 bits a weight |
Stale — was C++/CUDA, one card, no flag | Stale (record only) | Design |
| DeepSeek-V4.1-Flash | Encoder-decoder, CSA2 shared-KV, MoE | Safetensors FP8 + FP4 | --backend v41, host PyTorch, TP4 |
Text + server | Design |
| MiMo-V2.6-Flash | 9 global + 39 sliding-window, MoE | Safetensors FP8 + MXFP4 | --backend mimo, host expert bank, TP4 |
Text + server | Design |
| Xing4.0-29B-A4B | MLA + matrix hyper-connection, 64-expert MoE | GGUF IQ4_NL |
--backend xing4, one card, experts resident |
Text + server | Design |
The Design doc column points at the engineering record for that model: what its runtime does and why, the measurements behind each design choice, and the probes those numbers come from. It lives under docs/architecture/, not next to the guides, because it is written for changing the runtime rather than for running it.
Shared baseline¶
The headline results use 4×RTX 2080 Ti 22 GiB unless the model page says otherwise. Model TPS numbers are not directly comparable unless their checkpoint, prompt, runtime, warm state, and measurement convention match. See Benchmarking.
Adding or updating a model page¶
Every model has two documents, and they have different readers.
docs/models/<model>.md is the guide. Someone who wants to run the checkpoint reads it, so it holds only what they need, in this order:
- What the model is, and four spec bullets — backend, parallelism, context, validated hardware.
- Overview — the architecture table, and the one or two ideas that explain how PocketLLM runs it.
- Run it — the serve command and a
curl, the serving options table, and the non-server entrypoints. - What is supported — one table, including the rows that say "not implemented".
- Performance — one summary table, with the conditions stated above it.
- Hardware and memory, then Known limitations.
- Where the detail is — links onward, ending with this matrix.
docs/architecture/<model>_design.md is the record. It holds the kernels, the intermediate measurements, the rejected alternatives, the correctness evidence, the reproduction commands and the source-file inventory. It opens by saying which of its numbers are single readings and which are differences, and it points back at the guide.
Do not put the record on the guide page, and do not claim a capability the record does not establish: never infer runtime support from model metadata alone, because a checkpoint may advertise a long context, a vision tower or an MTP layer that PocketLLM does not execute.