Η Huawei ανακοίνωσε ότι το μεσαίο λογισμικό MindSpore Deep Learning τύπου TensorFlow και PyTorch είναι πλέον ανοιχτού κώδικα. Μάθετε σε αυτό το άρθρο τα πιο σημαντικά χαρακτηριστικά του.
Η Huawei μόλις ανακοίνωσε ότι το πλαίσιο MindSpore για την ανάπτυξη εφαρμογών AI γίνεται ανοιχτό και διατίθεται σε GiHub και Gitee. Το MindSpore είναι ένα άλλο πλαίσιο Deep Learning για την εκπαίδευση μοντέλων νευρωνικών δικτύων, παρόμοιο με το TensorFlow ή το PyTorch, σχεδιασμένο για χρήση από το Edge έως το Cloud, το οποίο υποστηρίζει τόσο GPU όσο και προφανώς επεξεργαστές Huawei Ascend.
Τον περασμένο Αύγουστο, όταν η Huawei ανακοίνωσε την επίσημη κυκλοφορία του επεξεργαστή Ascend, η MindSpore παρουσιάστηκε για πρώτη φορά, δηλώνοντας ότι «σε μια τυπική προπόνηση με βάση το ResNet-50, ο συνδυασμός των Ascend 910 και MindSpore είναι περίπου διπλάσιος. Όταν εκπαιδεύετε μοντέλα AI σε σχέση με άλλες μεγάλες κάρτες εκμάθησης χρησιμοποιώντας το TensorFlow Είναι αλήθεια ότι πολλά πλαίσια έχουν εμφανιστεί τα τελευταία χρόνια και ίσως το MindSpore δεν είναι τίποτα περισσότερο από μία ομάδα που μπορεί ακόμη και να ανταγωνιστεί από απόσταση TensorFlow (υποστηριζόμενη από την Google) και PyTorch (υποστηρίζεται από το Facebook).
Αρχιτεκτονική του συστήματος
Ο ιστότοπος του MindSpore περιγράφει ότι η υποδομή αποτελείται από τρία κύρια επίπεδα: έκφραση frontend, μηχανή γραφικών και χρόνο εκτέλεσης backend. Το παρακάτω σχήμα δείχνει ένα οπτικό διάγραμμα:
Το πρώτο επίπεδο του MindSpore προσφέρει ένα API Python για προγραμματιστές. Δεδομένου ότι η γλωσσική γλωσσολογία στην κοινότητά μας είναι de facto Python, και διαφορετικά το MindSpore θέλει να ανταγωνιστεί τους PyTorch και TensorFlow. Με αυτό το API, οι προγραμματιστές μπορούν να χειριστούν μοντέλα (εκπαίδευση, συμπεράσματα κ.λπ.) και να επεξεργαστούν δεδομένα. Αυτό το πρώτο επίπεδο περιλαμβάνει επίσης υποστήριξη για ενδιάμεση αναπαράσταση κώδικα (MindSpore IR), στην οποία θα βασίζονται πολλές βελτιστοποιήσεις που μπορούν να πραγματοποιηθούν σε παράλληλη και αυτόματη διαφοροποίηση (GHLO).
Παρακάτω είναι το επίπεδο Graph Engine που παρέχει την απαραίτητη λειτουργικότητα για τη δημιουργία και εκτέλεση αυτόματης διαφοροποίησης του γραφήματος εκτέλεσης. Με το MindSpore, επέλεξαν ένα μοντέλο αυτόματης διαφοροποίησης εκτός από το PyTorch (το οποίο δημιουργεί ένα γράφημα δυναμικής εκτέλεσης) ή το TensorFlow (αν και επιλέχθηκε αρχικά η επιλογή δημιουργίας ενός πιο αποτελεσματικού προγράμματος στατικής εκτέλεσης, τώρα προσφέρει επίσης μια δυναμική επιλογή γραφήματος εκτέλεσης και επιτρέπει μια στατική έκδοση του γραφήματος με τη χρήση του @ tf.function διακοσμητή του API χαμηλού επιπέδου).
Η επιλογή του MindSpore είναι να μετατρέψει τον πηγαίο κώδικα σε μορφή ενδιάμεσου κώδικα (MindSpore IR) για να επωφεληθούν από τα δύο μοντέλα (για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα "Αυτόματος διαχωρισμός" στον ιστότοπο του MindSpore).
Το τελικό επίπεδο αποτελείται από όλες τις βιβλιοθήκες και τα περιβάλλοντα χρόνου εκτέλεσης που απαιτούνται για την υποστήριξη των διαφόρων αρχιτεκτονικών υλικού στις οποίες θα επεξεργαστεί ο κώδικας. Πιθανότατα, θα είναι ένα backend πολύ παρόμοιο με άλλα πλαίσια, ίσως με τις δυνατότητες της Huawei, όπως βιβλιοθήκες όπως το HCCL (Huawei Collective Communication Library), ισοδύναμο με το NVIDIA NCCL (NVIDIA Collective Communication Library).
Εκπαίδευση υποστήριξης οπτικοποίησης
Σύμφωνα με το σεμινάριο MindSpore, αν και ήταν αδύνατο να τα εγκαταστήσετε και να τα χρησιμοποιήσετε, έχουν το MindInsight για να δημιουργήσουν οπτικοποιήσεις που θυμίζουν κάπως το TensorBoard, το TensorFlow. Ρίξτε μια ματιά σε μερικά στιγμιότυπα οθόνης που εμφανίζονται στον ιστότοπό τους:
Σύμφωνα με το εγχειρίδιο, το MindSpore χρησιμοποιεί επί του παρόντος έναν μηχανισμό επανάκλησης (που θυμίζει πώς γίνεται με τον Keras) για να γράψει (σε ένα αρχείο καταγραφής) στη διαδικασία εκπαίδευσης όλων αυτών των παραμέτρων μοντέλου και των υπερπαραμέτρων που θέλουμε, καθώς και το πρόγραμμα υπολογισμού όταν Η σύνταξη νευρωνικού δικτύου σε ενδιάμεσο κώδικα είναι πλήρης.
Παραλληλισμός
Στο σεμινάριό τους, μιλούν για δύο τρόπους παραλληλοποίησης (DATA_PARALLEL και AUTO_PARALLEL) και παρέχουν δείγμα κώδικα που εκπαιδεύει το ResNet-50 με ένα σύνολο δεδομένων CIFAR για έναν επεξεργαστή Ascend 910 (τον οποίο δεν μπόρεσα να δοκιμάσω). Το DATA_PARALLEL αναφέρεται σε μια στρατηγική κοινώς γνωστή ως παραλληλισμός δεδομένων, η οποία συνίσταται στη διαίρεση των εκπαιδευτικών δεδομένων σε πολλά υποσύνολα, καθένα από τα οποία τρέχει στο ίδιο αντίγραφο του μοντέλου, αλλά σε διαφορετικές μονάδες επεξεργασίας. Η υποστήριξη Graph Engine παρέχεται για παραλληλισμό κώδικα και ειδικότερα για τον παραλληλισμό AUTO_PARALLEL.
Η λειτουργία AUTO_PARALLEL βελτιστοποιεί αυτόματα τον παραλληλισμό συνδυάζοντας τη στρατηγική παραλληλοποίησης δεδομένων (συζητήθηκε παραπάνω) με τη στρατηγική παραλληλοποίησης μοντέλων, στην οποία το μοντέλο χωρίζεται σε διαφορετικά μέρη και κάθε μέρος εκτελείται παράλληλα σε διαφορετικές μονάδες επεξεργασίας. Αυτή η αυτόματη λειτουργία επιλέγει τη στρατηγική παραλληλισμού που προσφέρει τα καλύτερα οφέλη, τα οποία μπορείτε να διαβάσετε στην ενότητα Automatic Parallel στον ιστότοπο MindSpore (αν και δεν περιγράφουν τον τρόπο λήψης εκτιμήσεων και αποφάσεων). Θα πρέπει να περιμένουμε για να δώσουμε χρόνο στην τεχνική ομάδα να επεκτείνει την τεκμηρίωση και να κατανοήσει περισσότερες λεπτομέρειες σχετικά με τη στρατηγική αυτόματης παραλληλοποίησης. Ωστόσο, είναι σαφές ότι αυτή η στρατηγική αυτόματης παραλληλοποίησης είναι κρίσιμη, και εδώ πρέπει και μπορούν να ανταγωνιστούν το TensorFlow ή το PyTorch, βελτιώνοντας σημαντικά την απόδοση χρησιμοποιώντας επεξεργαστές Huawei.
Σχεδιασμένος χάρτης πορείας και πώς να συνεισφέρετε
Υπάρχει προφανώς πολλή δουλειά που πρέπει να γίνει και σε αυτό το σημείο έχουν βελτιώσει τις ιδέες που έχουν στο μυαλό τους για το επόμενο έτος στον εκτεταμένο χάρτη πορείας που παρουσιάζεται σε αυτήν τη σελίδα, αλλά υποστηρίζουν ότι οι προτεραιότητες θα προσαρμοστούν ανάλογα με τον χρήστη.
Ανατροφοδότηση. Προς το παρόν μπορούμε να βρούμε αυτές τις κύριες γραμμές:
- Υποστήριξη για περισσότερα μοντέλα (εκκρεμή κλασικά μοντέλα, GAN, RNN, Transformers, ενισχυμένα μοντέλα εκμάθησης, πιθανολογικός προγραμματισμός, AutoML κ.λπ.).
- Επεκτείνετε τα API και τις βιβλιοθήκες για να βελτιώσετε την ευχρηστία και την εμπειρία προγραμματισμού (περισσότεροι χειριστές, περισσότεροι βελτιστοποιητές, περισσότερες λειτουργίες απώλειας κ.λπ.)
- Πλήρης υποστήριξη επεξεργαστών Huawei Ascend και βελτιστοποίηση απόδοσης (βελτιστοποίηση συλλογής, βελτίωση χρήσης πόρων κ.λπ.)
- Εξέλιξη της στοίβας λογισμικού και εκτέλεση βελτιστοποιήσεων υπολογιστικών γραφημάτων (βελτίωση της ενδιάμεσης αναπαράστασης IR, προσθήκη πρόσθετων δυνατοτήτων βελτιστοποίησης κ.λπ.).
- Υποστήριξη για περισσότερες γλώσσες προγραμματισμού (όχι μόνο για την Python).
- Βελτιωμένη κατανεμημένη μάθηση με βελτιστοποίηση του αυτόματου προγραμματισμού, διανομής δεδομένων κ.λπ.
- Βελτιώστε το εργαλείο MindInsight για να διευκολύνετε τον προγραμματιστή να "εντοπίσει" και να βελτιώσει τον συντονισμό υπερπαραμέτρων κατά τη διάρκεια της μαθησιακής διαδικασίας.
- Πρόοδος στην παροχή λειτουργικότητας συμπερασμάτων σε συσκευές στο Edge (ασφάλεια, υποστήριξη για μοντέλα εκτός πλατφόρμας μέσω ONNX κ.λπ.)
Στη σελίδα κοινότητας, μπορείτε να δείτε ότι η MindSpore έχει συνεργάτες εκτός Huawei και Κίνα, όπως το Πανεπιστήμιο του Εδιμβούργου, το Imperial College London, το Πανεπιστήμιο του Munster (Γερμανία) ή το Πανεπιστήμιο Paris-Saclay. Λένε ότι θα ακολουθήσουν ένα μοντέλο ανοιχτής διακυβέρνησης και θα καλέσουν ολόκληρη την κοινότητα να συνεισφέρουν τόσο στον κώδικα όσο και στην τεκμηρίωση.
συμπέρασμα
Μετά από μια γρήγορη πρώτη ματιά, φαίνεται ότι οι σωστές αποφάσεις σχεδιασμού και υλοποίησης (όπως ταυτόχρονη και αυτόματη διαφοροποίηση) μπορούν να προσθέσουν χώρο για βελτιώσεις και βελτιστοποιήσεις που επιτυγχάνουν καλύτερη απόδοση από τα πλαίσια που θέλουν να ξεπεράσουν. Αλλά υπάρχει ακόμη πολλή δουλειά μπροστά για να πιάσουμε τους PyTorch και TensorFlow, και πάνω απ 'όλα να χτίσουμε μια κοινότητα, όχι μόνο! Ωστόσο, όλοι γνωρίζουμε ήδη ότι με την υποστήριξη μιας μεγάλης εταιρείας στον τομέα όπως η Huawei, όλα είναι δυνατά ή ήταν προφανές πριν από τρία χρόνια όταν βγήκε η πρώτη έκδοση του PyTorch (Facebook) ότι θα μπορούσε να είναι κοντά στο τακούνι του TensorFlow (Google);