CaptchaKraken MidnightV2-4B-q4 (GPTQ W4A16)

4-bit weights of CaptchaKraken/MidnightV2-4B: 3.6 GB instead of 9.1 GB, with the same accuracy within half a point. For vLLM on a GPU. Full precision: CaptchaKraken/MidnightV2-4B.

The Midnight V2 family (4B)

Midnight V2 is the 4B CaptchaKraken v2 pointer model. Every repo below holds the same trained model:

Repo What
CaptchaKraken/MidnightV2-4B merged bf16 weights, for vLLM (GPU)
CaptchaKraken/MidnightV2-4B-q4 4-bit GPTQ (W4A16) weights, for vLLM (GPU) โ€” this repo
CaptchaKraken/MidnightV2-4B-LoRA unmerged LoRA adapter + pointer heads, for further training
CaptchaKraken/MidnightV2-4B-GGUF llama.cpp builds (Q4_K_M, BF16, mmproj), for CPU

The other v2 pointer families: Sunlight V2 (0.8B, CaptchaKraken/SunlightV2-0.8B), Twilight V2 (2B, CaptchaKraken/TwilightV2-2B). The numbered element marks come from the v2 CNN element detector, CaptchaKraken/CaptchaKrakenV2-CNN-large.

How it was quantized

GPTQ W4A16 (int4 weights, group 128, symmetric; bf16 activations) over every Linear of the language model, including the Gated DeltaNet projections, with llm-compressor (recipe.yaml is in this repo). The calibration set is 256 of our own training boards, encoded exactly as training and serving encode them (the chat, the numbered marks, the video frames), so the Hessians GPTQ solves against are the activations the pointer actually sees. None of them is in the gate set below.

Kept in bf16: the vision tower, the embeddings, lm_head (the text head scores against it) and the pointer heads (pointer_heads.safetensors, copied unchanged).

Loading it

Same as CaptchaKraken/MidnightV2-4B: client commit c5c1620 of CaptchaKraken plus client-fixes.patch (in this repo). vLLM reads the quantization from config.json.

from captchakraken.pointer.service import PointerService   # client c5c1620 + client-fixes.patch
svc = PointerService("<this repo, downloaded>", detector="detector_r18.pt")  # CaptchaKrakenV2-CNN-large
svc.solve(image=pil_image, marked=True)

On vLLM 0.25.1 set VLLM_ENABLE_V1_MULTIPROCESSING=0.

Gate results: 4-bit against bf16

Tier 2 gate set, 1,067 hand-labelled real boards. Both builds served through vLLM 0.25.1 on an RTX 5080 with the same server and the same boards. Solved rate:

bf16 marked q4 marked bf16 plain q4 plain
All 71.4% 70.8% 75.4% 75.1%
Click (674) 73.7 73.6 78.3 77.9
Grid (223) 65.5 63.7 78.9 78.9
Type (12) 50.0 50.0 50.0 50.0
Video (158) โ€” โ€” 59.5 59.5

Median latency: 181 ms per answer (bf16: 172 ms). Per-board results are in eval/.

Results across the family

This model is in the 4B q4 column. The bold heading marks this size.

Every v2 pointer size, on the same 1,067 hand-labelled real boards, served through vLLM 0.25.1 on an RTX 5080. Percent of boards solved; higher is better. q4 is 4-bit GPTQ (W4A16); the others are bf16.

Plain (the bare board):

0.8B 0.8B q4 2B 4B 4B q4
All (1,067) 53.5% 53.9% 72.6% 75.4% 75.1%
Click (674) 60.4 61.6 76.3 78.3 77.9
Grid (223) 31.8 29.6 75.8 78.9 78.9
Video (158) 56.3 57.0 54.4 59.5 59.5
Type (12) 33.3 33.3 50.0 50.0 50.0

Marked (the CNN detector's numbered marks drawn on the board), stills only, on the boards all five runs marked:

0.8B 0.8B q4 2B 4B 4B q4
All (904) 50.2% 49.8% 70.5% 71.6% 71.0%
Click (673) 58.5 58.8 73.3 73.7 73.6
Grid (223) 26.0 22.9 62.3 65.5 63.7
Type (8) 25.0 37.5 62.5 62.5 62.5
  • 2B solves about 19 points more than 0.8B on the plain boards, split about evenly between clicks and grids. Grids are the sharpest jump (31.8 to 75.8). 4B adds about 3 more.
  • Video barely follows size: 0.8B is ahead of 2B there, and 4B leads by about 3 points.
  • 4-bit moves the totals by less than a point. Its largest cost is on marked grids (2 to 3 points). A 2B q4 has not been measured or published.

How far to trust the gaps:

  • The 0.8B was trained on an earlier build of the data (2026-10-30), so not all of its gap is model size.
  • Compare sizes on the plain table. Marked scores also depend on the detector, and the 4B card names a different detector checkpoint from the 0.8B and 2B cards.
  • The 4B run did not score marked video, so marked video is left out for every size. That is why these marked totals differ from the ones quoted elsewhere on the cards, which cover different board sets.
  • Type has only 12 boards plain and 8 marked, so treat those rows as rough.
  • MidnightV2-4B's own gate results were run through transformers, so use this table, not those, to compare it with the other sizes.

Per-board results: 0.8B, 0.8B q4, 2B, 4B, 4B q4.

License: LGPL-3.0.

Downloads last month
3
Safetensors
Model size
5B params
Tensor type
I32
ยท
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for CaptchaKraken/MidnightV2-4B-q4

Finetuned
Qwen/Qwen3.5-4B
Quantized
(621)
this model

Collection including CaptchaKraken/MidnightV2-4B-q4