Enhet 4 / 11

On-Device AI: Core ML, TensorFlow Lite og ML Kit

Gevinster:

  • Evne til å bestemme på enheten eller skyen og velge riktig verktøy (ML Kit, Core ML, TensorFlow Lite) basert på personvern, offline behov, modellstørrelse og batterikriterier
  • Evne til å forhindre stille feil ved å verifisere inngangsforbehandling (størrelse og normalisering) fra modellens dokument i modellintegrasjon
  • Evne til å evaluere konfidenspoengsummen og måle resultatet med brukergodkjenning og på den virkelige enheten, uten å presentere spådommer med lav konfidens som absolutt sannhet.

Så langt har vi brukt AI som et hjelpemiddel for å få fart på utviklingsprosessen. Nå går vi videre til den andre rollen til AI: talentet innebygd i applikasjonen. Moderne telefoner har kraften til å kjøre AI-modeller som bildegjenkjenning, tekstoversettelse, taletranskripsjon osv. direkte på enheten (på enheten — i telefonens egen prosessor uten å gå til serveren). AI på enheten; Det gir store fordeler fremfor skyløsninger når det gjelder hastighet, personvern og offline drift. I denne enheten vil vi lære hvordan du bygger inn AI i applikasjonen med iOSs Core ML, kryssplattform TensorFlow Lite (nå kjent som LiteRT) og Googles ferdige løsning ML Kit, og hvordan du bruker AI som assistent i denne integrasjonen.

På enheten eller skyen?

Dette er den første og viktigste arkitektoniske beslutningen. AI på enheten fjerner ikke data fra telefonen – en stor gevinst for personvernet. Det er også øyeblikkelig og fungerer offline da det ikke er noen nettverksforsinkelse. Det er imidlertid begrenset av enhetens prosessorkraft og minne; Svært store modeller (f.eks. gigantiske tungemodeller) vil ikke passe inn i telefonen eller tappe batteriet. Cloud AI, derimot, tilbyr ubegrenset kraft, men sender data til serveren, krever nettverk og skaper latens.

kriterium

På enheten

Cloud (cloud API)

Personvern

Data forblir på enheten, sterk

Data går til server, oppmerksomhet er nødvendig

hastighet

Øyeblikkelig, ikke noe nettverk

Avhenger av nettverksforsinkelse

offline

Det fungerer

Fungerer ikke

Modellstørrelse

Begrenset (telefonressurs)

ubegrenset

batteri/varme

Effekter ved mye bruk

Server under belastning, enheten er avslappet

Kostnad

Gratis (enhetskilde)

Gebyr per bruk

Beslutningsregel: Velg på enheten hvis personlige/sensitive data blir behandlet, må fungere offline, eller øyeblikkelig respons er avgjørende. Hvis du trenger en veldig stor modell, vend deg til skyen. Denne enheten er fokusert på enheten; Vi vil dekke sky AI i neste enhet.

Tips: Gjør alltid på enheten til standard for en funksjon som håndterer sensitive data (helse, biometri, plassering). Uttrykket "data forlater ikke enheten" er uvurderlig for både personvernoverholdelse og brukertillit, og utgjør en stor forskjell i butikkens personvernetikett.

Tre måter: ML Kit, Core ML, TensorFlow Lite

ML Kit (Google) er den enkleste måten å starte på: det gir ferdige funksjoner som tekstgjenkjenning (OCR — lesing av tekst i et bilde), ansiktsgjenkjenning, strekkodelesing, oversettelse på noen få linjer. Du trenger ikke trene din egen modell. Core ML (Apple) er den mest effektive måten å kjøre din egen modell eller en ferdig modell på iOS; Den bruker Apples Neural Engine (kunstig nevrale nettverksprosessor) maskinvare. TensorFlow Lite/LiteRT er en kryssplattformløsning som lar deg kjøre din egen opplærte modell på både Android og iOS.

Den generelle integrasjonsflyten med AI går slik:

  1. Talentdefinisjon. Et klart mål, for eksempel «Jeg vil lese teksten på bildet».
  2. Veivalg. Hvis det er klare talenter, ML Kit; Core ML/TF Lite hvis spesialmodell tilgjengelig.
  3. Modellformat. .mlmodel (Core ML), .tflite (TF Lite). Forklarer AI-transformasjonstrinnene.
  4. Integrasjonskode. Laster modellen, forhåndsbehandler inndata, tolker utdata.
  5. Ytelsestest. Hastighet, minne, batterimåling på ekte enhet.
Forsiktig: Den vanligste AI-feilen i modellintegrering på enheten er forhåndsbehandling av inndata – konvertering av bildet til størrelsen og fargeformatet modellen forventer. Hvis modellen forventer 224x224 piksler og du gir den 300x300, blir resultatet meningsløst, men du får ingen feilmelding. Bekreft forbehandlingsverdiene fra modellens dokument.

Å kjenne grensene for modellen

En enhetsmodell tar beslutninger basert på dataene den ble trent på. En objektgjenkjenningsmodell som kun er trent på bilder tatt i løpet av dagen, vil være feil på nattbilder. Modellen har en konfidensscore (tillit — hvor sikker modellen er på svaret, vanligvis mellom 0 og 1); Det er farlig å presentere resultater med lav selvtillit for brukeren som nøyaktige. For eksempel skal en hudflekkskanningsapplikasjon ikke si "definitivt godartet", men skal si "modellens prediksjon er dette, vennligst kontakt en lege". Modellresultatet er en anbefaling, ikke en diagnose.

tre minisaker

Tilfelle 1 – Akselerasjon med OCR. En utgiftssporingsapp har fjernet byrden med å legge inn kvitteringer manuelt med ML Kit-tekstgjenkjenning. Brukeren tar bilde av kvitteringen, og beløp og dato fylles ut automatisk. Manuell inngangstid ble redusert fra 40 sekunder til 8 sekunder per kvittering. Teamet fikk alltid brukeren til å bekrefte mengden AI-en leste; fordi rynkete kvitteringer hadde 6 % feilmargin. Automatisering + menneskelig godkjenning var den rette balansen.

Tilfelle 2 — Forbehandlingsfeil. Ett team integrerte en plantegjenkjenningsmodell med TensorFlow Lite; På testeren var resultatene tilfeldige. Problemet var at koden AI genererte ikke normaliserte bildet til [0,1] området modellen forventet (pikselverdier ble stående på 0-255). Når normalisering ble lagt til økte nøyaktigheten fra 30 % til 89 %. Leksjon: Forbehandling er stille, men dødelig.

Tilfelle 3 – Personverngevinst. En helseapplikasjon oppdaget uregelmessigheter fra hjertefrekvensdata med Core ML-modellen på enheten. Dataene gikk aldri til serveren. Dette valget gjorde det mulig for applikasjonen å motta uttrykket "samler ikke inn data" i App Stores personvernetikett og økte nedlastingshastigheten sammenlignet med konkurrenter. Valget på enheten var både etisk og kommersielt lønnsomt.

Svak forespørsel / Sterk forespørsel

Svak melding: "Legg til bildegjenkjenning i appen min."

Kraftig ledetekst: "Legg til funksjonen for mengde- og datolesing i Android/Kotlin-applikasjonen min. - Bruk Google ML Kit-tekstgjenkjenning (på enheten, frakoblet) - Ta bilde fra kamera eller galleri - Trekk ut mengden og datoen fra den gjenkjente teksten med regex - Presenter resultatet for brukeren for godkjenning i REDIGERINGSBAR-feltet, automatisk lagring og forhåndsbearbeiding av kamerasituasjonen - Håndtere kameratillatelser og forhåndsbehandling. forklar trinnene."

Kopierbare maler

Banevalgmal: "Jeg vil lage følgende funksjon: [funksjon]. Skal den være på enheten eller skyen? Sammenlign basert på: personvern, offline-behov, modellstørrelse, batteri, kostnad. Anbefal det riktige verktøyet (ML Kit / Core ML / TF Lite) og begrunn."

Integrasjonsmal:"Skriv [modell/kapasitet] integrasjon for [plattform]:1) Modelllasting2) Inndataforbehandling (forventet størrelse og normalisering)3) Inferanseanrop4) Utdatatolkning og kontroll av konfidenspoengsum5) Advarsel til bruker om resultat med lav konfidensMinn meg på å verifisere forbehandlingsverdiene fra modellens dokumentasjon."

Konfidenspoengmal: "Vurder konfidenspoengsum i denne slutningskoden:- Nåværende resultat 'nøyaktig' under terskelverdien (f.eks. 0,6)- Vis 'dette er et estimat'-notat til brukeren- Referer til ekspert hvis kritisk område (helse, sikkerhet)[kode]"

Ytelsesverifiseringsmal: "List opp beregningene jeg trenger å måle på den faktiske enheten for denne modellintegrasjonen på enheten: slutningstid, minneøkning, batteripåvirkning, oppvarming. Fortell målemetoden for hver."

Vanlige feil

  • Hopp over forbehandling eller gjør det feil. Feil størrelse/normalisering gir stille feil resultat.
  • Ignorerer selvtillitsscore. Å presentere et lavkonfidensestimat som nøyaktig vil villede brukeren.
  • Tester modellen i emulatoren. Faktisk enhetshastighet og batteri er svært forskjellige; mål alltid på ekte maskinvare.
  • Sender sensitive data til skyen unødvendig. Å velge sky når det er mulig på enheten er en personvernrisiko.
  • Ignorerer modellstørrelse. Apper med store modeller øker nedlastingsstørrelsen og krasjer på lav maskinvare.
  • Glemte treningsgrensen til modellen. Modellen tar feil i tilstanden der den ikke ser (natt, annet språk); Gjør dette klart for brukeren.

Oppsummert

AI på enheten gir personvern, hastighet og offline drift ved å holde data på telefonen; Grensen er enhetens effekt og modellstørrelse. ML Kit brukes for ferdige funksjoner, Core ML (iOS) og TensorFlow Lite (kryssplattform) brukes for tilpassede modeller. Den tause morderen av integrering er feilaktig forbehandling; Inndatastørrelsen og normaliseringen er verifisert fra modellens dokumentasjon. Hvert resultat kommer med en konfidensscore, og spådommer med lav konfidens presenteres ikke som absolutt sannhet. Avgjørelser måles på den virkelige enheten, ikke emulatoren.

Søknadsoppgave

For en "tekstlesing fra bilde"- eller "strekkodelesing"-funksjon, spør AI om den skal være på enheten eller skyen med "Bivalgsmalen", og be deretter om en ML Kit-basert blåkopi med "Integrasjonsmalen". Bekreft at forbehandlingstrinnet og brukergodkjennings-/redigeringsflyten er tilstede i koden. Sett en terskel for tillitsscore og skriv hva du vil gjøre hvis resultatet er lav tillit.

sjekkliste

  • [ ] Jeg tok avgjørelsen på enheten/skyen basert på kriterier
  • [ ] Jeg valgte riktig verktøy (ML Kit / Core ML / TF Lite)
  • [ ] Jeg verifiserte forbehandlingsdimensjonen og normaliseringen fra modellens dokumentasjon
  • [ ] Jeg sjekket tillitspoeng og advarte om lave tillitsresultater
  • [ ] Jeg presenterte resultatet for brukeren med godkjenning/redigering, jeg lagret det ikke blindt
  • [ ] Jeg målte ytelsen på den virkelige enheten, ikke emulatoren