Successfully reported this slideshow.
Your SlideShare is downloading. ×

Angelos kaltsikis

More Related Content

More from ISSEL

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Angelos kaltsikis

  1. 1. Παράλληλη υλοποίηση του αλγορίθμου MCL με χρήση πόρων του Cloud Επιβλέπων καθηγητής : Περικλής Α ΜήτκαςΆγγελος Καλτσίκης 1 16/03/2017
  2. 2. Δομή παρουσίασης  Στόχος της διπλωματικής  Θεωρητικό υπόβαθρο  Μεθοδολογία και πολυπλοκότητα προγράμματος  Αποτελέσματα  Συμπεράσματα  Μελλοντικές επεκτάσεις 19 Διαφάνειες 2 16/03/2017
  3. 3. Στόχος της εργασίας Ανάπτυξη ενός προγράμματος που θα υλοποιεί τον Markov Cluster Algorithm (MCL) σε κατανεμημένο περιβάλλον.  Cloud vs. Grid?  Cloud επειδή επιτρέπει εύκολη προσαρμογή των υπολογιστικών πόρων  Το πρόγραμμα:  θα εκτελεί την ομαδοποίηση των στοιχείων σε οσοδήποτε μεγάλο όγκο δεδομένων  θα παρέχει αποτελέσματα σε κατανοητή και βολική μορφή για το χρήστη  θα έχει φιλική διεπαφή  θα μειώσει το συνολικό χρόνο εκτέλεσης της ομαδοποίησης μεγάλων σετ δεδομένων 3 16/03/2017
  4. 4. Θεωρητικό Υπόβαθρο  Τι είναι το clustering (ομαδοποίηση);  Clustering είναι η μέθοδος με την οποία τα αντικείμενα ενός συνόλου δεδομένων οργανώνονται σε ομάδες ανάλογα με το βαθμό ομοιότητας τους  Γιατί η ομαδοποίηση πρωτεϊνών είναι σημαντική για τη Βιοπληροφορική;  Πρωτεΐνες με άγνωστη λειτουργία συσχετίζονται με πρωτεΐνες με γνωστές ιδιότητες και λειτουργία  Γιατί πρέπει το πρόγραμμα να εκτελείται σε κατανεμημένο περιβάλλον;  Η Βιοπληροφορική είναι πλέον ένα Big Data Domain  Ρυθμοί αύξησης των δεδομένων >> Ρυθμοί αύξησης της υπολογιστικής ισχύος 4 16/03/2017
  5. 5. 5 Δυνατότητες MPI/OpenMP Apache Hadoop Apache Spark CUDA Ανεξάρτητο από ειδικό Hardware ✔ ✔ ✔ ✘ Υποστήριξη Big Data ✔ ✔ ✔ ✘ Αξιοποίηση Μεγέθους Σύγχρονων Σκληρών Δίσκων ✔ ✔ ✔ ✘ Αξιοποίηση Ταχύτητας Σύγχρονων Μνημών RAM ✔ ✘ ✔ ✔ Διανεμημένο Σύστημα Αποθήκευσης Αρχείων ✘ ✔ ✔ (HDFS) ✘ Απόδοση (το 1 είναι το πιο γρήγορο γρήγορο σύστημα) 2 4 3 1 Έλεγχός Υποδομής σε Διανεμημένα Συστήματα ✘ ✔ ✔ ✘ Αντιμετώπιση σφαλμάτων ✘ ✔ ✔ ✘ Distributed Computing Frameworks APACHE SPARK IT IS! 16/03/2017
  6. 6. Markov Cluster Algorithm (MCL) 6 16/03/2017
  7. 7. Regularized MCL 7 16/03/2017
  8. 8. Περιγραφή υλοποιήσεων  MCL  Η υλοποίηση του αλγορίθμου έγινε σε SCALA με τη χρήση του API και των δομών δεδομένων του Apache Spark  Εισήχθη μια απλοϊκή (naïve) συνάρτηση για την εκμετάλλευση του αραιού χαρακτήρα πινάκων στο διανεμημένο πολλαπλασιασμό πινάκων  R-MCL  Η υλοποίηση του αλγορίθμου έγινε σε Python με τη χρήση του API του Apache Spark  Για την υλοποίηση του αλγορίθμου χρησιμοποιήθηκαν οι εξής βιβλιοθήκες: 1. SciPy 2. Pandas 3. NetworkX 8 16/03/2017
  9. 9. 9 Χρησιμοποιώντας το Apache Spark στο μέγιστο • Αλλαγή σειράς πράξεων • Έλεγχος σύγκλισης μετά την 5η επανάληψη • Αλλαγή Blocksize και Partitionsize Στο κύριο επαναληπτικό κομμάτι του αυθεντικού MCL τα βήματα είναι: EXPAND → INFLATΙΟΝ → NORMALIZATION → PRUNING → NORMALIZATION Προτεινόμενο κύριο επαναληπτικό κομμάτι του τροποποιημένου MCL: EXPAND → PRUNING → INFLATION → NORMALIZATION 16/03/2017
  10. 10. 10 Πολυπλοκότητα • Ο MCL χωρίς τροποποιήσεις απαιτεί: 𝑶 𝑵 𝟑 • Υλοποίηση MCL σε SCALA για την παρούσα διπλωματική εργασία: 𝑶 𝒂 𝟐 ∗ 𝑵 𝟑 • Υλοποίηση R-MCL σε Python για την παρούσα διπλωματική εργασία: 𝑶 𝒕 ∗ 𝒔 ∗ 𝑵 𝟑 Όπου Πίνακας εισόδου διαστάσεων NxN Ν: αριθμός γραμμών πίνακα εισόδου a: πυκνότητα πίνακα που προκύπτει σε κάθε επανάληψη t: πυκνότητα πίνακα που προκύπτει σε κάθε επανάληψη s: πυκνότητα αρχικού στοχαστικού πίνακα Πυκνότητα Πί𝜈𝛼𝜅𝛼 = 𝛼𝜌𝜄𝜃𝜇ό𝜍 𝜇𝜂 𝜇𝜂𝛿𝜀𝜈𝜄𝜅ώ𝜈 𝜎𝜏𝜊𝜄𝜒𝜀ί𝜔𝜈 𝛼𝜌𝜄𝜃𝜇ό𝜍 𝛾𝜌𝛼𝜇𝜇ώ𝜈 ∗ 𝛼𝜌𝜄𝜃𝜇ό𝜍 𝜎𝜏𝜂𝜆ώ𝜈 (Η Πυκνότητα στην περίπτωση μας παίρνει τιμές <<1) 16/03/2017
  11. 11. 11 Περιγραφή Datasets και αποτελεσμάτων clustering του MCL με SCALA MCL 2ο Dataset: 1ο Dataset: 3ο Dataset:  Πειράματα με πραγματικά δεδομένα SampleData 3ο Dataset 2ο Dataset Ομάδες Αυθεντικού MCL (OG) 2,248 25,354 57,570 Ομάδες SCALA MCL (MOD) 2,394 27,959 65,703 SampleData: Αριθμός cluster που προκύπτουν σε διάφορα datasets από τον αυθεντικό MCL και τον MCL SCALA 16/03/2017 Normal File Size: 722.9KB NNZ: 16,466 Matrix Dimensions: 3,7752 Normal File Size: 8.3GB NNZ: 142,298,957 Matrix Dimensions: 1,908,1422 Normal File Size: 1.7GB NNZ: 29,425,239 Matrix Dimensions: 357,8742 Normal File Size: 948.8MB NNZ: 16,424,393 Matrix Dimensions: 186,1902
  12. 12. 12 Επαλήθευση αποτελεσμάτων clustering του MCL SCALA SampleData 3ο Dataset 2ο Dataset Αριθμός ίδιων cluster αναμεσά στις δυο υλοποιήσεις 2,120 23,380 51,477 Αριθμός στοιχείων που περιέχουν τα ίδια cluster 3,216 104,442 167,968 Αριθμός Singletons σε OG / MOD / κοινά σε OG & MOD 1,672/1,837/1,672 15,599/17,337/15,598 34,278/39,760/34,271 Αριθμός cluster που δεν είναι ίδια σε OG / MOD 128/274 1,974/4,579 6,093/14,226 Αριθμός cluster του OG που μπορούν να δημιουργηθούν με τον αριθμό singletons του MOD 48/165 99/1,739 233/5,489 Μέσος αριθμός singletons που συνδυάστηκαν και ο αριθμός των στοιχείων που απομένουν 3.4375/394 17.5656/80,009 23.5579/184,417 Αριθμός cluster του OG που μπορούν να αναδημιουργηθούν ακριβώς χρησιμοποιώντας cluster του MOD (OG/MOD) 36/54 547/1,330 1,494/4,003 Αριθμός των cluster του OG που δεν μπορούν να αναδημιουργηθούν ακριβώς με τα cluster του MOD και ο αριθμός των στοιχείων που περιέχουν αυτά. 44/55/249 1,328/1,510/66,090 4,366/4,734/155,397 Ποσοστό επιτυχίας σχεδιασμού των cluster του OG που δεν μπορούν να δημιουργηθούν ακριβώς με τα cluster που έχουν μείνει στο MOD 98.80% 84.90% 82.08% Συνολικό ποσοστό στοιχείων που βρίσκονται στα σωστά cluster 99.92% 94.64% 92.22% 16/03/2017
  13. 13. Αποτελέσματα 13 1289 843 653 713 825 0 500 1000 1500 seconds Hardware Configurations 3ο Dataset 2166 1328 1019 1107 1247 0 1000 2000 3000 seconds Hardware Configurations 2ο Dataset 12 CPU Cores - 2 Executors 24 CPU Cores - 4 Executors 30 CPU Cores - 5 Executors 60 CPU Cores - 10 Executors 32 CPU Cores - 4 Executors - Different Settings 12 CPU Cores - 2 Executors, 88357 30 CPU Cores - 5 Executors, 15372 60 CPU Cores - 10 Executors, 8141 0 20000 40000 60000 80000 100000 seconds Hardware Configurations 1ο Dataset Συνολικός χρόνος εκτέλεσης (seconds) του MCL SCALA για κάθε Hardware Configuration σε κάθε Dataset. 16/03/2017
  14. 14. 1 10 100 1000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 seconds Iterations 3ο Dataset 1 10 100 1000 10000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 seconds Iterations 2ο Dataset 12 CPU Cores - 2 Executors 24 CPU Cores - 4 Executors 30 CPU Cores - 5 Executors 60 CPU Cores - 10 Executors 1 10 100 1000 10000 100000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 20 21 25 26 27 28 29 30 31 32 33 seconds Iterations 1ο Dataset 14 Σύγκριση χρόνου εκτέλεσης κάθε επανάληψης του MCL SCALA για κάθε Hardware Configuration σε κάθε Dataset. Λογαριθμική κλίμακα με βάση το 10 16/03/2017
  15. 15. Σύγκριση μετρήσεων R-MCL Python, MCL SCALA και Original MCL 16/03/2017 15 Dataset R-MCL Python MCL SCALA Original MCL 2nd 48,121 65,703 57,570 3rd 22,314 27,959 25,354 Dataset R-MCL Python MCL SCALA 2nd 307.23 653.94 3rd 609.75 1,019.75  Αριθμός cluster που προκύπτουν από κάθε αλγόριθμο  Χρόνος εκτέλεσης σε seconds του R- MCL & MCL SCALA  O R-MCL Python δημιουργεί τα λιγότερα cluster  O R-MCL Python είναι πιο γρήγορος από τον MCL SCALA Σύμφωνα με θεωρία:  O R-MCL δημιουργεί ποιοτικότερα cluster
  16. 16. 16 HWC1 HWC2 HWC3 HWC4 HWC5 Matrix- 100000- 0.0001 0.107497 0.14015556 0.14676667 0.354884 0.1543694 Matrix- 100000- 0.001 0.608685 0.68491111 0.68464667 0.879939 0.6558222 Matrix- 1000000- 0.00001 1.206065 1.10570833 0.9896833 1.385358 1.7456638 3rd Dataset 0.255652 0.27865833 0.25902333 0.518509 0.2727083 2nd Dataset 0.42959 0.43897778 0.4042033 0.805035 0.4122027 1st Dataset 17.52414 - 6.09756 5.920316 -  Συνολικό κόστος ($) για την ομαδοποίηση κάθε Dataset γ κάθε Hardware Configuration Τα Hardware Configurations (HWC) αντιστοιχούν στους παρακάτω υπολογιστικούς πόρους: 1. 20 CPU πυρήνες – 48 GB RAM – 480 GB SSD 2. 36 CPU πυρήνες – 80 GB RAM – 800 GB SSD 3. 44 CPU πυρήνες – 96 GB RAM – 960 GB SSD 4. 84 CPU πυρήνες – 176 GB RAM – 1.76 TB SSD 5. 40 CPU πυρήνες – 80 GB RAM – 800 GB SSD HWC1 HWC2 HWC3 HWC4 HWC5 Cost ($) Per Hour 0.714 1.19 1.428 2.618 1.19  Κόστος ενοικίασης ($) κάθε Hardware Configuration ανά ώρα  Τα resources ενοικιάστηκαν από την 16/03/2017 Γιατί όχι ;  Κομβόι με μνήμη RAM ≤ 8GB  Πολύ αργοί υπολογιστικοί πυρήνες
  17. 17. Συμπεράσματα 17  Η προσφορά αυτής της διπλωματικής είναι η Distributed computing και horizontally scalable υλοποίηση του αλγορίθμου MCL  Το πρόγραμμα λειτουργεί για οσοδήποτε μεγάλο γράφο εισόδου  Ο χρόνος εκτέλεσης του προγράμματος επηρεάζεται από το μέγεθος του γράφου εισόδου και από τους διαθέσιμους υπολογιστικούς πόρους  Πιο φθηνή λύση ανά ώρα ≠ πιο συμφέρουσα λύση 16/03/2017
  18. 18. Μελλοντικές Επεκτάσεις 18 ¤ Εγγενής υποστήριξη διανεμημένου πολλαπλασιασμού πινάκων από το Apache Spark που να εκμεταλλεύεται τις ιδιότητες των αραιών πινάκων ► Καλύτερη εκμετάλλευση της τοπικότητας των δεδομένων στις συναρτήσεων Normalize, Pruning και Inflation ► Αυτόματη ρύθμιση των παραμέτρων εισόδου μέσω τεχνικής βελτιστοποίησης υπερπαραμέτρων με τη χρήση είτε γενετικών αλγορίθμων είτε Particle Swarm Optimization αλγορίθμων ► Αυτόματη ρύθμιση των διαθέσιμων υπολογιστικών πόρων ανάλογα με το εκάστοτε πρόβλημα ► Δυναμική αλλαγή των διαθέσιμων υπολογιστικών πόρων ανάλογα με το ποσό απαιτητικό είναι το σημείο του προγράμματος που εκτελείται  Ανανέωση της υλοποίησης για τη σωστή λειτουργία σε Spark 2.x 16/03/2017
  19. 19. Τέλος  Ευχαριστώ θερμά:  τον καθηγητή Περικλή Α. Μήτκα  τον μεταδιδακτορικό ερευνητή Φώτη Ε. Ψωμόπουλο  τον υποψήφιο διδάκτορα Αθανάσιο Κιντσάκη  τον Ohad Raviv και Joan André  τους καθηγητές Ανδρέα Συμεωνίδη και Αναστάσιο Ντελόπουλο  Εσάς για την προσοχή σας  Ερωτήσεις; 16/03/2017

Editor's Notes

  • Γεια σας και απο εμενα, ονομαζομαι Καλτσικης Αγγελος και θα σας παρουσιασω την διπλωματικη μου εργασια που πραγματευεται την παραλληλη υλοποιηση του αλγοριθμου MCL με χρηση πορων του Cloud.
  • Στην παρουσιαση που ακολουθει αρχικα θα δουμε τον στοχο της εργασιας. Στη συνεχεια θα παρουσιαστει ενα θεωρητικο υποβραθρο για την καλυτερη κατανοηση του προβληματος που καλουμαστε να αντιμετωπισουμε. Θα ακολουθησει η περιγραφη της μεθοδολογιας και της πολυπλοκοτητας του προγραμματος. Θα αναφερθουν τα αποτελεσματα της εργασιας, τα συμπερασματα και τελος οι μελλοντικες επεκτασεις.
  • Στοχος της εργασιας ηταν η αναπτυξη ενος προγραμματος που να υλοποιει τον Markov Cluster Algorithm σε κατανεμημενο περιβαλλον. Επιλεχθηκε η υλοποιηση του σε Cloud περιβαλλον και οχι σε Grid λογω της πολυ ευκολης προσαρμογης των υπολογιστικων πορων αναλογα με το εκαστοτε προβλημα. Το προγραμμα πρεπει να ειναι ικανο να δεχεται οσοδηποτε μεγαλη εισοδο και να παραγει τα αποτελεσματα της ομαδοποιησης σε κατανοητη και βολικη μορφη για το χρηστη. Επισης πρεπει να παρεχει μια φιλικη διεπαφη ετσι ωστε να διευκολυνει τη χρηση της υλοποιησης απο οσο το δυνατον περισσοτερα μελη της ερευνιτικης κοινοτητας. Με την υλοποιηση αυτη επιζητειται η μειωση του συνολικου χρονου εκτελεσης ομαδοποιησης σε μεγαλα σετ δεδομενων αλλα και η παροχη της δυνατοτητας ομαδοποιησης ογκου δεδομενων που ηταν απαγορευτικα μεγαλος για τις προηγουμενες υλοποιησεις.
  • Ομως ας ξεκινησουμε με μερικες βασικες εννοιες που θα σας βοηθησουν να κατανοησετε καλυτερα την παρακατω παρουσιαση. To clustering ειναι η μεθοδος με την οποια αντικειμενα τα οποια μοιαζουν περισσοτερο μεταξυ τους παρα με αλλα κατατασονται σε μια ομαδα. Η ομαδοποιηση των πρωτεινων ειναι αρκετα σημαντικη για τη Βιοπληροφορικη γιατι ετσι καθοριζονται οι λειτουργιες και ιδιοτητες πρωτεινων που δεν ειναι γνωστες εφοσον ομαδοποιουνται με αλλες για τις οποιες γνωριζουμε τα στοιχεια αυτα. Υπαρχουν ηδη αρκετες υλοποιησεις του MCL οι οποιες εχουν σχεδιασθει για διαφορους σκοπους. Ωστοσο κατα την σχεδιαση τους δεν ειχε ληφθει υποψη το μεγεθος των δεδομενων που θα επρεπε να αντιμετωπισουν στο μελλον. Για την ακριβεια η Βιοπληροφορικη χαρακτηριζεται ως ενας τομεας που ασχολειται με τεραστιο ογκο δεδομενων (Big Data). Λογω του μεγεθους των δεδομενων που καλειται να αντιμετωπισει η υλοποιηση μας αλλα σε συνδιασμο με το γεγονος οτι ο ρυθμος αυξησης του ογκου των δεδομενων ειναι μεγαλυτερος απο τον ρυθμο αυξησης της υπολογιστικης ισχυος επιλεχθηκε η υλοποιηση του αλγοριθμου σε κατανεμημενο περιβαλλον.
  • Για την υλοποιηση του προγραμματος μετα την οριστικοποιηση της αποφασης για χρηση μιας cloud υποδομης τεθηκε το ερωτημα για το αν θα επρεπε να σχεδιασθει ενα custom framework για της αναγκες του προγραμματος ή θα ηταν καλυτερο να χρησιμοποιηθει ενα ηδη ευραιως γνωστο και χρησιμοποιηουμενο framework. Αν και η κατασκευη ενος ειδικα σχεδιασμενου framework για το προβλημα θα εδινε καλυτερη αποδοση επιλεχθηκε να μην "ξανα εφευρεθει ο τροχος" και να χρησιμοποιηθει ενα απο τα ηδη υπαρχοντα framework που παρεχουν πολυ καλη υποστηριξη απο την κοινοτητα τους. Συγκρινοντας τα MPI/OpenMP, Apache Hadoop, Apache Spark και CUDA επιλεχθηκε το Apache Spark γιατι υποστηριζει ταυτοχρονα τη δυνατοτητα αξιοποιησης του μεγεθους των σκληρων δισκων και της ταχυτητας των μνημων ram σε συνδιασμο με την υποστηριξη διανεμημενου συστηματος αποθηκευσης αρχειων επομενως και τη δυνατοτητα επιλυσης προβληματων Big Data. Καποια κριτηρια που επαιξαν σημαντικο ρολο ειναι η αντιμετωπση σφαλματων απο το framework, η δυνατοτητα ελεγχου της υποδομης σε διανεμημενα συστηματα και η δυνατοτητα εκτελεσης του σε οποιοδηποτε συστημα χωρις αναγκες για ειδικο hardware.
  • Στο σημειο αυτο εφοσον ξεκαθαριστηκε το framework που επιλεξαμε παραθετουμε τον ψευδοκωδικα του MCL και το διαγραμμα ροης του. Οπως βλεπουμε και στον ψευδοκωδικα ο αλγοριθμος MCL αποτελειται απο καποιες βασικες ενεργειες οι οποιες ειναι αρχικα η εισαγωγη των self loops και η αρχικη κανονικοποιηση του πινακα γειτνιασης του γραφου ετσι ωστε να ειναι στοχαστικος κατα στηλη. Στη συνεχεια περιλαμβανει την διαδικασια του Expand που ειναι ουσιαστικα πολλαπλασιασμος πινακων, την διαδικασια του inflate που ειναι η υψωση των στοιχειων του πινακα σε μια δυναμη, επειτα η κανονικοποιηση του πινακα κατα στηλη και στη συνεχεια του prunning δηλαδη την αποκοπη των χαμηλοτερων τιμων απο ενα κατωφλι και η επανακανονικοποιηση του πινακα ετσι ωστε να ειναι στοχαστικος. Οι λειτουργιες αυτες εκτελουνται επαναληπτικα μεχρι ο αλγοριθμος να συγκλινει και στη συνεχεια διερμηνευονται τα cluster που προκυπτουν.
  • Περα απο τον αλγοριθμο MCL δημιουργηθηκαν διαφορες παραλλαγες του ετσι ωστε να αντιμετωπιστουν καποιες απο τις αδυναμιες του. Στη παρουσα διπλωματικη εργασια επιλαξαμε να υλοποιησουμε περα απο τον κανονικο MCL την παραλλαγη του Regularized MCL που βελτιωνει την "αδυναμια" του MCL του κατακερματισμου των ομαδων σε πολλες μικροτερες. Οπως βλεπουμε και στον ψευδοκωδικα η μονη διαφορα του R-MCL και του MCL ειναι η εισαγωγη της μεταβλητης MG ο οποιος ειναι ο αρχικος πινακας γειτνιασης του γραφου. Με αυτον πολλαπλασιαζεται στο βημα του expand ο πινακας γειτνιασης που εχει προκυψει σε καθε επαναληψη μεχρι την συγκλιση του αλγοριθμου. Με τον τροπο αυτο χρησιμοποιουνται τα χαρακτηριστικα στοιχεια του αρχικου πινακα γειτνιασης καθ ολη την διαρκει εκτελεσης του αλγοριθμου σε αντιθεση με τον απλο MCL.
  • Η υλοποιηση του MCL εγινε σε SCALA και χρησιμοποιει το API του Apache Spark και τις δομες δεδομενων που παρεχει το Spark για την διανεμημενη αποθηκευση των γραφων που επιθημουμε να ομαδοποιησουμε σε δομες δεδομενων σχεδιασμενες για αραιους πινακες. Αν και το Spark χρησιμοποιειται ευραιως σε προβληματα Big Data και υποστηριζει αραιες μορφες αποθηκευσης δεν υπηρχε ηδη ενσωματωμενη η δυνατοτητα εκτελεσης διανεμημενουν πολλαπλασιασμου πινακων που να εκμεταλευεται τον αραιο χαρακτηρα των δεδομενων. Εγιναν διαφορες προσπαθειες επιλυσης του προβληματος αυτου και τελικα επειτα απο συνεργασια με τους μηχανικους του Paypal Israel βρεθηκε μια λυση που ναι μεν ηταν απλοικη και δεν ειχε βελτιστοποιηθει αλλα δουλευε. Απο την αλλη πλευρα ο R-MCL με την μικρη αυτη τροποποιηση μας δινει τη δυνατοτητα να εκμεταλευτουμε την πανισχυρη βιβλιοθηκη SciPy που μας εκτελει τον πολλαπλασιασμο πινακων σε αραιη μορφη πολυ γρηγορα και με χαμηλη πολυπλοκοτητα. Επομενως επιλεχθηκε η υλοποιηση αυτη να πραγματοποιηθει σε Python και να χρησιμοποιηθει ξανα το API του Apache Spark. Περα απο αυτο ομως χρησιμοποιηθηκαν οι βιβλιοθηκες SciPy οπως προαναφεραμε, η βιβλιοθηκη Pandas και η βιβλιοθηκη NetworkX.
  • Για την περαιτερω βελτιωση της αποδοσης του προγραμαμτος επιλεχθηκε η εισαγωγη διαφορων κολπων τα οποια δεν θα μετεβαλλαν τα αποτελεσματα. Πρωτη αλλαγη ισως και η πιο σημαντικη ειναι η αλλαγη της ροης των ενεργειων που γινονται στον αλγοριθμο του MCL ετσι ωστε να διαγραφουν καποια βηματα που πλεον δεν θα ειναι αναγκαια. Βασιζόμενοι στο οτι η συναρτηση του pruning πρεπει να δεχθει εναν πινακα ο οποιος να ειναι στοχαστικος και η συναρτηση της υψωσης στοχαστικου πινακα σε δυναμη δινει και παλι στοχαστικο πινακα προταθηκε η σειρα των πραξεων να γινει Expand -> pruning -> inflation και επειτα normalization και επομενως η διαγραφη ενος βηματος normalization. Σημαντικη παρατηρηση εδω ειναι πως σε αυτη την περιπτωση η τιμη του κατωφλιου πρεπει να ειναι διαφορετικη σε σχεση με την αρχικη ροη. Επειδη η διαδικασια ελεγχου για τη συγκλιση του αλγοριθμου συγκρινει τον πινακα της προηγουμενης επαναληψης με τον πινακα που εχει προκυψει στην παρουσα επαναληψη, διαδικασια που για μεγαλους πινακες μπορει να γινει ιδιαιτερα απαιτητικη και χρονοβορα, επιλεχθηκε ο ελεγχος να πραγματοποιειται απο την 5η επαναληψη και μετα οπου ο πινακας εχει γινει αρκετα πιο αραιος απο οτι ηταν στην αρχη.*** Αντιστοιχα εφοσον κατα την παροδο των επαναληψεων ο πινακας περιεχει ολο και λιγοτερα στοιχεια ρυθμιστηκε το προγραμμα να αλλαζει το blocksize για τον πολλαπλασιασμο των αραιων πινακων και τον αριθμο των partition που ειναι διανεμημενα τα δεδομενα αναμεσα στους κομβους.
  • Οσο αφορα την πολυπλοκοτητα των προγραμματων η ροη του MCL χωρις καποια τροποποιηση εχει πολυπλοκοτητα της ταξης O(N^3). Η δικια μας υλοποιηση για τον MCL σε Scala εχει O(a^2*N^3) που αντικατροπτιζεται στον πολλαπλασιασμο αραιων πινακων που ειναι και η πιο απαιτητικη διαδικασια. Η υλοποιηση του R-MCL σε Python είναι της ταξης (t*s*N^3) οπου τ ειναι η πυκνοτητα του πινακα που προκυπτει σε κάθε επαναληψη και s πυκνοτητα του αρχικου στοχαστικου πινακα.
  • Για το κομματι των αποτελεσματων της διπλωματικης χρησιμοποιηθηκαν τεχνητα και πραγματικα δεδομενα. Στην παρουσιαση θα επικεντρωθουμε στα πραγματικα δεδομενα και παραθετουμε μια συνοπτικη περιγραφη των Dataset αυτων. Κατα την διαρκεια αναπτυξης του προγραμματος χρησιμοποιηθηκε το αρχει SampleData το οποιο λογω του μικρου του μεγεθους ηταν καταλληλο για την αναπτυξη και την διορθωση του προγραμματος. Στη συνεχεια το προγραμμα εκτελεστηκε με τα τρια Dataset που βλεπουμε στο αριστερο μερος της οθονης μας. Για την εκτελεση των πειραματων χρησιμοποιηθηκαν διαφορα spark clusters τα οποια ειχα διαφορετικους διαθεσιμους πορους σε καθε περιπτωση. Εκτελεστηκε η υλοποιηση του MCL σε Scala και οπως βλεπουμε ο αριθμος των ομαδων που παρηγαγε σαν αποτελεσμα διαφερει απο τον αριθμο των ομαδων που προεκυψαν χρησιμοποιοντας τον αρχικο MCL.
  • Εφοσον τα αποτελεσματα δεν ειναι ιδια χρησιμοποιησαμε μια σειρα εξαντλητικων συγκρισεων ετσι ωστε να συγκρινουμε αν ειναι ομοια σε ικανοποιητικο βαθμο. Αρχικα ελεχθηκε ο αριθμος των ακριβως ιδιων ομαδων και ο αριθμος των στοιχειων που περιεχονται σε αυτες τις ομαδες. Στη συνεχεια ελεγχθηκε ο αριθμος των singletons για τους δυο αλγοριθμους καθως και ο αριθμος των singletons του αυθεντικου MCL που περιεχονται στα αποτελεσματα της SCALA. Επισης μετρηθηκε ο αριθμος των cluster του αρχικου MCL που δεν ειναι ιδια αλλα και ο αριθμος των cluster που μπορουν να δημιουργηθουν με singletons του MCL SCALA. Καταγραφεται ο μεσος αριθμος των singletons που χρησιμοποιηηκαν για το σχηματισμο καθε ομαδας του Original MCL καθως και ο αριθμος των στοιχειων που δεν εχουν ακομα ελεχθει. Στη συνεχεια παρουσιαζεται ποσες ομαδες του original μπορουν να σχεδιασθουν ακριβως χρησιμοποιοντας ομαδες του Scala MCL και ο αριθμος των cluster που δεν μπορουν να αναμηιουργηθουν ακριβως καθως και ο αριθμος των στοιχειων που περιερχουν αυτα. Τελος καταγραφεται το ποσοστο επιτυχιας για αναδημιουργια των cluster που απεμειναν και δεν ταυτιζονται ακριβως αλλα και το συνολικο ποσοστο στοιχειων που μπορουν να βρεθουν στο ιδιο cluster συμφωνα με τον αρχικο MCL. Συμφωνα με τον κυριο Stijn van Dongen οσο μεγαλυτερος ειναι ο γραφος εισοδου τοσο μεγαλυτερες μπορει να ειναι και οι διαφορες στα αποτελεσματα ομαδοποιησης κυριως λογω του διαφορετικους τροπου που χειριζομαστε τους αραιους πινακες και του διαφορετικο τροπου απλoπoιησεων και διαχειρησης των self loops. Αυτο επαληθευεται και στον πινακα αυτο.
  • Εφοσον δειχθηκε πως τα αποτελεσματα της ομαδοποιησης εχουν μεγαλο βαθμο ομοιοτητας και επομενως το προγραμμα λειτουργει σωστα παρουσιαζουμε μερικα αποτελεσματα απο τα πειραματα. Αρχικα βλεπουμε το συνολικο χρονο εκτελεσης του MCL SCALA για καθε dataset σε διαφορετικα hardware configurations. Παρατηρειται πως στο πρωτο και στο δευτερο διαγραμμα οι περισσοτεροι υπολογιστικοι ποροι δεν εχουν και τον μικροτερο χρονο εκτελεσης που θεωρειται η βελτιστη αποδοση. Αντιθετα στο τριτο διαγραμμα για το 1o dataset η περιπτωση των 60 πυρηνων εχει χρονο κατα πολυ μικροτερο απο την περιπτωση των 30 πυρηνων. Αυτο συμβαινει γιατι σε μικρα dataset η παροχη παρα πολλων διαθεσιμων πορων δημιουργει επιπλεον overheads χωρις ουσιαστικα οφελη ενω στην περιπτωση ενος μεγαλου dataset η επιπλεον αυτη υπολογιστικη ισχυς αξιοποιειται.
  • Παρουσιαζονται διαγραμματα για το χρονο εκτελεσης καθε επαναληψης στο επαναληπτικο κομματι του MCL για διαφορα Dataset με τη χρηση διαφορετικων hardware configurations. Οπως ειναι ηδη γνωστο απο την θεωρια η πρωτες επαναληψεις (μεχρι τη 10η) ειναι και οι πιο απαιτητικες υπολογιστικα και ειναι αυτες στις οποιες γινεται η καλυτερη αξιοποιηση των περισσοτερων υπολογιστικων πορων. Αντιθετα στις επομενες επαναληψεις οι περισσοτεροι υπολογιστικοι ποροι οχι μονο δεν βελτιωνουν την αποδοση αλλα ταυτοχρονα δημιουργουν επιπλεον overheads.
  • Επισης συγκριθηκε ο αριθμος των cluster που προκυπτουν απο τον R-MCL, MCL SCALA και απο τον αρχικο MCL και επαληθευεται η θεωρια πως ο R-MCL δινει σαν αποτελεσμα λιγοτερα και ποιοτικοτερα cluster. Επισης συγκριθηκε ο χρονος εκτελεσης του RMCL σε Python και του MCL σε SCALA και ο R-MCL ειναι πιο γρηγορος κατι το οποιο ειναι λογικο αν αναλογιστει κανεις πως ο πολλαπλασιασμος πινακων που ειναι το κομματι που ειναι το πιο απαιτητικο εχει χαμηλοτερη πολυπλοκοτητα. Επειδη οι υπολογιστικοι ποροι ενοικιαστηκαν απο τη Digitalocean το τελευταιο πειραμα ασχοληθηκε με την συγκριση των χρηματικων ποσων που δαπανηθηκαν για την ολοκληρωση της ομαδοποιησης καθε dataset για διαφορετικα hardware configurations. Ειναι ευκολα αντιληπτο πως αν και καποια hardware configurations ειχαν μικροτερο κοστος ενοικιασης του ανα ωρα εδιναν μεγαλυτερο κοστος για την εκτελεση του προγραμματος εκτος απο τον περισσοτερο χρονο εκτελεσης.
  • Επισης συγκριθηκε ο αριθμος των cluster που προκυπτουν απο τον R-MCL, MCL SCALA και απο τον αρχικο MCL και επαληθευεται η θεωρια πως ο R-MCL δινει σαν αποτελεσμα λιγοτερα και ποιοτικοτερα cluster. Επισης συγκριθηκε ο χρονος εκτελεσης του RMCL σε Python και του MCL σε SCALA και ο R-MCL ειναι πιο γρηγορος κατι το οποιο ειναι λογικο αν αναλογιστει κανεις πως ο πολλαπλασιασμος πινακων που ειναι το κομματι που ειναι το πιο απαιτητικο εχει χαμηλοτερη πολυπλοκοτητα. Επειδη οι υπολογιστικοι ποροι ενοικιαστηκαν απο τη Digitalocean το τελευταιο πειραμα ασχοληθηκε με την συγκριση των χρηματικων ποσων που δαπανηθηκαν για την ολοκληρωση της ομαδοποιησης καθε dataset για διαφορετικα hardware configurations. Ειναι ευκολα αντιληπτο πως αν και καποια hardware configurations ειχαν μικροτερο κοστος ενοικιασης του ανα ωρα εδιναν μεγαλυτερο κοστος για την εκτελεση του προγραμματος εκτος απο τον περισσοτερο χρονο εκτελεσης.
  • Η προσφορα της παρουσας διπλωματικης ειναι η δημιουργια μιας distributed computing και horizontally scalable υλοποιηση του αλγοριθμου MCL. Επομενως τα συμπερασματα που προεκυψαν ειναι πως το προγραμμα εχει τη δυνατοτητα να λειτουργει για οσοδηποτε μεγαλο γραφο εισοδου αρκει να του παρεχονται αρκετοι υπολογιστικοι ποροι για το καθε πειραμα. Αν και ο χρονος εκτελεσης επηρεαζεται απο το μεγεθος του γραφου εισοδου, ο χρονος αυτος μπορει να επηρεαστει απο τους υπολογιστικους πορους που εχει το υπολογιστικο cluster στη διαθεση του. Συμφνωνα με το τελευταιο πειραμα παρατηρησαμε πως δεν ισχυει συνηθως οτι η πιο φθηνη λυση ανα ωρα ειναι και η πιο συμφερουσα τελικα. Επισης για τη βελτιστη αποδοση των υλοποιησεων που αναπτυχθηκαν συστηνεται η χρηση της λειτουργιας του checkpointing και η παροχη υπολογιστικων πορων περισσοτερων απο τον ελαχιστο αναγκαιο. Επισης πολυ σημαντικο ρολο παιζει η σωστη ρυθμιση της δομης και των παραμετρων του υπολογιστικου cluster αλλα και η σωστη ρυθμιση των παραμετρων εισοδου αναλογα με το καθε προβλημα.
  • Τελος οι μελλοντικες επεκτασεις που θα βελτιωσουν περαιταιρω την υπαρχουσα υλοποιηση ειναι πρωτον η εγγενης υποστηριξη και βελτιστοποιηση του διανεμημενου πολλαπλασιασμου αραιων πινακων απο το Spark, η καλυτερη εκμεταλευση της τοπικοτητας των δεδομενων απο τις συναρτησεις Normalize, pruning και inflation. Επισης η αυτοματη ρυθμιση των παραμετρων εισοδου χρησιμοποιοντας τεχνικες βελτιστοποιησης υπερπαραμετρων ειτε με τη χρηση γενετικων αλγοριθμων ειτε με PSO. Στη συνεχεια η αυτοματη ρυθμιση των καταλληλων υπολογιστικων πορων για καθε προβλημα αλλα και η δυναμικη αλλαγη των πορων που διατειθενται σε αυτο αναλογα με το ποσο απαιτητικο ειναι το σημειο του προγραμματος που εκτελειται την καθε στιγμη. Τελος η ανανεωση της υλοποιησης για υποστηριξη και σωστη λειτουργια των νεων εκδοσεων του Spark.
  • Σας ευχαριστω πολυ.

×