Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure

Γνωρίζω πολλούς Επιστήμονες Δεδομένων - και μάλλον είμαι ένας από αυτούς ο ίδιος - που εργάζονται σε μηχανές GPU, τοπικές ή εικονικές, που βρίσκονται στο cloud, είτε μέσω ενός Notebook Jupyter είτε μέσω κάποιου είδους περιβάλλοντος ανάπτυξης Python. Δουλεύοντας για 2 χρόνια ως ειδικός προγραμματιστής AI/ML, έκανα ακριβώς αυτό, ενώ ετοίμαζα δεδομένα σε έναν κανονικό διακομιστή ή σταθμό εργασίας και εκτελούσα εκπαίδευση σε μια εικονική μηχανή με GPU στο Azure.

Φυσικά, όλοι έχουμε ακούσει για Azure Machine Learning — μια ειδική πλατφόρμα cloud για μηχανική εκμάθηση. Ωστόσο, μετά από μια πρώτη ματιά στο εισαγωγικά άρθρα, φαίνεται ότι το Azure ML θα σας δημιουργήσει περισσότερα προβλήματα από όσα λύνει. Για παράδειγμα, στο σεμινάριο που αναφέρθηκε παραπάνω, η εκπαίδευση στο Azure ML ξεκινά από ένα σημειωματάριο Jupyter, ενώ το ίδιο το σενάριο εκπαίδευσης προτείνεται να δημιουργηθεί και να επεξεργαστεί ως αρχείο κειμένου σε ένα από τα κελιά - χωρίς να χρησιμοποιείται αυτόματη συμπλήρωση, σύνταξη ανάδειξη και άλλα πλεονεκτήματα ενός κανονικού περιβάλλοντος ανάπτυξης. Για το λόγο αυτό, δεν έχουμε χρησιμοποιήσει σοβαρά το Azure ML στη δουλειά μας εδώ και πολύ καιρό.

Ωστόσο, πρόσφατα ανακάλυψα έναν τρόπο να αρχίσω να χρησιμοποιώ αποτελεσματικά το Azure ML στη δουλειά μου! Ενδιαφέρεστε για τις λεπτομέρειες;

Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure

Το βασικό μυστικό είναι Επέκταση κώδικα Visual Studio για Azure ML. Σας επιτρέπει να αναπτύξετε σενάρια εκπαίδευσης απευθείας στο VS Code, εκμεταλλευόμενοι πλήρως το περιβάλλον - και μπορείτε ακόμη και να εκτελέσετε το σενάριο τοπικά και στη συνέχεια απλά να το στείλετε στην εκπαίδευση σε ένα σύμπλεγμα Azure ML με μερικά κλικ. Βολικό, έτσι δεν είναι;

Με αυτόν τον τρόπο, λαμβάνετε τα ακόλουθα οφέλη από τη χρήση του Azure ML:

  • Μπορείτε να εργάζεστε τις περισσότερες φορές τοπικά στο μηχάνημά σας σε ένα βολικό IDE και χρησιμοποιήστε GPU μόνο για εκπαίδευση μοντέλων. Ταυτόχρονα, η ομάδα πόρων εκπαίδευσης μπορεί να προσαρμοστεί αυτόματα στο απαιτούμενο φορτίο και ορίζοντας τον ελάχιστο αριθμό κόμβων σε 0, μπορείτε να ξεκινήσετε αυτόματα την εικονική μηχανή "κατ' απαίτηση" παρουσία εκπαιδευτικών εργασιών.
  • Μπορείτε να αποθηκεύστε όλα τα μαθησιακά αποτελέσματα σε ένα μέρος, συμπεριλαμβανομένων των επιτευχθέντων μετρήσεων και των μοντέλων που προκύπτουν - δεν χρειάζεται να βρείτε κάποιο είδος συστήματος ή παραγγελίας για την αποθήκευση όλων των αποτελεσμάτων.
  • Σε αυτή την περίπτωση, Πολλά άτομα μπορούν να εργαστούν στο ίδιο έργο - Μπορούν να χρησιμοποιήσουν το ίδιο υπολογιστικό σύμπλεγμα, όλα τα πειράματα θα μπουν στην ουρά και μπορούν επίσης να δουν τα αποτελέσματα των πειραμάτων του άλλου. Ένα τέτοιο σενάριο είναι χρησιμοποιώντας το Azure ML στη διδασκαλία της Deep Learningόταν αντί να δώσετε σε κάθε μαθητή μια εικονική μηχανή με GPU, μπορείτε να δημιουργήσετε ένα σύμπλεγμα που θα χρησιμοποιείται από όλους κεντρικά. Επιπλέον, ένας γενικός πίνακας αποτελεσμάτων με ακρίβεια μοντέλου μπορεί να χρησιμεύσει ως καλό ανταγωνιστικό στοιχείο.
  • Με το Azure ML, μπορείτε εύκολα να πραγματοποιήσετε μια σειρά πειραμάτων, για παράδειγμα, για βελτιστοποίηση υπερπαραμέτρων - αυτό μπορεί να γίνει με μερικές γραμμές κώδικα, δεν χρειάζεται να κάνετε μια σειρά πειραμάτων με το χέρι.

Ελπίζω να σας έπεισα να δοκιμάσετε το Azure ML! Δείτε πώς μπορείτε να ξεκινήσετε:

  • Βεβαιωθείτε ότι έχετε εγκαταστήσει Κώδικας Visual Studio, καθώς και επεκτάσεις Είσοδος Azure и AzureML
  • Κλωνοποιήστε το αποθετήριο https://github.com/CloudAdvocacy/AzureMLStarter - περιέχει κάποιο κωδικό επίδειξης για την εκπαίδευση ενός χειρόγραφου μοντέλου αναγνώρισης ψηφίων στο σύνολο δεδομένων MNIST.
  • Ανοίξτε το κλωνοποιημένο αποθετήριο στο Visual Studio Code.
  • Συνέχισε να διαβάζεις!

Azure ML Workspace και Azure ML Portal

Το Azure ML είναι οργανωμένο γύρω από την ιδέα χώρο εργασίας — χώρος εργασίας. Τα δεδομένα μπορούν να αποθηκευτούν στον χώρο εργασίας, τα πειράματα αποστέλλονται σε αυτόν για εκπαίδευση, τα αποτελέσματα της εκπαίδευσης αποθηκεύονται επίσης εκεί - οι μετρήσεις και τα μοντέλα που προκύπτουν. Μπορείτε να δείτε τι υπάρχει μέσα στον χώρο εργασίας Πύλη Azure ML - και από εκεί μπορείτε να εκτελέσετε πολλές λειτουργίες, που κυμαίνονται από τη φόρτωση δεδομένων έως την παρακολούθηση πειραμάτων και την ανάπτυξη μοντέλων.

Μπορείτε να δημιουργήσετε έναν χώρο εργασίας μέσω της διεπαφής ιστού Πύλη Azure (Βλέπε οδηγίες βήμα προς βήμα), ή χρησιμοποιώντας τη γραμμή εντολών Azure CLI (οδηγίες):

az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazml

Επίσης, σχετίζονται με τον χώρο εργασίας υπολογιστικών πόρων (Υπολογίστε). Αφού δημιουργήσετε ένα σενάριο για να εκπαιδεύσετε το μοντέλο, μπορείτε αποστολή πειράματος για εκτέλεση στον χώρο εργασίας και καθορίστε υπολογισμός στόχου - σε αυτήν την περίπτωση, το σενάριο θα συσκευαστεί, θα εκτελεστεί στο επιθυμητό υπολογιστικό περιβάλλον και, στη συνέχεια, όλα τα αποτελέσματα του πειράματος θα αποθηκευτούν στον χώρο εργασίας για περαιτέρω ανάλυση και χρήση.

Εκμάθηση σεναρίου για το MNIST

Σκεφτείτε το κλασικό πρόβλημα χειρόγραφη αναγνώριση ψηφίων χρησιμοποιώντας το σύνολο δεδομένων MNIST. Ομοίως, στο μέλλον, μπορείτε να εκτελέσετε οποιοδήποτε από τα σενάρια εκπαίδευσης σας.

Υπάρχει ένα σενάριο στο αποθετήριο μας train_local.py, το οποίο εκπαιδεύουμε το απλούστερο μοντέλο γραμμικής παλινδρόμησης χρησιμοποιώντας τη βιβλιοθήκη SkLearn. Φυσικά, καταλαβαίνω ότι αυτός δεν είναι ο καλύτερος τρόπος για να λυθεί το πρόβλημα - τον χρησιμοποιούμε για παράδειγμα, ως τον απλούστερο.

Το σενάριο κατεβάζει πρώτα τα δεδομένα MNIST από το OpenML και στη συνέχεια χρησιμοποιεί την κλάση LogisticRegression για να εκπαιδεύσετε το μοντέλο και, στη συνέχεια, να εκτυπώσετε την ακρίβεια που προκύπτει:

mnist = fetch_openml('mnist_784')
mnist['target'] = np.array([int(x) for x in mnist['target']])

shuffle_index = np.random.permutation(len(mist['data']))
X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index]

X_train, X_test, y_train, y_test = 
  train_test_split(X, y, test_size = 0.3, random_state = 42)

lr = LogisticRegression()
lr.fit(X_train, y_train)
y_hat = lr.predict(X_test)
acc = np.average(np.int32(y_hat == y_test))

print('Overall accuracy:', acc)

Μπορείτε να εκτελέσετε το σενάριο στον υπολογιστή σας και να λάβετε το αποτέλεσμα σε λίγα δευτερόλεπτα.

Εκτελέστε το σενάριο στο Azure ML

Εάν εκτελέσουμε το σενάριο εκπαίδευσης μέσω του Azure ML, θα έχουμε δύο βασικά πλεονεκτήματα:

  • Εκτέλεση εκπαίδευσης σε έναν αυθαίρετο υπολογιστικό πόρο, ο οποίος, κατά κανόνα, είναι πιο παραγωγικός από τον τοπικό υπολογιστή. Ταυτόχρονα, η ίδια η Azure ML θα φροντίσει να συσκευάσει το σενάριό μας με όλα τα αρχεία από τον τρέχοντα κατάλογο σε ένα κοντέινερ docker, να εγκαταστήσει τις απαιτούμενες εξαρτήσεις και να το στείλει για εκτέλεση.
  • Γράψτε αποτελέσματα σε ένα μόνο μητρώο μέσα σε έναν χώρο εργασίας Azure ML. Για να εκμεταλλευτούμε αυτή τη δυνατότητα, πρέπει να προσθέσουμε μερικές γραμμές κώδικα στο σενάριό μας για να καταγράψουμε την ακρίβεια που προκύπτει:

from azureml.core.run import Run
...
try:    
    run = Run.get_submitted_run()
    run.log('accuracy', acc)
except:
    pass

Η αντίστοιχη έκδοση του σεναρίου ονομάζεται train_universal.py (είναι λίγο πιο πονηρό από ότι γράφτηκε παραπάνω, αλλά όχι πολύ). Αυτό το σενάριο μπορεί να εκτελεστεί τόσο τοπικά όσο και σε έναν απομακρυσμένο υπολογιστικό πόρο.

Για να το εκτελέσετε στο Azure ML από το VS Code, πρέπει να κάνετε τα εξής:

  1. Βεβαιωθείτε ότι η επέκταση Azure είναι συνδεδεμένη στη συνδρομή σας. Επιλέξτε το εικονίδιο Azure από το μενού στα αριστερά. Εάν δεν είστε συνδεδεμένοι, θα εμφανιστεί μια ειδοποίηση στην κάτω δεξιά γωνία (σαν αυτό), κάνοντας κλικ στο οποίο μπορείτε να εισέλθετε μέσω του προγράμματος περιήγησης. Μπορείτε επίσης να κάνετε κλικ Ctrl-Shift-P για να καλέσετε τη γραμμή εντολών VS Code και πληκτρολογήστε Είσοδος Azure.

  2. Μετά από αυτό, στην ενότητα Azure (εικονίδιο στα αριστερά), βρείτε την ενότητα ΜΑΘΗΜΑΤΙΚΗ ΜΑΘΗΣΗ:

Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure
Εδώ θα πρέπει να δείτε διαφορετικές ομάδες αντικειμένων εντός του χώρου εργασίας: υπολογιστικούς πόρους, πειράματα κ.λπ.

  1. Μεταβείτε στη λίστα αρχείων, κάντε δεξί κλικ στο σενάριο train_universal.py και επιλέξτε Azure ML: Εκτέλεση ως πείραμα στο Azure.

Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure

  1. Αυτό θα ακολουθηθεί από μια σειρά διαλόγων στην περιοχή της γραμμής εντολών του VS Code: επιβεβαιώστε τη συνδρομή και τον χώρο εργασίας Azure ML που χρησιμοποιείτε και επιλέξτε Δημιουργία νέου πειράματος:

Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure
Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure
Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure

  1. Επιλέξτε να δημιουργήσετε έναν νέο υπολογιστικό πόρο Δημιουργία νέου υπολογισμού:

    • Υπολογίστε καθορίζει τον υπολογιστικό πόρο στον οποίο θα πραγματοποιηθεί η εκπαίδευση. Μπορείτε να επιλέξετε έναν τοπικό υπολογιστή ή ένα σύμπλεγμα cloud AmlCompute. Συνιστώ να δημιουργήσετε ένα κλιμακούμενο σύμπλεγμα μηχανών STANDARD_DS3_v2, με ελάχιστο αριθμό μηχανημάτων 0 (και μέγιστο 1 ή περισσότερα, ανάλογα με τις ορέξεις σας). Αυτό μπορεί να γίνει μέσω της διεπαφής VS Code ή προηγουμένως μέσω Πύλη ML.

    Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure

  2. Στη συνέχεια, πρέπει να επιλέξετε μια διαμόρφωση Υπολογισμός διαμόρφωσης, το οποίο καθορίζει τις παραμέτρους του κοντέινερ που δημιουργήθηκε για εκπαίδευση, ιδίως όλες τις απαραίτητες βιβλιοθήκες. Στην περίπτωσή μας, εφόσον χρησιμοποιούμε το Scikit Learn, επιλέγουμε SkLearn, και στη συνέχεια απλώς επιβεβαιώστε την προτεινόμενη λίστα βιβλιοθηκών πατώντας Enter. Εάν χρησιμοποιείτε πρόσθετες βιβλιοθήκες, πρέπει να προσδιορίζονται εδώ.

    Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure
    Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure

  3. Αυτό θα ανοίξει ένα παράθυρο με ένα αρχείο JSON που περιγράφει το πείραμα. Σε αυτό, μπορείτε να διορθώσετε ορισμένες παραμέτρους - για παράδειγμα, το όνομα του πειράματος. Μετά από αυτό κάντε κλικ στον σύνδεσμο Υποβολή πειράματος ακριβώς μέσα σε αυτό το αρχείο:

Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure

  1. Μετά την επιτυχή υποβολή ενός πειράματος μέσω του VS Code, στη δεξιά πλευρά της περιοχής ειδοποιήσεων, θα δείτε έναν σύνδεσμο προς Πύλη Azure ML, όπου μπορείτε να παρακολουθείτε την κατάσταση και τα αποτελέσματα του πειράματος.

Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure
Στη συνέχεια, μπορείτε πάντα να το βρείτε στην ενότητα Πειράματα Πύλη Azure ML, ή στην ενότητα Azure Machine Learning στη λίστα των πειραμάτων:

Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure

  1. Εάν μετά από αυτό κάνατε κάποιες διορθώσεις στον κώδικα ή αλλάξατε τις παραμέτρους, η επανεκκίνηση του πειράματος θα είναι πολύ πιο γρήγορη και ευκολότερη. Κάνοντας δεξί κλικ σε ένα αρχείο, θα δείτε ένα νέο στοιχείο μενού Επαναλάβετε την τελευταία εκτέλεση - απλώς επιλέξτε το και το πείραμα θα ξεκινήσει αμέσως:

Πώς να ξεπεράσετε τον φόβο και να αρχίσετε να χρησιμοποιείτε τη Μηχανική Εκμάθηση Azure
Μπορείτε πάντα να βρείτε τα αποτελέσματα των μετρήσεων από όλες τις εκκινήσεις στο Azure ML Portal, δεν χρειάζεται να τα καταγράψετε.

Τώρα ξέρετε ότι η εκτέλεση πειραμάτων με το Azure ML είναι απλή και ανώδυνη, και λαμβάνετε μια σειρά από ωραία οφέλη με αυτόν τον τρόπο.

Μπορείτε όμως να δείτε και τα μειονεκτήματα. Για παράδειγμα, χρειάστηκε πολύ περισσότερος χρόνος για την εκτέλεση του σεναρίου. Φυσικά, η συσκευασία του σεναρίου σε ένα κοντέινερ και η ανάπτυξή του στον διακομιστή απαιτεί χρόνο. Εάν ταυτόχρονα το σύμπλεγμα κόπηκε σε μέγεθος 0 κόμβων, θα χρειαστεί ακόμη περισσότερος χρόνος για την εκκίνηση της εικονικής μηχανής και όλα αυτά είναι πολύ αισθητά όταν πειραματιζόμαστε σε απλές εργασίες όπως το MNIST, οι οποίες λύνονται σε λίγα δευτερόλεπτα . Ωστόσο, στην πραγματική ζωή, όταν η προπόνηση διαρκεί αρκετές ώρες, ή ακόμα και ημέρες ή εβδομάδες, αυτός ο επιπλέον χρόνος γίνεται ασήμαντος, ειδικά στο πλαίσιο της πολύ υψηλότερης απόδοσης που μπορεί να προσφέρει ένα υπολογιστικό cluster.

Ποιο είναι το επόμενο;

Ελπίζω ότι αφού διαβάσετε αυτό το άρθρο, μπορείτε και θα χρησιμοποιήσετε το Azure ML στην εργασία σας για να εκτελέσετε σενάρια, να διαχειριστείτε υπολογιστικούς πόρους και να αποθηκεύσετε τα αποτελέσματα κεντρικά. Ωστόσο, το Azure ML μπορεί να σας προσφέρει ακόμη περισσότερα οφέλη!

Μέσα στο χώρο εργασίας, μπορείτε να αποθηκεύσετε δεδομένα, δημιουργώντας έτσι ένα κεντρικό αποθετήριο για όλες τις εργασίες σας, το οποίο είναι εύκολο στην πρόσβαση. Επιπλέον, μπορείτε να εκτελέσετε πειράματα όχι από τον κώδικα του Visual Studio, αλλά χρησιμοποιώντας το API - αυτό μπορεί να είναι ιδιαίτερα χρήσιμο εάν χρειάζεται να εκτελέσετε βελτιστοποίηση υπερπαραμέτρων και πρέπει να εκτελέσετε το σενάριο πολλές φορές με διαφορετικές παραμέτρους. Επιπλέον, ειδική τεχνολογία είναι ενσωματωμένη στο Azure ML Hyperdrive, που σας επιτρέπει να κάνετε πιο δύσκολη αναζήτηση και βελτιστοποίηση υπερπαραμέτρων. Θα μιλήσω για αυτές τις δυνατότητες στην επόμενη ανάρτησή μου.

Χρήσιμοι πόροι

Για να μάθετε περισσότερα σχετικά με το Azure ML, ενδέχεται να σας φανούν χρήσιμα τα ακόλουθα μαθήματα Microsoft Learn:

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο