--- title: Blackjack State Extractor (0.8B) emoji: "🃏" colorFrom: yellow colorTo: pink sdk: gradio sdk_version: 6.13.0 app_file: app.py pinned: false license: apache-2.0 hardware: zero-a10g --- # Blackjack State Extractor — 0.8B Smaller-model variant of the [2B Space](https://huggingface.co/spaces/davidr99/blackjack-state-extractor). Fine-tuned **Qwen3.5-0.8B** vision model that reads a blackjack web-app screenshot and either: 1. **Extracts the game state as structured JSON** (default prompt), or 2. **Answers a natural-language question** about the screenshot — e.g. *"What is the dealer's hand?"*, *"Should I hit or stand?"*, *"What's my balance?"*. ## Models - Base: [`unsloth/Qwen3.5-0.8B`](https://huggingface.co/unsloth/Qwen3.5-0.8B) - LoRA adapter: [`davidr99/qwen35-08b-blackjack-reasoning-lora-v4`](https://huggingface.co/davidr99/qwen35-08b-blackjack-reasoning-lora-v4) - Training data: [`davidr99/blackjack-wp-reasoning-v4`](https://huggingface.co/datasets/davidr99/blackjack-wp-reasoning-v4) Trained with Unsloth's `FastVisionModel` on Colab L4 (bf16 LoRA, r=16, 1 epoch). ## Why a smaller model? For OCR-style structured extraction tasks like this one, the LLM portion of a VLM is rarely the bottleneck — the vision encoder does most of the work and is the same size in both 0.8B and 2B variants. Trade-offs vs the 2B: - ~2.5× smaller VRAM footprint (~2 GB vs ~5 GB) - Faster decoding once vision is encoded - Slightly lower JSON field accuracy (~5–10 percentage points), most pronounced on small text fields like `result` - May struggle more with strategy-style Q&A that requires reasoning capacity ## Output format The model thinks step-by-step inside `...`, then emits either the JSON state or a short natural-language answer depending on the prompt. ## Hardware This Space targets ZeroGPU (free H200 bursts). Inference takes ~1-3 s per request on GPU; on CPU it's ~10-30 s.