Προσομοίωση Απλού Μοντέλου Markov σε Επιμέλεια: Γιώργος Πληγορόπουλος Σπύρος Δημόπουλος Μανώλης Βαρδάκης Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης Markov Models Μοντελοποίηση πιθανοτήτων στο χρόνο Φανερά και κρυφά Διακριτά και συνεχή Χαρακτηριστικά: Καταστάσεις Παρατηρήσεις Πίνακας Μεταβάσεων Πιθανότητες παρατηρήσεων σε κάθε κατάσταση Order μοντέλου HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης Περιγραφή Μοντέλου Κρυφό και διακριτό μοντέλο 11 καταστάσεις 4 παρατηρήσεις Πίνακας μεταβάσεων (11x11) a(i,j) Πίνακας παρατηρήσεων (11x4) b(j,k) Αρχικές πιθανότητες πi First order HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης Διάγραμμα Μεταβάσεων HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πίνακας Μεταβάσεων μεταξύ καταστάσεων Στην πρώτη γραμμή εμφανίζονται οι αρχικές πιθανότητες. Όπου δεν υπάρχει τιμή εννοείται η μηδενική πιθανότητα μετάβασης HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πίνακας πιθανοτήτων παρατηρήσεων HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης Αλγόριθμοι για HMM Training(Learning): ρυθμίζονται οι παράμετροι σύμφωνα με κάποια δεδομένα εκμάθησης Evaluation: υπολογίζεται η πιθανότητα χρονικών ακολουθιών παρατηρήσεων να έχουν προέλθει από την διεργασία που μοντελοποιεί το HMM Decoding: βρίσκεται η πιο πιθανή ακολουθία κρυφών καταστάσεων του μοντέλου που αντιστοιχεί με κάποια χρονοσειρά παρατηρήσεων. HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης Θεωρούμε το μοντέλου αυτού του project ήδη εκπαιδευμένο με πίνακες αυτούς που παρουσιάστηκαν παραπάνω Για το evaluation υπάρχουν δύο αλγόριθμοι Ο straightforward που υλοποιείται σύμφωνα με τον τύπο. O(cT T) HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης O forward αλγόριθμός τον οποίο χρησιμοποιούμε στη δική μας υλοποίηση έχει πολύ μικρότερη πολυπλοκότητα Ο(c2 T) και φαίνεται παρακάτω. HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Υλοποίηση Μοντέλου σε C Δομή κώδικα Συνάρτηση CreateInput( ) δημιουργεί τα vectors παρατηρήσεων εισόδου με τυχαίο τρόπο 20 στοιχείων Συνάρτηση LoopFunction( ) υλοποιεί το forward αλγόριθμό του μοντέλου Markov και επιστρέφει την πιθανότητα HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Θέματα εισόδου/εξόδου Προκύπτουν από τους υπολογισμούς πιθανότητες της τάξεως του 10-12 Πρόβλημα: Μικρές τιμές πιθανοτήτων Αναγκαία χρήση τύπου long long Long long αναπαράσταση 64bit => Ικανοποιεί τις απαιτήσεις HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Αναπαράσταση πιθανοτήτων Χρειαζόμαστε αντιστοίχηση του [0,1] σε [0,264-1] Ισχύει ο τύπος μετατροπής f(P(x))=P(x)*(264-1) Πράξεις Πρόσθεση, δεν χρειάζεται τροποποίηση Πολλαπλασιασμός 64bit x 64bit = 128bit. Κρατάμε τα 64 Most Significant bits HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης Testbench 300 διανύσματα εισόδου Κάθε διάνυσμα αποτελείται από 20 παρατηρήσεις Δημιουργούνται μέσω της rand με τυχαίο τρόπο HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Υπολογιστικά ακριβά κομμάτια Bρόγχος επανάληψης που εκτελείται n*c2*T Όπου n=300 Vectors εισόδου c=11 αριθμός καταστάσεων και Τ=20 μέγεθος Vector. Ο βρόγχος εκτελεί πολλαπλασιασμούς και προσθέσεις που συμφωνά με τα αποτελέσματα του profiling μονοπωλούν τους κύκλους εκτέλεσης του μοντέλου μας . 70% του χρόνου HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Βελτιστοποίηση Κώδικα Xρήση αναδιατασσομένης λογικής και loop unrolling Παράλληλη επεξεργασία προσθέσεων και πολλαπλασιασμών Εκμετάλλευση των 128bit των Wide Registers για εκτέλεση στο αναδιατασσόμενο Χρήση της Cache μνήμης του επεξεργαστή HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης Υλοποίηση Σε Stretch C Σε κάθε επανάληψη του βρόχου, επεξεργασία δεδομένων ανά128 bit Χρήση δυο συναρτήσεων για το αναδιατασσόμενο: Mult64(wra IN1,wra IN2, wra *OUT) Multsum(wra IN1,wra IN2, wra IN3, wra *OUT) HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης Αποτελέσματα Χρόνος / Κύκλοι εκτέλεσης Χωρίς αναδιατασσομένη λογική 102.292.543 κύκλους=> 340ms με 300MHz clock Χρόνος προσομοίωσης 5minute Σε επεξεργαστή AMD Athlon 2.6MHz Με αναδιατασσομένη λογική 33.295.495 κύκλους=> 90ms με 300MHz clock Χρόνος προσομοίωσης 3minute HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Επιπλέον Βελτιστοποίηση Ανάθεση στο αναδιατασσόμενο δύο επιπλέων βρόχων HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης
Πληγορόπουλος - Δημόπουλος - Βαρδάκης Ευχαριστούμε!!! HMM - Stretch Implementation Πληγορόπουλος - Δημόπουλος - Βαρδάκης