Uitgelegd

AI op je toestel zelf

Het grootste deel van het afgelopen decennium betekende alles wat AI heette dat er een verzoek naar andermans computer ging. AI op je toestel zelf is diezelfde software, verhuisd naar de hardware die je vasthoudt.

Gidsen

De definitie, zonder de reclame

AI op je telefoon zelf betekent dat het model lokaal draait. Het bestand dat het werk doet staat in de opslag van je telefoon, wordt in het geheugen geladen, en levert daar zijn uitkomst. Er wordt niets verstuurd en er wordt op niets gewacht.

Het alternatief, en zo werkt het merendeel nog steeds, is aan de serverkant. Je telefoon pakt de invoer in, stuurt hem over het netwerk, en toont wat er terugkomt. Het model is misschien enorm en wordt voortdurend beter, en jij krijgt het nooit te zien.

Dezelfde categorie software, twee plekken om hem neer te zetten. Verder gaat het onderscheid niet, en nuchterheid is op zijn plaats, want “AI” doet zwaar werk in de meeste zinnen waarin het opduikt.

Je gebruikt het al de hele dag

Een flink deel is oud nieuws en wordt helemaal geen AI genoemd.

Je camera bepaalt waar de gezichten zitten voordat je op de knop drukt. Je fotogalerij groepeert foto’s op wie erop staat. Je toetsenbord voorspelt het volgende woord uit de vorige paar. Sommige telefoons schrijven spraak uit zonder verbinding, en sommige vertalen tekst met een binnengehaald taalpakket.

Geen daarvan vraagt toestemming om iets te versturen, en de meeste mensen hebben zich nooit afgevraagd waar ze draaien. Ze zijn lokaal gebouwd omdat de wachttijd telde, of omdat het absurd zou zijn geweest om elk camerabeeld te uploaden.

Waarom het pas de laatste jaren kan

Aan het idee is niets nieuw. Software lokaal draaien is decennialang hoe computers werkten. Wat er veranderde, is dat de nuttige modellen klein genoeg werden om te passen.

Ruwweg tegelijk werd de opbouw van modellen efficiënter, dus een bepaald niveau van kunde had minder getallen nodig om uit te drukken. Technieken om een geoefend model in te dikken, in het algemeen bekend als quantisatie, lieten die getallen met minder precisie en dus in minder ruimte opslaan, doorgaans tegen enig verlies aan nauwkeurigheid. En processors in telefoons kregen eigen hardware voor precies dit soort rekenwerk.

Daar kwam bij dat er nuttige modellen werden uitgebracht met de gewichten erbij. Wie een app wilde bouwen kon vanaf dat moment een bekwame herkenner meeleveren zonder een dienst achter zich te hebben staan.

Niets daarvan maakte lokaal verwerken beter dan de serverkant in ruwe kunde. Het maakte het goed genoeg voor een grote klasse alledaagse taken.

Wat je ervoor terugkrijgt, en wat ernaast staat

Elk voordeel van lokaal draaien heeft een post ernaast die uit dezelfde keuze volgt. Los van elkaar gelezen geven ze een verkeerd beeld.

Het werkt zonder verbinding, en het moet passen. Geen bereik, vliegtuigstand, een kelder, een land waar je bundel niet geldt: wordt er niets opgevraagd, dan is geen van die gevallen nog een gebeurtenis. Daar staat tegenover dat het model in de opslag van je telefoon moet passen en in het geheugen moet staan terwijl het draait, waar het concurreert met alles wat je verder open hebt.

Er gaat niets weg, en “lokaal” is nog geen “privé”. Voor alles wat gevoelig is, is dat eerste de eigenschap die telt: geen upload om te onderscheppen, geen server die een kopie vasthoudt, geen bewaartermijn om na te lezen. Maar een app kan zijn model lokaal draaien en tóch statistieken versturen, tóch een account eisen, tóch zijn gegevens naar een cloud kopiëren, en tóch de uitkomst uploaden nadat je telefoon het werk gedaan heeft. “Het model draait op je telefoon” en “er gaat niets over jou van je telefoon af” zijn twee verschillende beweringen, en mensen bedoelen doorgaans de tweede. De nuttige controles gaan dus over gedrag en niet over bouw: vraagt het überhaupt om netwerktoegang, werkt het in vliegtuigstand, en overleven de gegevens een verhuizing naar een nieuwe telefoon.

De wachttijd is voorspelbaar, en hij is die van jouw telefoon. Een lokale uitkomst hangt af van je hardware. Een uitkomst op afstand hangt af van je verbinding, van de afstand tot de server en van hoe druk die het heeft. Lokaal is niet altijd sneller, maar het is consequent, en het faalt niet geruisloos als het netwerk slecht is. Het keert zich om zodra je telefoon vijf jaar oud is: verwerken aan de serverkant verbergt het verschil tussen telefoons, lokaal verwerken legt het bloot.

Vaak geen account, en ook geen stille verbetering. Verwerken aan de serverkant houdt meestal in dat vastgesteld wordt wie het vraagt, en lokaal verwerken hoeft dat niet. Daar hoort bij dat een model op een server voor iedereen tegelijk beter wordt, en een model op je telefoon pas als jij een nieuwe versie binnenhaalt.

Eén post staat alleen. Een model dat op een telefoon past is kleiner dan een model dat op een server met gespecialiseerde hardware draait, en kleiner betekent doorgaans iets minder nauwkeurigheid, zeker bij lastige invoer als zware accenten of rumoerige opnames. Daar komt warmte bij: rekenwerk maakt warmte, een telefoon heeft geen ventilator, en wordt hij te warm dan knijpt Android de processor af en gaat alles langzamer.

Waar het niets oplost

Alles wat kennis van de wereld buiten je telefoon nodig heeft, actuele informatie, gegevens van andere mensen, de inhoud van een dienst, is niet lokaal te beantwoorden, hoe goed het model ook is. Alles wat een heel groot model vraagt gaat niet in redelijke tijd op een telefoon draaien. En alles wat tussen mensen gedeeld moet worden is een coördinatieprobleem en geen rekenprobleem. Een model op je telefoon weet niet hoe laat de trein van morgen vertrekt en het kan de agenda van je collega niet inzien, hoeveel geheugen je ook hebt.

Wat overblijft is smal en goed te omschrijven: een begrensde taak, op invoer die je al in handen hebt, waar de wachttijd telt of de invoer gevoelig is. Fotografie. Tekstvoorspelling. Een pagina vertalen die voor je ligt. Inspreken.

De test van twee minuten

Installeer de app, laat afmaken wat hij bij de eerste start binnenhaalt, zet dan mobiele data en wifi uit en gebruik de functie. Werkt het, dan werkt het lokaal. Blijft het hangen of komt er een melding over een verbinding, dan doet het dat niet.

Die eerste download zegt op zichzelf al iets. Een lokaal model moet ergens vandaan komen, dus een app die een paar honderd megabyte binnenhaalt en daarna stil blijft, gedraagt zich precies zoals je zou verwachten. Haalt een app nooit iets binnen en antwoordt hij tóch meteen, dan zit het model in de installatie meegeleverd of hij gebruikt andermans hardware, en welke van de twee het is zie je in vliegtuigstand.

Spraak is het duidelijkste voorbeeld

Inspreken is waar de afruil het makkelijkst te voelen is, en het is meestal het eerste dat mensen naar hun telefoon verhuizen.

De invoer is van nature vertrouwelijk, want je spreekt zinnen uit die je niet per se zou publiceren. Het werk is kort en begrensd, dus het past bij een telefoon. En de manier waarop de serverversie faalt is overduidelijk: geen bereik, geen inspreken.

LocalType is dat voorbeeld in productvorm. Het is een Android-toetsenbord waarbij het spraakmodel op de telefoon staat en daar het herkennen doet, en er zit helemaal geen route naar de cloud in de app. Het levert drie modelmaten mee, van 60, 190 en 539 MB, zodat de afweging tussen geheugen en nauwkeurigheid van jou is en niet van ons. De middelste zette 6,9 seconden spraak om in 4,1 seconden op een testtelefoon met 4 GB geheugen, en dat soort getal zou je aan elke app op je telefoon moeten vragen. Het dekt bovendien achttien talen uit één meertalig model, en het vraagt precies één keer om het netwerk, om het model op te halen dat je koos.

Elke post hierboven geldt er onverkort voor. Het neemt opslag in, de modellen zijn kleiner dan wat een server zou draaien, de nauwkeurigheid verschilt per taal, en op een oudere telefoon wil je het model van 60 MB. Kom je een app tegen die lokaal draait en geen van deze posten heeft, dan lees je een verkooppagina.

LocalType voor Android

Spraak naar tekst, privé op je eigen telefoon. De spraakherkenning draait op de telefoon zelf.

Ontdek op Google Play