---
title: LFM3-Omni-2B-EXL3e-MaixCAM2
canonical_url: "https://www.modelscope.ai/models/Vaasref/LFM3-Omni-2B-EXL3e-MaixCAM2"
md_url: "https://www.modelscope.ai/models/Vaasref/LFM3-Omni-2B-EXL3e-MaixCAM2.md"
repository: Vaasref/LFM3-Omni-2B-EXL3e-MaixCAM2
last_updated: 2026-11-04
license: other
base_model:
  - LiquidAI/LFM3-Omni-2B
base_model_relation: finetune
language:
  - en
  - fr
downloads: 4
stars: 0
tags:
  - maixcam2
  - ax630c
  - exl3e
  - quantized
---

# LFM3-Omni-2B-EXL3e-MaixCAM2

> LFM3-Omni-2B-EXL3e-MaixCAM2 - An open-source model by Vaasref on ModelScope. LFM3-Omni-2B EXL3e for MaixCAM2 4G

Vaasref/LFM3-Omni-2B-EXL3e-MaixCAM2 is a machine learning model on ModelScope. licensed under other. derived from LiquidAI/LFM3-Omni-2B.

- **Repository**: Vaasref/LFM3-Omni-2B-EXL3e-MaixCAM2
- **License**: other
- **Base model**: LiquidAI/LFM3-Omni-2B
- **Tags**: maixcam2, ax630c, exl3e, quantized
- **Downloads**: 4
- **Stars**: 0
- **Last updated**: 2026-11-04

Source: https://www.modelscope.ai/models/Vaasref/LFM3-Omni-2B-EXL3e-MaixCAM2

---

# LFM3-Omni-2B EXL3e for MaixCAM2 4G

A hardware-specific deployment of [LiquidAI LFM3-Omni-2B](https://huggingface.co/LiquidAI/LFM3-Omni-2B)
for the **Omni app on MaixCAM2 4G**. It accepts text, pictures and recorded
speech, and produces text or speech locally on the camera's AX630C NPU.

| | Specification |
| --- | --- |
| Base model | LiquidAI LFM3-Omni-2B |
| Hardware | MaixCAM2 with 4 GB RAM, AX630C NPU |
| Runtime | Omni / EXL3e, app asset version 1.2.0 |
| Language projections | Native INT4 weights, INT8 activations |
| KV cache | Q8; 1,024-position global and 256-position sliding attention |
| Output vocabulary | Full 128,000 tokens; optional experimental 8,192-token head |
| Projection storage | Three-bit trellis branches and integer codebooks; decoded at loading |
| Complete payload | Approximately 1.29 GiB, excluding the app and its dependencies |

## Text, images and audio

Use text alone or combine a question with camera pictures and a voice recording.
The deployment includes the vision encoder, audio encoder, speech predictor
and audio codec alongside the language model.

| Modality | Deployment profile |
| --- | --- |
| Pictures | 224 × 224 RGB input; 49 projected positions per picture |
| Recorded audio | 16 kHz mono; up to 11 seconds, using 138 projected positions |
| Text output | Full-vocabulary head by default; original input vocabulary with either head |
| Speech output | 24 kHz mono; up to 5.12 seconds per direct utterance |

Text and media share the 1,024-position context. Protocol markers and the written
prompt also occupy positions. The app can speak longer text answers as multiple
utterances; the direct-speech profile remains limited to one utterance.

## Quantization

**W4A8 language projections with a Q8 KV cache** is the useful short description.
This is a mixed-precision deployment, rather than uniform four-bit computation.

EXL3e adapts packing, transform and quantization ideas from Turboderp's
[ExLlamaV3](https://github.com/turboderp-org/exllamav3) to the AX630C.
Activation-calibrated pair-trellis quantization uses Hadamard transforms,
channel gains and error feedback. EXL3e stores calibrated language projections
as **three-bit trellis branches and integer codebooks**. During loading, a native
decoder reconstructs byte-identical packed INT4 operands directly in the NPU
allocations, without writing expanded weight files. Runtime weight traffic is
four-bit; persistent projection storage is three-bit plus codebooks and metadata.

Media companion matrices use calibrated INT8. Attention, normalization and
other operations retain floating arithmetic where required by this engine.
The files use the EXL3e/AX630C execution layout and cannot be loaded as an
upstream EXL3, GGUF or ordinary Transformers checkpoint.

## Performance

Reference measurements on the MaixCAM2's AX630C, using both NPU compute cores:

| Operation | Measured engine performance |
| --- | --- |
| Text generation, full head and full 1,024-position cache | Approximately 5.59 tokens/s |
| Prompt processing, 1,024 positions | Approximately 29.4 seconds |

These are engine measurements, excluding startup, app checkpoint persistence
and media encoding. Prompt processing uses sixteen-row batches. Complete-answer
latency also depends on prompt length, emitted tokens and the chosen output
mode; these figures are not an end-to-end app benchmark.

## Choosing an output head

**Full 128k** is the default. It preserves the original output vocabulary.

**Copying 8k** is an experimental fitted head with a fixed 8,192-token budget.
It targets English, French and agentic output while preserving the full input
vocabulary. A smaller output matrix can reduce scoring cost, but words may take
more output pieces. Arithmetic, copying and stopping can fail; a higher token
rate does not establish faster or equally accurate answers.

## Use with Omni

Use these assets with **Omni 1.2.0** on ARM64 Python 3.13 and MaixPy 4.12.5
with the board's AX630C runtime. The app provides the interface, engine code,
sampling and Python dependencies; installing this repository alone does not
install the app. Other boards and firmware combinations are not validated.

The repository contains:

| Directory | Contents |
| --- | --- |
| `models/language/` | Three-bit projection storage, decoder, full output head and native transaction helper |
| `models/processing/` | Headless generation, batched prompt processing, selected heads and runtime metadata |
| `models/media/` | Vision, audio input, speech prediction, codec and feedback embeddings |
| `models/compact/` | Fitted compact-head weights and normalization data |
| `assets/` | Matching tokenizer, chat template and beginning-of-sequence marker |

Keep the files together at their recorded relative paths. [manifest.json](manifest.json)
lists exact sizes, hashes and model/layout identities; [manifest.sha256](manifest.sha256)
identifies that manifest. Pin the repository revision when selecting assets for
an app release. Automatic model download depends on support in the app release.
The app must support `exl3e-trellis-storage-1`; the manifest declares the required
`trellis-storage-1` engine feature. App version alone is insufficient.

## Limitations

This is a quantized, compiled derivative of the base model. Packing and runtime
checks establish consistency, not unchanged quality relative to its original
weights. No comprehensive base-model-relative quality benchmark is reported
here. Generated text and speech can be incorrect, and speech can be truncated
by the utterance profile. The compact head has additional quality limitations
described above. LFM3-Omni is non-reasoning; the app does not expose a thinking
mode for it.

## Provenance and license

- Base checkpoint: [LiquidAI/LFM3-Omni-2B, revision ce2458cbce4ad970f92032ed94e3d18d30b04f9c](https://huggingface.co/LiquidAI/LFM3-Omni-2B/tree/ce2458cbce4ad970f92032ed94e3d18d30b04f9c).
- ExLlamaV3 reference: [Turboderp's revision cdc785db89e263e65e5849cb53e1ada156411414](https://github.com/turboderp-org/exllamav3/tree/cdc785db89e263e65e5849cb53e1ada156411414).

The model assets are distributed under the **[LFM Open License v1.0](LICENSE)**.
Modifications include calibrated quantization, packed weights, compiled NPU
programs, fixed media profiles and the fitted compact head. These are modified
model assets; the app's MIT license does not replace the model license.

The original native transaction helper is covered by
[Omni's MIT notice](licenses/Omni-MIT.txt). ExLlamaV3 attribution is preserved
in [its MIT notice](licenses/ExLlamaV3-MIT.txt).
