Waarom gebruiken we niet overal artificiële intelligentie?

Thomas
Faingnaert

Artificiële intelligentie (AI) is haast niet meer weg te denken in de wereld van vandaag. AI wordt al in vele domeinen toegepast. Denk maar aan de medische wereld, beeldherkenning, het aanbevelingssysteem van Netflix, de Google zoekmachine, … Toch gebruiken we AI nog lang niet overal. Hoe komt dit, en hoe kunnen we daar verandering in brengen?

Het landschap van artificiële intelligentie

Eerst en vooral is het belangrijk om te begrijpen dat er verschillende vormen van artificiële intelligentie bestaan. Artificiële algemene intelligentie (artificial general intelligence) kan elke taak leren die een mens ook kan. Deze vorm van AI is populair als onderwerp in sciencefiction, maar is nog niet klaar voor gebruik in de praktijk. Huidige vormen van AI zijn gericht op één specifieke toepassing, en worden daarom smalle artificiële intelligentie (narrow artificial intelligence) genoemd. Je kan je wel voorstellen dat Netflix’s aanbevelingssysteem en beeldherkenning een andere aanpak nodig hebben. Elke nieuwe toepassing van artificiële intelligentie vereist dus onderzoek naar en experimentatie met nieuwe technieken.

Vaak wordt er gebruik gemaakt van machinaal leren (ML), een deelgebied van de artificiële intelligentie. ML bestudeert technieken om computers problemen te laten oplossen zonder daarvoor expliciet te zijn geprogrammeerd. ML laat computers automatisch leren uit data, door er patronen in te herkennen en deze dan te generaliseren. Een voorbeeld: geef je computer een reeks foto’s van vogels en vissen, en geef aan voor elke foto of het om een vogel of een vis gaat. Het ML algoritme leert dan wat de kenmerken van vogels en vissen zijn, en leert ze te herkennen op foto’s die het nog nooit heeft gezien. Deze leerstap vereist veel berekeningen, en kan daarom lang duren. Pas op het einde ervan weten onderzoekers of het algoritme goede voorspellingen maakt of niet. Om onderzoek te verrichten naar nieuwe ML technieken is het dus van belang dat deze leerstap zo snel mogelijk wordt uitgevoerd.

Het probleem met huidige oplossingen

Onderzoekers in het domein van ML gebruiken dikwijls standaard bibliotheken. Deze bibliotheken bevatten verzamelingen code die kunnen worden hergebruikt. Om de grote eis aan snelheid aan te kunnen, bevatten ze manueel geoptimaliseerde versies voor de meest gebruikte ML technieken. Het probleem is dat deze technieken niet voor alle toepassingen even goed presteren. Onderzoekers willen dus experimenteren met nieuwe technieken, die niet door deze bibliotheken worden ondersteund. Voor onderzoekers zit er dan niets anders op dan zelf een eigen implementatie vanaf nul te schrijven. Dit neemt niet alleen veel kostbare tijd in beslag, maar het is ook bijzonder moeilijk om aan dezelfde snelheid te geraken als de standaard bibliotheken.

Op weg naar een alternatief

Dit gebrek aan flexibiliteit in bestaande bibliotheken belemmert de wetenschappelijke vooruitgang in ML aanzienlijk. Thomas Faingnaert, toen student burgerlijk ingenieur aan de UGent, pakte het probleem aan. Hij ontwikkelde een raamwerk dat het mogelijk maakt om een breed scala aan berekeningen die gebruikelijk zijn in ML op een efficiënte manier uit te voeren.

Het raamwerk focust op varianten van matrixvermenigvuldiging, de berekening die aan de kern ligt van ML. Bij het ontwerp van dit raamwerk waren twee vereisten van belang. Enerzijds moest het raamwerk flexibel genoeg zijn zodat het naar believen kon aangepast worden door onderzoekers. Anderzijds moesten de berekeningen natuurlijk snel genoeg uitgevoerd worden, zodat onderzoekers snel kunnen experimenteren met nieuwe ideeën.

Om de nodige flexibiliteit te bekomen, wordt de matrixvermenigvuldiging in het raamwerk gesplitst in een verzameling onafhankelijke puzzelstukken. Elk van die puzzelstukken correspondeert met één welbepaald aspect van de matrixvermenigvuldiging, zoals bijvoorbeeld de manier waarop de matrices zijn opgeslagen in het computergeheugen. Een onderzoeker die een variant van matrixvermenigvuldiging wil uitvoeren, kan ofwel een van de voorgedefinieerde componenten hergebruiken, ofwel zijn eigen implementatie voorzien. Dit is al een hele stap voorwaarts in vergelijking met het herbeginnen vanaf nul.

Naast de flexibiliteit is natuurlijk ook de snelheid van de matrixvermenigvuldiging van belang. Daarom is het raamwerk gericht op grafische processoren (GPU's), die tot vele malen sneller zijn dan traditionele processoren (CPU's). Bovendien maakt het raamwerk gebruik van NVIDIA’s Tensor Cores, verwerkingseenheden die speciaal zijn ontworpen om zeer snel matrices te vermenigvuldigen. Het optimaal benutten van deze Tensor Cores is complex, en vereist heel wat onderzoek. Zo is het bijvoorbeeld nodig om de geheugentransfers goed te coördineren, zodat de Tensor Cores niet moeten wachten tot de data geladen is. Gelukkig schermt het raamwerk de gebruiker af van deze complexiteit, zodat hij/zij zich kan focussen op het ontwerpen van nieuwe ML technieken.

En het uiteindelijke eindresultaat? De flexibiliteit en snelheid van het raamwerk werden geëvalueerd voor drie varianten van matrixvermenigvuldiging. In termen van snelheid haalt het gelijkaardige resultaten als bestaande bibliotheken voor operaties die ze ondersteunen. Daar komt natuurlijk bij dat het raamwerk veel flexibeler is. Zo ondersteunt het ook operaties die met de bestaande bibliotheken ofwel onmogelijk zijn, ofwel niet zonder snelheidsverlies kunnen worden uitgevoerd.

En nu?

Gaan we van vandaag op morgen in alle domeinen ML toepassen? Dat nu niet, maar het ontwikkelde raamwerk kan wel door onderzoekers gebruikt worden om hun onderzoek efficiënter uit te voeren. Het raamwerk en een aantal voorgedefinieerde puzzelstukken zijn vrijgegeven onder een open-bron licentie, en kunnen door iedereen bestudeerd en aangepast worden. Nu is het wachten op onderzoeksgroepen in ML om innovatieve technieken te ontwikkelen voor nieuwe toepassingen.

Download scriptie (1.01 MB)
Universiteit of Hogeschool
Universiteit Gent
Thesis jaar
2020
Promotor(en)
Bjorn De Sutter