Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Microsoft werkt aan machine learning voor Raspberry Pi en kleinere apparaten

Door , 38 reacties

Microsoft werkt aan algoritmes voor machine learning die op een Raspberry Pi en later ook op kleinere apparaten moeten kunnen draaien, zoals een zeer kleine ARM Cortex M0. Vroege code van het project is inmiddels op GitHub te vinden.

De software draagt de naam Embedded Learning Library en is naast gebruik op Raspberry Pi's gemaakt voor gebruik op Arduino's en Microbits. In een blogpost schrijft Microsoft dat een team van dertig mensen in Redmond en in Bangalore eraan werkt om kunstmatige intelligentie mogelijk te maken op kleine processors. Zo is het inmiddels gelukt de code te laten draaien op een Raspberry Pi 3, die is voorzien van 1GB ram en vier ARM Cortex A53-kernen op 1,2GHz.

In de toekomst moet het mogelijk zijn hetzelfde te doen met veel kleinere apparaten, zoals de Cortex M0. Die is zo groot als een 'vlokje chilipeper', aldus Microsoft. Om dit te bereiken moeten modellen voor machine learning ongeveer 1000 tot 10.000 keer kleiner worden. Het huidige werk van het team zorgt momenteel voor een verkleining van 10 tot 100 keer. Daarom is het kleinste apparaat waar het team zich nu op richt een Arduino Uno met 2kB ram.

Om de huidige verkleining te bereiken, maakt het team gebruik van compressie. Bijvoorbeeld door gebruik van weight quantization wordt elke parameter binnen een neuraal netwerk weergegeven met soms een enkele bit in plaats van de gebruikelijke 32. De uiteindelijke verkleining met een factor van meer dan 1000 is alleen mogelijk door een geheel nieuwe aanpak, aldus Microsoft. Bijvoorbeeld door algoritmes te ontwikkelen die specifieke taken uitvoeren.

Door het onderzoek moet het inzetten van machine learning efficiënter worden, waardoor het niet meer nodig is om veel rekenkracht en grote opslag in te zetten.

Een onofficiële versie van Googles Tensorflow-library voor Raspberry Pi is overigens ook op GitHub te vinden. Om deze te draaien is een Pi 2 of 3 Model B vereist.

Door Sander van Voorst

Nieuwsredacteur

30-06-2017 • 19:13

38 Linkedin Google+

Reacties (38)

Wijzig sortering
Hopelijk wordt dit een stap naar persoonlijke assistenten zonder cloud.
Maar dat zal helaas nog wel even duren kan me namelijk in denken dat je daar een stuk meer rekenkracht voor nodig hebt.
Ik zit zelf al tijden te kijken naar een Google home, maar all mijn geluid gegevens naar de cloud toch liever niet.

[Reactie gewijzigd door Matthijz98 op 30 juni 2017 19:28]

Ik zit zelf al tijden te kijken naar een Google home, maar all mijn geluid gegevens naar de cloud toch liever niet.
Dab heb je geluk want alleen nadat de Home wakker geworden is doordat ie zijn keyword hoort gaat er data naar de cloud. Of dacht je werkelijk dat er een constante high definition audiostream van alle Home's is naar Google?
Ik begrijp je reservering daarin, maar juist 'de cloud' is de kracht van het systeem
Onderling informatie delen, en uitwisselen zodat jouw 'wens' snel uitgevoerd kan worden.
De volgende stap is voorspellend vermogen, zodat je jouw koffie kan laten lopen, op het moment dat je op je wekker gekeken hebt, en niet vast om 07:00u zoals het nu is.
Als jouw gemiddelde dag vrijwel altijd hetzelfde verloopt ( wat voor héél veel mensen zo is ) wordt de machine uiteindelijk ook "slimmer"

Ik zit er ook niet op te wachten dat mijn hele doen en laten wordt opgeslagen, geanalyseerd en (tegen me) gebruikt wordt, maar het is wel een onderdeel van de toekomst waarin me naartoe wandelen
Ik snap dat de cloud belangrijk is voor de training van het netwerk. Ik zou het een fijner gevoel vinden als er lokaal op mijn apparaat naar het code woord geluisterd. En alleen als het code woord is gezegt word de er op volgende zin naar de cloud verstuurd. En ik wil fabrikanten moeten kunnen aantonen dat dat ook echt zo is.
Dat kan ook gewoon al met een Netwerk sniffer.
Het codewoord wordt wel degelijk lokaal geanalyseerd. Pas als dit herkend wordt gaan je spraakgegevens naar de cloud.
De volgende stap is denk ik nog vergaander. Aan de hand van andere variabelen:
- hoe laat heb jij voor het laatst op je telefoon gekeken in bed?
- Is het weekend of doordeweeks?
- Ben jij volgens je locatiegegevens op je 'standaardplek' (je werk) geweest of ergens anders? Ergo, heb je vakantie of een dagje vrij?

Etc. etc. Allemaal om in een machine learning algorithme te stoppen om te bepalen wanneer dat kopje koffie precies uit het apparaat moet lopen, zodat jij, juist op het moment dat je uit je bed komt en de woonkamer in loopt de laatste druppels in de kan terecht komen.

Gevaarlijk qua data? Ja. Cool? Zeker.
Daarom zou dit deels lokaal berekenen wel een voordeel zijn op het gebied van privacy. Wellicht sommige data (kuddegedrag e.d.) zal uit de cloud moeten komen, maar liefst verder wel e.e.a. lokaal. :)

Trouwens, dit is opzich al aardig aan de gang. Google geeft mij nu al door wat de files zijn onderweg, meestal keurig op de plek waar ik toevallig naartoe moet (niet altijd alleen perse mijn werk). En mijn navigatie geeft mij elke ochtend een suggestie waarvan hij denkt dat ik daar heen wil, wat vrijwel altijd ook nog klopt ook :)

[Reactie gewijzigd door geerttttt op 30 juni 2017 22:41]

Navigon geeft ook gewoon de files weer op de route(s) naar de opgegeven bestemming.
Hoeft het programma helemaal niet mijn gewoontes voor te weten.

Duurt het misschien een paar tellen langer, omdat het niet voorspeld werd?
Boeit mij niet.
En daarom ben jij dan een van de gebruikers die het uit zet. Ook prima toch? Je hoeft het niet te gebruiken natuurlijk. :)
Het fijne aan die voorspelling is dat je ze altijd krijgt zodra je er echt mee bezig bent. Ook al werk je eens eerder of later, krijg je pas meldingen zodra je de deur uit loopt.
Klopt, en zoals geertttt al aangeeft, kunnen gebruikers zoals jij het e.g. Uitzetten of niet aanschaffen.

Echter, wat je over het hoofd ziet: Wat als er onverwachts file staat? Zou jammer zijn wanneer je dat das ziet wanneer je in de auto stapt.
Ik ontvang al enkele jaren een pop-up op mijn mobiel met de mededeling dat ik beter alvast kan vertrekken omdat er file staat richting <daar waar ik heen moet>.

Die file info is uiteraard gewoon op het internet te vinden, en omdat mn mobiel toegang heeft tot mijn agenda, weet deze waar ik heen moet.

Vind het zelf ideaal. En als je het liever niet hebt, zet je haar (Cortana) uit (of geef je haar geen toegang tot je agenda wanneer je enkel van deze functionaliteit geen gebruik wil maken).
@rikpro en @Bierfustje File(s) worden actueel bijgewerkt. Dus als er iets wijzigt, dan zie je het op de route kaart.

@Bierfustje Tja een pop-up krijg ik niet automatisch, maar als ik Navigon op mijn mobiel raadpleeg -zeg een half uurtje voordat ik van plan was om te vertrekken- dan zie ik aan de eventuele filemeldingen zelf wel of het verstandig is om eerder te vertrekken.
Juist, nu moet je zelf een half uur voor vertrek een app opstarten, om er 9 vd 10 x achter te komen dat er geen vertragingen zijn. Middels de feature waar over gesproken wordt, krijg je hier automatisch een melding van, maar enkel indien nodig (e.g. Er staat file en je bent nog niet vertrokken).

En als je het niet wil gebruiken, dan gebruik je het niet.
Simpel
Het is denk ik niet mogelijk om de hoeveelheid data, die nodig is om ons leven te ondersteunen, op zo'n klein systeempje te willen zetten.

Maar ik voel hetzelfde als jij. De onzekerheid van wat er met jouw input gebeurd, weerhoud ook mij het gebruiken van cloud voice translation services.

Ik zit eraan te denken om het deels met opensource, deels zelf lokaal op te zetten. Maar dat is denk ik gruwelijk veel werk...
Zo stond ik laatst bij iemand binnen die dat ding had en ook demonstreerde. Het feit dat er 24/7 wordt "opgenomen" voor tekstherkenning, kreeg er de koude rillingen van. Ben toch vrij vlot vertrokken daar.

Ik ben absoluut geen paranoïde doemdenker die z'n dagen in een verduisterd kamertje doorbrengt echter, ik vindt dat de grens wbt "weggeven" van privacy nu wel bereikt is. Voor mij dus geen smart-tv (kijkgedrag analyseren) , google home ( alle gesproken tekst herkennen en verzamelen), of wazige merkloze android doosjes waar je geen enkel idee van hebt wat de firmware onderwater doet.

Maar, dit is enkel mijn bescheiden mening.
Tegenwoordig heet met machine learning, vroeger fuzzy logic. Maar zeker een mooie ontwikkeling. Zelf denk ik dat een ATmega328 met 2K SRAM wat krap is, maar op een ATmega2560 (Arduino Mega) of zoals genoemd de Arduino Zero waar de Cortex M0+ op zit heel interessant. Of gecombineerd met SigFox, zoals de Arduino MKRFox 1200. Lijkt mij een fantastische IoT oplossing.
Fuzzy logic ≠ machine learning. Fuzzy logic is meer benaderen van oplossingen met kansberekeningen (lijkt wat op Bayesiaanse netwerken maar die gaan een stuk verder), machine learning kan zeker hand in hand gaan met fuzzy logic maar zal vaker neurale netwerken e.d. gebruiken (waardoor je kunt trainen e.d.), ooit een leuke course van Peter Norvig en Sebastian Thrun over gevolgd (MOOC, mooie invulling van je zomervakantie ;)). Zo'n Zero is daarnaast beter dan een ATmega, maar ik betwijfel zeer sterk of het genoeg is voor machine learning. Die dingen zijn ook niet zo goed in floating point berekeningen en daar moet je al snel aan denken als je het over AI hebt.
Floating point is te ondervangen door getallen met een factor te vergroten tot integere getallen. Dat principe wordt ook veel toegepast in zowel microcontrollers als RISC systemen. Je hebt immers alleen maar een waarde tussen niet waar en waar, domweg tussen 0 en 1. Vermenigvuldigen met bijvoorbeeld 1E9 geeft je al een aardige nauwkeurigheid. Een getal hoeft immers niet aan onze menselijke manier van denken te voldoen, dat maakt het slechts makkelijker om te lezen. Een getal is slechts een waarde die vertegenwoordigd wordt. Voordeel is dat er nog steeds snel gerekend kan worden en voor dit soort kleinere toepassingen de nauwkeurigheid meer dan voldoende is.
Zo'n Zero is daarnaast beter dan een ATmega, maar ik betwijfel zeer sterk of het genoeg is voor machine learning.
Het is maar wat je wil bouwen. Het is opzich allemaal niks nieuws; ik speelde 25 jaar geleden al met neurale netwerkjes en zaken als ray tracing. De embedded systemen van nu rennen rondjes om de PC's van toen (ik had een 386SX met 387SX FPU erbij). Voor intelligent gedrag zonder rule-based algoritmen kun je ook op een embedded processor prima uit de voeten. Ik heb kort geleden wat ray tracing testjes gedaan op een ATMega, een Cortex M4, en een ESP8266. Met droge C code zonder CPU-specifieke extensies te gebruiken gaat dat best rap. Vooral vergeleken met toen uiteraard ;) Ik ben momenteel toevallig weer eens bezig met een neuraal netwerk dat ik met OpenCL wel acceleraten. Dat is uiteraard van een andere orde qua snelheid en mogelijke complexiteit.
Hm, interessant maar ik zie niet onmiddellijk het directe doel. Is het doel van het onderzoek om machine learning efficiënter te maken? Ik vraag me af of de stap naar 'nanocomputers' niet te groot is, en ze zich niet beter focussen op de gemiddelde smartphone-hardware?

Ik heb zelf modellen getraind en als je bijvoorbeeld een (goed) taalkundig model wil trainen op een GTX 1080 met Tensorflow met een input van pakweg 200.000 woorden (relatief weinig, nog niet écht big data) ben je al een dag bezig (inclusief cross-validation (k=10) op test set). Zoals wel geweten worden deze zaken vaak in parallel in een (GPU-)cluster gedraaid. DUS hoe in hemelsnaam willen ze een Pi iets in reasonable time laten berekenen?

Of gaat het niet zozeer om het berekenen van een model, maar om het toepassen ervan? Dat zou ik nog kunnen begrijpen, hoewel ook hier de schaarste aan RAM-geheugen toch echt wel een moeilijke stap is.

Ik ga dit onderzoek zeker volgen, en ik hoop dat het machine learning an sich ook efficiënter zal maken. Weet iemand wat hiervoor mogelijke applicaties zouden zijn, machine learning op tiny processors?
Het gaat om het toepassen van het model, niet het maken van het model. Dit past ongetwijfeld in hun IoT Edge strategie https://azure.microsoft.com/en-us/campaigns/iot-edge/
Aha, top link! Dat past inderdaad duidelijker in het plaatje.
Is dit niet een vergelijkbare functie als MyCroft (https://mycroft.ai/) ?
Ik kan fout zijn, maar MyCroft lijkt me veel gelimiteerder.

Ik heb hun voorbbeelden en use-cases, en GitHub code eens bekeken, en het merendeel van wat er gebeurt, is niets meer dan lineaire regressie of zelfs gewoon information retrieval. Met andere woorden, de koelkast zegt je gewoon wat er in nog in 'em zit, of kan aan de hand van het vorige gebruik raden wanneer de melk zal op zijn.

Je kan 'em wel nieuwe 'skills' aanleren (door deze te installeren), dus letterlijk genomen is het inderdaad machine learning. Maar ik denk niet dat dat gelijk staat aan wat er in de computerwetenschappen meestal onder machine learning verstaan wordt. Anderzijds zeggen ze dat het een AI-assistant is, en zeggen ze geen woord over machine learning. AI is veel ruimer dan ML natuurlijk, en ook moeilijk in een enkele groep te vatten. Voor sommigen is speech synthesis (een 'sprekende robot') ook AI. Dus als je koelkast kan spreken, is dat een 'slimme koelkast'.
Leuk om te zien. Is dit dan bruikbaar om in kleine robotjes machine learning te kunnen gebruiken of moet ik dit zien als optimalisatie voor de 'grotere' machine learning projecten?
Dit is ook zeer interessant als dataclassificatie voor bepaalde projecten. Specifieke taken/herkenning uitvoeren op een Rpi.
Ben wel benieuwd naar de troughput.
foutje:
"Doe is zo groot als een 'vlokje chilipeper'" (Doe ipv Die)
Laat ze eerst weer een keer iets doen waar we ons over kunnen verbazen. Was verbaasd toen ze een os ontwierpen op de pi. Na wat experimenten gauw weer verwijderd vanwege gebrek aan functionaliteit ten opzichte van bijv rasbian. Google is hierin al weer een voorsprong aan het nemen zo lijkt door nu in de UK met een ontwikkelbordje te komen (Voice-HAT) met AI. Ben verbaasd dat MS nog door zoveel mensen wordt omarmt. Dit lijkt meer een soort doorgeefluik.
gebrek aan functionaliteit ten opzichte van bijv rasbian.
Als je een compleet OS wilt is Rasbian ongetwijfeld verder dan Windows voor de Raspberry Pi. Maar als je een complete programeerervaring wilt met een gigantische verzameling libraries dan kan ik me voorstellen dat je voor .Net wilt gaan, en dan ligt Windows net iets meer voor de hand dan Linux. Ik ben gewend met te redden met C++ en speel graag met Python of Rust, dus voor mij is Linux een no-brainer, maar als je gewend bent met Visual Studio (argh) en C# te werken dan liggen de prioriteiten anders.

[Reactie gewijzigd door 84hannes op 30 juni 2017 20:33]

Precies, het is ideaal voor bedrijven die al een enorme codebase in Microsoft's platformen hebben en nu de IoT kant op willen. Ook voor bedrijven is de pi een handig en functioneel ontwikkelplatform.

Ik moet wel zeggen dat ik van mensen in de hackerspace hoorde dat de daadwerkelijke uitvoering wat tegenvalt. Er zijn inderdaad veel libraries maar voor Pi-specifieke zaken (hardware toegang, GPIO, I2C enz) is het allemaal een stuk lastiger dan Raspbian.

En dit waren studenten die zich specialiseren in MS technologie met MSCD e.d. dus ik neem aan dat dit niet alleen een geval betreft van hun weg nog moeten vinden in de omgeving.

[Reactie gewijzigd door GekkePrutser op 30 juni 2017 21:46]

In dit zelfde straatje zou het supergaaf zijn als microsoft zijn microsoft R open geschikt zou maken voor ARM of in ieder geval deels. Daar is een enorme gebruikersgroep voor. En zijn al allerlei libraries beschikbaar voor machine learning, koppeling met allerlei andere programmertalen is beschikbaar bijvoorbeeld via Rcpp. Door de opensource ontwikkeling denk ik dat er al snel enthousiastelingen zijn die bijvoorbeeld de gpu van de raspberry nuttig weten in te zetten.
Denk dat voor veel hobbyisten de drempel te hoog is om met een dergelijke omgeving aan de slag te gaan. Los van de tweakers en ICT professionals die in het dagelijkse leven niet meer om MS heen kunnen. Bedankt voor je verdere uitleg.
.Net Core werkt anders prima op een Raspberry Pi met Linux.
Hoe bedoel je? .Net Core is cross-platform. Draait op macOS, Linux, Windows en ARM32 linux en Windows is in ontwikkeling. En het draait hetzelfde. Je kan je .Net C# code schrijven met Visual Studio op Windows en dezelfde solution openen met Visual Studio voor de Mac of je kan je code schrijven met VS Code op Windows, Mac, of Linux.

Op dit item kan niet meer gereageerd worden.


Apple iPhone X Google Pixel 2 XL LG W7 Samsung Galaxy S8 Google Pixel 2 Sony Bravia A1 OLED Microsoft Xbox One X Apple iPhone 8

© 1998 - 2017 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Hardware.Info de Persgroep Online Services B.V. Hosting door True

*