--- base_model: Qwen/Qwen3.5-9B library_name: transformers pipeline_tag: image-text-to-text license: other license_name: captchakraken-source-available-1.0 license_link: LICENSE tags: - captcha - vllm - computer-vision - awq - compressed-tensors - quantized --- # CaptchaKraken Sunlight (AWQ 4-bit) A standalone captcha-solving model: the [`CaptchaKrakenV1_Lora`](https://huggingface.co/CaptchaKraken/CaptchaKrakenV1_Lora) adapter merged into **Qwen/Qwen3.5-9B** and quantized to **AWQ 4-bit**. One download, no adapter to wire up. Sunlight is the lighter of two hardware tiers. [**Twilight**](https://huggingface.co/CaptchaKraken/Twilight-FP8) is the same adapter and base at FP8, ~5 GB larger and ~4 points stronger. - **Weights:** ~9.1 GB · **Min VRAM:** ~11 GB - **Base revision:** `c202236235762e1c871ad0ccb60c8ee5ba337b9a` - **Quantized:** language-model linears at 4-bit (group 128, asymmetric). The vision tower, the linear-attention projections and the multi-token-prediction head stay bf16 — quantizing those costs accuracy out of proportion to the space saved. Calibrated on 256 in-domain captchas (hCaptcha + reCAPTCHA, none from the held-out set). - **Solves:** reCAPTCHA and hCaptcha grids, plus hCaptcha drag / click / path / fit puzzles. ## Serving (vLLM) ```bash vllm serve CaptchaKraken/Sunlight-AWQ-4bit \ --max-model-len 8192 --gpu-memory-utilization 0.85 --trust-remote-code --port 8000 ``` No `--enable-lora` and no adapter flags — the adapter is already merged in. ## Prompts — read this before integrating This model only performs as measured when it is sent **the prompts it was trained on**. `prompts.json` in this repo carries them, along with the puzzle-type → template mapping and a `prompt_version`. Resolve prompts from that file rather than hardcoding a copy: a mismatched prompt does not error, it silently collapses accuracy. Two integration requirements: - **Disable thinking.** Send `chat_template_kwargs: {"enable_thinking": false}`. With thinking on and a qwen3 reasoning parser, the answer is routed into `reasoning` and `content` comes back empty. - **Coordinates are normalized 0–1000**, top-left `(0,0)`, bottom-right `(1000,1000)` — not pixels. ## Evaluation Scored with the project's soft-tolerance grader on **156 human-labelled held-out captchas**, through an OpenAI-compatible vLLM endpoint. Samples promoted into the labelled-train pool are excluded, so nothing here was trained on. Grid puzzles are exact tile-set match with per-error decay; click/drag receive partial credit by normalized distance — so these are **graded scores, not "percent solved"**. | model | score | |---|---| | Twilight (FP8) | 66.87% | | production `captcha` (FP8 base + LoRA at serve time) | 66.30% | | Sunlight (AWQ 4-bit) | 62.72% | Merging costs nothing: Twilight matches the served base+adapter setup within noise. The 4-bit gap concentrates in coordinate-precision puzzles (drag, path) rather than tile selection, where the two are identical. ## License **CaptchaKraken Source-Available License v1.0** — see [`LICENSE`](LICENSE). Use it, modify it, build commercially on it where captcha solving is an internal component of a product that delivers value beyond the solve — scrapers, anti-detection browsers, automation frameworks, QA and accessibility tooling. You may **not sell the solve**: no reselling or offering for a fee a captcha solving service or API whose primary value is solving captchas, no thin wrappers exposing this model's solving capability, and no relaying its outputs through a paid or public captcha-solving API. Those require a separate written commercial agreement. Copyright (c) 2026 CaptchaKraken LLC. All rights reserved.