Open Neural Network Exchange (ONNX)

Het Open Neural Network Exchange (ONNX) bestandsformaat maakt het mogelijk om AI modellen naadloos over te zetten van de omgeving waarin ze getraind zijn naar een Windows PC of andere controller. Het is daarmee een van de essentiŽle tools om machine learning ook in industriŽle toepassingen ingang te laten vinden.

Open Neural Network Exchange (ONNX) is een relatief recente standaard want de eerste stappen voor de ontwikkeling ervan werden pas in 2017 gezet, meer bepaald door Facebook en Microsoft. In korte tijd heeft zich rond het open-source bestandsformaat een heel ecosysteem ontwikkeld en vandaag geldt ONNX als dť oplossing om AI modellen te transfereren tussen verschillende platformen.

ONNX situeert zich in de wereld van deep learning, een specifieke variant van machine learning waarbij neurale netwerken ingezet worden. Een neuraal netwerk is een soort flowchart met opeenvolgende lagen van nodes die elk een output genereren op basis van hun inputs.

De parameters die in de nodes gebruikt worden, worden door het netwerk zelf gegenereerd tijdens het learning proces. Het netwerk wordt dan gevoed met gelabelde data, wat wil zeggen dat men een hele set inputs heeft waarvan geweten is welke output er verwacht wordt. Het netwerk blijft tijdens de learning fase zijn parameters aanpassen tot telkens de gewenste output bekomen wordt.

Zodra dat het geval is kan het netwerk gebruikt worden in plaats van een klassiek algoritme om met nieuwe inputs een output te genereren. Dat blijkt in de praktijk bijzonder goede resultaten op te leveren in toepassingen rond patroonherkenning, zoals visiesystemen en spraakherkenning. Het netwerk zelf gedraagt zich al die tijd als een soort black box, in die zin dat gebruikers niet hoeven stil te staan bij de structuur van het netwerk of de paramaters die het zelf bepaald heeft.

Capteren van getraind netwerk

Wat het Open Neural Network Exchange (ONNX) formaat nu doet, is het capteren van zo een getraind netwerk, waarbij zowel de structuur met de nodes als de parameters opgeslagen worden in een bestand. Het neuraal netwerk kan dan integraal overgezet worden naar een ander platform.

Typische omgevingen waarin neurale netwerken opgebouwd worden, zijn PyTorch, Apache MXNet, Microsoft Cognitive Toolkit en Matlab Deep Learning Toolbox.

Omgevingen waarin een getraind netwerk vervolgens aan de slag kan, wat men inference noemt, zijn NVIDEA TensorRT, Synopsis en Microsoft ONNX Runtime.

Het grote voordeel van ONNX is dat een leverancier een netwerk kan trainen voor een bepaalde toepassing en het vervolgens in zijn geheel kan overzetten op een runtime platform om daar zoals een algoritme te functioneren.

Met Microsoft ONNX Runtime kan een neuraal netwerk bijvoorbeeld op een gewone PC runnen. In de inference mode leert het systeem in principe niet meer bij. Het is vooraf getraind om te doen wat het moet doen, en er kan vanaf dan dus ook niet meer mee geknoeid worden. Hoewel dat nog in zijn kinderschoenen staat, zou een toepassing op dat ogenblik ook op zijn deugdelijkheid gevalideerd kunnen worden.

Minimaal energieverbruik

Op de Hannover Messe toonde Beckhoff Automation een toepassing waarin gebruikgemaakt werd van ONNX. Het bedrijf biedt met TwinCAT een PC-gebaseerde controller, die onlangs uitgebreid werd met een Neutal Network Inference Engine. Dat wil zeggen dat in de controller een neuraal netwerk kan draaien, naast andere PC- en PLC-toepassingen. Dat netwerk kan voor zijn input direct gebruikmaken van de I/Oís van de controller en indien gewenst ook rechtstreeks de uitgangen aansturen.

In de demonstratie op de Hannover Messe werd een transportsysteem met bewegende platformen aangestuurd met een neuraal netwerk. Dat netwerk had als taak om de platformen op tijd op de gewenste posities te krijgen, met als bijkomende taak om dit te realiseren met een minimaal energieverbruik. Het netwerk zelf was getraind in een Matlab omgeving en nadien via ONNX overgezet op de TwinCAT controller.

In een klassieke benadering zou het heel wat analyse vergen om een dergelijke sturing te realiseren. In de deep learning omgeving volstond het echter om het energieverbruik, dat via de drives gemeten kon worden, toe te voegen als input en de minimalisering ervan als doel op te geven. Het netwerk leerde zelf welke snelheidsprofielen het beste resultaat opleverden.

ONNX is een open source project dat vrij beschikbaar is op GitHub. Wie zich geroepen voelt, kan er ook deelnemen aan de verdere ontwikkeling ervan.

github.com/onnx

© Productivity.be, Foto: Deutsche Messe


Feel free to share


Productivity.be

is een publicatie van
Redactiebureau ConScript

Contact

Erwin Vanvuchelen
+32 (0)475 64 99 34
erwin@conscript.be
erwinvanvuchelen