Hur arkitekturen faktiskt ser ut
En vision transformer, konverterad till ONNX och komprimerad till cirka 40 MB, uppdelad i två delar så att vardera håller sig under hostingplattformens filstorleksgräns. Den sätts ihop i webbläsaren och dess kontrollsumma verifieras innan något körs.
Inferens sker via WebAssembly, vilket gör att en kompilerad körtidsmiljö kan köras i nära ursprunglig hastighet inuti en webbläsarflik. Själva körtidsmiljön är en komprimerad WASM-binärfil som laddas tillsammans med modellvikterna.
Inget med detta är längre exotiskt. Det som var en forskningsdemonstration 2021 är i dag ett normalt sätt att distribuera en modell, och webbläsarna gjorde det mesta av jobbet.
Vad det ger
| Fastighet | I webbläsaren | På en server |
|---|---|---|
| Bilden lämnar din enhet | No omöjligt | Yes krävs |
| Kostnad per kontroll | Yes noll | No faktisk beräkningskraft |
| Personuppgiftsbiträdesavtal krävs | No | Yes |
| Fungerar utan nätverk efter laddning | Yes | No |
| Modellen kan hållas privat | No den laddas ner | Yes |
| Första kontrollen sker direkt | No modellen laddas ner en gång | Yes |
Den första raden är anledningen till att resten finns. Eftersom det inte finns någon uppladdningsslutpunkt finns det ingen samling med andras fotografier, ingen lagringspolicy att skriva, ingen dataläcka att anmäla och ingenting att lämna ut på begäran.
Den andra raden förklarar varför verktyget kan vara gratis utan användningsbegränsningar. En kontroll kostar ingenting att leverera, så det finns ingen kostnad per bild att täcka, vilket ändrar hur prissättningen måste se ut.
Vad det kostar
Tre verkliga kompromisser, rakt på sak, eftersom en sida som bara listar fördelar är reklam.
- Den första kontrollen är långsam. Fyrtio megabyte måste tas emot innan något kan hända. På en snabb anslutning tar det några sekunder; på en sämre tar det längre tid. Efterföljande kontroller återanvänder den cachade modellen och startar direkt.
- Äldre enheter har det kämpigt. Inferens kräver minne och processorkraft som en fem år gammal telefon kanske inte har. En server bryr sig inte om vilken enhet du håller i handen.
- Modellen är offentlig. Allt som laddas ner till en webbläsare kan sparas. En serverbaserad modell kan vara skyddad som företagshemlighet; det kan inte den här, och vikterna är ändå en öppen forskningskontrollpunkt.
Den tredje punkten är värd att vara tydlig med. Att skicka en modell till klienten innebär att ge bort den. Det är en acceptabel kompromiss här eftersom vikterna redan är publicerade, och arbetet som gör verktyget användbart är kalibreringen, uppdelningen i fält och tolkningen som byggts runt dem.
De tekniska problemen som är värda att känna till
Dela upp en stor fil
Statiska hostingplattformar har tak för enskilda filstorlekar. En modell på 40 MB överskred gränsen, så den levereras som två deterministiska delar som sätts ihop i webbläsaren och kontrolleras mot en manifest-hash före användning. En skadad eller utbytt del ger ett tydligt fel i stället för att tyst producera felaktiga resultat.
Ladda ingenting förrän det behövs
Modellen, körtidsmiljön och behörighetsläsaren hämtas inte vid sidladdning. De laddas först vid användning, så någon som läser en artikel laddar aldrig ner något av det. Det håller sidorna snabba för den stora majoriteten av besökare som aldrig kör en kontroll.
Avkoda svåra format
HEIC från iPhone, AVIF, TIFF och JPEG XL måste alla avkodas före analys. Webbläsare hanterar nu de flesta av dessa internt, vilket tar bort vad som brukade vara den största delen av arbetet på klientsidan i ett verktyg som detta.
När den här arkitekturen är fel val
Den är inte universellt bättre. En server är mer rimlig när modellen är patentskyddad och värd att skydda, när den är för stor för att skickas, när du behöver resultat i en backend-pipeline snarare än framför en person, eller när du behöver en garanterad svarstid oavsett enhet.
För ett verktyg som någon öppnar för att kontrollera en misstänkt bild gäller inget av detta, och integritetsaspekten är värd mer än allt en server skulle tillföra.
Vad detta utesluter
Att välja klientsidan får konsekvenser utöver integritet, och vissa av dem är begränsningar värda att nämna snarare än funktioner.
Det finns ingen historik. Ett resultat existerar bara i fliken som genererade det, så ingenting kan slås upp senare om det inte exporterades. Det är den direkta kostnaden för att inte ha ett konto, och det är den mest efterfrågade funktionen som arkitekturen försvårar.
Det finns inget delat tillstånd. Två personer kan inte se samma kö, och ett team kan inte granska varandras kontroller. En delad länk innehåller ett enskilt resultat, vilket fungerar för en diskussion men inte för ett arbetsflöde.
Det finns inget API. Något som körs i en webbläsarflik kan inte anropas från en backend-pipeline, vilket utesluter användningsområden med höga volymer helt och hållet. Det är verkliga begränsningar, och den ärliga hållningen är att de är priset för den egenskap som är viktigare.