File size: 2,772 Bytes
0e8e243
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
---
license: apache-2.0
base_model: unsloth/Qwen3-1.7B
library_name: peft
pipeline_tag: text-generation
tags: [lora, sft, structured-extraction, hardware-specs, qwen3, unsloth]
---

# FitCheck spec parser (Qwen3-1.7B LoRA)

Turns messy human descriptions of computers — "my dad's old Dell, i5, 16 gigs,
some nvidia card" — into the structured spec JSON used by
[FitCheck](https://huggingface.co/spaces/build-small-hackathon/FitCheck), the
honest "what AI can your computer run" advisor. This powers its paste box.

The one rule that matters: **missing information becomes `null`, never a
guess.** The model is trained and gated specifically against inventing specs.

## Training data: grounded, not synthetic-echo

Labels are never model-generated: every training example starts from a **real
machine** (GPUs + VRAM from vendor spec tables, 212 cards + Apple chips); only
the phrasing varies, across ~24 registers mimicking how people actually write
(casual chat, dxdiag dumps, Task Manager paste, seller listings, consoles,
comparisons, half-remembered specs, several languages). ~39% of examples have
no GPU to extract — the don't-invent cases. Trained with Unsloth (bf16 LoRA,
completion-only loss) on a single RTX 5090 laptop.

## Evaluation: human-written text only

Evaluated on a 45-example **human-written dev set** (never generator output;
multilingual, consoles, buying-intent traps, pure refusals). The builder
iterated against this set, so these are **dev numbers** — optimistically
biased by adaptive iteration, and labelled as such:

| round | field accuracy | invented-field rate (hallucination) |
|---|---|---|
| 1 | 77.3% | 32.5% |
| 3 (answer-only loss + explicit rules) | 85.8% | 12.0% |
| 5 (final) | **91.6%** | **1.2%** |

A **sealed test set** (written by people who never saw the training data,
evaluated exactly once, builder-blind) is pending; its result will be added
here unedited when run. Ship gate: beat the base model zero-shot AND keep the
invented-field rate under 5% — passed on dev.

## Output schema

```json
{"computer": "Windows laptop|Windows desktop|Mac|Linux PC|Mini PC / Raspberry Pi|null",
 "ram_gb": "number|null", "provider": "nvidia|amd|apple|intel|none|null",
 "gpu": "string|null", "vram_gb": "number|null"}
```

Notable learned rules: `"none"` only when the text says there's no graphics
card (unknown → null); a series alone ("gtx") is a provider, not a GPU; a
stated VRAM figure beats the model's knowledge of that card; dxdiag's
"Display Memory" is not system RAM; "8gb dev kit" on a Jetson is unified RAM,
not VRAM; two machines compared → extract nothing.

Part of the FitCheck project (Build Small hackathon): a deterministic engine
does the math; small models appear only where they earn their place.