av Gustav Evertsson, Vinnter AB
TinyML (Tiny Machine Learning) förändrar formen och karaktären på maskininlärningslandskapet.
Under de senaste två decennierna har vi sett en boom inom maskininlärning som aldrig tidigare. Som teknik är maskininlärning faktiskt mycket äldre än så. På senare tid har dock några stora forskningsprojekt som Long short-term memory networks, ImageNet, och introduktionen av GPU:er gjort maskininlärning till ett genomförbart alternativ för många problem. Snabbare internetanslutningar och större och större minnesenheter (både för lagring och ram) har också gjort de data som behövs för att träna maskininlärningsmodeller mer tillgängliga. Företag som Google, Amazon, Facebook och andra har i många fall varit öppna med den teknik de ursprungligen utvecklade för interna användningsområden, och driver nu utvecklingen av nya algoritmer för maskininlärning på många olika sätt. Molnleverantörer erbjuder nu också maskininlärningsmiljöer, vilket gör det mycket enkelt för organisationer att både komma igång med tekniken och att skala upp vid behov.
Parallellt med detta har vi också sett en kraftig tillväxt inom Internet of things, där datorkraften blivit billigare och mindre strömkrävande, så att den nu kan läggas till i en mängd olika saker för att göra dem smartare. I IoT-boomen har vi också sett hur sensorer av alla slag kan användas för att övervaka en mängd olika förhållanden – till exempel miljön, vår egen hälsa eller själva enheten.
Det vanliga sättet att hantera alla dessa data har varit att skicka dem till molnet för bearbetning. Men eftersom bandbredden normalt är dyr eller begränsad i omfattning, och sensorer normalt kan generera mycket data på kort tid, går det mesta av denna information förlorad under överföringen. Men om dataanalys med maskininlärning kan tillämpas mer lokalt på IoT-enheter kan dessa förluster elimineras och nya möjligheter öppnas upp.
Dessa två tekniker kombineras nu till det som kallas TinyML (Tiny Machine Learning) – en miljö där processorkraften nu är tillräcklig för att köra maskininlärningsmodeller även i applikationer med små effektbegränsningar, tillsammans med direkt tillgång till sensordata. På mjukvarusidan har förbättringar av maskininlärningsmodeller inte bara utökat deras kapacitet, utan också gjort dem mer effektiva när de tillämpas på de enklare uppgifter som ofta förknippas med IoT-enheter.
Bearbetning av TinyML
Algoritmerna som används i tiny machine learning är i stort sett desamma som i traditionell ML-verksamhet, där den inledande modellutbildningen vanligtvis sker på en lokal dator eller i molnet. Efter denna inledande träning komprimeras modellen till ett mer kompakt paket, i en process som kallas deep compression. Två tekniker som ofta används i detta skede är beskärning och destillering av kunskap.
När denna destillering är klar kvantifieras modellen för att minska lagringsvikten och för att konvertera den till ett format som är kompatibelt med den anslutna enheten. Kodning kan också förekomma om det är nödvändigt att ytterligare minska storleken på inlärningsmodellen.
Modellen konverteras sedan till ett format som kan tolkas av en lätt neuronnätstolkare, t.ex. TensorFlow Lite (TF Lite).
TensorFlow från Google är ett av de mest populära biblioteken för maskininlärning, och 2017 lanserades TensorFlow Lite, som riktar sig till mobilapplikationer. TensorFlow Lite Micro (lanseras 2019) är inriktad på ännu mindre mikroprocessortillämpningar. Dessa två plattformar har gjort processen att krympa modellen så att den passar inbyggda enheter mycket enklare. Det är nu möjligt att
utveckla och träna maskininlärningsmodeller på högpresterande datorer eller molnmaskiner och sedan distribuera dem på inbyggda plattformar med hjälp av samma API.
Kantbearbetning för TinyML
I takt med att IoT-enheter och applikationer blir mer integrerade med uppdrags- och affärskritiska användningsområden kommer svarstiden från informationsbehandling i datacenter eller i molnet inte att vara tillräckligt snabb. Det kan också finnas situationer där hundratals IoT-sensorer behöver ansluta till molnet samtidigt, vilket skapar överbelastning i nätverket.
Att bearbeta data vid kanten ger flera fördelar. Ur integritets- och dataskyddssynpunkt är det mycket enklare att hantera revision och efterlevnad när data inte lämnar enheten. Det är också lättare att säkra informationen, eftersom den kan vara mycket kortlivad när den förbrukas så snart den har lästs av från sensorn.
Garanterad energieffektivitet för Tiny Machine Learning
I många fall förbrukar lokal databehandling vid nätverksgränsen mycket mindre energi än överföring till molnet eller datacentret, vilket gör att batteritiden kan förbättras. Vissa TinyML-enheter kan fungera oavbrutet i ett år med hjälp av ett batteri som är lika stort som ett mynt. Detta öppnar möjligheter för fjärrövervakning av miljön inom områden som jordbruk, väderprognoser eller studier av jordbävningar.
Nätverksfördröjningen kan också minskas när data inte behöver överföras fram och tillbaka till molnet. Augmented Reality är till exempel dataintensivt, och det märks tydligt om det uppstår en fördröjning i videobearbetningen.
Om vi blickar in i framtiden förväntas effektkostnaden fortsätta att minska för CPU och minne, men inte för radioöverföring, där vi verkar närma oss den fysiska gränsen för hur mycket data per Wh vi kan skicka. Detta kommer bara att stärka argumenten för tinyML i framtiden, där vi sannolikt kommer att se ML-enheter med extremt låg effekt som kan köras i åratal på små cellbatterier, och som bara behöver överföra data till molnet när avvikelser upptäcks. Vi börjar också se mikroprocessorer som är specifika för maskininlärning, som Syntiant NDP100 med ett fotavtryck på endast 1,4 x 1,8 mm och en strömförbrukning på mindre än 140 μW samtidigt som den fortfarande klarar röstigenkänning. Ett annat exempel är Edge TPU från Google, ett ASIC-chip som är gjort för att köra ML-modeller samtidigt som det bara förbrukar några watt.