Energiezuinigere neurale netwerken door pulsen

Als we onze hersenen als technologie zouden beschouwen, zou elke ingenieur onder de indruk zijn: met een verbruik van amper 20 watt slaagt ons brein erin om talloze gevarieerde en complexe taken uit te voeren, zoals spraak en beeld herkennen, navigeren in omgevingen waar we nog nooit geweest zijn, nieuwe vaardigheden leren en redeneren over abstracte zaken. Het is dan ook geen wonder dat onze hersenen al sinds jaar en dag als inspiratie dienen om computers 'intelligentie' te geven.

Een belangrijke aanpak in machinaal leren vormen (kunstmatige) neurale netwerken. Ze bootsen de werking van de hersenen na, die een biologisch neuraal netwerk vormen: een kluwen van talloze verbindingen tussen neuronen (hersencellen). Een kunstmatig neuraal netwerk bestaat meestal uit meerdere lagen:

  • Een invoerlaag van neuronen die de invoer van een probleem voorstellen, bijvoorbeeld de pixels in een foto.

  • Een uitvoerlaag van neuronen die de oplossing van het probleem voorstellen. Die herkennen bijvoorbeeld dat er in de foto een hond te zien is.

  • Eén of meer verborgen lagen die berekeningen uitvoeren. Die herkennen bijvoorbeeld vacht, grootte, aantal poten enzovoorts.

/images/neuraal-netwerk.png

Een neuraal netwerk programmeer je niet door expliciet aan te geven hoe het een probleem moet oplossen; je 'traint' het door het vele voorbeelden van een probleem te geven. De parameters van alle neuronen van het neurale netwerk convergeren door die training dan naar de juiste waarden, zodat het de taak leert uit te voeren.

Vooral deep learning maakt het laatste decennium furore in de wereld van machine learning. Bij deep learning maak je gebruik van een neuraal netwerk met een groot aantal lagen tussen invoer en uitvoer. Door dit grote aantal lagen zijn eindelijk heel complexe taken mogelijk. Een neuraal netwerk als GPT-3 gebruikt zo'n honderd lagen. Als je het volledig zelf zou willen trainen, kijk je aan tegen enkele miljoenen euro's aan kosten om gpu-rekenkracht in de cloud te huren. En dan spreken we nog niet over het energieverbruik en de erbij horende CO₂-uitstoot.

Terwijl de neuronen in onze hersenen met pulsen communiceren, is dat aspect bij de klassieke neurale netwerken niet overgenomen omdat discontinue pulsen nu eenmaal wiskundig moeilijker te hanteren zijn dan continue signalen. Toch is er al de hele geschiedenis van AI ook een aanpak geweest om neurale netwerken te modelleren met pulsen. Dat noemen we een gepulst neuraal netwerk (spiking neural network). Door hun wiskundige complexiteit zijn ze nooit doorgebroken.

In een artikel over gepulse neurale netwerken voor PC-Active beschreef ik onlangs recent onderzoek van het Amsterdamse Centrum Wiskunde & Informatica (CWI) en het Eindhovense onderzoekscentrum IMEC/Holst Centre naar een nieuw algoritme dat een factor honderd energiezuiniger zou zijn dan de beste hedendaagse klassieke neurale netwerken. Voorlopig is de techniek nog beperkt tot zo'n duizend neuronen, maar daarmee liggen toepassingen zoals spraakherkenning, de classificatie van elektrocardiogrammen (ecg) en het herkennen van gebaren al in het verschiet.

Maak je eigen kvm-over-ip-systeem met Pi-KVM

Als je nas of server op zolder is gecrasht, wil je waarschijnlijk voorkomen dat je het probleem ter plaatse moet oplossen. Met een kvm-over-ip-systeem kun je op afstand ingrijpen via het netwerk. Met Pi-KVM bouw je zoiets zelf met een Raspberry Pi en enkele goedkope componenten.

Op de GitHub-pagina van Pi-KVM staat uitgelegd welke componenten je nodig hebt om je eigen kvm te maken:

  • Raspberry Pi 4

  • hdmi-naar-csi-2-adapterbordje of hdmi-naar-usb-dongel

  • een usb-splitter om de usb-c-aansluiting van de Raspberry Pi 4 zowel voor stroom als usb-otg in te zetten

De Raspberry Pi 4 krijgt dan toegang tot de hdmi-uitvoer van je nas of server en emuleert een toetsenbord, muis en opslag. De opensourcesoftware Pi-KVM biedt dit alles in een webinterface aan, zodat je via je webbrowser op je nas of server kunt werken alsof je ernaast zit:

/images/pikvm-opslag.png

Voor PCM schreef ik het artikel Pi-KVM: Nas benaderen via Raspberry Pi op afstand. Ik leg er uit hoe je zelf een usb-splitter maakt van twee usb-kabels en hoe je Pi-KVM installeert en instelt en het gebruikt om een iso-image aan te koppelen en op je nas of server te installeren.

De ontwikkelaars hebben ook een eigen HAT ontwikkeld die je op de Raspberry Pi 4 kunt monteren. De verkoop start binnenkort.

GPT-3: overtuigende onzin

Het Amerikaanse onderzoekslaboratorium OpenAI heeft vorig jaar een neuraal netwerk getraind dat tekst kan schrijven die bijna menselijk lijkt. Het taalmodel maakt gebruik van deep learning met maar liefst 175 miljard parameters. In mei 2020 werd GPT-3, zoals het model heet, voorgesteld. Het is de derde in een reeks van taalmodellen met de naam Generative Pre-trained Transformer.

Op wat voor soort teksten werd GPT-3 dan getraind? Een gefilterde versie van het webarchief van Common Crawl, een andere dataset van webpagina's, WebText2, de inhoud van heel wat boeken (datasets Books1 en Books2) en de inhoud van Wikipedia. Eigenlijk dus zowat alles wat je maar op internet kunt vinden. In totaal ongeveer 450 gigabytes invoer. Opvallend is dat GPT-3 daardoor niet alleen op menselijke teksten is getraind, maar ook op computercode zoals css, jsx en Python. GPT-3 kan daardoor teksten genereren variërend van poëzie tot proza en nieuwsberichten en computerprogramma's.

OpenAI gaf vorig jaar enkele honderden ontwikkelaars toegang tot een bètaversie van de GPT-3 API en verzekerde zich daardoor van enkele maanden media-aandacht. Het wapenfeit waarmee GPT-3 het meest in het nieuws kwam, was dat het volledige nieuwsartikelen uit zijn duim kon zuigen. Je geeft dan een titel en subtitel op en het model schrijft hierover een kort artikel van ongeveer 200 woorden. Die artikelen blijken op het eerste gezicht verrassend coherent te zijn, maar vaak ook duidelijk verkeerde informatie te bevatten of opvallende herhalingen van zinnen.

Vorig jaar schreef ik voor PC-Active in mijn rubriek Denkwerk een artikel over GPT-3, Een computer die als een mens schrijft. Het is nu ook online te lezen. Je vindt er heel wat voorbeelden van wat er misloopt met GPT-3.

Mijn conclusie:

GPT-3 genereert tekst die bij een oppervlakkige lezing niet te onderscheiden is van een door een mens geschreven tekst. Tegelijk heeft dit taalmodel totaal geen begrip van wat het schrijft. Dat is een gevaarlijke combinatie: er kan onzin in de tekst staan, maar zo overtuigend beschreven dat nietsvermoedende lezers het gewoon geloven. Maar eigenlijk is dat niet zo heel verschillend van wat we nu al hebben: veel mensen schrijven ook onzin. GPT-3 is gewoon een samenvatting van de teksten van miljoenen mensen.

Kortom, GPT-3 is een kind van zijn tijd.

Geef je MQTT-gebaseerd domoticasysteem een dashboard met Homepoint op een M5Stack Core

Je domoticasysteem stuur je in veel gevallen aan via een webinterface op je laptop of een mobiele app op je smartphone. Maar altijd toegang tot je domoticasysteem hebben via een klein schermpje aan de muur is zeker zo handig. Je kunt zo'n apparaatje zelf in elkaar knutselen met een microcontrollerbordje, een schermpje en wat knoppen, maar als je het in de woonkamer wilt gebruiken, wil je niet dat er allerlei losse draadjes en printplaatjes te zien zijn.

Homepoint op een M5Stack Core

M5Stack, een jong Chinees bedrijf, biedt allerlei producten aan die gebouwd zijn rond een ESP32-microcontroller, die er niet als een ontwikkelbordje uitzien. Vooral interessant is de M5Stack Core BASIC Kit: een modulair, stapelbaar ESP32-bordje met een lcd-scherm van 2 inch en drie knoppen in een sobere behuizing. Die ziet er niet slecht uit in je woonkamer. De module is heel compact: 13 mm hoog, en 54 mm lang en breed. Ik heb er ondertussen al enkele in huis staan.

Een van de programma's die je op de M5Stack Core [1] kunt installeren, is Homepoint. Het biedt een interface om een op MQTT gebaseerd domoticasysteem aan te sturen en de status van sensors te tonen.

Voor Computer!Totaal schreef ik een artikel over hoe je Homepoint op je M5Stack Core installeert en er een dashboard voor je domoticasysteem van maakt. Ik leg er diverse configuraties uit. Een volledige configuratie vind je ook in het artikel dat ik een tijdje geleden over Homepoint in het Engelstalige gedeelte van mijn blog schreef.

Een systeem zoals Homepoint op een apparaatje zoals de M5Stack Core maakt je domoticasysteem veel toegankelijker. Een dashboard dat altijd beschikbaar is zonder dat je een laptop hoeft open te klappen of een smartphone moet ontgrendelen, doet je veel meer gebruikmaken van de sensorgegevens. Zo is de vraag "Is het koud buiten?" hier nu snel beantwoord :-)

MQTT: hét protocol voor domotica

Als je een tijdje met domotica bezig bent, dan heb je waarschijnlijk apparaten in huis die allerlei protocollen gebruiken: Z-Wave, ZigBee, KNX, Loxone, maar ook Wi-Fi en Bluetooth. Dat levert al snel een taalbarrière op vanwege alle apparaten die hun eigen taaltje spreken.

Fabrikanten dachten daar iets op te hebben gevonden: ze ontwikkelden hun eigen domoticaplatforms die al deze standaarden ondersteunden. Zo heb je HomeKit van Apple en SmartThings van Samsung. En uiteraard bestaan er ook opensourceplatforms die hetzelfde bereiken, zoals Home Assistant.

Maar waarom al die moeite doen als er al twintig jaar een open protocol bestaat om op een gestandaardiseerde manier boodschappen uit te wisselen via ip-netwerken? MQTT (Message Queuing Telemetry Transport) is hét protocol voor domotica. Op de website van het project staat het concept van MQTT mooi geïllustreerd:

/images/mqtt-publish-subscribe.png

In een artikel in Computer!Totaal leg ik uit hoe MQTT werkt en hoe je het voor domotica gebruikt, bijvoorbeeld door een MQTT-broker zoals Eclipse Mosquitto op een Raspberry Pi of Linux-server in huis te installeren. Je leest er ook hoe je Home Assistant en Node-RED met je MQTT-broker integreert.

Het grootste deel van het artikel besteed ik aan allerlei projecten die andere protocols met MQTT koppelen en die je op een Raspberry Pi kunt installeren:

  • bt-mqtt-gateway om Bluetooth-sensoren uit te lezen

  • rtl_433toMQTT om via een RTL-SDR usb-dongle draadloze weersensoren uit te lezen die in de ISM-band rond 433,92 MHz uitzenden

  • Zwave2Mqtt om Z-Wave-apparaten aan te sturen

  • Zigbee2MQTT om Zigbee-apparaten (inclusief Philips Hue en IKEA Trådfri) aan te sturen

  • knx-mqtt-bridge om KNX-apparaten aan te sturen

  • LoxBerry met zijn MQTT Gateway om met Loxone-apparaten te communiceren

De meeste van deze projecten gebruik ik al jaren in mijn eigen domoticasysteem thuis, dat op een Raspberry Pi 4 draait.

Flexibel domoticasysteem

Waarom dan niet een domoticaplatform als Home Assistant gebruiken, dat ook allerlei protocols ondersteunt en een alles-in-éénoplossing aanbiedt? Ik ben zo inderdaad begonnen, maar Home Assistant is nogal beperkend: er wordt van uitgegaan dat je alles op één machine draait. Maar als je Raspberry Pi met Home Assistant in de kelder staat en je Zigbee-apparaten vooral op de zolder, zul je weinig ontvangst hebben met de Zigbee-transceiver op je Raspberry Pi aangesloten. Door bovenstaande programma's al die protocols naar MQTT te laten vertalen, kun je ze in principe allemaal op een andere machine draaien, die je plaatst waar die het beste bereik heeft.

Bovendien bestaat MQTT al veel langer dan Home Assistant en is het heel flexibel. Ik gebruik nog altijd Home Assistant, maar niet als alles-in-éénoplossing: in mijn domoticasysteem is het gewoon een van de vele onafhankelijk werkende componenten, namelijk een front-end. Home Assistant is dan ook uitstekend met MQTT te integreren. Wil ik ooit overschakelen naar een andere front-end, dan kan dat heel eenvoudig zonder dat dit een impact heeft op de andere componenten, zolang die front-end maar MQTT ondersteunt. En als ik bt-mqtt-gateway en rtl_422toMQTT wil vervangen door OpenMQTTGateway op een ESP32-microcontrollerbordje, dan kan dat ook. Dankzij MQTT kan mijn domoticasysteem met mijn veranderende wensen mee evolueren.