Η τεχνητή νοημοσύνη της DeepMind που αναπαράγει παιχνίδια μόλις βρήκε άλλον έναν τρόπο να κάνει τον κώδικα πιο γρήγορο

Περίληψη άρθρου:
Η Google DeepMind χρησιμοποίησε την τεχνητή νοημοσύνη (AI) AlphaDev για να βρει δύο νέους τρόπους επιτάχυνσης των αλγορίθμων των υπολογιστών. Η AlphaDev βρήκε έναν τρόπο ταξινόμησης μιας λίστας σε 70% λιγότερο χρόνο από ό,τι πριν, και πέτυχε επίσης 30% επιτάχυνση ενός βασικού αλγορίθμου κρυπτογράφησης. Τον Ιανουάριο του τρέχοντος έτους, η DeepMind υπέβαλε τους αναβαθμισμένους αλγορίθμους ταξινόμησης στον διαχειριστή της γλώσσας C++ και ο νέος κώδικας υιοθετήθηκε μετά από ανεξάρτητο έλεγχο. Το σύστημα που βασίζεται στην τεχνητή νοημοσύνη είναι χτισμένο πάνω στο AlphaZero, το οποίο εκπαιδεύτηκε για να παίζει παιχνίδια όπως το σκάκι και το Go. Προσεγγίζει τα προβλήματα ως παιχνίδια, με την τεχνητή νοημοσύνη να μαθαίνει να συναρμολογεί αλγορίθμους που λειτουργούν προσθέτοντας οδηγίες συναρμολόγησης είτε τυχαία στην αρχή είτε μέσω της υιοθέτησης υφιστάμενων προσεγγίσεων.
Κύρια σημεία του άρθρου:
- Η AlphaDev της Google DeepMind, μια νέα έκδοση της τεχνητής νοημοσύνης που παίζει παιχνίδια, ανακάλυψε δύο νέους τρόπους για να κάνει τον κώδικα ταχύτερο.
- Η AlphaDev βρήκε έναν τρόπο να ταξινομεί στοιχεία σε μια λίστα έως και 70% ταχύτερα από την καλύτερη υπάρχουσα μέθοδο και έχει επίσης επιταχύνει έναν αλγόριθμο κλειδί που χρησιμοποιείται στην κρυπτογραφία κατά 30%.
- Η AlphaDev είναι χτισμένη πάνω στο AlphaZero, το μοντέλο ενισχυτικής μάθησης που εκπαίδευσε η DeepMind για να κυριαρχήσει σε παιχνίδια όπως το Go και το σκάκι.
- Οι αλγόριθμοι της AlphaDev χρησιμοποιούνται ήδη από εκατομμύρια προγραμματιστές λογισμικού και η ομάδα σχεδιάζει να προσαρμόσει την AlphaDev ώστε να λειτουργεί με εντολές C++ αντί για assembly.
Αναλυτικά το άρθρο:
Οι αλγόριθμοι που δημιουργούνται με τεχνητή νοημοσύνη χρησιμοποιούνται ήδη από εκατομμύρια προγραμματιστές.
Η σειρά ανακαλύψεων της DeepMind στη θεμελιώδη επιστήμη των υπολογιστών συνεχίζεται. Πέρυσι, η εταιρεία χρησιμοποίησε μια έκδοση της AI AlphaZero που παίζει παιχνίδια για να βρει νέους τρόπους να επιταχύνει τον υπολογισμό ενός κρίσιμου μαθηματικού κομματιού στην καρδιά πολλών διαφορετικών ειδών κώδικα, καταρρίπτοντας ένα ρεκόρ 50 ετών.
Τώρα έκανε το ίδιο κόλπο ξανά - δύο φορές. Χρησιμοποιώντας μια νέα έκδοση του AlphaZero που ονομάζεται AlphaDev, η εταιρεία με έδρα το Ηνωμένο Βασίλειο (που πρόσφατα μετονομάστηκε σε Google DeepMind μετά τη συγχώνευση με το εργαστήριο AI της αδελφής της εταιρείας τον Απρίλιο) ανακάλυψε έναν τρόπο ταξινόμησης στοιχείων σε μια λίστα έως και 70% ταχύτερα από την καλύτερη υπάρχουσα μέθοδο.
Βρήκε επίσης έναν τρόπο να επιταχύνει κατά 30% έναν βασικό αλγόριθμο που χρησιμοποιείται στην κρυπτογραφία. Αυτοί οι αλγόριθμοι είναι από τα πιο κοινά δομικά στοιχεία στο λογισμικό. Μικρές επιταχύνσεις μπορούν να κάνουν τεράστια διαφορά, μειώνοντας το κόστος και εξοικονομώντας ενέργεια.
"Ο νόμος του Moore φτάνει στο τέλος του, όπου τα τσιπ πλησιάζουν τα θεμελιώδη φυσικά τους όρια", λέει ο Daniel Mankowitz, ερευνητής στο Google DeepMind. "Πρέπει να βρούμε νέους και καινοτόμους τρόπους βελτιστοποίησης των υπολογιστών".
"Πρόκειται για μια ενδιαφέρουσα νέα προσέγγιση", λέει ο Peter Sanders, ο οποίος μελετά τον σχεδιασμό και την υλοποίηση αποδοτικών αλγορίθμων στο Ινστιτούτο Τεχνολογίας της Karlsruhe στη Γερμανία και ο οποίος δεν συμμετείχε στην εργασία. "Η ταξινόμηση εξακολουθεί να είναι μία από τις πιο ευρέως χρησιμοποιούμενες υπορουτίνες στην πληροφορική", λέει.
Η DeepMind δημοσίευσε τα αποτελέσματά της στο Nature σήμερα. Αλλά οι τεχνικές που ανακάλυψε η AlphaDev χρησιμοποιούνται ήδη από εκατομμύρια προγραμματιστές λογισμικού. Τον Ιανουάριο του 2022, η DeepMind υπέβαλε τους νέους αλγορίθμους ταξινόμησης στον οργανισμό που διαχειρίζεται τη C++, μια από τις πιο δημοφιλείς γλώσσες προγραμματισμού στον κόσμο, και μετά από δύο μήνες αυστηρής ανεξάρτητης εξέτασης, οι αλγόριθμοι της AlphaDev προστέθηκαν στη γλώσσα. Αυτή ήταν η πρώτη αλλαγή στους αλγορίθμους ταξινόμησης της C++ εδώ και περισσότερο από μια δεκαετία και η πρώτη ενημέρωση που αφορούσε ποτέ έναν αλγόριθμο που ανακαλύφθηκε με τη χρήση τεχνητής νοημοσύνης.
Η DeepMind πρόσθεσε τους άλλους νέους αλγορίθμους της στο Abseil, μια συλλογή ανοιχτού κώδικα με προκατασκευασμένους αλγορίθμους της C++ που μπορεί να χρησιμοποιηθεί από οποιονδήποτε προγραμματίζει με C++. Αυτοί οι αλγόριθμοι κρυπτογράφησης υπολογίζουν αριθμούς που ονομάζονται hashes και μπορούν να χρησιμοποιηθούν ως μοναδικά αναγνωριστικά για κάθε είδους δεδομένα. Η DeepMind εκτιμά ότι οι νέοι της αλγόριθμοι χρησιμοποιούνται πλέον τρισεκατομμύρια φορές την ημέρα.
Η AlphaDev είναι χτισμένη πάνω στο AlphaZero, το μοντέλο ενισχυτικής μάθησης που η DeepMind εκπαίδευσε για να κυριαρχήσει σε παιχνίδια όπως το Go και το σκάκι. Το επίτευγμα της εταιρείας ήταν να αντιμετωπίσει το πρόβλημα της εύρεσης ενός ταχύτερου αλγορίθμου ως παιχνίδι και στη συνέχεια να εκπαιδεύσει την τεχνητή νοημοσύνη της να το κερδίσει - η ίδια προσέγγιση που χρησιμοποίησε πέρυσι για να επιταχύνει τους πολλαπλασιασμούς πινάκων.
Στην περίπτωση της AlphaDev, το παιχνίδι περιλαμβάνει την επιλογή των εντολών του υπολογιστή και την τοποθέτησή τους στη σειρά, έτσι ώστε οι γραμμές κώδικα που προκύπτουν να συνθέτουν έναν αλγόριθμο. Η AlphaDev κερδίζει το παιχνίδι εάν ο αλγόριθμος είναι τόσο σωστός όσο και ταχύτερος από τους υπάρχοντες. Ακούγεται απλό, αλλά για να παίξει καλά, η AlphaDev πρέπει να ψάξει σε έναν αστρονομικό αριθμό πιθανών κινήσεων.
Η DeepMind επέλεξε να εργαστεί με assembly, μια γλώσσα προγραμματισμού που μπορεί να χρησιμοποιηθεί για να δώσει συγκεκριμένες οδηγίες για το πώς να μετακινήσει αριθμούς σε ένα τσιπ υπολογιστή. Λίγοι άνθρωποι γράφουν σε assembly- είναι η γλώσσα στην οποία μεταφράζεται ο κώδικας που γράφεται σε γλώσσες όπως η C++ πριν εκτελεστεί. Το πλεονέκτημα της assembly είναι ότι επιτρέπει την ανάλυση των αλγορίθμων σε λεπτομερή βήματα - ένα καλό σημείο εκκίνησης αν ψάχνετε για συντομεύσεις.
Τα τσιπ των υπολογιστών έχουν διάφορες υποδοχές όπου τοποθετούνται και επεξεργάζονται αριθμοί. Η συναρμολόγηση περιλαμβάνει βασικές εντολές για το χειρισμό αυτών που βρίσκονται σε αυτές τις υποδοχές, όπως η mov(A,B), η οποία λέει στον υπολογιστή να μετακινήσει τον αριθμό που βρίσκεται στην υποδοχή A στην υποδοχή B, και η cmp(A,B), η οποία λέει στον υπολογιστή να ελέγξει αν αυτό που βρίσκεται στην υποδοχή A είναι μικρότερο, ίσο ή μεγαλύτερο από αυτό που βρίσκεται στην υποδοχή B. Μεγάλες ακολουθίες τέτοιων εντολών μπορούν να εκτελέσουν όλα όσα κάνουν οι υπολογιστές.
Η AlphaDev κάνει μια κίνηση στο παιχνίδι προσθέτοντας μια νέα εντολή assembly στον αλγόριθμο που κατασκευάζει. Για αρχή, η AlphaDev θα πρόσθετε τυχαία εντολές, δημιουργώντας αλγορίθμους που δεν θα εκτελούνταν. Με την πάροδο του χρόνου, όπως ακριβώς έκανε το AlphaZero με τα επιτραπέζια παιχνίδια, έμαθε να παίζει κινήσεις που κερδίζουν. Προσέθετε οδηγίες που οδηγούσαν σε αλγορίθμους που όχι μόνο έτρεχαν, αλλά ήταν σωστοί και γρήγοροι.
Η DeepMind επικεντρώθηκε σε αλγορίθμους για την ταξινόμηση σύντομων λιστών τριών έως πέντε στοιχείων. Τέτοιοι αλγόριθμοι καλούνται ξανά και ξανά σε προγράμματα που ταξινομούν μεγαλύτερες λίστες. Επομένως, οι επιταχύνσεις σε αυτούς τους σύντομους αλγορίθμους θα έχουν σωρευτικό αντίκτυπο.
Αλλά οι σύντομοι αλγόριθμοι μελετώνται και βελτιστοποιούνται επίσης από ανθρώπους εδώ και δεκαετίες. Ο Mankowitz και οι συνεργάτες του ξεκίνησαν με έναν αλγόριθμο για την ταξινόμηση μιας λίστας τριών στοιχείων μόνο ως απόδειξη της έννοιας. Η καλύτερη εκδοχή αυτού του αλγορίθμου που επινοήθηκε από τον άνθρωπο περιλαμβάνει 18 εντολές. Δεν πίστευαν ότι θα μπορούσαν να τη βελτιώσουν.
"Ειλικρινά δεν περιμέναμε να πετύχουμε κάτι καλύτερο", λέει ο Mankowitz. "Αλλά προς έκπληξή μας, καταφέραμε να τον κάνουμε ταχύτερο. Αρχικά σκεφτήκαμε ότι επρόκειτο για κάποιο λάθος ή σφάλμα ή κάτι τέτοιο, αλλά όταν αναλύσαμε το πρόγραμμα συνειδητοποιήσαμε ότι η AlphaDev είχε πράγματι ανακαλύψει κάτι".
Η AlphaDev βρήκε έναν τρόπο να ταξινομήσει μια λίστα με τρία στοιχεία σε 17 εντολές αντί για 18. Αυτό που είχε ανακαλύψει ήταν ότι ορισμένα βήματα μπορούσαν να παραλειφθούν. "Όταν το κοιτάξαμε μετά, είπαμε: "Ουάου, αυτό σίγουρα βγάζει νόημα", λέει ο Mankowitz. "Αλλά για να ανακαλύψεις κάτι τέτοιο [χωρίς την AlphaDev], απαιτούνται άνθρωποι που είναι ειδικοί στη γλώσσα assembly".
Η AlphaDev δεν μπόρεσε να νικήσει την καλύτερη ανθρώπινη εκδοχή του αλγορίθμου για την ταξινόμηση μιας λίστας τεσσάρων στοιχείων, η οποία απαιτεί 28 εντολές. Αλλά νίκησε την καλύτερη ανθρώπινη έκδοση για πέντε αντικείμενα, μειώνοντας τον αριθμό των εντολών από 46 σε 42.
Αυτό ισοδυναμεί με σημαντική επιτάχυνση. Ο υπάρχων αλγόριθμος C++ για την ταξινόμηση μιας λίστας πέντε στοιχείων χρειαζόταν περίπου 6,91 νανοδευτερόλεπτα σε ένα τυπικό τσιπ Intel Skylake. Ο αλγόριθμος της AlphaDev χρειάστηκε 2,01 νανοδευτερόλεπτα, δηλαδή περίπου 70% ταχύτερα.
Η DeepMind συγκρίνει την ανακάλυψη της AlphaDev με μια από τις περίεργες αλλά νικηφόρες κινήσεις του AlphaGo στον αγώνα Go εναντίον του γκραν μετρ Lee Sedol το 2016. "Όλοι οι ειδικοί κοίταξαν αυτή την κίνηση και είπαν: 'Αυτό δεν είναι το σωστό πράγμα που πρέπει να κάνουμε. Αυτή είναι μια κακή κίνηση", λέει ο Mankowitz. "Αλλά στην πραγματικότητα ήταν η σωστή κίνηση, και το AlphaGo κατέληξε όχι μόνο να κερδίσει το παιχνίδι αλλά και να επηρεάσει τις στρατηγικές που άρχισαν να χρησιμοποιούν οι επαγγελματίες παίκτες του Go".
Ο Sanders είναι εντυπωσιασμένος, αλλά δεν πιστεύει ότι τα αποτελέσματα πρέπει να υπερεκτιμηθούν. "Συμφωνώ ότι οι τεχνικές μηχανικής μάθησης αλλάζουν όλο και περισσότερο το παιχνίδι στον προγραμματισμό και όλοι περιμένουν ότι οι τεχνητές νοημοσύνες θα είναι σύντομα σε θέση να εφεύρουν νέους, καλύτερους αλγορίθμους", λέει. "Αλλά δεν έχουμε φτάσει ακόμα εκεί".
Ένα πράγμα ο Sanders επισημαίνει, ότι η AlphaDev χρησιμοποιεί μόνο ένα υποσύνολο των εντολών που είναι διαθέσιμες στην assembly. Πολλοί υπάρχοντες αλγόριθμοι ταξινόμησης χρησιμοποιούν οδηγίες που η AlphaDev δεν δοκίμασε, λέει. Αυτό καθιστά πιο δύσκολη τη σύγκριση της AlphaDev με τις καλύτερες ανταγωνιστικές προσεγγίσεις.
Είναι αλήθεια ότι η AlphaDev έχει τα όριά της. Ο μεγαλύτερος αλγόριθμος που παρήγαγε είχε μήκος 130 εντολών, για την ταξινόμηση μιας λίστας με έως και πέντε στοιχεία. Σε κάθε βήμα, η AlphaDev επέλεξε από 297 πιθανές εντολές συναρμολόγησης (από πολύ περισσότερες). "Πέρα από 297 οδηγίες και παιχνίδια συναρμολόγησης μήκους άνω των 130 εντολών, η μάθηση γινόταν αργή", λέει ο Mankowitz.
Αυτό οφείλεται στο γεγονός ότι ακόμη και με 297 οδηγίες (ή κινήσεις παιχνιδιού), ο αριθμός των πιθανών αλγορίθμων που θα μπορούσε να κατασκευάσει η AlphaDev είναι μεγαλύτερος από τον πιθανό αριθμό των παρτίδων στο σκάκι (10120) και τον αριθμό των ατόμων στο σύμπαν (που πιστεύεται ότι είναι περίπου 1080).
Για μεγαλύτερους αλγορίθμους, η ομάδα σχεδιάζει να προσαρμόσει την AlphaDev ώστε να λειτουργεί με εντολές C++ αντί για assembly. Με λιγότερο λεπτομερή έλεγχο η AlphaDev μπορεί να χάσει ορισμένες συντομεύσεις, αλλά η προσέγγιση θα είναι εφαρμόσιμη σε ένα ευρύτερο φάσμα αλγορίθμων.
Ο Sanders θα ήθελε επίσης να δει μια πιο εξαντλητική σύγκριση με τις καλύτερες προσεγγίσεις που αναπτύχθηκαν από ανθρώπους, ειδικά για μεγαλύτερους αλγορίθμους. Η DeepMind λέει ότι αυτό είναι μέρος του σχεδίου της. Ο Mankowitz θέλει να συνδυάσει την AlphaDev με τις καλύτερες μεθόδους που έχουν αναπτυχθεί από τον άνθρωπο, ώστε η τεχνητή νοημοσύνη να βασίζεται στην ανθρώπινη διαίσθηση αντί να ξεκινά από το μηδέν.
Άλλωστε, μπορεί να βρεθούν και άλλες επιταχύνσεις. "Για να το κάνει αυτό ένας άνθρωπος, απαιτείται σημαντική τεχνογνωσία και ένας τεράστιος αριθμός ωρών -ίσως ημερών, ίσως εβδομάδων- για να εξετάσει αυτά τα προγράμματα και να εντοπίσει βελτιώσεις", λέει ο Mankowitz. "Ως αποτέλεσμα, δεν έχει επιχειρηθεί στο παρελθόν".
Πηγή: DeepMind’s game-playing AI just found another way to make code faster
