Angelos kaltsikis
Transcript of Angelos kaltsikis
1
Παράλληλη υλοποίηση του αλγορίθμου MCL με χρήση πόρων του Cloud
Επιβλέπων καθηγητής : Περικλής Α Μήτκας Άγγελος Καλτσίκης
16/03/2017
2Δομή παρουσίασης
Στόχος της διπλωματικής Θεωρητικό υπόβαθρο Μεθοδολογία και πολυπλοκότητα προγράμματος Αποτελέσματα Συμπεράσματα Μελλοντικές επεκτάσεις
19 Διαφάνειες
16/03/2017
3Στόχος της εργασίας
Ανάπτυξη ενός προγράμματος που θα υλοποιεί τον Markov Cluster Algorithm (MCL) σε κατανεμημένο περιβάλλον. Cloud vs. Grid?
Cloud επειδή επιτρέπει εύκολη προσαρμογή των υπολογιστικών πόρων
Το πρόγραμμα: θα εκτελεί την ομαδοποίηση των στοιχείων σε οσοδήποτε μεγάλο όγκο δεδομένων θα παρέχει αποτελέσματα σε κατανοητή και βολική μορφή για το χρήστη θα έχει φιλική διεπαφή θα μειώσει το συνολικό χρόνο εκτέλεσης της ομαδοποίησης μεγάλων σετ δεδομένων
16/03/2017
4Θεωρητικό Υπόβαθρο
Τι είναι το clustering (ομαδοποίηση); Clustering είναι η μέθοδος με την οποία τα αντικείμενα ενός συνόλου
δεδομένων οργανώνονται σε ομάδες ανάλογα με το βαθμό ομοιότητας τους
Γιατί η ομαδοποίηση πρωτεϊνών είναι σημαντική για τη Βιοπληροφορική; Πρωτεΐνες με άγνωστη λειτουργία συσχετίζονται με πρωτεΐνες με
γνωστές ιδιότητες και λειτουργία Γιατί πρέπει το πρόγραμμα να εκτελείται σε κατανεμημένο
περιβάλλον; Η Βιοπληροφορική είναι πλέον ένα Big Data Domain Ρυθμοί αύξησης των δεδομένων >> Ρυθμοί αύξησης της υπολογιστικής
ισχύος 16/03/2017
5Δυνατότητες MPI/OpenMP Apache
HadoopApache Spark
CUDA
Ανεξάρτητο από ειδικό Hardware
✔ ✔ ✔ ✘
Υποστήριξη Big Data
✔ ✔ ✔ ✘
Αξιοποίηση Μεγέθους
Σύγχρονων Σκληρών Δίσκων
✔ ✔ ✔ ✘
Αξιοποίηση Ταχύτητας
Σύγχρονων Μνημών RAM
✔ ✘ ✔ ✔
Διανεμημένο Σύστημα
Αποθήκευσης Αρχείων
✘ ✔ ✔ (HDFS) ✘
Απόδοση(το 1 είναι το πιο
γρήγορο σύστημα)
2 4 3 1
Έλεγχός Υποδομής σε Διανεμημένα
Συστήματα
✘ ✔ ✔ ✘
Αντιμετώπιση σφαλμάτων
(σε κόμβους ή αντιγραφή δεδομένων)
✘ ✔ ✔ ✘
Distributed Computing Frameworks
APACHE SPARK IT IS!
16/03/2017
6Markov Cluster Algorithm (MCL)
16/03/2017
7Regularized MCL
16/03/2017
8Περιγραφή υλοποιήσεων
MCL Η υλοποίηση του αλγορίθμου έγινε σε SCALA με τη χρήση του API και των δομών δεδομένων
του Apache Spark Εισήχθη μια απλοϊκή (naïve) συνάρτηση για την εκμετάλλευση του αραιού χαρακτήρα
πινάκων στο διανεμημένο πολλαπλασιασμό πινάκων R-MCL
Η υλοποίηση του αλγορίθμου έγινε σε Python με τη χρήση του API του Apache Spark Για την υλοποίηση του αλγορίθμου χρησιμοποιήθηκαν οι εξής βιβλιοθήκες:
1. SciPy2. Pandas3. NetworkX
16/03/2017
9 Χρησιμοποιώντας το Apache Spark στο μέγιστο
• Αλλαγή σειράς πράξεων• Έλεγχος σύγκλισης μετά την 5η επανάληψη• Αλλαγή Blocksize και Partitionsize
Στο κύριο επαναληπτικό κομμάτι του αυθεντικού MCL τα βήματα είναι:EXPAND → INFLATΙΟΝ → NORMALIZATION → PRUNING → NORMALIZATION
Προτεινόμενο κύριο επαναληπτικό κομμάτι του τροποποιημένου MCL:EXPAND → PRUNING → INFLATION → NORMALIZATION 16/03/2017
10Πολυπλοκότητα
• Ο MCL χωρίς τροποποιήσεις απαιτεί:
• Υλοποίηση MCL σε SCALA για την παρούσα διπλωματική εργασία:
• Υλοποίηση R-MCL σε Python για την παρούσα διπλωματική εργασία:
ΌπουΠίνακας εισόδου διαστάσεων NxNΝ: αριθμός γραμμών πίνακα εισόδου
a: πυκνότητα πίνακα που προκύπτει σε κάθε επανάληψη
t: πυκνότητα πίνακα που προκύπτει σε κάθε επανάληψηs: πυκνότητα αρχικού στοχαστικού πίνακα
Πυκνότητα Πί 𝜈𝛼𝜅𝛼=𝛼𝜌𝜄𝜃𝜇ό 𝜍𝜇𝜂𝜇𝜂𝛿𝜀𝜈𝜄𝜅ώ𝜈𝜎𝜏𝜊𝜄𝜒 𝜀 ί𝜔𝜈
(𝛼𝜌𝜄𝜃𝜇 ό𝜍𝛾𝜌𝛼𝜇𝜇ώ𝜈∗𝛼𝜌𝜄𝜃𝜇 ό𝜍 𝜎𝜏𝜂𝜆ώ𝜈 )(Η Πυκνότητα στην περίπτωση μας παίρνει τιμές <<1)
16/03/2017
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.9KBNNZ: 16,466Matrix Dimensions: 3,7752
Normal File Size: 8.3GBNNZ: 142,298,957Matrix Dimensions: 1,908,1422
Normal File Size: 1.7GBNNZ: 29,425,239Matrix Dimensions: 357,8742
Normal File Size: 948.8MBNNZ: 16,424,393Matrix Dimensions: 186,1902
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Αποτελέσματα
0200400600800
100012001400 1289
843653 713
825
3ο Dataset
Hardware Configurations
seco
nds 0
500
1000
1500
2000
25002166
13281019 1107 1247
2ο Dataset
12 CPU Cores - 2 Executors24 CPU Cores - 4 Executors30 CPU Cores - 5 Executors60 CPU Cores - 10 Executors32 CPU Cores - 4 Executors - Different Settings
Hardware Configurations
seco
nds
0100002000030000400005000060000700008000090000
10000012 CPU Cores -
2 Executors; 88357
30 CPU Cores - 5 Executors;
1537260 CPU Cores - 10 Executors;
8141
1ο Dataset
Hardware Configurations
seco
nds
Συνολικός χρόνος εκτέλεσης (seconds) του MCL SCALA για κάθε Hardware Configuration σε κάθε Dataset.
16/03/2017
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 271
10
100
10003ο Dataset
Iterations
seco
nds
0 1 2 3 4 5 6 7 8 9 1011121314151617181920212223242526271
10
100
1000
10000
2ο Dataset
12 CPU Cores - 2 Executors24 CPU Cores - 4 Executors30 CPU Cores - 5 Executors60 CPU Cores - 10 Executors32 CPU Cores - 4 Executors - Different Settings
Iterations
seco
nds
0 1 2 3 4 5 6 7 8 9 1011121314151617202125262728293031323310
100
1000
10000
100000
1ο Dataset
Iterations
seco
nds
14
Σύγκριση χρόνου εκτέλεσης κάθε επανάληψης του MCL SCALA για κάθε Hardware Configuration σε κάθε Dataset.
Λογαριθμική κλίμακα με βάση το 10 16/03/2017
15Σύγκριση μετρήσεων R-MCL Python, MCL SCALA και Original MCL
16/03/2017
Dataset R-MCL Python
MCL SCALA
Original MCL
2nd 48,121 65,703 57,5703rd 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
HWC1 HWC2 HWC3 HWC4 HWC5Matrix-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 Dataset17.52414
-6.09756
5.920316
-
Συνολικό κόστος ($) για την ομαδοποίηση κάθε Dataset για κάθε Hardware Configuration
Τα Hardware Configurations (HWC) αντιστοιχούν στους παρακάτω υπολογιστικούς πόρους:1. 20 CPU πυρήνες – 48 GB RAM – 480 GB SSD2. 36 CPU πυρήνες – 80 GB RAM – 800 GB SSD3. 44 CPU πυρήνες – 96 GB RAM – 960 GB SSD4. 84 CPU πυρήνες – 176 GB RAM – 1.76 TB SSD5. 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Συμπεράσματα
Η προσφορά αυτής της διπλωματικής είναι η Distributed computing και horizontally scalable υλοποίηση του αλγορίθμου MCL
Το πρόγραμμα λειτουργεί για οσοδήποτε μεγάλο γράφο εισόδου
Ο χρόνος εκτέλεσης του προγράμματος επηρεάζεται από το μέγεθος του γράφου εισόδου και από τους διαθέσιμους υπολογιστικούς πόρους
Πιο φθηνή λύση ανά ώρα ≠ πιο συμφέρουσα λύση
16/03/2017
18Μελλοντικές Επεκτάσεις
¤ Εγγενής υποστήριξη διανεμημένου πολλαπλασιασμού πινάκων από το Apache Spark που να εκμεταλλεύεται τις ιδιότητες των αραιών πινάκων
► Καλύτερη εκμετάλλευση της τοπικότητας των δεδομένων στις συναρτήσεων Normalize, Pruning και Inflation
► Αυτόματη ρύθμιση των παραμέτρων εισόδου μέσω τεχνικής βελτιστοποίησης υπερπαραμέτρων με τη χρήση είτε γενετικών αλγορίθμων είτε Particle Swarm Optimization αλγορίθμων
► Αυτόματη ρύθμιση των διαθέσιμων υπολογιστικών πόρων ανάλογα με το εκάστοτε πρόβλημα
► Δυναμική αλλαγή των διαθέσιμων υπολογιστικών πόρων ανάλογα με το ποσό απαιτητικό είναι το σημείο του προγράμματος που εκτελείται
Ανανέωση της υλοποίησης για τη σωστή λειτουργία σε Spark 2.x 16/03/2017
Τέλος
Ευχαριστώ θερμά:
τον καθηγητή Περικλή Α. Μήτκα τον μεταδιδακτορικό ερευνητή Φώτη Ε. Ψωμόπουλο τον υποψήφιο διδάκτορα Αθανάσιο Κιντσάκη τον Ohad Raviv και Joan André τους καθηγητές Ανδρέα Συμεωνίδη και Αναστάσιο Ντελόπουλο Εσάς για την προσοχή σας
Ερωτήσεις;
16/03/2017