Ιδρυματικό Αποθετήριο
Πολυτεχνείο Κρήτης
EN  |  EL

Αναζήτηση

Πλοήγηση

Ο Χώρος μου

Ένα πλαίσιο συνελικτικού νευρωνικού δικτύου επιταχυνόμενο από μια συστοιχία επιτόπια προγραμματιζόμενων πυλών σε συνθέσιμη C

Chatzidaki Eleftheria

Απλή Εγγραφή


URIhttp://purl.tuc.gr/dl/dias/4C34ED31-D06E-45FE-84C9-75BFED531D44-
Αναγνωριστικόhttps://doi.org/10.26233/heallink.tuc.83856-
Γλώσσαen-
Μέγεθος6,4 megabytesen
ΤίτλοςA CNN framework accelerated by an FPGA in synthesized Cen
ΤίτλοςΈνα πλαίσιο συνελικτικού νευρωνικού δικτύου επιταχυνόμενο από μια συστοιχία επιτόπια προγραμματιζόμενων πυλών σε συνθέσιμη Cel
ΔημιουργόςChatzidaki Eleftheriaen
ΔημιουργόςΧατζηδακη Ελευθεριαel
Συντελεστής [Επιβλέπων Καθηγητής]Dollas Apostolosen
Συντελεστής [Επιβλέπων Καθηγητής]Δολλας Αποστολοςel
Συντελεστής [Μέλος Εξεταστικής Επιτροπής]Papaefstathiou Ioannisen
Συντελεστής [Μέλος Εξεταστικής Επιτροπής]Παπαευσταθιου Ιωαννηςel
Συντελεστής [Μέλος Εξεταστικής Επιτροπής]Zervakis Michailen
Συντελεστής [Μέλος Εξεταστικής Επιτροπής]Ζερβακης Μιχαηλel
ΕκδότηςΠολυτεχνείο Κρήτηςel
ΕκδότηςTechnical University of Creteen
Ακαδημαϊκή ΜονάδαTechnical University of Crete::School of Electrical and Computer Engineeringen
Ακαδημαϊκή ΜονάδαΠολυτεχνείο Κρήτης::Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστώνel
ΠεριγραφήΠροπτυχιακή Διατριβή που υποβλήθηκε στη σχολή ΗΜΜΥ του Πολ. Κρήτης για την πλήρωση προϋποθέσεων λήψης του Προπτυχιακού Διπλώματος Ειδίκευσηςel
ΠερίληψηThese days, Convolutional Neural Networks are popular for image classification and recognition. We prefer to utilize them because they achieve high accuracy by exploiting the inherent properties of images. A major disadvantage of CNN is that they perform many and complex calculations that cost a lot of time, energy and resources. The best solution that we can suggest is to take advantage of the properties of Field Programmable Gate Arrays. FPGAs are specialized in the acceleration of calculations and they consume less energy than Graphics Processing Units or Central Processing Units. We introduce a framework written in C++ that can adopt FPGA kernels to accelerate calculations as matrix multiplications. We connected an available matrix multiplication with addition implementation to the framework and we tested it on a Trenz Platform. Apart from that, we implemented a fast and cache-aware framework applying OpenMP, GCC option flags, OpenMP environment variables and features from C++17. Our CNN framework is tested on a LeNet-5 architecture using the MNIST dataset containing L1, L2 Regularizations, Vanilla, Momentum, Momentum with Nesterov Updates, He-et-al weight initialization, Fisher-Yates shuffle, Stochastic Gradient Descent techniques that are all implemented from scratch. Furthermore, we implemented 3 ways of load MNIST dataset, as well as, naive, cache blocking, OpenMP and Hybrid cache blocking with OpenMP in matrix multiplication, transpose and copy algorithms, that we tested and investigated their behavior among the mini-batch sizes and the number of used threads. Besides all the aforementioned that was made from scratch, we used the Xilinx Vivado SDK to make a bare-metal C++ project with the appropriate cache size linker script and adjusted the matrix multiplication with addition code to our framework. Afterwards, we programmed the Trenz Platform that contains an ARM CPU and an FPGA accelerator. As a result, we achieved a 4.3x-8.5x better performance using an FPGA to accelerate matrix multiplication with addition than using a naive or a cache blocking single thread implementations and in specific unfair(lack of multi-threading on Trenz) cases, depending on the mini-batch size of multi-threading OpenMP(up to 1.27x) or Hybrid algorithms(up to 2.27x) on a CPU.en
ΠερίληψηΣήμερα, τα Συνελικτικά Νευρωνικά Δίκτυα(CNN) είναι γνωστά για την αναγνώριση και ταξινόμηση εικόνων. Προτιμούμε να τα χρησιμοποιούμε, λόγω το ότι επιτυγχάνουν υψηλή ακρίβεια, εκμεταλλευόμενα τις εγγενείς ιδιότητες των εικόνων. Ένα σημαντικό μειονέκτημα των Συνελικτικών Νευρωνικών Δικτύων είναι ότι εκτελούν πολλούς και πολύπλοκους υπολογισμούς, οι οποίοι απαιτούν χρόνο, ενεργειακή κατανάλωση και πόρους. Η καλύτερη λύση που μπορούμε να προτείνουμε είναι να εκμεταλλευτούμε τις ιδιότητες μιας συστοιχίας επιτόπια προγραμματιζόμενων πυλών(FPGA). Οι συστοιχίες επιτόπια προγραμματιζόμενων πυλών ειδικεύονται στην επιτάχυνση των πράξεων και καταναλώνουν λιγότερη ενέργεια από μια μονάδα επεξεργασίας γραφικών(GPU) ή μια κεντρική μονάδα επεξεργασίας(CPU). Προτείνουμε ένα πλαίσιο γραμμένο σε C++ στο οποίο μπορούν να προσαρμοστούν μονάδες συστοιχίας επιτόπια προγραμματιζόμενων πυλών και να επιταχύνει τους υπολογισμούς, όπως τους πολλαπλασιασμούς πινάκων. Συνδέσαμε μια διαθέσιμη μονάδα πολλαπλασιασμού πινάκων με πρόσθεση στο πλαίσιο και το δοκιμάσαμε σε μια πλατφόρμα Trenz. Εκτός από αυτό, υλοποιήσαμε ένα πλαίσιο γρήγορης απόδοσης με επίγνωση μνήμης, που χρησιμοποιεί OpenMP, GCC επιλογές παραμέτρων, επιλογές παραμέτρων περιβάλλοντος OpenMP και δυνατότητες από την έκδοση της C ++ 17. Το πλαίσιο Συνελικτικών Νευρωνικών Δικτύων μας δοκιμάστηκε σε αρχιτεκτονική LeNet-5 χρησιμοποιώντας το MNIST σύνολο δεδομένων και περιλαμβάνει L1, L2 κανονικοποιήσεις βαρών, Vanilla, Momentum, Momentum with Nesterov ενημερώσεις βαρών, He-et-al αρχικοποίηση βαρών, Fisher-Yates ανακατάταξη εικόνων, Στοχαστική Ελάττωση της Παραγώγου, τεχνικές οι οποίες είναι όλες υλοποιημένες από την αρχή. Επιπρόσθετα, υλοποιήθηκαν 3 τρόποι φόρτωσης του συνόλου δεδομένων MNIST στη μνήμη, καθώς επίσης αλγόριθμοι απλής υλοποίησης, ομαδοποίησης μνήμης, OpenMP, Υβριδική υλοποίηση ομαδοποίησης μνήμης με OpenMP για πολλαπλασιασμό πινάκων, μετάθεσης και αντιγραφής, οι οποίοι δοκιμάστηκαν και παρατηρήθηκαν οι συμπεριφορές τους χρησιμοποιώντας διάφορα μεγέθη μικρο-πακέτων και νημάτων προς χρήση. Εκτός από όλα τα παραπάνω που έγιναν από το μηδέν, χρησιμοποιήσαμε το εργαλείο Xilinx Vivado SDK για να δημιουργήσουμε ένα πρόγραμμα C χωρίς λειτουργικό, με τις κατάλληλες παραμετροποιήσεις στα συνδετικά αρχεία μνήμης και προσαρμόσαμε τον κώδικα του πολλαπλασιασμού πινάκων με πρόσθεση, στο πλαίσιο μας. Έπειτα, προγραμματίσαμε την πλατφόρμα Trenz που περιλαμβάνει μια ARM κεντρική μονάδα επεξεργασίας και ένα επιταχυντή συστοιχίας επιτόπια προγραμματιζόμενων πυλών. Σαν αποτέλεσμα, επιτύχαμε 4.3x-8.5x καλύτερη απόδοση χρησιμοποιώντας την υλοποίηση του πολλαπλασιασμού πινάκων με πρόσθεση, στη συστοιχία επιτόπια προγραμματιζόμενων πυλών απ’ ότι στον αλγόριθμο απλής υλοποίησης ή ομαδοποίησης μνήμης σε ένα νήμα, και σε κάποιες («άδικες» - λόγω του ότι δεν είχαμε χρήση πολλαπλών νημάτων στην πλατφόρμα Trenz) περιπτώσεις, ανάλογα με το μέγεθος των μικρο-πακέτων σε πολλαπλά νήματα, στην OMP(up to 1.27x) ή στον υβριδικό αλγόριθμο (up to 2.27x) στην κεντρική μονάδα επεξεργασίας.el
ΤύποςΔιπλωματική Εργασίαel
ΤύποςDiploma Worken
Άδεια Χρήσηςhttp://creativecommons.org/licenses/by-nc-sa/4.0/en
Ημερομηνία2019-11-18-
Ημερομηνία Δημοσίευσης2019-
Θεματική ΚατηγορίαFPGAen
Θεματική ΚατηγορίαCNNen
Θεματική ΚατηγορίαMachine learningen
Βιβλιογραφική ΑναφοράEleftheria Chatzidaki, "A CNN framework accelerated by an FPGA in synthesized C", Diploma Work, School of Electrical and Computer Engineering, Technical University of Crete, Chania, Greece, 2019en
Βιβλιογραφική ΑναφοράΕλευθερία Χατζηδάκη, "Ένα πλαίσιο συνελικτικού νευρωνικού δικτύου επιταχυνόμενο από μια συστοιχία επιτόπια προγραμματιζόμενων πυλών σε συνθέσιμη C", Διπλωματική Εργασία, Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών, Πολυτεχνείο Κρήτης, Χανιά, Ελλάς, 2019el

Διαθέσιμα αρχεία

Υπηρεσίες

Στατιστικά