Jump to content



  • astrolabos
    astrolabos

    Μεταγλωττιστής βασισμένος στην Python επιτυγχάνει εξαιρετικές ταχύτητες εκτέλεσης

      Το Codon μεταγλωττίζει κώδικα Python για να εκτελείται πιο αποδοτικά και αποτελεσματικά

    Το 2018, ο Economist δημοσίευσε ένα εμπεριστατωμένο άρθρο για τη γλώσσα προγραμματισμού Python. "Τους τελευταίους 12 μήνες", ανέφερε το άρθρο, "οι χρήστες της Google στην Αμερική έψαχναν για την Python πιο συχνά από ό,τι για την Kim Kardashian". 

    Η γλώσσα υψηλού επιπέδου έχει κερδίσει τη δημοτικότητά της, επίσης, με στρατιές χρηστών να συρρέουν καθημερινά στη γλώσσα για την ευκολία χρήσης της που οφείλεται εν μέρει στο απλό και εύκολο στην εκμάθηση συντακτικό της. Αυτό οδήγησε ερευνητές από το Εργαστήριο Επιστήμης Υπολογιστών και Τεχνητής Νοημοσύνης (CSAIL) του ΜΙΤ και από αλλού να δημιουργήσουν ένα εργαλείο που βοηθά στην αποτελεσματικότερη και αποδοτικότερη εκτέλεση κώδικα Python, επιτρέποντας παράλληλα την προσαρμογή και την προσαρμογή σε διαφορετικές ανάγκες και πλαίσια. Ο μεταγλωττιστής, ο οποίος είναι ένα εργαλείο λογισμικού που μεταφράζει τον πηγαίο κώδικα σε κώδικα μηχανής που μπορεί να εκτελεστεί από τον επεξεργαστή ενός υπολογιστή, επιτρέπει στους προγραμματιστές να δημιουργήσουν νέες γλώσσες ειδικού τομέα (DSLs - Domain-Specific Languages) μέσα στην Python - η οποία είναι συνήθως τάξεις μεγέθους πιο αργή από γλώσσες όπως η C ή η C++ - ενώ παράλληλα αποκομίζουν τα οφέλη απόδοσης αυτών των άλλων γλωσσών. 

    Οι DSLs είναι εξειδικευμένες γλώσσες προσαρμοσμένες σε συγκεκριμένες εργασίες, οι οποίες μπορεί να είναι πολύ πιο εύχρηστες από τις γλώσσες προγραμματισμού γενικού σκοπού. Ωστόσο, η δημιουργία μιας νέας DSL από το μηδέν μπορεί να είναι ένας μικρός πονοκέφαλος.

    "Συνειδητοποιήσαμε ότι οι άνθρωποι δεν θέλουν απαραίτητα να μάθουν μια νέα γλώσσα ή ένα νέο εργαλείο, ειδικά όσοι δεν είναι τεχνικοί. Σκεφτήκαμε λοιπόν, ας πάρουμε το συντακτικό, τη σημασιολογία και τις βιβλιοθήκες της Python και ας τα ενσωματώσουμε σε ένα νέο σύστημα που χτίστηκε από την αρχή", λέει η Ariya Shajii, επικεφαλής συγγραφέας σε μια νέα εργασία σχετικά με το νέο σύστημα της ομάδας, το Codon. "Ο χρήστης απλώς γράφει Python όπως έχει συνηθίσει, χωρίς να χρειάζεται να ανησυχεί για τους τύπους δεδομένων ή τις επιδόσεις, τις οποίες χειριζόμαστε αυτόματα - και το αποτέλεσμα είναι ότι ο κώδικάς του εκτελείται 10 έως 100 φορές ταχύτερα από την κανονική Python. Το Codon χρησιμοποιείται ήδη εμπορικά σε τομείς όπως η ποσοτική χρηματοοικονομική, η βιοπληροφορική και η βαθιά μάθηση".

    Η ομάδα έθεσε το Codon σε αυστηρές δοκιμές και το πρόγραμμα ξεπέρασε τις προσδοκίες. Συγκεκριμένα, πήραν περίπου 10 ευρέως χρησιμοποιούμενες εφαρμογές γονιδιωματικής γραμμένες σε Python και τις μεταγλώττισαν χρησιμοποιώντας το Codon, και πέτυχαν πέντε έως 10 φορές μεγαλύτερη ταχύτητα σε σχέση με τις αρχικές βελτιστοποιημένες με το χέρι υλοποιήσεις. Εκτός από τη γονιδιωματική, διερεύνησαν εφαρμογές στην ποσοτική χρηματοοικονομική, η οποία επίσης χειρίζεται μεγάλα σύνολα δεδομένων και χρησιμοποιεί σε μεγάλο βαθμό την Python. Η πλατφόρμα Codon διαθέτει επίσης ένα παράλληλο backend που επιτρέπει στους χρήστες να γράφουν κώδικα Python που μπορεί να μεταγλωττιστεί αποκλειστικά για GPU ή πολλαπλούς πυρήνες, εργασίες που παραδοσιακά απαιτούσαν τεχνογνωσία προγραμματισμού χαμηλού επιπέδου. 

    Σε αντίθεση με γλώσσες όπως η C και η C++, οι οποίες διαθέτουν μεταγλωττιστή που βελτιστοποιεί τον παραγόμενο κώδικα για να βελτιώσει την απόδοσή του, η Python είναι μια διερμηνευμένη γλώσσα. Έχουν καταβληθεί πολλές προσπάθειες για να γίνει η Python ταχύτερη, οι οποίες, σύμφωνα με την ομάδα, συνήθως γίνονται με τη μορφή μιας "top-down προσέγγισης", που σημαίνει ότι παίρνουμε την vanilla υλοποίηση Python και ενσωματώνουμε διάφορες βελτιστοποιήσεις ή τεχνικές μεταγλώττισης "just-in-time" - μια μέθοδος με την οποία τα κρίσιμα για την απόδοση κομμάτια του κώδικα μεταγλωττίζονται κατά τη διάρκεια της εκτέλεσης. Αυτές οι προσεγγίσεις υπερέχουν στη διατήρηση της συμβατότητας προς τα πίσω, αλλά περιορίζουν δραστικά τα είδη των επιταχύνσεων που μπορείτε να επιτύχετε.

    "Πήραμε περισσότερο μια προσέγγιση από κάτω προς τα πάνω, όπου υλοποιήσαμε τα πάντα από την αρχή, η οποία είχε περιορισμούς, αλλά πολύ μεγαλύτερη ευελιξία", λέει ο Shajii. "Έτσι, για παράδειγμα, δεν μπορούμε να υποστηρίξουμε ορισμένα δυναμικά χαρακτηριστικά, αλλά μπορούμε να παίξουμε με βελτιστοποιήσεις και άλλες τεχνικές στατικής μεταγλώττισης που δεν μπορούσατε να κάνετε ξεκινώντας από την τυπική υλοποίηση της Python. Αυτή ήταν η βασική διαφορά - δεν είχε καταβληθεί μεγάλη προσπάθεια για μια προσέγγιση από κάτω προς τα πάνω, όπου μεγάλα τμήματα της υποδομής της Python χτίζονται από το μηδέν".

    Το πρώτο κομμάτι του παζλ είναι η τροφοδοσία του μεταγλωττιστή με ένα κομμάτι κώδικα Python. Ένα από τα κρίσιμα πρώτα βήματα που εκτελούνται ονομάζεται "έλεγχος τύπου", μια διαδικασία όπου, στο πρόγραμμά σας, καταλαβαίνετε τους διαφορετικούς τύπους δεδομένων κάθε μεταβλητής ή συνάρτησης. Για παράδειγμα, κάποιοι μπορεί να είναι ακέραιοι αριθμοί, κάποιοι μπορεί να είναι συμβολοσειρές και κάποιοι μπορεί να είναι αριθμοί κινητής υποδιαστολής - αυτό είναι κάτι που η κανονική Python δεν κάνει. Στην κανονική Python, πρέπει να διαχειριστείτε όλες αυτές τις πληροφορίες κατά την εκτέλεση του προγράμματος, γεγονός που είναι ένας από τους παράγοντες που την καθιστούν τόσο αργή. Μέρος της καινοτομίας με το Codon είναι ότι το εργαλείο κάνει αυτόν τον έλεγχο τύπου πριν από την εκτέλεση του προγράμματος. Αυτό επιτρέπει στον μεταγλωττιστή να μετατρέψει τον κώδικα σε εγγενή κώδικα μηχανής, γεγονός που αποφεύγει όλη την επιβάρυνση που έχει η Python στην αντιμετώπιση των τύπων δεδομένων κατά την εκτέλεση.

    Python είναι η γλώσσα επιλογής για τους ειδικούς του τομέα που δεν είναι ειδικοί στον προγραμματισμό. Αν γράψουν ένα πρόγραμμα που γίνεται δημοφιλές και πολλοί άνθρωποι αρχίσουν να το χρησιμοποιούν και να εκτελούν όλο και μεγαλύτερα σύνολα δεδομένων, τότε η έλλειψη επιδόσεων της Python γίνεται ένα κρίσιμο εμπόδιο για την επιτυχία", λέει ο Saman Amarasinghe, καθηγητής Ηλεκτρολόγων Μηχανικών και Επιστήμης Υπολογιστών του ΜΙΤ και κύριος ερευνητής του CSAIL. "Αντί να χρειάζεται να ξαναγράψουμε το πρόγραμμα χρησιμοποιώντας μια βιβλιοθήκη που υλοποιείται σε C, όπως η NumPy, ή να το ξαναγράψουμε εντελώς σε μια γλώσσα όπως η C, το Codon μπορεί να χρησιμοποιήσει την ίδια υλοποίηση της Python και να δώσει την ίδια απόδοση που θα είχαμε αν το ξαναγράφαμε σε C. Έτσι, πιστεύω ότι το Codon είναι ο ευκολότερος δρόμος προς τα εμπρός για επιτυχημένες εφαρμογές Python που έχουν φτάσει σε ένα όριο λόγω έλλειψης επιδόσεων". 

    Το άλλο κομμάτι του παζλ είναι οι βελτιστοποιήσεις στον μεταγλωττιστή. Η εργασία με το πρόσθετο γονιδιωματικής, για παράδειγμα, θα εκτελέσει το δικό της σύνολο βελτιστοποιήσεων που είναι συγκεκριμένες για αυτόν τον τομέα υπολογισμού, ο οποίος περιλαμβάνει την εργασία με γονιδιωματικές ακολουθίες και άλλα βιολογικά δεδομένα, για παράδειγμα. Το αποτέλεσμα είναι ένα εκτελέσιμο αρχείο που εκτελείται με την ταχύτητα της C ή της C++, ή ακόμη και ταχύτερα μόλις εφαρμοστούν βελτιστοποιήσεις για συγκεκριμένο τομέα. 

    Ενώ το Codon καλύπτει επί του παρόντος ένα σημαντικό υποσύνολο της Python, χρειάζεται ακόμη να ενσωματώσει αρκετά δυναμικά χαρακτηριστικά και να επεκτείνει την κάλυψη της βιβλιοθήκης Python. Η ομάδα του Codon εργάζεται σκληρά για να καλύψει ακόμη περισσότερο το χάσμα με την Python και προσβλέπει στην κυκλοφορία αρκετών νέων χαρακτηριστικών τους επόμενους μήνες. Το Codon είναι επί του παρόντος δημόσια διαθέσιμο στο GitHub.

    Εκτός από τον Amarasinghe, η Shajii έγραψε την εργασία μαζί με τον Gabriel Ramirez, πρώην φοιτητή του CSAIL και νυν μηχανικό λογισμικού της Jump Trading- την Jessica Ray, συνεργαζόμενη ερευνητική υπάλληλο στο MIT Lincoln Laboratory- την Bonnie Berger, καθηγήτρια του MIT στα μαθηματικά και στην ηλεκτρολογία και την επιστήμη των υπολογιστών και κύρια ερευνήτρια του CSAIL- τον Haris Smajlović, μεταπτυχιακό φοιτητή στο Πανεπιστήμιο της Βικτώριας- και τον Ibrahim Numanagić, επίκουρο καθηγητή Πληροφορικής στο Πανεπιστήμιο της Βικτώριας και πρόεδρο έρευνας στον Καναδά.

    Η έρευνα παρουσιάστηκε στο διεθνές συνέδριο ACM SIGPLAN 2023 International Conference on Compiler Construction. Υποστηρίχθηκε από την επιχορήγηση NSERC Discovery Grant του Numanagić, το πρόγραμμα Canada Research Chair, την Υπηρεσία Προηγμένων Αμυντικών Ερευνητικών Προγραμμάτων των ΗΠΑ και τα Εθνικά Ινστιτούτα Υγείας των ΗΠΑ. Το Codon συντηρείται επί του παρόντος από την Exaloop, Inc, μια νεοσύστατη επιχείρηση που ιδρύθηκε από ορισμένους από τους συγγραφείς για τη διάδοση του Codon.

     


    Πηγή
    Φωτογραφία: news.mit.edu
×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.