LFM3-VL-2B-Abliter8
A small vision-language model for documents, charts, screenshots and image questions, with refusal reduction applied to its own multimodally trained language backbone.
GGUF weights · MLX weights · Collection
About the model and its size class
The original model has 1.92 billion parameters: a 1.73B language backbone, 164M vision encoder and 25M projector, with a 128K-token context window. It is built for image and video understanding, OCR, visual grounding and visual tool use.
Liquid's published results place it competitively in the small-VLM class. With thinking enabled, it scores 96.7 on DocVQA versus 97.1 for Qwen3.5-4B, and 92.7 on ChartQA versus 85.8 for that 4B comparator. Its category-average score is 71.4, compared with 64.0 for Qwen3.5-2B and 73.4 for Qwen3.5-4B. Thinking matters: Liquid reports a 62.1 category average with thinking off. This makes it an attractive compact document and visual assistant, rather than a guarantee of larger-model reasoning quality.
These specifications and benchmark scores describe Liquid's unedited model, under Liquid's evaluation settings. We have not rerun those benchmark suites on Abliter8, and do not claim their scores for these edited or quantized weights. The advertised context window has not been requalified at full length here. Source: Liquid's pinned model card.
What abliteration changes in practice
The intended benefit is more direct analysis of images and documents whose subject matter can trigger refusals: for example, adult anatomy, sensitive text in an image, or controversial visual material. The model keeps its own vision-language alignment; it does not receive the separate text model's language weights.
Reduced text refusals were measured. Our functional image tests used an invoice, a chart and an animal photograph. A dedicated sensitive-image refusal benchmark has not been run, so improved willingness on that material is an intended use, not a measured image-level claim.
Abliteration reduces a learned refusal tendency. It changes access to capabilities the model already has; it does not add knowledge, reasoning skill or a new modality. The stock model can already answer many sensitive but factual questions. This release does not imply that every such question was previously blocked, or that every response will now be correct or refusal-free.
Edit and preserved weights
Each model's direction was fitted on its own language activations. We applied W' = W - 2 r (r^T W) to 32 residual-writing matrices in layers 8–23: self_attn.o_proj, feed_forward.w2 and conv.out_proj. At strength 2, this is a scaled rank-one projection subtraction, not the strength-1 orthogonal projector.
The BF16 audit confirms that every other tensor and copied processor/codec file is unchanged. VL and Omni retain their original vision/audio encoders, projectors and other multimodal components. MLX conversion quantizes the language backbone and keeps those multimodal components unquantized. No fine-tuning or language-weight graft was used.
Our evaluation: GGUF
Results below are from our local tests, not Liquid's benchmark table. Refusals use a strict first-person keyword detector on 100 prompts; XSTest uses 100 safe prompts. Counts are detector flags, not a semantic assessment of harmful compliance. Broad keyword counts and full run receipts are retained separately. Every final run produced non-empty answers.
| GGUF | Strict refusals /100 | XSTest false refusals /100 | Mean KLD | Perplexity | Top-1 agreement |
|---|---|---|---|---|---|
| Q8_0 | 0 | 1 | 0.03448 | 96.029 | 90.01% |
| Q6_K | 0 | 1 | 0.04980 | 97.699 | 88.09% |
| Q4_K_M | 0 | 0 | 0.14822 | 91.536 | 79.34% |
| Q4_0 | 0 | 0 | 0.22034 | 96.815 | 74.99% |
Reference: stock LFM3-VL-2B Q8_0, perplexity 95.133. VL and Omni were compared with their own original models. An earlier card incorrectly transcribed their Q8 KLD as 0.0017 and 0.0004; the correct means are 0.034481 and 0.047399.
Our evaluation: MLX
This measures quantization drift from the edited BF16 master in the same MLX runtime. It is a different comparison from GGUF versus stock. We scored 2,048 next-token positions from eight independent 512-token WikiText chunks, after 256 tokens of context per chunk. BF16 reference perplexity: 88.397. These are short-context results.
| MLX | Strict refusals /100 | XSTest false refusals /100 | Mean KLD | Perplexity | Top-1 agreement |
|---|---|---|---|---|---|
| 8-bit | 0 | 1 | 0.00377 | 88.334 | 96.39% |
| 6-bit | 0 | 1 | 0.02017 | 89.576 | 91.21% |
| 4-bit | 0 | 0 | 0.27674 | 82.883 | 72.22% |
All four GGUF quants and all three MLX quants also had 0/20 strict refusals on a separate factual adult sexual-health/anatomy sample, with no empty responses. This small test checks willingness to answer, not medical accuracy; there is no stock comparison for that sample. Generation used 128 output tokens, thinking off, temperature 0.1 for the main refusal tests; the MLX factual sample was greedy.
MLX tests used Apple Silicon, MLX 0.32.4 and mlx-vlm 0.7.11 at commit 230fc308efb577d87446306bfb8a3e9f1a129558. Omni's text-mode masked audio logits were excluded from zero-probability KL terms. Full MMLU, broad reasoning, long-context, video and speech-generation acceptance are not claimed.
Functional checks and limitations
All four GGUF quants passed the final invoice, chart, photo, image-history reuse, tool and bounded-thinking checks.
The MLX edited BF16 master, 8-bit and 6-bit builds scored 13/15 on the strict smoke checks. The two misses were correct arithmetic answers with extra explanation despite a number-only instruction. Four-bit scored 10/15: four misses were output-format differences, and the photo answer was Feline, which the narrow cat|manul matcher rejected. The document and chart answers passed. These are small functional fixtures, not a substitute for the upstream vision benchmark suite.
Available formats and choosing a quant
- BF16 GGUF: full-precision inference export.
- GGUF Q8_0, Q6_K, Q4_K_M, Q4_0: CPU/GPU inference, including Linux x64 and Snapdragon.
- MLX 8-bit, 6-bit and 4-bit: separate
8bit/,6bit/and4bit/directories for Apple Silicon. - VL and Omni GGUF repositories also contain their matching BF16
mmprojfile. MLX packages include their model processors and multimodal weights.
For fidelity, start with Q8_0 or MLX 8-bit. Q6_K and MLX 6-bit retain much closer neutral-text distributions than the 4-bit builds in these tests. Q4_K_M and MLX 4-bit are smaller alternatives with a measurable fidelity trade-off; Q4_0 is the least faithful GGUF option by KLD here. Individual errors can occur at any precision, as the functional results show. Weight files alone do not determine runtime memory: context, caches and multimodal inputs also matter.
The edited BF16 safetensors masters also exist and are the source for these builds. They are retained by abliter8.ai, not uploaded to these six format repositories. Use a safetensors master for SFT/LoRA or new conversions; the BF16 GGUF is an inference artifact.
All LFM3 Abliter8 models
| Model | GGUF weights and card | MLX weights and card |
|---|---|---|
| LFM3-1.7B-Abliter8 | GGUF | MLX |
| LFM3-VL-2B-Abliter8 | GGUF | MLX |
| LFM3-Omni-2B-Abliter8 | GGUF | MLX |
Serving instructions and patches · Measured hardware speeds
Use
Build instructions, source pins and required patches are in the Abliter8 LFM3 serving guide. It covers Snapdragon CPU and experimental Hexagon, AMD HIP/ROCmFPX, NVIDIA CUDA and Apple MLX. Our GGUF evaluation used d05706b4f plus the documented server patch.
hf download abliter8-ai/lfm3-2b-vl-abliter8-gguf --local-dir ./LFM3-VL-2B-Abliter8-GGUF
llama-server -m ./LFM3-VL-2B-Abliter8-GGUF/LFM3-VL-2B-Abliter8-Q6_K.gguf --mmproj ./LFM3-VL-2B-Abliter8-GGUF/mmproj-LFM3-VL-2B-Abliter8-BF16.gguf --jinja --reasoning off
For MLX, download a bit-depth directory and pass its local path to the loader:
hf download abliter8-ai/lfm3-2b-vl-abliter8-mlx --include '8bit/*' --local-dir ./LFM3-VL-2B-Abliter8-MLX
from pathlib import Path
from mlx_vlm import load, generate
from mlx_vlm.prompt_utils import apply_chat_template
model, processor = load(str(Path("LFM3-VL-2B-Abliter8-MLX/8bit").resolve()))
prompt = apply_chat_template(processor, model.config,
"Briefly introduce yourself.", enable_thinking=False)
print(generate(model, processor, prompt, max_tokens=128, temperature=0.1).text)
For image input, set num_images=1 in the template and pass image="photo.jpg" to generate. For Omni speech input, use num_audios=1 and audio="speech.wav"; the tested transcription system instruction is Perform ASR in English. Runtime support determines which upstream modalities are available. This release does not add llama.cpp video support or certify speech generation.
Credits
Base architecture, pretraining and multimodal training: Liquid AI. Refusal-edit technique reference: AtomicChat's LFM3-1.7B Uncensored model. Per-model direction fitting, edit, conversions and local evaluation: abliter8.ai.
The base model's LFM Open License v1.0 applies; see the linked base-model license.