• Rezultati Niso Bili Najdeni

Uporabastrojnegauˇcenjanavgrajenihplatformah BianKlanˇcnik

N/A
N/A
Protected

Academic year: 2022

Share "Uporabastrojnegauˇcenjanavgrajenihplatformah BianKlanˇcnik"

Copied!
68
0
0

Celotno besedilo

(1)

Univerza v Ljubljani

Fakulteta za raˇ cunalniˇ stvo in informatiko

Bian Klanˇcnik

Uporaba strojnega uˇ cenja na vgrajenih platformah

DIPLOMSKO DELO

VISOKOˇSOLSKI STROKOVNI ˇSTUDIJSKI PROGRAM PRVE STOPNJE

RA ˇCUNALNIˇSTVO IN INFORMATIKA

Mentor : izr. prof. dr. Matjaˇ z Kukar

Ljubljana, 2021

(2)

tatov diplomske naloge je potrebno pisno privoljenje avtorja, fakultete ter mentorja.

Besedilo je oblikovano z urejevalnikom besedil LATEX.

(3)

Kandidat: Bian Klanˇcnik

Naslov: Uporaba strojnega uˇcenja na vgrajenih platformah

Vrsta naloge: Diplomska naloga na visokoˇsolskem programu prve stopnje Raˇcunalniˇstvo in informatika

Mentor: izr. prof. dr. Matjaˇz Kukar

Opis:

Preglejte podroˇcje predvsem odprtokodnih orodij za strojno uˇcenje, ki omogoˇcajo izvajanje in/ali gradnjo napovednih modelov na vgrajenih in mobilnih plat- formah (ARM, Android, iOS). Osredotoˇcite se na ARM platformo Raspberry Pi. Preglejte moˇznosti za prenos (serializacijo) modelov in kreirajte nabor kriterijev za ocenjevanje tovrstnih orodij. Izbrana orodja preizkusite v pra- ksi, tako glede hitrosti kot pravilnosti izvajanja modelov.

(4)
(5)

Zahvaljujem se svojemu mentorju izr. prof. dr. Matjaˇzu Kukarju za vso pomoˇc pri izdelavi diplomske naloge. Zahvaljujem se tudi svoji druˇzini in dekletu za vso pomoˇc, podporo in spodbudo.

(6)
(7)
(8)
(9)

Kazalo

Povzetek Abstract

1 Uvod 1

1.1 Motivacija za diplomsko nalogo . . . 2

1.2 Struktura naloge . . . 2

2 Pregled podroˇcja 5 2.1 Vgrajeno strojno uˇcenje . . . 5

2.2 ARM . . . 7

2.3 Raspberry Pi 4 . . . 7

2.4 Strojno uˇcenje na mobilnih napravah . . . 8

2.5 Vgrajeni sistemi . . . 9

2.6 Uporaba nauˇcenih modelov strojnega uˇcenja . . . 9

3 Pregled ogrodij 13 3.1 Kriteriji za ocenjevanje . . . 13

3.2 Opis ogrodji . . . 14

3.3 Primerjava ogrodji . . . 17

3.4 Serializacija modelov . . . 20

4 Eksperimentalna metodologija 25 4.1 Grajenje modelov za preverjanje delovanja . . . 26

(10)

5 Rezultati 35

5.1 Modeli na osebnem raˇcunalniku . . . 35

5.2 ONNX-modeli . . . 36

5.3 Weka na Raspberry Pi . . . 38

5.4 Scikit-learn modeli . . . 38

6 Sklepne ugotovitve 45

Literatura 47

(11)

Seznam uporabljenih kratic

kratica angleˇsko slovensko

ARM advanced RISC machines napredni stroji RISC CUDA compute unified device archi-

tecture

platforma za preprosto upo- rabo grafiˇcnega procesorja pri vzporednem izvajanju progra- mov

AVX advanced vector extensions napredne vektorske razˇsiritve

(12)
(13)

Povzetek

Naslov: Uporaba strojnega uˇcenja na vgrajenih platformah Avtor: Bian Klanˇcnik

V zadnjem desetletju se je strojno uˇcenje precej razvilo in prodira na vsa podroˇcja informacijskih tehnologij. Dandanes veˇcina raˇcunalniˇskih sistemov uporablja strojno uˇcenje na tak ali drugaˇcen naˇcin. Poleg tega pa je zelo napredovalo tudi strojno uˇcenje na manj zmogljivih napravah. Cilj diplom- ske naloge je preizkusiti uˇcinkovitost obstojeˇcih orodij za strojno uˇcenje na manj zmogljivih napravah. Osredotoˇcili smo se na naprave ARM. Na oseb- nem raˇcunalniku smo zgradili veˇc razliˇcnih modelov v razliˇcnih ogrodjih za grajenje modelov strojnega uˇcenja. Modele smo serializirali s pomoˇcjo orodij za serializacijo in jih na koncu pognali na Raspberry Pi. Zgradili smo veˇc klasifikacijskih in en regresijski model. Merili smo uspeˇsnost modelov in ˇcas, ki ga model na doloˇceni napravi porabi za napovedovanje. Rezultati so po- kazali, da se uspeˇsnost modelov na razliˇcnih napravah ne razlikuje. Razlika v izmerjenem ˇcasu pa se je med napravami precej razlikovala.

Kljuˇcne besede: strojno uˇcenje, vgrajene naprave, serializacija modelov.

(14)
(15)

Abstract

Title: Machine learning on embedded platforms Author: Bian Klanˇcnik

Machine learning has developed considerably in the last decade and is pen- etrating all areas of information technology. Today, most computer systems use machine learning in one way or another. In addition, machine learning on less powerful devices has advanced greatly. The aim of the diploma thesis is to test the effectiveness of existing machine learning tools on less powerful devices. We focused on ARM devices. We built several different models on a personal computer in different frameworks to build machine learning models.

We serialized the models using serialization tools and eventually ran them on a Raspberry Pi. We built several classification and one regression model. We measured the performance of the models and the time that the model spends on a particular device to predict. The results showed that the performance of the models on different devices did not differ. The difference in measured time, however, varied considerably between devices.

Keywords: machine learning, embedded devices, model serialization.

(16)
(17)

Poglavje 1 Uvod

V zadnjem desetletju se je strojno uˇcenje precej razvilo in prodira na vsa podroˇcja informacijskih tehnologij. Dandanes veˇcina raˇcunalniˇskih sistemov uporablja strojno uˇcenje na tak ali drugaˇcen naˇcin [26].

Banke in druga podjetja v finanˇcni industriji uporabljajo strojno uˇcenje za prepoznavanje pomembnih podatkov in prepreˇcevanje goljufije. Vladne agencije imajo posebno potrebo po strojnem uˇcenju, saj imajo veˇc virov podatkov, ki jih je mogoˇce rudariti za vpogled. Strojno uˇcenje se hitro razvija tudi v zdravstveni industriji, zahvaljujoˇc napravam in senzorjem, ki lahko s pomoˇcjo podatkov v realnem ˇcasu ocenijo bolnikovo zdravstveno stanje [10].

Poleg tega pa je zelo napredovalo tudi strojno uˇcenje na manj zmogljivih napravah [36].

Za strojno uˇcenje na manj zmogljivih napravah se je v zadnjih nekaj letih razvilo veliko razliˇcnih ogrodji. V diplomski nalogi bomo med njimi najprej poiskali ogrodja, ki so primerna za strojno uˇcenje na mobilnih napravah in Raspberry Pi. Omejili se bomo na naprave, ki imajo procesor ARM, torej na- prave ARM. Ogrodja bomo potem med seboj primerjali in tako ugotovili, ali je ogrodje uporabno za nalogo, ki smo si jo zastavili. Izmed izbranih ogrodji pa bomo potem s pomoˇcjo merjenja ˇcasa in toˇcnosti modelov izbrali ogrodja, ki so najbolj uˇcinkovita za strojno uˇcenje na manj zmogljivih napravah ARM.

Za poˇsiljanje modela na napravo ARM, katerega bomo najprej zgradili 1

(18)

na osebnem raˇcunalniku, bomo uporabili serializacijo. Serializacija je proces pretvorbe podatkovnega objekta (kombinacije kode in podatkov) v niz baj- tov, ki shrani stanje predmeta v obliki, ki jo je mogoˇce enostavno prenesti [15].

Pomembna bo tudi pravilna izbira programske podpore za naprave ARM, na katere bomo prenesli modele. Naprava ARM mora imeti dovolj dobro strojno opremo, da lahko doloˇcen model izvede. Odloˇcili smo se za Raspberry Pi 4, saj sklepamo, da je dovolj zmogljiv za izvajanje izbranih modelov.

Ko bomo izmerili ˇcas in toˇcnost modelov s pomoˇcjo izbranih ogrodji na Raspberry Piju, bo sledilo vrednotenje rezultatov. Preverili bomo, kako hi- tro se izvede model na napravi glede na vrsto ogrodja, velikost in pa tudi vrsto podatkov za preverjanje. Primerjali bomo razlike v toˇcnosti modela na osebnem raˇcunalniku in modela na izbrani napravi ARM.

1.1 Motivacija za diplomsko nalogo

Motivacija za diplomsko nalogo izhaja iz podroˇcja strojnega uˇcenja na vgra- jenih napravah. Podroˇcje je precej novo in se zelo hitro razvija, vseeno pa je ˇse precej neraziskano in lahko odkrijemo veliko novih in za prihodnost uporabnih znanj. Uporaba strojnega uˇcenja na manj zahtevnih napravah bi koristila veˇc podroˇcjem v vsakdanjem ˇzivljenju.

1.2 Struktura naloge

V poglavju 2 naredimo sploˇsen pregled podroˇcja strojnega uˇcenja, vgraje- nega strojnega uˇcenja in strojnega uˇcenja na mobilnih napravah. Na kratko opiˇsemo tudi Raspberry Pi in vgrajene naprave. Dotaknemo se tudi razlike med strojnim uˇcenjem in sklepanjem ter sklepanjem na mobilnih napravah.

Poglavje 3 se osredotoˇca na ogrodja, ki obstajajo za vgrajeno strojno uˇcenje, in sicer kriterij, po katerem smo ocenjevali ogrodja, sploˇsni opis in primerjavo samih ogrodji. V tem poglavju opiˇsemo tudi formate za serializacijo modelov.

(19)

Diplomska naloga 3 Poglavje 4 opisuje postopek dela, natanˇcneje grajenje modelov na osebnem raˇcunalniku, prenaˇsanje modelov na napravo ARM in izvajanje modelov. Po- glavje 5 je namenjeno primerjanju rezultatov razliˇcnih ogrodji, modelov in naprav ARM. Na koncu rezultate ovrednotimo in predlagamo moˇznosti za nadgradnjo in izboljˇsavo.

(20)
(21)

Poglavje 2

Pregled podroˇ cja

Strojno uˇcenje je veja umetne inteligence in raˇcunalniˇstva. Uporablja po- datke in algoritme, ki posnemajo uˇcenje ljudi in postopoma izboljˇsujejo na- tanˇcnost. V uˇcni mnoˇzici iˇsˇce vzorce, se na podlagi vzorcev uˇci in s pomoˇcjo novih podatkov sprejema odloˇcitve [28]. Podroˇcje strojnega uˇcenja se zaradi velikega interesa hitro razvija.

2.1 Vgrajeno strojno uˇ cenje

Izvajanje strojnega uˇcenja na ˇsibkejˇsih napravah se je moˇcno razvilo ˇsele pred kratkim. Podroˇcje je zelo mlado, kar pomeni, da se strojna oprema, programska oprema in raziskave zelo hitro spreminjajo [46].

Vgrajene naprave za aplikacije strojnega uˇcenja lahko izpolnjujejo ˇstevilne naloge v industriji. Eden tipiˇcnih primerov: senzorske naprave, ki zaznajo zvoˇcne ali optiˇcne nepravilnosti in odstopanja ter na ta naˇcin podpirajo zago- tavljanje kakovosti pri proizvodnji ali spremljanju stanja sistema. Poleg ka- mer za spremljanje vizualnih parametrov in mikrofonov za snemanje zvoˇcnih valov te naprave uporabljajo tudi senzorje na primer za vibracije, stike, na- petost, tok, hitrost, tlak in temperaturo [6].

Poznamo veˇc razliˇcnih podroˇcji vgrajenega strojnega uˇcenja. Primer tega je recimo TinyML (Tiny Machine Learning). TinyML je podroˇcje strojnega

5

(22)

uˇcenja in vgrajenih sistemov, ki raziskuje tipe modelov, ki jih lahko upo- rabljamo na majhnih napravah z nizko porabo, kot so mikrokrmilniki. Po- slediˇcno imamo veliko manjˇso porabo energije in napravo, cenejˇso od oseb- nega raˇcunalnika [27].

2.1.1 TinyML

Vgrajeno strojno uˇcenje (TinyML) je cvetoˇce podroˇcje na preseˇciˇsˇcu vgraje- nih sistemov in strojnega uˇcenja. Svet je imel leta 2020 veˇc kot 250 milijard mikrokrmilnikov, poleg tega pa napovedujejo moˇcno rast v prihodnjih letih.

Tako se za nevronske mreˇze pojavlja nova vrsta vgrajenih aplikacij. Ker so ti modeli izjemno majhni (nekaj sto KB) in delujejo na mikrokrmilnikih ali vgrajenih podsistemih, lahko delujejo neprekinjeno, z minimalnim vplivom na ˇzivljenjsko dobo baterije naprave, ki jih izvaja.

Najbolj znan in razˇsirjen primer tehnologije TinyML je opazovanje kljuˇc- nih besed [37]. Amazon, Apple, Google in drugi uporabljajo majhne ne- vronske mreˇze na milijardah naprav, kot so slikovni senzorji z nizko porabo, merilniki pospeˇska, ˇziroskopi, optiˇcni senzorji PPG in druge naprave za iz- vajanje neprekinjenih sklepov za zaznavanje kljuˇcnih besed - in to ˇse zdaleˇc ni edina aplikacija TinyML [43].

Najpomembneje je, da vgrajeni sistemi nimajo enotnega TinyML-ogrodja.

Ko so inˇzenirji uvedli nevronske mreˇze za take sisteme, so zgradili enkratna ogrodja, ki zahtevajo roˇcno optimizacijo za vsako strojno platformo. Takˇsna ogrodja po meri ponavadi nimajo funkcij za podporo veˇc aplikacij in slabo prenosljivost v ˇsiroki paleti strojne opreme [27].

Za potrebe diplomske naloge TinyML ni dobra izbira, saj vseeno ˇzelimo uporabljati naprave, na katere lahko prenesemo sploˇsno uporabne, tudi zah- tevnejˇse modele.

(23)

Diplomska naloga 7

2.2 ARM

ARM-arhitektura je temelj najveˇcjega raˇcunalniˇskega ekosistema na svetu.

ARM-ove izkuˇsnje z zagotavljanjem arhitekturnih zasnov svetovnega razreda se kaˇzejo v uspehu tega raznolikega in nenehno razvijajoˇcega se ekosistema.

ARM je zaˇcel kot del raˇcunalnika BBC. Prvi ARM je bil ustanovljen na univerzi Cambridge leta 1978. Skupina Acorn je leta 1985 razvila prvi ARM komercialni procesor RISC. ARM kot podjetje je bil ustanovljen leta 1990.

Arhitektura ARM prevladuje na trgu mobilnih naprav, saj napaja veˇcino pametnih telefonov, predstavljeni pa so tudi na mnogih drugih podroˇcjih.

ARM je povsod, od milijonov najpreprostejˇsih naprav IoT do izpopolnjenih aplikacij za strojno uˇcenje [7].

Dosedanji uspeh ARM-a je v veliki meri posledica izjemno dobrega raz- merja med zmogljivostjo in moˇcjo, kar bo verjetno ˇse naprej njegovo najbolj kljuˇcno merilo za prihodnje aplikacije [39].

2.3 Raspberry Pi 4

Raspberry Pi 4 Model B je najnovejˇsa razliˇcica raˇcunalnika Raspberry Pi.

Pi ni takˇsen, kot je ponavadi osebni raˇcunalnik. Osnovna oblika sploh nima ohiˇsja in je preprosto elektronska tablica v velikosti kreditne kartice.

Predpostavili smo, da je najnovejˇsi model Raspberry Pija dovolj zmogljiv.

Ima boljˇsi procesor od Raspberry Pi 3 B+ in pa tudi do 8 GB velikosti pomnilnika, kar sklepamo, da je dovolj za izvajanje zahtevnejˇsih modelov.

Raspberry Pi je eden cenejˇsih naˇcinov za zaˇcetek dela z vgrajenim stroj- nim uˇcenjem. Za najnovejˇso razliˇcico mikrokrmilnika Raspberry Pi, torej Raspberry Pi 4 [14], se cene gibljejo od 20 do 90 evrov [45].

Na spletu najdemo veliko razliˇcnih projektov strojnega uˇcenja, ki upora- bljajo Raspberry Pi. Obstaja robot, natanˇcneje robotska roka, ki s pomoˇcjo strojnega uˇcenja igra ˇsah na pravi ˇsahovnici.

Avtonomni ˇcoln, ki ga je poganjal Raspberry Pi, je prevozil kar 8000 kilometrov po Atlantskem oceanu. Obstaja tudi opazovalnik vlakov, ki s

(24)

pomoˇcjo video kamere preverja, katera vrsta vlaka pelje mimo pisarn [31].

2.4 Strojno uˇ cenje na mobilnih napravah

Kot ˇze prej omenjeno, se je v zadnjih letih strojno uˇcenje precej razvilo in postalo zelo popularna tema. S tem ne smemo pozabiti na strojno uˇcenje na mobilnih napravah.

Do leta 2018 naj bi imeli po vsem svetu pribliˇzno 3 milijarde aktivnih uporabnikov pametnih telefonov, zato se je, kljub uporabi tradicionalnih raˇcunalnikov, pojavila ideja o strojnem uˇcenju na mobilnih napravah. Na primer, tehnologije, kot so prepoznavanje obrazov, fotografiranje z umetno inteligenco in pomoˇcnik za glas, temeljijo na strojnem uˇcenju in so prilju- bljene na mobilnih telefonih [29]. Poleg tega je dejstvo, da so procesorji v mobilnih napravah ˇze dovolj zmogljivi za podporo razliˇcnih nalog, vkljuˇcno z nalogami preprostih orodij za strojno uˇcenje, ki jih lahko dejansko izrazimo kot vrsto operacij mnoˇzenja matrik.

Poleg strojnega uˇcenja pa so se zelo razvile tudi same mobilne naprave.

Govora o obdelovanju velike mnoˇzice podatkov na mobilnih napravah je bilo ˇze veliko. ˇSirjenje metod strojnega uˇcenja, ki se izvajajo na pametnih tele- fonih, je z razvojem ”interneta stvari” temeljito preuˇceno na podroˇcju, ki se imenuje Pocket Data Mining [42].

Ko omenimo mobilno napravo, nam seveda takoj prideta na misel dva najveˇcja ponudnika operacijskih sistemov za mobilne naprave, in sicer An- droid in iOS.

Vsak operacijski sistem ima svoje prednosti in svoje slabosti. Najveˇcja prednost pri iOS-napravah je njihov tako imenovani Neural Engine. ˇCipi v njihovih mobilnih napravah vsebujejo namensko strojno opremo za nevronske mreˇze. To dodatno strojno opremo vsebujejo vsi novejˇsi Appleovi telefoni.

Neural Engine lahko izvede do 600 milijard operacij na sekundo, uporabljajo pa ga Face ID, Animoji in vse ostalo, kar je povezano s strojnim uˇcenjem [24].

(25)

Diplomska naloga 9 Za vsak operacijski sistem obstaja veˇc ogrodji za izvajanje strojnega uˇcenja, oba pa sta zelo dobro podprta, zato uporaba teh ogrodji ni tako zahtevna. Najbolj znano ogrodje za Apple je verjetno CoreML [17], kate- rega je razvil kar Apple. Za Android pa je najbolj znan TensorFlow [22], odprtokodno ogrodje, katerega je razvila ekipa Google Brain.

2.5 Vgrajeni sistemi

Najbolj opazna uporaba raˇcunalnikov in programske opreme je obdelava in- formacij za ˇcloveˇsko uporabo. Velika veˇcina raˇcunalnikov v uporabi pa je manj opazna. Ti recimo v osebnem avtomobilu skrbijo za zavore, varnostne pasove, zraˇcno blazino in avdio sistem ali pa upravljajo hladilnik, mikrova- lovno peˇcico in pomivalni stroj. Poleg tega iˇsˇcejo mikrobe v bioloˇskih vzorcih, oblikujejo slike notranjosti ˇcloveˇskega telesa in merijo vitalne znake. Iz veso- lja obdelujejo radijske signale, ki iˇsˇcejo supernove in nezemeljsko inteligenco.

Igraˇcam pomagajo oˇziveti in jim omogoˇcijo, da se odzovejo na ˇcloveˇski dotik in zvoke. Nadzirajo letala in vlake. Ti manj vidni raˇcunalniki se imenujejo vgrajeni sistemi, programska oprema, ki jo izvajajo, pa vdelana programska oprema [35].

Vgrajeni sistem temelji na mikroprocesorju in je zasnovan za nadzor funk- cije ali obsega funkcij. Gre za kombinacijo vhodno/izhodnih zunanjih naprav, raˇcunalniˇskega procesorja in pomnilnika [32].

2.6 Uporaba nauˇ cenih modelov strojnega uˇ cenja

Strojno uˇcenje delimo na dva glavna dela: uˇcenje in sklepanje, ki ju je mogoˇce izvesti na popolnoma razliˇcnih procesnih platformah.

Uˇcenje je postopek, kjer model poganjamo na uˇcnih podatkih s pomoˇcjo doloˇcenega algoritma. Sklepanje pa je uporaba nauˇcenega modela za napo- vedovanje rezultatov.

(26)

Uˇcna stran se obiˇcajno zgodi na zmogljivih osebnih raˇcunalnikih ali v oblaku in vkljuˇcuje hranjenje velikih oznaˇcenih naborov podatkov v globoko nevronsko mreˇzo. Uˇcenje se nanaˇsa na postopek ustvarjanja algoritma stroj- nega uˇcenja. Uˇcenje vkljuˇcuje uporabo ogrodja za globoko uˇcenje (npr. Ten- sorFlow) in nabora podatkov o uˇcenju. V tej fazi zmogljivost ali moˇc v realnem ˇcasu ni problem.

Slika 2.1: Proces uˇcenja s primerom modela nevronske mreˇze

Rezultat faze uˇcenja je nauˇcen model, ki lahko po uvedbi opravi doloˇceno nalogo. Sklepanje se nanaˇsa na postopek uporabe nauˇcenega modela stroj- nega uˇcenja za napovedovanje. Glede na omejitve, ki jih ima vgrajeni sistem, se modele pogosto uˇci na drugaˇcni procesorski platformi, kot tisti, ki poganja sklepanje. [38].

2.6.1 Mobilno strojno uˇ cenje in sklepanje

Na sliki 2.2 lahko vidimo, da postopek mobilnega sklepanja samo vrne re- zultat napovedi, ki se lahko uporabi za lokalno izdelavo storitve za uporab- nika. To nima niˇc opraviti s streˇznikom. ˇCe pa se lahko del procesa uˇcenja izvede lokalno na mobilnih napravah, lahko nauˇcen model ne samo persona- lizira, temveˇc nudi tudi dragocene informacije za globalni model, shranjen na streˇzniku. Postopek dodatnega uˇcenja ni v nasprotju s prvotnim postopkom sklepanja in lahko celo izboljˇsa njegovo uspeˇsnost, ker se model ˇse dodatno

(27)

Diplomska naloga 11

Slika 2.2: Razlika med sklepanjem in uˇcenjem na mobilni napravi prilagodi konkretni uporabi [29].

(28)
(29)

Poglavje 3

Pregled ogrodij

Ogrodje za strojno uˇcenje je vsako orodje, vmesnik ali knjiˇznica, ki omogoˇca enostavno razvijanje modelov strojnega uˇcenja, pri katerem ne potrebujemo odliˇcnega znanja o osnovnih algoritmih. Uporaba ogrodij strojnega uˇcenja zelo poenostavi delo z algoritmi strojnega uˇcenja [4].

Za strojno uˇcenje ali sklepanje na napravah ARM obstaja veliko razliˇcnih ogrodji. Veˇcina jih temelji na Pythonu, kot so recimo TensorFlow [22], PyTorch [40] in Scikit-learn [41], poznamo pa tudi nekatere, ki temeljijo na jezikih R in C, kot recimo MXNet [25]. Pregledali smo precejˇsen del ogrodij, od tistih, ki so najbolj znana na podroˇcju, do tistih, ki zanje redko sliˇsimo.

Vsako ogrodje smo najprej s pomoˇcjo dokumentacije tega ogrodja ocenili in primerjali z drugimi ogrodji.

3.1 Kriteriji za ocenjevanje

Najpomembnejˇsi kriterji za naˇsa ogrodja je bil ta, da ogrodje deluje na na- pravah, ki imajo procesor ARM oziroma ˇce naˇsa naprava podpira ogrodje.

Zanimalo nas je tudi, kakˇsne so specifikacijske zahteve ogrodja, torej ˇce ima naˇsa naprava dovolj dobro strojno opremo, da lahko ogrodje uporabljamo.

Seveda smo ˇzeleli vedeti tudi, katere vrste modelov podpira, katere tipe uˇcnih primerov ima ogrodje in ali ogrodje podpira prenos in izvajanje modela v iz-

13

(30)

vorni obliki. Poleg vsega tega nas je zanimalo, ali ogrodje omogoˇca moˇznost uˇcenja ali do-uˇcenja prenesenega modela na platformi in katere modele iz razliˇcnih programskih jezikov podpira.

Poleg vseh zgoraj naˇstetih kriterijev pa mora ogrodje omogoˇcati seriali- zacijo modelov, saj lahko le tako model iz osebnega raˇcunalnika poˇsljemo na naˇso napravo ARM.

3.2 Opis ogrodji

Pri izbiri ogrodji smo se osredotoˇcili na ogrodja, ki omogoˇcajo serializa- cijo modelov. Nekatera ogrodja omogoˇcajo prevajanje programske kode s pomoˇcjo vdelanega kodirnika. Kodirnik deluje tako, da nam izvorno kodo iz osebnega raˇcunalnika pretvori v C ali C++ kodo, katero lahko potem poga- njamo na vgrajenih sistemih. Najbolj znan primer takega ogrodja je Matlab [11] in njegov kodirnik [12].

Za mobilno napravo smo izbrali napravo, ki ima operacijski sistem An- droid. ˇCe bi uporabili iOS-napravo, bi lahko uporabili tudi ogrodja, kot so CoreML [17].

Osredotoˇcili smo se torej na ogrodja, ki omogoˇcajo serializacijo in delujejo na ARM-procesorju, bolj natanˇcno Raspberry Pi in Android.

3.2.1 TensorFlow

Ogrodje TensorFlow je odprtokodna knjiˇznica za numeriˇcne operacije, spe- cializirana za podroˇcje strojnega uˇcenja. Njegova struktura omogoˇca proce- siranje tudi na veˇc grafiˇcnih ali raˇcunalniˇskih procesorjih. Prednost ogrodja je, da ga lahko uporabljamo tako na osebnih raˇcunalnikih, kot na streˇznikih in mobilnih napravah. Razvila ga je ekipa Google Brain.

Uporabljamo ga lahko na macOS, Ubuntu in Windows, saj so vsi uradno podprti s strani razvijalcev. Knjiˇznica je razvita v programskem jeziku C++

in uporabljena v Pythonu [22].

(31)

Diplomska naloga 15

3.2.2 Weka

Ogrodje Weka je odprtokodno. Je zbirka algoritmov strojnega uˇcenja za po- trebe podatkovnega rudarjenja. Vsebuje veliko razliˇcnih orodij za pripravo podatkov, klasifikacijo, regresijo, gruˇcenje, povezovalna pravila in vizualiza- cijo.

Ogrodje so razvili na Novi Zelandiji, in sicer v programskem jeziku Java.

Lahko ga uporabljamo na Linux, Windows in macOS oziroma JVM. Deluje tudi na drugih platformah, ki podpirajo Javo. Pogoj je, da imamo na napravi nameˇsˇceno Javo, verzija Jave pa ne sme biti starejˇsa od Java 8 [21].

3.2.3 PyTorch

PyTorch je optimizirana odprtokodna knjiˇznica strojnega uˇcenja. Temelji na knjiˇznici Torch. Uporablja se za globoko uˇcenje na grafiˇcnih procesorjih in raˇcunalniˇskih procesorjih. Z ogrodjem izdelujejo aplikacije, ki se osredotoˇcajo na raˇcunalniˇski vid in obdelavo naravnega jezika. Glavni razvijalci ogrodja so bili predvsem Facebookov laboratorij za raziskave umetne inteligence.

PyTorch lahko uporabimo na Windows, macOS in Linux. Glavni pro- gramski jezik ogrodja je Python in je tudi bolj podprt in prijazen uporabniku, vendar ogrodje podpira tudi C++ [40].

PyTorch se uporablja v veliko vgrajenih sistemih. Eden od primerov je recimo avtomatski pilot za voˇznjo avtomobilov znamke Tesla [20]. Leta 2018 se je ogrodje PyTorch zdruˇzilo z ogrodjem Caffe2.

3.2.4 Scikit-learn

Scikit-learn je Pythonov modul, ki vkljuˇcuje ˇsirok nabor najsodobnejˇsih algo- ritmov strojnega uˇcenja za srednje nadzorovane in nenadzorovane probleme.

Ta paket se osredotoˇca na nestrokovnjake, ki uporabljajo sploˇsni jezik na visoki ravni. Poudarek je na enostavnosti uporabe, zmogljivosti, dokumen- taciji in doslednosti API. Ima minimalne odvisnosti in odprtokodno ogrodje,

(32)

kar spodbuja njegovo uporabo tako v akademskih kot komercialnih okoljih [41].

3.2.5 Caffe

CAFFE, kratica pomeni Convolutional Architecture for Fast Feature Em- bedding, je ogrodje za globoko uˇcenje. Razvit je bil na kalifornijski univerzi v Berkeleyju. Je odprtokodno ogrodje, napisano v jeziku C++, uporablja pa Pythonov vmesnik [33].

Ogrodje podpira razliˇcne vrste arhitektur globokega uˇcenja, usmerjene v klasifikacijo slik in segmentacijo slik. Podpira raˇcunske knjiˇznice jeder na osnovi GPU in CPU, kot sta NVIDIA cuDNN [19] in Intel MKL [18].

3.2.6 MXNet

Apache MXNet je odprtokodna programska oprema za globoko uˇcenje, ki se uporablja za uˇcenje in uvajanje globokih nevronskih mreˇz. Podpira veˇc programskih jezikov, vkljuˇcno s C ++, Python, Java, Matlab, JavaScript, Go in R. Omogoˇca hitro usposabljanje modelov in je zelo prilagodljiva.

Knjiˇznica MXNet je prenosna. Prilagodi se lahko na veˇc grafiˇcnih proce- sorjev in veˇc strojev.

Ogrodje je prilagodljivo in izjemno razˇsirljivo. Podpira najsodobnejˇse modele globokega uˇcenja, vkljuˇcno s konvolucijskimi nevronskimi mreˇzami in dolgoroˇcnimi kratkoroˇcnimi pomnilniˇskimi omreˇzji [25].

3.2.7 Chainer

Chainer je zmogljivo, prilagodljivo in intuitivno ogrodje za globoko uˇcenje.

Napisano je v Pythonu s pomoˇcjo Pythonovih knjiˇznic NumPy in CuPy.

Ogrodje je razvilo japonsko podjetje Preferred Networks v partnerstvu z IBM, Intelom, Microsoftom in Nvidijo.

Podpira CUDA in deluje na veˇc grafiˇcnih procesorjih. Znan je po svojem zgodnjem sprejemanju sheme ”opredeli-z-zagonom”, kar pomeni, da pove-

(33)

Diplomska naloga 17 zava v mreˇzi ni doloˇcena ob zaˇcetku usposabljanja. Mreˇza se doloˇci med usposabljanjem, ko se izvede dejanski izraˇcun. Poleg tega pa je znan tudi po zmogljivosti v velikih sistemih [44].

3.2.8 OpenNN

Ogrodje OpenNN, kratica pomeni Open Neural Networks Library, je odpr- tokodno ogrodje za izvajanje nevronskih mreˇz. Ogrodje je napisano v pro- gramskem jeziku C++.

Ogrodje lahko izvaja poljubno ˇstevilo slojev nelinearnih procesnih enot za nadzorovano uˇcenje. Zaradi svoje globoke arhitekture omogoˇca naˇcrtovanje nevronskih mreˇz z univerzalnimi pribliˇznimi lastnostmi. Poleg tega omogoˇca veˇcprocesorsko programiranje s pomoˇcjo OpenMP, da se poveˇca zmogljivost raˇcunalnika in izboljˇsa samo izvajanje [2].

3.2.9 CNTK

CNTK, kratica pomeni Microsoft Cognitive Toolkit, je odprtokodno ogrodje za komercialno porazdeljeno globoko uˇcenje. Z usmerjenim grafom opisuje nevronske mreˇze kot vrsto raˇcunskih korakov. CNTK omogoˇca uporabniku kombiniranje tipov modelov, kot so globoka nevronska mreˇza s povratnim po- mikom, konvolucijske nevronske mreˇze in ponavljajoˇce se nevronske mreˇze.

CNTK lahko izvaja uˇcenje s pomoˇcjo paralelizacije na veˇc grafiˇcnih proce- sorjih in streˇznikih.

CNTK je mogoˇce vkljuˇciti kot knjiˇznico v programe Python, C ali C ++.

Podpira operacijski sistem Linux ali Windows [3].

3.3 Primerjava ogrodji

Avtorji ˇclanka [47] so leta 2018 naredili primerjavo nekaterih ogrodji, ki jih uporabljamo tudi mi. Primerjavo so predstavili s pomoˇcjo tabele 3.1, ki je vsebovala ogrodje in napravo. S kljukico oziroma kriˇzcem je v tabeli

(34)

predstavljeno, ali ogrodje deluje na napravi ali ne. Tabela 3.1 je prikazana spodaj.

MacBook Pro Intel FogNode NVIDIA Jetson TX2 Raspberry Pi Nexus 6P

TensorFlow 3 3 3 3 8

Caffe2 3 3 3 8 8

MXNet 3 3 8 8 8

PyTorch 3 3 3 8 8

TensorFlow Lite 8 8 8 8 3

Tabela 3.1: Pregled kombinacij strojne in programske opreme (Povzeto po [47])

Avtroji v ˇclanku trdijo, da med razliˇcnimi napravami ni jasnega zmago- valca, ima pa vsaka svoje prednosti. ˇCas, potreben za nalaganje modelov, je bil daljˇsi kot potreben ˇcas za zagon modela za veˇcino paketov. To pomeni, da obstajajo moˇznosti za nadaljnjo optimizacijo.

Podobno kot je to narejeno v ˇclanku, bomo v diplomski nalogi med se- boj primerjali razliˇcna ogrodja s pomoˇcjo tabele. Najprej bomo pregledali sploˇsne podatke ogrodij, sledila pa bo primerjava same funkcionalnosti vsa- kega ogrodja, tako da se bomo potem laˇzje odloˇcili za uˇcinkovitejˇsa in nam primernejˇsa orodja.

Leto izida Odprtokodno Platforma Ogrodje napisano v TensorFlow 2015 3 Linux, macOS, Windows, Android C++, Python, CUDA

Weka 1993 3 Linux, macOS, Windows Java

PyTorch 2016 3 Linux, macOS, Windows Python, C, C++, CUDA

Scikit-learn 2007 3 Linux, macOS, Windows Python

Caffe 2013 3 Linux, macOS, Windows C++

MXNet 2015 3 Linux, macOS, Windows, Android, iOS C++

Chainer 2015 3 Linux, macOS Python

Matlab 1984 8 Linux, macOS, Windows C, C++, Java, Matlab

CoreML 2017 8 macOS, iOS, watchOS Swift

OpenNN 2003 3 Linux, macOS, Windows, Android, iOS C++

CNTK 2016 3 Linux, Windows C++

Tabela 3.2: Pregled sploˇsnih podatkov ogrodij

V tabeli 3.2 lahko vidimo sploˇsni pregled ogrodij. Tabela vsebuje leto izida ogrodja, pove nam, ali je ogrodje odprtokodno, na katerih platformah ogrodje deluje in v katerem programskem jeziku je napisano.

(35)

Diplomska naloga 19 V naslednjih tabelah bomo primerjali funkcionalnosti vsakega ogrodja.

Zanimalo nas je, kakˇsne so specifikacijske zahteve ogrodja (prostorske zah- teve, kot so pomnilniˇski prostor in velikost diska, procesorske zahteve), katere vrste modelov podpira, ali ogrodje podpira prenos in izvajanje modela v iz- vorni obliki in ali deluje na ARM-napravi. Zanimalo nas je tudi, ali ogrodje omogoˇca moˇznost uˇcenja ali do-uˇcenja prenesenega modela na platformi in katere modele iz razliˇcnih programskih jezikov podpira.

Deluje na ARM Pomnilniˇski prostor Disk Procesor

TensorFlow 3 1 GB velikost ogrodja

+ velikost modela potrebuje AVX

Weka 3 1 GB velikost ogrodja

+ velikost modela

podpira Java 8 ali novejˇse

PyTorch 3 2 GB velikost ogrodja

+ velikost modela

podpira 64 bitni operacijski sistem

Scikit-learn 3 1 GB velikost ogrodja

+ velikost modela

podpira 64-bitni Python 3

Caffe 3 1 GB velikost ogrodja

+ velikost modela

podpira 64-bitni Python 3 in OpenCV

MXNet 3 2 GB velikost ogrodja

+ velikost modela

podpira Python 3.6 ali novejˇsi

Chainer 3 1 GB velikost ogrodja

+ velikost modela

podpira Python 3.6 ali novejˇsi

CNTK 3 2 GB velikost ogrodja

+ velikost modela

podpira 64 bitni operacijski sistem

OpenNN 8 / velikost ogrodja

+ velikost modela /

Tabela 3.3: Minimalne sistemske zahteve ogrodij

Iz tabele 3.3 lahko razberemo, da imajo vsa ogrodja podobne specifikacij- ske zahteve. Veˇcina zahteva doloˇceno razliˇcico nekega programskega jezika, nobeno ogrodje pa ni preveˇc zahtevno. Izpade pa ogrodje OpenNN, saj ne deluje na ARM-procesorjih.

Spodnja tabela 3.4 prikazuje, katera ogrodja podpirajo katere tipe mode- lov za strojno uˇcenje. Teh tipov je veliko, sami pa smo izbrali nam najbolj primerne za potrebe diplomske naloge. Tipi modelov so:

• Nevronska mreˇza

(36)

• Linearna regresija

• K najbliˇzjih sosedov

• Nakljuˇcni gozd

• Metoda podpornih vektorjev (SVM)

Nevronska mreˇza Linearna regresija K najbliˇzjih sosedov Nakljuˇcni gozd Metoda podpornih vektorjev (SVM)

TensorFlow 3 3 3 3 3

Weka 3 3 3 3 3

PyTorch 3 3 3 3 3

Scikit-learn 3 3 3 3 3

Caffe 3 3 8 3 8

MXNet 3 3 8 8 3

Chainer 3 3 3 8 3

CNTK 3 3 8 3 3

Tabela 3.4: Podprti tipi modelov na posameznem ogrodju

V zadnji tabeli 3.5 lahko vidimo, katera ogrodja omogoˇcajo prenos in izvajanje modela v izvorni obliki, ali ogrodje omogoˇca dodatno uˇcenje na vgrajeni platformi in v katerih programskih jezikih lahko zgradimo modele.

Prenos in izvajanje modela v izvorni obliki

Omogoˇca uˇcenje na platformi

Programski jeziki modelov

TensorFlow 3 8 Python, C++, Java, R, Go

Weka 3 3 Java

PyTorch 3 8 Python, C++

Scikit-learn 3 3 Python

Caffe 3 8 Python, Matlab, C++

MXNet 3 8 Python, C++, JavaScript, R, Go

Chainer 3 8 Python

CNTK 3 8 Python, C++

Tabela 3.5: Podrobnejˇsi podatki o prenosu modelov in ogrodju

3.4 Serializacija modelov

Obstajajo razliˇcni formati za distribucijo modelov strojnega uˇcenja. Seriali- zacija je proces pretvarjanja modela strojnega uˇcenja v obliko, ki jo je mogoˇce

(37)

Diplomska naloga 21 shraniti in prenesti na drugo napravo, medtem ko je deserializacija obratni proces.

Poznamo dve vrsti serializacije modelov. Prva vrsta je serializacija mo- dela, specifiˇcna za ogrodje, v katerem model zgradimo. Tega se posluˇzujejo ogrodja, kot so TensorFlow, PyTorch in Scikit-learn.

Druga vrsta pa so sploˇsna orodja za serializacijo modelov, ki naj bi imela podporo za veˇc ogrodji hkrati in jih tako lahko uporabimo pri veˇcih plat- formah za strojno uˇcenje. Pri tem smo se odloˇcali med dvema glavnima formatoma. Izbrali smo ONNX in PMML, saj sta najbolj poznana.

3.4.1 Serializacija, specifiˇ cna za ogrodje

Kot ˇze prej omenjeno, imajo nekatera ogrodja za strojno uˇcenje svoja orodja za serializacijo. To nam omogoˇca, da se izognemo sploˇsnim orodjem za se- rializacijo in model serializiramo kar znotraj uporabljenega ogrodja. Izmed izbranih ogrodji imajo orodja za serializacijo:

TensorFlow

TensorFlow za serializacijo svojih modelov uporablja lasten binarni format.

Slednjega lahko uporabimo za prenaˇsanje modelov med razliˇcnimi platfor- mami.

PyTorch

PyTorch za serializacijo svojih modelov uporablja TorchScript. TorchScript je skriptni jezik, s katerim lahko serializiramo modele PyTorcha. Kodo, na- pisano v TorchScript, lahko shranimo iz procesa v Pythonu in jo naloˇzimo na drugo napravo [16].

Scikit-learn

Scikit-learn ima za serializacijo modelov dva lastna formata, in sicer Pickle in Joblib. Pickle je modul, ki uporablja binarne protokole za serializacijo in

(38)

deserializacijo objektov v Pythonu [13]. Joblib temelji na modelu serializacije Pickle in je niz orodij, s pomoˇcjo katerih lahko serializiramo in deserializiramo Python kodo [8].

3.4.2 PMML

PMML ali daljˇse Predictive Model Markup Language je standard za zastopa- nje napovednih reˇsitev. Omogoˇca povezovanje razliˇcnih orodij za statistiˇcno in podatkovno rudarjenje. S pomoˇcjo PMML lahko napovedno reˇsitev pre- mikate med razliˇcnimi orodji in aplikacijami, ob tem pa ni potrebe po pisanju kode za vsako orodje oziroma aplikacijo [30].

Brez tehnologije PMML bi lahko uvajanje napovedi trajalo mesece, saj je morala skupina za obdelavo podatkov po njeni izdelavi napisati dokument, ki opisuje celotno reˇsitev. Ta dokument je bil nato poslan ekipi inˇzenirjev, ki ga je nato prekodirala v produkcijsko okolje. Pri PMML ta dvojni napor ni veˇc potreben, saj je napovedna reˇsitev kot celota (transformacije podatkov in napovedni model) preprosto predstavljena kot datoteka PMML. Kar lahko traja mesece, s PMML traja nekaj ur ali minut.

PMML temelji na XML. Njegova struktura sledi naboru vnaprej doloˇcenih elementov in atributov, ki odraˇzajo notranjo strukturo napovednega poteka dela. S PMML lahko napovedne reˇsitve brez veˇcjih teˇzav premikamo iz enega sistema za podatkovno rudarjenje v drugega [1].

PMML je bila teoretiˇcno zelo dobra zamisel in veliko ljudi je praktiˇcno reˇsitev priˇcakovalo z velikim upanjem. Na koncu pa se je v praksi izkazala za ne tako dobro in ni bila dovolj dovrˇsena, da bi se uporabljala ˇse danes.

3.4.3 ONNX

Open Neural Network Exchange ali krajˇse ONNX je odprtokodni ekosistem umetne inteligence tehnoloˇskih podjetij in raziskovalnih organizacij. Vzpo- stavlja odprte standarde za zastopanje algoritmov strojnega uˇcenja in pro- gramskih orodij. ONNX je na voljo na GitHubu [23].

(39)

Diplomska naloga 23 ONNX ponuja definicije razˇsirljivega modela raˇcunskega grafa, vgrajene operaterje in standardne podatkovne tipe, osredotoˇcene na sklepanje. Raz- vijalcem omogoˇca laˇzje premikanje med ogrodji. Nekatera ogrodja so bolj zaˇzelena za doloˇcene faze razvojnega procesa, recimo hitro usposabljanje, prilagodljivost omreˇzne arhitekture ali vkljuˇcevanje v mobilne naprave. Zato je za razvijalce hitro premikanje med ogrodji zelo uporabno.

Poleg vseh zgoraj naˇstetih razlogov pa ONNX omogoˇca prodajalcem strojne opreme, da izboljˇsajo delovanje umetnih nevronskih mreˇz veˇc ogrod- jem hkrati.

Pomembno je omeniti to, da ONNX ne omogoˇca deserializacije modelov nazaj v njihovo privotno ogrodje, torej ne moremo deserializirati ONNX- modela nazaj v ogrodje, iz katerega smo ga serializirali. Modeli ostanejo v ONNX-formatu, poganjamo pa jih lahko le v ogrodjih, ki imajo podporo za poganjanje ONNX-modelov.

Pri primerjavi obeh formatov ugotovimo, da je za nas boljˇsi ONNX. Pod- pira veliko veˇc ogrodji za strojno uˇcenje kot PMML. Poseben problem pri PMML so njegove lastniˇske pravice pri vseh odprtokodnih ogrodjih. Po drugi strani pa ima ONNX podporo za veliko ˇstevilo odprtokodnih ogrodji, med katerimi jih je par takˇsnih, ki smo jih izbrali tudi sami.

Na koncu smo se pri sploˇsnem orodju za serializacijo odloˇcili za ONNX, saj smo ob primerjavi PMML in ONNX ugotovili, da je boljˇsi. Pri ogrodjih TensorFlow, PyTorch in Scikit-learn pa bomo poleg serializacije z ONNX uporabili tudi orodja za serializacijo znotraj teh ogrodji.

V spodnji tabeli 3.6 si lahko pogledamo ˇse primerjavo formatov serializa- cije.

Orodje ONNX naj bi podpiralo vse tipe modelov ogrodij, ki imajo pod- poro za pretvarjanje v ONNX-modele (te lahko vidimo v tabeli 3.6). Ne podpira tipov modelov, ki jih ne podpira ˇze samo uˇcno ogrodje. Primer je nakljuˇcni gozd v ogrodju MXNet.

Orodji Pickle in Joblib podpirata vse tipe modelov ogrodja Scikit-learn, tako da lahko serializiramo vsak model, ki ga zgradimo v Scikit-learn.

(40)

Podprta orodja in platforme ML Konˇcnica datoteke Licenca Stiskanje

PMML R, Python, Spark .pmml 3 8

ONNX

TensorFlow, MXNet, Caffe, Chainer, CNTK

Scikit-learn, PyTorch

.onnx 8 3

Pickle Format Scikit-learn .pkl 8 8

Joblib Scikit-learn .joblib 8 3

TorchScript PyTorch .pt 8 3

Tabela 3.6: Primerjava formatov za distribucijo modelov

TorchScript naj bi imel podporo za veˇcino funkcij in metod ogrodja PyTorch, iz ˇcesar lahko sklepamo, da podpira veliko veˇcino tipov modelov, ki jih lahko zgradimo s pomoˇcjo ogrodja PyTorch.

(41)

Poglavje 4

Eksperimentalna metodologija

Ko smo izbrali ogrodja, s katerimi bomo modele zgradili in jih potem prene- sli na naprave ARM, je sledilo grajenje modelov na osebnem raˇcunalniku s pomoˇcjo orodij, serializacije in prenosa modela. Izbrana ogrodja so:

• TensorFlow

• Weka

• PyTorch

• Scikit-learn

• MXNet

• CNTK

• Chainer

Zaˇceli smo z grajenjem modelov na osebnem raˇcunalniku. Za zaˇcetno podatkovno mnoˇzico smo si izbrali Iris. Mnoˇzico smo si izbrali, ker smo ˇzeleli na zaˇcetku samo preveriti delovanje ogrodij na manj zmogljivih napravah.

Zeleli smo sestaviti majhen, hiter model, pri katerem pribliˇˇ zno vemo, kakˇsen bo rezultat.

Iris je precej znana podatkovna mnoˇzica, ki jo je predstavil britanski statistik in biolog Ronald Fisher. Mnoˇzica podatkov vsebuje 3 razrede po

25

(42)

50 primerov, torej skupaj 150 primerov, pri ˇcemer se vsak razred nanaˇsa na vrsto rastline perunike (angleˇsko iris). Vsak primer ima 4 atribute.

Odloˇcili smo se, da bomo zgradili dva razliˇcna modela s pomoˇcjo nevron- skih mreˇz na podatkovni mnoˇzici Iris. In sicer linearno regresijo, kjer bomo napovedovali en atribut, in veˇcrazredno klasifikacijo.

4.1 Grajenje modelov za preverjanje delova- nja

Najprej smo zgradili modele, s katerimi smo ˇzeleli preveriti delovanje ogrodij na manj zmogljivih napravah. Modele smo torej zaˇceli naprej graditi na osebnem raˇcunalniku. Za vsako ogrodje bomo na kratko opisali, kako je potekal proces gradnje modelov.

Klasifikacijski model

Za klasifikacijski model smo uporabili nevronsko mreˇzo, katera ima dve plasti z desetimi vozliˇsˇci in izhodno plast s tremi vozliˇsˇci.

Za aktivacijsko funkcijo smo pri klasifikacijskem modelu uporabili funkcijo softmax, enaˇcbo te funkcije pa lahko vidimo spodaj.

f(x)i = exi PM

m=1exm

Za optimizacijsko metodo pa smo pri klasifikacijskem modelu uporabili funkcijo adam.

wj =wj−1−ν m(w, t)ˆ pv(w, t) +ˆ ε Regresijski model

Pri grajenju regresijskega modela, smo uporabili kar najbolj osnovni regre- sijski model, in sicer linearno regresijo. Pri regresiji smo napovedovali en atribut s pomoˇcjo vseh ostalih atributov iz izbrane podatkovne mnoˇzice.

(43)

Diplomska naloga 27 Za merjenje natanˇcnosti naˇsega modela smo uporabili povpreˇcno absolu- tno napako.

M AE = 1 n

X|y−y|ˆ

Povpreˇcna absolutna napaka je najpreprostejˇsa meritev regresijske na- pake. Izraˇcunamo preostanek za vsako podatkovno toˇcko, pri ˇcemer vza- memo samo absolutno vrednost vsake, tako da se negativni in pozitivni ostanki ne izniˇcijo. Nato vzamemo povpreˇcje vseh teh ostankov.

4.1.1 TensorFlow

Klasifikacija

Zaˇceli smo z grajenjem klasifikacijskega modela. Kot ˇze prej omenjeno, smo uporabili podatkovno mnoˇzico Iris.

Zgradili smo klasifikacijski model s pomoˇcjo nevronske mreˇze, katera ima dve plasti z desetimi vozliˇsˇci in izhodno plast s tremi vozliˇsˇci.

Model smo potem 201-krat (ˇstevilo iteracij) nauˇcili na uˇcni mnoˇzici s pomoˇcjo vzvratnega razˇsirjanja napake, saj smo pri 201. iteraciji dobili naj- boljˇse rezultate. Model smo nato evalvirali s pomoˇcjo testne mnoˇzice, ki vsebuje 30 primerov, in dobili rezultat, da je toˇcnost naˇsega modela 93.333

%.

Regresija

Na zaˇcetku smo pri grajenju regresijskega modela prav tako uporabili podat- kovno mnoˇzico Iris.

Linearno regresijo smo zgradili na treh atributih podatkovne mnoˇzice, in sicer: ”Sepal width”, ”Petal length” in ”Petal width”. Napovedovali pa smo atribut ”Sepal length”.

Povpreˇcna absolutna napaka modela je bila 0.2512.

(44)

4.1.2 Weka

Klasifikacija

Pri ogrodju Weka je bilo grajenje klasifikacijskega modela precej bolj eno- stavno. Nevronska mreˇza ima prav tako dve plasti z desetimi vozliˇsˇci in eno izhodno plast prav tako s tremi vozliˇsˇci.

Model smo prav tako 201-krat (ˇstevilo iteracij) nauˇcili na uˇcni mnoˇzici, na koncu smo ga evalvirali s pomoˇcjo testne mnoˇzice, ki vsebuje 30 primerov.

Toˇcnost modela pa je bila 96.67 %.

Regresija

Gradnja regresijskega modela je bila z ogrodjem Weka prav tako precej eno- stavnejˇsa, kot pri ostalih orodjih, saj smo vse naredili v uporabniˇskem vme- sniku ogrodja. Regresija je zgrajena na treh atributih.

Povpreˇcna absolutna napaka modela je bila 0.2201.

4.1.3 PyTorch

Klasifikacija

Grajenje klasifikacijskega modela za ogrodje PyTorch je bilo precej podobno kot pri TensorFlow. Obe ogrodji uporabljata Python in imata tudi precej podobne funkcije. Nevronska mreˇza ima dve plasti z desetimi vozliˇsˇci in eno izhodno plast s tremi vozliˇsˇci.

Model smo 201-krat (ˇstevilo iteracij) nauˇcili s pomoˇcjo vzvratnega razˇsirj- anja napake, na koncu pa je bila evalvacija s testno mnoˇzico 96,17 % na- tanˇcna.

Regresija

Podobno kot za klasifikacijski model, je bilo pri ogrodju PyTorch grajenje regresijskega modela podobno kot pri ogrodju Tensroflow. Regresijski model je zgrajen na treh atributih.

(45)

Diplomska naloga 29 Povpreˇcna absolutna napaka modela je bila 0.2821.

4.1.4 Scikit-learn

Klasifikacija

Pri ogrodju Scikit-learn je bilo grajenje klasifikacijskega modela precej eno- stavno. Za izdelavo nevronske mreˇze z dvema plastema, ki imata deset vo- zliˇsˇc, in eno plastjo s tremi vozliˇsˇci smo potrebovali le par vrstic kode.

Model smo tako kot vse do sedaj 201-krat (ˇstevilo iteracij) nauˇcili in na koncu dobili evalvacijo s pomoˇcjo testne mnoˇzice, ki je bila 94 % toˇcna.

Regresija

Ogrodje Scikit-learn ima knjiˇznico, kjer je tudi metoda za grajenje linearne regresije, torej je bilo potrebno le pripraviti podatke in jih potem podati knjiˇznici. Model je zgrajen na treh atributih.

Povpreˇcna absolutna napaka modela je bila 0.2341.

4.1.5 MXNet

Klasifikacija

Ogrodje MXNet lahko piˇsemo v R ali Python jeziku. Odloˇcili smo se za Python, saj so vsi ostali modeli, razen modeli ogrodja Weka, v tej diplomski nalogi napisani v Pythonu. Nevronska mreˇza je sestavljena iz dveh plasti z desetimi vozliˇsˇci in izhodno plastjo s tremi vozliˇsˇci.

Model je 201-krat (ˇstevilo iteracij) nauˇcen na podatkovni mnoˇzici, eval- vacija s testno mnoˇzico pa je podala rezultat, ki je 96,67 %.

Regresija

Grajenje regresijskega modela v ogrodju MXNet se malce razlikuje od graje- nja modela v ostalih ogrodjih. Model je prav tako zgrajen na treh atributih.

Povpreˇcna absolutna napaka modela je bila 0.3413.

(46)

4.1.6 CNTK

Klasifikacija

Ogrodje CNTK je precej drugaˇcno od zgoraj navedenih ogrodij, zato je bila izdelava modelov teˇzja. Klasfikacijski model je zgrajen na enak naˇcni kot vsi drugi, torej nevronska mreˇza z dvema plastema po deset vozliˇsˇc in izhodno plastjo s tremi vozliˇsˇci.

Model je 201-krat (ˇstevilo iteracij) nauˇcen na podatkovni mnoˇzici, njegova toˇcnost pa je 99 %.

Regresija

Prav tako kot pri klasifikaciji je bila izdelava regresijskega modela z ogrodjem CNTK malce bolj zahtevna od ostalih ogrodij. Model je zgrajen na treh atributih.

Povpreˇcna absolutna napaka modela pa je bila 0.221.

4.1.7 Chainer

Klasifikacija

Tako kot pri vseh dosedanjih ogrodjih je pri ogrodju Chainer nevronska mreˇza klasifikacijskega modela zgrajena iz dveh plasti z desetimi vozliˇsˇci in eno izhodno plastjo s tremi vozliˇsˇci.

Model je 201-krat (ˇstevilo iteracij) nauˇcen na podatkovni mnoˇzici, eval- vacija s testno mnoˇzico pa je bila 90 % natanˇcna.

Regresija

Kot pri vseh zgoraj opisanih ogrodjih je regresijski model pri ogrodju Chainer zgrajen na treh atributih.

Povpreˇcna absolutna napaka modela je bila 0.268.

(47)

Diplomska naloga 31

4.2 Serializacija in prenos

Potem ko smo zgradili modele na vseh izbranih ogrodjih, je bil ˇcas, da mo- dele serializiramo in jih prenesemo na druge naprave. Za serializacijo smo uporabili ONNX-orodje in orodja za serializacijo, ki so specifiˇcna za ogrodje.

4.2.1 Serializacija z orodjem ONNX

Orodje ONNX podpira skoraj vsa ogrodja, ki smo jih uporabili. Vendar pa je orodje precej novo in ˇse ni tako dobro podprto pri vseh ogrodjih in tudi napravah ARM.

ONNX nima podpore za ogrodje WEKA, tako da pri tem ogrodju modela nismo mogli serializirati.

Ogrodji MXNet in Chainer imata precej slabo podporo za serializacijo s pomoˇcjo ONNX. Pri obeh ogrodjih ˇze ustvarjenih modelov nismo mogli pretvoriti v modele ONNX.

Pri ogrodju MXNet je sama metoda za pretvarjanje modela MXNet v model ONNX vrnila neznano napako, za katero smo pozneje ugotovili, da je hroˇsˇc v metodi. Hroˇsˇc zaenkrat ˇse ni bil odpravljen.

Pri ogrodju Chainer pa metoda pretvarjanja ne podpira te vrste modela, ki smo ga zgradili (nevronske mreˇze).

Pretvarjanje modelov v ONNX je bilo uspeˇsno pri ˇstirih ogrodjih, in sicer pri TensorFlow, Scikit-learn, PyTorch in CNTK. Pretvorili smo oba modela:

klasifikacijskega in regresijskega. Modele v formatu ONNX lahko sedaj prene- semo na druge naprave, kjer jih lahko potem pretvorimo v poljubno podprto ogrodje (Caffe2, TensorFlow, ONNX Runtime, CNTK ...).

ONNX-modele smo najprej preizkusili na osebnem raˇcunalniku, da smo preverili, ˇce je toˇcnost modela enaka ali slabˇsa od originalnega modela v ogrodju.

(48)

4.2.2 ONNX Runtime na Raspberrry Pi

ONNX Runtime je orodje, ki s pomoˇcjo APIja omogoˇca pospeˇsevanje sklepa- nja na zgrajenih modelih. Orodje naj bi delovalo na Raspberry Pi. Vendar pa nam namestitev orodja na Raspberry Pi 4 ni uspela.

Prva teˇzava je nastala pri namestitvi ONNX Runtime na Raspberry Pi.

Za namestitev ni avtomatskih ukazov, zato je treba namestitev opraviti roˇcno. Potrebujemo orodje Docker na osebnem raˇcunalniku in s pomoˇcjo Dockerja ustvarimo namestitveno datoteko. Poskusili smo z razliˇcnimi verzi- jami namestitve, tudi s pomoˇcjo ˇze pripravljene namestitve iz GitHuba, ven- dar nam je namestitev vedno vrnila napako. Poslediˇcno poganjanje ONNX- modelov na Raspberry Pi ni mogoˇce, saj nobeno drugo orodje tega ne pod- pira.

4.2.3 Serializacija z orodji, specifiˇ cnimi za ogrodje

Poleg serializacije z ogrodjem ONNX smo ˇzeleli uporabiti tudi orodja za serializacijo, specifiˇcna za ogrodje. Pri tem smo uporabili orodja iz ogrodij TensorFlow, Scikit-learn in PyTorch.

TensorFlow

TensorFlow za serializacijo uporablja lasten binarni format. S pomoˇcjo tega formata model shranimo in ga potem lahko poˇzenemo na drugi napravi. Seri- alizacija modelov je bila na osebnem raˇcunalniku uspeˇsna, deserializacija na napravi ARM prav tako. Za poganjanje modelov na Raspberry Pi smo upo- rabili orodje TensorFlow Lite, ki je del ogrodja TensorFlow. Slednje je precej omejeno, saj za uporabo na Raspberry Pi ni veliko podpore. Poslediˇcno smo za napovedovanje lahko uporabili le en sam primer in ne vseh trideset pri- merov testne mnoˇzice. Torej testirali smo lahko le z enim primerom in ne tridesetimi primeri naenkrat.

(49)

Diplomska naloga 33 Scikit-learn

Pri ogrodju Scikit-learn smo se odloˇcili za serializacijo z orodjem Joblib, saj nam je bilo delo z njim bolj blizu. Tako serializacija in deserializacija modelov je bila uspeˇsna. Ogrodje Scikit-learn v celoti deluje na Raspberry Pi, zato pri uporabi le tega nismo bili omejeni. Napovedali smo lahko s pomoˇcjo vseh primerov testne mnoˇzice.

PyTorch

Pri ogrodju PyTorch pa smo ponovno naleteli na teˇzavo, da ogrodje ni do- volj podprto za Raspberry Pi. Namestitev ogrodja PyTorch za poganjanje modelov na Raspberry Pi nam ni uspela, zato modela nismo serializirali s pomoˇcjo TorchScripta.

4.3 Grajenje ostalih modelov

Ko smo zgradili modele s pomoˇcjo mnoˇzice Iris, jih serializirali in pognali na ARM-napravi, smo ugotovili, da je najboljˇse orodje Scikit-learn. Ogrodje podpira poganjanje modelov v formatu ONNX in deluje na Raspberry Pi.

Zato smo se odloˇcili, da bomo nadaljnje modele gradili s pomoˇcjo Scikit- learna.

4.3.1 Klasifikacija

Za grajenje klasifikacijskih modelov smo uporabili podatkovno mnoˇzico Mu- shroom. Mnoˇzica ima 8124 primerov, dva razreda, ki delita gobe na uˇzitne in strupene. Vsak primer gobe ima 22 atributov.

Mnoˇzica ima tudi nekaj primerov, v kateri eden od atributov nima vre- dnosti. Te primere smo pri grajenju modelov odstranili, zato smo imeli na koncu 5644 primerov.

Podatkovno mnoˇzico smo razdelili na uˇcno in testno mnoˇzico, pri ˇcemer je uˇcna mnoˇzica vsebovala 4515 primerov, testna pa 1129.

(50)

Nevronska mreˇza

Zgradili smo nevronsko mreˇzo, ki ima eno skrito plast, ki ima 4 vozliˇsˇca. Upo- rablja aktivacijsko funkcijo softmax in optimizacijsko metodo Adam. Model smo 300-krat (ˇstevilo iteracij) nauˇcili na uˇcni mnoˇzici s pomoˇcjo vzvratnega razˇsirjanja napake.

Logistiˇcna regresija

Zgradili smo model logistiˇcne regresije, kjer smo napovedovali, ali je goba uˇzitna ali strupena, s pomoˇcjo vseh 22 atributov.

Nakljuˇcni gozd

Pri tipu modela nakljuˇcni gozd smo uporabili globino 3. stopnje. Napovedo- vali smo, ali je goba uˇzitna ali strupena, s pomoˇcjo vseh 22 atributov.

Metoda podpornih vektorjev (SVM)

Pri metodi podpornih vektorjev (SVM) smo prav tako napovedovali uˇzitnost gob. Za napovedovanje smo uporabili vseh 22 atributov.

(51)

Poglavje 5 Rezultati

5.1 Modeli na osebnem raˇ cunalniku

Na splodnjih dveh tabelah lahko vidimo primerjavo klasifikacijskih modelov za razliˇcna ogrodja in primerjavo regresijskih modelov za razliˇcna ogrodja, zgrajenih na osebnem raˇcunalniku, na podatkovni mnoˇzici Iris.

Toˇcnost modela TensorFlow 93,33 %

Weka 96,67 %

PyTorch 96,17 % Scikit-learn 94,00 %

MXNet 96,67 %

CNTK 99,00 %

Chainer 90,00 %

Tabela 5.1: Toˇcnost klasifikacijskih modelov, zgrajenih na osebnem raˇcunalniku (Podatkovna mnoˇzica: Iris)

Toˇcnost zgrajenega klasifikacijskega modela smo merili s pomoˇcjo testne mnoˇzice, ki je vsebovala trideset od sto petdesetih primerov. Vidimo, da so vsi zgrajeni modeli precej dobri, malce mogoˇce izstopa model ogrodja

35

(52)

Chainer, ki ima malce slabˇso toˇcnost kot modeli iz ostalih ogrodij.

Povpreˇ cna absolutna napaka

TensorFlow 0.2512

Weka 0.2201

PyTorch 0.2821

Scikit-learn 0.2341

MXNet 0.3413

CNTK 0.221

Chainer 0.268

Tabela 5.2: Povpreˇcna absolutna napaka regresijskih modelov, zgrajenih na osebnem raˇcunalniku (Podatkovna mnoˇzica: Iris)

Pri regresijskih modelih smo merili povpreˇcno absolutno napako modela.

Iz tabele lahko razberemo, da imajo modeli podobno povpreˇcno absolutno napako. Pri vseh se ta giblje med 0.2 in 0.35. Vidimo lahko, da je najslabˇsi model zgrajen v ogrodju MXNet, najboljˇsi pa v ogrodju Weka.

5.2 ONNX-modeli

V tem razdelku bomo naredili pregled rezultatov modelov, katere smo shranili v ONNX-formatu, in jih primerjali z originalnimi modeli, ki smo jih zgradili na raˇcunalniku. Predvidevamo, da se rezultati ne bodo bistveno razlikovali oziroma bodo enaki.

Iz tabele 5.3 lahko razberemo, da je toˇcnost originalnih modelov in mo- delov v ONNX-formatu pri vseh ogrodjih enaka.

Iz tabele 5.4 pa lahko razberemo, da se povpreˇcna absolutna napaka ne razlikuje toliko. Vidimo pa, da se pri ogrodju TensorFlow napaka razlikuje za 0.01 %, kar je precej opazna razlika. Zakaj pride do take razlike med napakama, ni popolnoma jasno. Lahko gre za numeriˇcno napako, mogoˇce pa

(53)

Diplomska naloga 37 je pretvorba modela v ONNX-format model poslabˇsala. Napaka se razlikuje tudi pri Scikit-learn, vendar je ta razlika vidna ˇsele pri osmi decimalki, tako da lahko sklepamo, da gre za numeriˇcno napako.

Original ONNX

TensorFlow 93,33 % 93,33 % PyTorch 96,17 % 96,17 % Scikit-learn 94,00 % 94,00 % CNTK 99,00 % 99,00 %

Tabela 5.3: Primerjava kalsifikacijske toˇcnosti originalnih modelov in ONNX- modelov (Podatkovna mnoˇzica: Iris)

Original ONNX

TensorFlow 0.25123817443847657 0.2616283588409424

PyTorch 0.2821018 0.2821018

Scikit-learn 0.23412948957780824 0.23412945429484058

CNTK 0.221 8

Tabela 5.4: Primerjava povpreˇcne absolutne napake originalnih modelov in ONNX-modelov (Podatkovna mnoˇzica: Iris)

V tabeli 5.4 lahko opazimo, da ima CNTK-ogrodje pri ONNX-modelu kriˇzec. Povpreˇcne absolutne napake pri ONNX-modelu nismo mogli izme- riti, saj je priˇslo do napake. Model smo lahko shranili, vendar pa se je pri nalaganju modela nazaj v CNTK model zaradi hroˇsˇca spremenil. Iz mo- dela nismo veˇc dobili parametrov za velikost matrike vnosnih podatkov, brez teh funkcija za linearno regresijo ni delovala. Poslediˇcno rezultat ne bi bil natanˇcen, saj bi morali vhodne podatke spremeniti.

(54)

5.3 Weka na Raspberry Pi

Ogrodje Weka je mogoˇce namestiti na Raspberry Pi. Deluje na enak naˇcin, kot na osebnem raˇcunalniku, preko uporabniˇskega vmesnika aplikacije. Mo- dela za klasifikacijo in regresijo podatkovne mnoˇzice Iris smo pognali na obeh platformah, rezultate pa lahko vidimo v tabelah 5.5 in 5.6.

Toˇ cnost modela Osebni raˇ cunalnik 96,67 %

Raspberry Pi 96,67 %

Tabela 5.5: Primerjava klasifikacijske toˇcnosti Weka modela (Podatkovna mnoˇzica: Iris)

Povpreˇcna absolutna napaka Osebni raˇcunalnik 0.2201

Raspberry Pi 0.2201

Tabela 5.6: Primerjava povpreˇcne absolutne napake Weka modela (Podat- kovna mnoˇzica: Iris)

Kot je bilo priˇcakovano, se rezultati ne razlikujejo med seboj, saj upora- bljamo isto aplikacijo za izvajanje modelov.

5.4 Scikit-learn modeli

V tem poglavju sledi pregled rezultatov modelov, zgrajenih s pomoˇcjo ogrodja Scikit-learn. Primerjali bomo modele, zgrajene na osebnem raˇcunalniku, modele v formatu ONNX in modele, ki smo jih pognali na Raspberry Pi.

Poleg tega bomo primerjali ˇcas, ki ga platforma porabi za napovedovanje rezultata za posamezni model.

(55)

Diplomska naloga 39

5.4.1 Podatkovna mnoˇ zica Iris

Najprej bomo primerjali modele podatkovne mnoˇzice Iris. Primerjali bomo model, zgrajen na osebnem raˇcunalniku, in model, ki smo ga s pomoˇcjo se- rializacije pognali na Raspberry Pi. Modele smo evalvirali s pomoˇcjo testne mnoˇzice, ki je vsebovala trideset primerov. ˇCas izvajanja je izmerjen v mili- sekundah. V tabeli 5.7 lahko vidimo primerjavo klasifikacijske toˇcnosti obeh modelov in ˇcas, ki ga je platforma porabila za napovedovanje rezultatov.

Kot priˇcakovano je napovedovanje na osebnem raˇcunalniku hitrejˇse kot na Raspberry Pi. Klasifikacijska toˇcnost pa je na obeh platformah enaka.

Kot zanimivost lahko omenimo, da se je model na osebnem raˇcunalniku izvedel pribliˇzno 2400-krat hitreje kot model na Raspberry Pi.

Toˇcnost modela Cas (ms)ˇ Osebni raˇcunalnik 93 % 0.0004

Raspberry Pi 93 % 0.965

Tabela 5.7: Primerjava klasifikacijske toˇcnosti in ˇcasa Scikit-learn modelov (Podatkovna mnoˇzica: Iris)

Tabela 5.8 prikazuje primerjavo povpreˇcne absolutne napake in ˇcas, ki ga je platforma porabila za napovedovanje rezultatov. Podobno kot pri klasi- fikaciji je napovedovanje rezultatov na osebnem raˇcunalniku hitrejˇse kot na Raspberry Pi. Opazimo pa lahko tudi, da je napaka modela na Raspberry Pi veˇcja kot na osebnem raˇcunalniku. Napaka se razlikuje za 0.0198, kar je ˇze precejˇsna razlika pri uspeˇsnosti modela.

Povpreˇcna absolutna napaka Cas (ms)ˇ

Osebni raˇcunalnik 0.2341 0.001

Raspberry Pi 0.2539 0.512

Tabela 5.8: Primerjava povpreˇcne absolutne napake in ˇcasa Scikit-learn mo- delov (Podatkovna mnoˇzica: Iris)

(56)

5.4.2 Podatkovna mnoˇ zica Mushroom

Podobno kot pri podatkovni mnoˇzici Iris bomo pri podatkovni mnoˇzici Mu- shroom primerjali toˇcnost modela in ˇcas, ki je bil potreben za napovedovanje rezultatov. Modele smo evalvirali s pomoˇcjo testne mnoˇzice, ki je vsebovala 1129 primerov.

Primerjali bomo model, zgrajen na osebnem raˇcunalniku, in model, ki smo ga s pomoˇcjo serializacije pognali na Raspberry Pi, poleg tega pa tudi model v ONNX-formatu.

Toˇcnost modela

Nevronska mreˇza 98 %

Logistiˇcna regresija 98,05 % Nakljuˇcni gozd 98,32 % Metoda podpornih vektorjev 100 %

Tabela 5.9: Klasifikacijska toˇcnost modelov, zgrajenih v Scikit-learn na oseb- nem raˇcunalniku (Podatkovna mnoˇzica: Mushroom)

V tabeli 5.9 lahko vidimo toˇcnost posameznega modela, zgrajenega na osebnem raˇcunalniku.

Original ONNX Raspberry Pi

Nevronska mreˇza 98 % 98 % 98 %

Logistiˇcna regresija 98,05 % 98,05 % 98,05 % Nakljuˇcni gozd 98,32 % 98,32 % 8 Metoda podpornih vektorjev 100 % 100 % 100 %

Tabela 5.10: Primerjava klasifikacijske toˇcnosti Scikit-learn modelov (Podat- kovna mnoˇzica: Mushroom)

V tabeli 5.10 lahko vidimo primerjavo klasifikacijske toˇcnosti originalnih modelov iz osebnega raˇcunalnika, ONNX-modelov in modelov, ki smo jih pognali na Raspberry Pi.

(57)

Diplomska naloga 41 Iz tabele lahko razberemo, da je toˇcnost enaka pri vseh modelih. Pri mo- delu nakljuˇcni gozd na Raspberry Pi opazimo kriˇzec. Toˇcnosti modela nismo morali izmeriti, saj smo pri branju serializiranega modela naleteli na hroˇsˇca v kodi. Problem nastane pri branju Joblib datoteke oziroma deserializaciji, napaka pa naj bi bila pri prenosu iz 64-bitnega sistema na 32-bitni sistem [5].

Pri poganjanju modelov smo izmerili tudi ˇcas. ˇCas izvajanja je izmerjen v milisekundah. Merili smo, koliko ˇcasa potrebuje model oziroma platforma za napovedovanje rezultatov. V tabeli 5.11 lahko vidimo primerjavo izmerjenega ˇcasa originalnega modela in modela ONNX.

Original ˇcas (ms) ONNX ˇcas (ms)

Nevronska mreˇza 0.000992 0.008

Logistiˇcna regresija 0.001 0.001

Nakljuˇcni gozd 0.04 0.0034

Metoda podpornih vektorjev 0.048 0.016

Tabela 5.11: Primerjava ˇcasa originalnega modela in ONNX-modela Scikit- learn (Podatkovna mnoˇzica: Mushroom)

Kot zanimivost lahko opazimo, da se nekateri ONNX-modeli poˇzenejo hitreje kot originalni modeli. Hitrejˇsa sta modela nakljuˇcni gozd in me- toda podpornih vektorjev. Orodje ONNX naj bi pospeˇsilo izvajanje modelov oziroma napovedovanje, kar v zgornji tabeli velja za dva modela, pri enem modelu je hitrost enaka, en pa je poˇcasnejˇsi. Metoda podpornih vektorjev ONNX je recimo 3-krat hitrejˇsa, kot originalni model. ONNX-model na- kljuˇcni gozd pa je kar 11-krat hitrejˇsi kot originalni model.

Primerjava izmerjenega ˇcasa originalnega modela in modela, izvedenega na Raspberry Pi, je prikazana v tabeli 5.12.

Kot priˇcakovano, so napovedi na Raspberry Pi poˇcasnejˇse kot na osebnem raˇcunalniku. Veliko razliko lahko opazimo pri modelu metoda podpornih vektorjev, kjer je napovedovanje na raˇcunalniku trajalo 0.04 milisekunde, na Raspberry Pi pa kar 84 milisekund.

(58)

Original ˇcas (ms) Raspberry Pi ˇcas (ms)

Nevronska mreˇza 0.000992 6.337

Logistiˇcna regresija 0.001 0.744

Nakljuˇcni gozd 0.04 8

Metoda podpornih vektorjev 0.048 84.23

Tabela 5.12: Primerjava ˇcasa originalnega modela in modela na Raspberry Pi Scikit-learn (Podatkovna mnoˇzica: Mushroom)

V tabeli pri modelu nakljuˇcni gozd v stolpcu za Raspberry Pi opazimo kriˇzec. ˇCasa nismo uspeli izmeriti iz istega razloga, kot nismo mogli preveriti toˇcnosti modela. Zaradi hroˇsˇca v kodi.

Primerjava vseh ˇcasov med seboj pa je prikazana v tabeli 5.13.

Original ˇcas (ms)

ONNX ˇcas (ms)

Raspberry Pi ˇcas (ms) Nevronska mreˇza 0.000992 0.008 6.337 Logistiˇcna regresija 0.001 0.001 0.744

Nakljuˇcni gozd 0.04 0.0034 8

Metoda podpornih vektorjev 0.048 0.016 84.23

Tabela 5.13: Primerjava ˇcasa originalnega modela, ONNX-modela in modela na Raspberry Pi Scikit-learn (Podatkovna mnoˇzica: Mushroom)

Vidimo, da se kot originalen model na osebnem raˇcunalniku najhitreje izvede nevronska mreˇza. Kot ONNX-model je najhitrejˇsi model logistiˇcna regresija, isto velja za model na Raspberry Pi. Najpoˇcasnejˇsi model pa je pri vseh treh model metoda podpornih vektorjev. Pri tem modelu je razlika med ˇcasom ONNX-modela in modela na Raspberry Pi 5264-kratna, torej ONNX-model se izvede pribliˇzno 5260-krat hitreje kot model na Raspberry Pi.

Najveˇcja razlika v ˇcasu pa je pri modelu nevronska mreˇza. Originalen model na osebnem raˇcunalniku je 7041-krat hitrejˇsi kot model na Raspberry Pi.

(59)

Diplomska naloga 43 Razlike v ˇcasu med osebnim raˇcunalnikom in Raspberry Pi so precej ve- like. Zanimalo nas je, zakaj je priˇslo do tako velike razlike med platformama.

Modele smo poganjali na precej novem osebnem raˇcunalniku, ki ima 32 GB pomnilnika in precej dober AMD-procesor. Naredili smo primerjalni preizkus raˇcunske hitrosti, kateri izmeri stopnjo izvajanja raˇcunalnikove enote s pla- vajoˇco vejico na procesorju osebnega raˇcunalnika in procesorju Raspberry Pi.

Hitrost se doloˇca z zagonom raˇcunalniˇskega programa, ki reˇsuje gost sistem linearnih enaˇcb. Razmerje med procesorjema je bilo 1:3 v korist osebnega raˇcunalnika.

Modele smo poganjali v razliˇcnih programih. Na osebnem raˇcunalniku je bil to program Visual Studio Code, na Raspberry Pi terminal. Glede na to, da so se modeli na obeh platformah poganjali na centralni procesni enoti, razlika v ˇcasu ne bi smela biti tako velika.

Izkljuˇcili smo moˇznost, da bi deserializiran objekt deloval poˇcasneje, saj smo modele deserializirali tudi na osebnem raˇcunalniku, ˇcas izvajanja pa se pri tem ni spremenil.

Razlog za poˇcasnejˇse delovanje na Raspberry Pi bi lahko bil to, da je samo ogrodje na napravi slabˇse optimizirano in tako za izvajanje samega modela potrebuje toliko veˇc ˇcasa.

(60)
(61)

Poglavje 6

Sklepne ugotovitve

V diplomskem delu smo predstavili razliˇcna ogrodja strojnega uˇcenja in orodja za serializacijo modelov strojnega uˇcenja. Iskali smo ogrodje in orodje za serializacijo, s katerima je prenos in izvajanje modelov najbolj preprosto in uˇcinkovito.

Izmed izbranih orodij za serializacijo so se za najbolj uporabna izkazala orodja, specifiˇcna za ogrodje. Prenos modela na Raspberry Pi nam je uspel le s pomoˇcjo teh, in sicer pri ogrodjih TensorFlow in Scikit-learn.

Na Raspberry Pi smo lahko poganjali tudi modele ogrodja Weka, saj smo lahko na napravo namestili ogrodje, ki preko uporabniˇskega vmesnika aplikacije deluje tako na osebnem raˇcunalniku kot na Raspberry Pi.

Ugotovili smo, da orodje ONNX izvajanje modelov res pospeˇsi, vendar ima pomanjkljivosti. Ko model enkrat pretvorimo v ONNX-format, ga ne moremo pretvoriti v drug format oziroma deserializirati. Tako lahko modele ONNX uporabljamo samo v ogrodjih, ki imajo zanje podporo. Prav tako nam na Raspberry Pi ni uspela namestitev orodja ONNX Runtime, s pomoˇcjo katerega bi lahko ONNX-modele poganjali na napravi.

Med izbranimi ogrodji se je za najbolj uˇcinkovito izkazalo ogrodje Scikit- learn. Modele smo lahko pretvorili in poganjali v ONNX-formatu, prav tako pa smo jih lahko s pomoˇcjo orodja Joblib serializirali in poganjali na Raspberry Pi. Uspeˇsnost modelov se ni spremenila pri pretvarjanju in

45

Reference

POVEZANI DOKUMENTI

• Vsi izločki bolnikov so kužni, kar je treba upoštevati pri čiščenju in odstranjevanju odpadkov. • Vsi zaposleni z bolezenskimi znaki morajo biti izločeni iz delovnega

MARCAIN HEAVY, 0,5 % raztopina za injiciranje, LENIS d.o.o., nujna neregistrirana zdravila, škatla s petimi ampulami MARCAINE 0,5% SPINAL, SALUS, Ljubljana, d.d., interventno

Uporabnik lahko nato do funkcionalnosti sistema dostopa preko spletnega vmesnika.. Arhitektura je predstavljena na

To virtualizacijo lahko prav tako kot virtualizacijo strojne opreme izva- jamo doma na osebnem raˇ cunalniku.. ˇ Ce pa ˇ zelimo, lahko navidezni raˇ cunalnik najamemo pri enem

Na mikro raˇ cunalnik RPI smo namestili odprtokodno platformo Home Assi- stant, ki nam omogoˇ ca spremljanje, upravljanje in avtomatizacijo pametnih naprav v naˇsem stanovanju.

Telefonski uporabniki lahko s klicem na SIP naslov aplikacije na streˇ zniku pustijo zvoˇ cno sporoˇ cilo, ki ga lahko pozneje predvajajo preko splet- nega vmesnika.. Spletni vmesnik

Izbrali smo ogrodje Aplication development framework (ADF), ki temelji na programskem jeziku Java in tehnologiji JavaServer Faces (JSF) in z uporabo komponent ogrodja ADF

Uporabniku ni potrebno zapu- stiti aplikacije ali prekiniti z vnosom podatkov, saj se zajem slike dogaja v loˇ cenem procesu, kar omogoˇ ca hkraten vnos preko uporabniˇskega vmesnika