SemIf is een onafhankelijk onderzoeksproject dat gebruikmaakt van 'semantic ifs' via open AI-modellen die volledig lokaal in de webbrowser draaien. Het systeem stelt gebruikers in staat om beslissingsmodellen uit te voeren op hun eigen GPU, waarbij men kan kiezen uit verschillende modellen (zoals Qwen3 en MiniCPM5) afhankelijk van de beschikbare hardwarecapaciteit.
Het project vergelijkt twee specifieke methoden voor besluitvorming:
- Direct readout: Hierbij worden de choice logits van het model direct uitgelezen en genormaliseerd.
- Generation: Hierbij genereert het model een antwoord token-voor-token in JSON-formaat.
Technisch gezien maakt de implementatie gebruik van GGUF-builds via wllama en worden modelgewichten van Hugging Face in de browsercache opgeslagen, waardoor alle data lokaal blijft en er geen backend-communicatie nodig is.
SemIf — Lokale beslissingen in je browser
Een live, lokaal experiment
SemIf maakt gebruik van "semantic ifs" vanuit open modellen, direct in je browser. Het is een beslissingsmodel dat volledig lokaal draait.
Een lokaal model kan op twee manieren werken: het kan de kansberekeningen voor de toegestaan opties lezen zonder deze te decoderen, of het kan hetzelfde type distributie token voor token schrijven. Gebruikers kunnen een modelgrootte kiezen, beide methoden op hun eigen GPU uitvoeren en het verschil meten. Het systeem werkt uitsluitend in de browser en maakt geen gebruik van een backend.
Beschikbare modellen en kwaliteit
Afhankelijk van het apparaat kan er worden gekozen uit verschillende modellen:
- Qwen3 0.6B: Aanbevolen voor telefoons en kleine apparaten (639 MB).
- MiniCPM5 2B: De standaardinstelling voor desktops (1,56 GB).
- Qwen3.5 4B: Voor desktops met veel geheugen (3,01 GB).
Gemeten modelkwaliteit
De kwaliteit is gebaseerd op native checkpoints en publieke benchmarks. De waarden in de kolommen 'Owned' vertegenwoordigen de gebalanceerde nauwkeurigheid. De kolom 'TypeSafe' betreft de equal-case agreement op een publieke subset van 102 rijen. De waarde voor 'Jev' is de gepubliceerde waarde.
| Model | Grootte | Authored | Perturbed | TypeSafe | Gepubliceerde Jev (gehost) |
| Qwen3 0.6B | 639 MB | 44,0% | 52,8% | 40,7% | —— |
| MiniCPM5 2B | 1,56 GB | 68,6% | 69,3% | 63,7% | —— |
| Qwen3.5 4B | 3,01 GB | 81,3% | 76,6% | 84,5% | —— |
| | | | | 88,3% |
Let op: Browser-quantisatie kan de nauwkeurigheid van het model beïnvloeden.
Workflow en implementatie
00 / Setup: Het model laden
Het model wordt één keer geladen. De gewichten zijn afkomstig van Hugging Face en blijven opgeslagen in de browsercache. Invoer verlaat deze pagina nooit. De eerste keer laden kan enkele minuten duren, afhankelijk van het gekozen model, het netwerk en de GPU.
Het proces bestaat uit:
- Download/Cache: Start pas na het klikken op 'load'.
- Model load: Downloaden en voorbereiden.
- Warmup: Compilatie-passes voor beide methoden.
01 / Besluitvorming: Een keuze maken
De gebruiker kan een scenario invoeren (bijvoorbeeld voor accountondersteuning of e-mail triage) met een specifieke status, een vraag en een set toegestane opties.
Beide methoden ontvangen dezelfde beslissingsvraag: status + vraag + opties. De input gaat naar hetzelfde lokale model (bijvoorbeeld MiniCPM5 2B), dat vervolgens twee verschillende paden volgt:
02A / Directe uitlezing (Direct readout)
Hierbij worden de keuzekansen bepaald zonder decodering. Het systeem leest de choice logits van het model en normaliseert deze uitsluitend over de door de gebruiker opgegeven opties.
02B / Generatie (Generation)
Het model wordt gevraagd om dezelfde distributie van de getoonde opties te schatten en deze als JSON-tekst te schrijven, token voor token.
De methoden worden sequentieel uitgevoerd op hetzelfde geladen model om conflicten op de GPU te voorkomen: eerst de directe uitlezing, daarna de generatie. De timing van setup, warmup, prompt-voorbereiding, directe uitvoering en de generatie van tokens wordt gemeten met performance.now().
Technische toelichting
Betekenis van de resultaten
- Conditionele kansen: De directe scores zijn een softmax over alleen de getoonde optie-tokens. Dit is geen gekalibreerde betrouwbaarheid en bevat niet elk antwoord dat het model mogelijk zou prefereren.
- Lokale modelniveaus: Het model voor telefoons offert nauwkeurigheid op voor een kleinere omvang. MiniCPM is de standaard voor desktop. De 4B-optie vereist aanzienlijk meer geheugen. Geen van deze lokale modellen claimt Jev te evenaren.
- Echte lokale timing: Er worden geen vooraf bepaalde resultaten getoond; alle tijden worden live gemeten.
- Gequantiseerde gewichten: De demo maakt gebruik van vastgelegde GGUF-builds via
wllama. Quantisatie kan zowel de kwaliteit als de snelheid beïnvloeden.
SemIf — Lokale beslissingen in je browser
Een live, lokaal experiment
SemIf maakt gebruik van "semantic ifs" vanuit open modellen, direct in je browser. Het is een beslissingsmodel dat volledig lokaal draait.
Een lokaal model kan op twee manieren werken: het kan de kansberekeningen voor de toegestaan opties lezen zonder deze te decoderen, of het kan hetzelfde type distributie token voor token schrijven. Gebruikers kunnen een modelgrootte kiezen, beide methoden op hun eigen GPU uitvoeren en het verschil meten. Het systeem werkt uitsluitend in de browser en maakt geen gebruik van een backend.
Beschikbare modellen en kwaliteit
Afhankelijk van het apparaat kan er worden gekozen uit verschillende modellen:
- Qwen3 0.6B: Aanbevolen voor telefoons en kleine apparaten (639 MB).
- MiniCPM5 2B: De standaardinstelling voor desktops (1,56 GB).
- Qwen3.5 4B: Voor desktops met veel geheugen (3,01 GB).
Gemeten modelkwaliteit
De kwaliteit is gebaseerd op native checkpoints en publieke benchmarks. De waarden in de kolommen 'Owned' vertegenwoordigen de gebalanceerde nauwkeurigheid. De kolom 'TypeSafe' betreft de equal-case agreement op een publieke subset van 102 rijen. De waarde voor 'Jev' is de gepubliceerde waarde.
| Model | Grootte | Authored | Perturbed | TypeSafe | Gepubliceerde Jev (gehost) |
| Qwen3 0.6B | 639 MB | 44,0% | 52,8% | 40,7% | —— |
| MiniCPM5 2B | 1,56 GB | 68,6% | 69,3% | 63,7% | —— |
| Qwen3.5 4B | 3,01 GB | 81,3% | 76,6% | 84,5% | —— |
| | | | | 88,3% |
Let op: Browser-quantisatie kan de nauwkeurigheid van het model beïnvloeden.
Workflow en implementatie
00 / Setup: Het model laden
Het model wordt één keer geladen. De gewichten zijn afkomstig van Hugging Face en blijven opgeslagen in de browsercache. Invoer verlaat deze pagina nooit. De eerste keer laden kan enkele minuten duren, afhankelijk van het gekozen model, het netwerk en de GPU.
Het proces bestaat uit:
- Download/Cache: Start pas na het klikken op 'load'.
- Model load: Downloaden en voorbereiden.
- Warmup: Compilatie-passes voor beide methoden.
01 / Besluitvorming: Een keuze maken
De gebruiker kan een scenario invoeren (bijvoorbeeld voor accountondersteuning of e-mail triage) met een specifieke status, een vraag en een set toegestane opties.
Beide methoden ontvangen dezelfde beslissingsvraag: status + vraag + opties. De input gaat naar hetzelfde lokale model (bijvoorbeeld MiniCPM5 2B), dat vervolgens twee verschillende paden volgt:
02A / Directe uitlezing (Direct readout)
Hierbij worden de keuzekansen bepaald zonder decodering. Het systeem leest de choice logits van het model en normaliseert deze uitsluitend over de door de gebruiker opgegeven opties.
02B / Generatie (Generation)
Het model wordt gevraagd om dezelfde distributie van de getoonde opties te schatten en deze als JSON-tekst te schrijven, token voor token.
De methoden worden sequentieel uitgevoerd op hetzelfde geladen model om conflicten op de GPU te voorkomen: eerst de directe uitlezing, daarna de generatie. De timing van setup, warmup, prompt-voorbereiding, directe uitvoering en de generatie van tokens wordt gemeten met performance.now().
Technische toelichting
Betekenis van de resultaten
- Conditionele kansen: De directe scores zijn een softmax over alleen de getoonde optie-tokens. Dit is geen gekalibreerde betrouwbaarheid en bevat niet elk antwoord dat het model mogelijk zou prefereren.
- Lokale modelniveaus: Het model voor telefoons offert nauwkeurigheid op voor een kleinere omvang. MiniCPM is de standaard voor desktop. De 4B-optie vereist aanzienlijk meer geheugen. Geen van deze lokale modellen claimt Jev te evenaren.
- Echte lokale timing: Er worden geen vooraf bepaalde resultaten getoond; alle tijden worden live gemeten.
- Gequantiseerde gewichten: De demo maakt gebruik van vastgelegde GGUF-builds via
wllama. Quantisatie kan zowel de kwaliteit als de snelheid beïnvloeden.