Εξερευνήστε προηγμένες τεχνικές βελτιστοποίησης υπερπαραμέτρων με το Amazon SageMaker Automatic Model Tuning | Υπηρεσίες Ιστού της Amazon

Εξερευνήστε προηγμένες τεχνικές βελτιστοποίησης υπερπαραμέτρων με το Amazon SageMaker Automatic Model Tuning | Υπηρεσίες Ιστού της Amazon

Η δημιουργία λύσεων μηχανικής μάθησης (ML) υψηλής απόδοσης βασίζεται στην εξερεύνηση και τη βελτιστοποίηση των παραμέτρων εκπαίδευσης, γνωστές και ως υπερπαράμετροι. Οι υπερπαράμετροι είναι τα πόμολα και οι μοχλοί που χρησιμοποιούμε για να προσαρμόσουμε τη διαδικασία εκπαίδευσης, όπως ο ρυθμός εκμάθησης, το μέγεθος παρτίδας, η ισχύς τακτοποίησης και άλλα, ανάλογα με το συγκεκριμένο μοντέλο και εργασία. Η διερεύνηση υπερπαραμέτρων περιλαμβάνει συστηματική μεταβολή των τιμών κάθε παραμέτρου και παρατήρηση του αντίκτυπου στην απόδοση του μοντέλου. Αν και αυτή η διαδικασία απαιτεί πρόσθετες προσπάθειες, τα οφέλη είναι σημαντικά. Η βελτιστοποίηση υπερπαραμέτρων (HPO) μπορεί να οδηγήσει σε ταχύτερους χρόνους εκπαίδευσης, βελτιωμένη ακρίβεια μοντέλου και καλύτερη γενίκευση σε νέα δεδομένα.

Συνεχίζουμε το ταξίδι μας από την ανάρτηση Βελτιστοποιήστε τις υπερπαραμέτρους με το Amazon SageMaker Automatic Model Tuning. Εξερευνήσαμε προηγουμένως μια βελτιστοποίηση μεμονωμένης εργασίας, οπτικοποιήσαμε τα αποτελέσματα για τον ενσωματωμένο αλγόριθμο SageMaker και μάθαμε για τον αντίκτυπο συγκεκριμένων τιμών υπερπαραμέτρων. Εκτός από τη χρήση του HPO ως βελτιστοποίησης μίας χρήσης στο τέλος του κύκλου δημιουργίας μοντέλου, μπορούμε επίσης να το χρησιμοποιήσουμε σε πολλά βήματα με συνομιλητικό τρόπο. Κάθε εργασία συντονισμού μας βοηθά να πλησιάσουμε πιο κοντά σε μια καλή απόδοση, αλλά επιπλέον, μαθαίνουμε επίσης πόσο ευαίσθητο είναι το μοντέλο σε ορισμένες υπερπαραμέτρους και μπορούμε να χρησιμοποιήσουμε αυτήν την κατανόηση για να ενημερώσουμε την επόμενη εργασία συντονισμού. Μπορούμε να αναθεωρήσουμε τις υπερπαραμέτρους και το εύρος τιμών τους με βάση αυτά που μάθαμε και επομένως να μετατρέψουμε αυτήν την προσπάθεια βελτιστοποίησης σε συζήτηση. Και με τον ίδιο τρόπο που εμείς ως επαγγελματίες ML συσσωρεύουμε γνώση σε αυτές τις διαδρομές, Amazon SageMaker Automatic Model Tuning (AMT) με θερμές εκκινήσεις μπορεί να διατηρήσει αυτή τη γνώση που αποκτήθηκε σε προηγούμενες εργασίες συντονισμού και για την επόμενη εργασία συντονισμού.

Σε αυτήν την ανάρτηση, εκτελούμε πολλές εργασίες HPO με έναν προσαρμοσμένο αλγόριθμο εκπαίδευσης και διαφορετικές στρατηγικές HPO, όπως η Bayesian βελτιστοποίηση και η τυχαία αναζήτηση. Βάζουμε επίσης τις θερμές εκκινήσεις σε δράση και συγκρίνουμε οπτικά τις δοκιμές μας για να βελτιώσουμε την υπερπαραμετρική εξερεύνηση του διαστήματος.

Προηγμένες έννοιες του SageMaker AMT

Στις επόμενες ενότητες, ρίχνουμε μια πιο προσεκτική ματιά σε καθένα από τα παρακάτω θέματα και δείχνουμε πώς το SageMaker AMT μπορεί να σας βοηθήσει να τα εφαρμόσετε στα έργα σας ML:

  • Χρησιμοποιήστε προσαρμοσμένο κώδικα εκπαίδευσης και το δημοφιλές πλαίσιο ML Scikit-learn στο SageMaker Training
  • Καθορίστε προσαρμοσμένες μετρήσεις αξιολόγησης με βάση τα αρχεία καταγραφής για αξιολόγηση και βελτιστοποίηση
  • Εκτελέστε HPO χρησιμοποιώντας μια κατάλληλη στρατηγική
  • Χρησιμοποιήστε θερμές εκκινήσεις για να μετατρέψετε μια μεμονωμένη αναζήτηση υπερπαραμέτρων σε διάλογο με το μοντέλο μας
  • Χρησιμοποιήστε προηγμένες τεχνικές οπτικοποίησης χρησιμοποιώντας τη βιβλιοθήκη λύσεων μας για να συγκρίνετε δύο στρατηγικές HPO και να ρυθμίσετε τα αποτελέσματα εργασιών

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

Σε αυτήν την ανάρτηση, απομακρυνόμαστε από έναν ενσωματωμένο αλγόριθμο του SageMaker και χρησιμοποιούμε προσαρμοσμένο κώδικα. Χρησιμοποιούμε ένα τυχαίο δάσος από SkLearn. Αλλά παραμένουμε στην ίδια εργασία και σύνολο δεδομένων ML όπως και στο δικό μας πρώτη θέση, το οποίο ανιχνεύει χειρόγραφα ψηφία. Καλύπτουμε το περιεχόμενο του σημειωματάριου Jupyter 2_advanced_tuning_with_custom_training_and_visualizing.ipynb και σας προσκαλούν να επικαλεστείτε τον κώδικα δίπλα-δίπλα για να διαβάσετε περαιτέρω.

Ας βουτήξουμε βαθύτερα και ας ανακαλύψουμε πώς μπορούμε να χρησιμοποιήσουμε προσαρμοσμένο κώδικα εκπαίδευσης, να τον αναπτύξουμε και να τον εκτελέσουμε, ενώ εξερευνούμε τον χώρο αναζήτησης υπερπαραμέτρων για να βελτιστοποιήσουμε τα αποτελέσματά μας.

Πώς να δημιουργήσετε ένα μοντέλο ML και να εκτελέσετε βελτιστοποίηση υπερπαραμέτρων

Πώς μοιάζει μια τυπική διαδικασία για την κατασκευή μιας λύσης ML; Αν και υπάρχουν πολλές πιθανές περιπτώσεις χρήσης και μια μεγάλη ποικιλία εργασιών ML εκεί έξω, προτείνουμε το ακόλουθο νοητικό μοντέλο για μια σταδιακή προσέγγιση:

  1. Κατανοήστε το σενάριο ML που έχετε στο χέρι και επιλέξτε έναν αλγόριθμο με βάση τις απαιτήσεις. Για παράδειγμα, μπορεί να θέλετε να λύσετε μια εργασία αναγνώρισης εικόνας χρησιμοποιώντας έναν εποπτευόμενο αλγόριθμο εκμάθησης. Σε αυτήν την ανάρτηση, συνεχίζουμε να χρησιμοποιούμε το χειρόγραφο σενάριο αναγνώρισης εικόνας και το ίδιο σύνολο δεδομένων όπως στην πρώτη μας ανάρτηση.
  2. Αποφασίστε ποια εφαρμογή του αλγορίθμου στο SageMaker Training θέλετε να χρησιμοποιήσετε. Υπάρχουν διάφορες επιλογές, μέσα στο SageMaker ή εξωτερικές. Επιπλέον, πρέπει να ορίσετε ποια υποκείμενη μέτρηση ταιριάζει καλύτερα στην εργασία σας και για την οποία θέλετε να βελτιστοποιήσετε (όπως ακρίβεια, βαθμολογία F1 ή ROC). Το SageMaker υποστηρίζει τέσσερις επιλογές ανάλογα με τις ανάγκες και τους πόρους σας:
    • Χρησιμοποιήστε ένα προεκπαιδευμένο μοντέλο μέσω Amazon SageMaker JumpStart, το οποίο μπορείτε να χρησιμοποιήσετε εκτός συσκευασίας ή απλώς να το ρυθμίσετε με ακρίβεια.
    • Χρησιμοποιήστε έναν από τους ενσωματωμένους αλγόριθμους για εκπαίδευση και συντονισμό, όπως το XGBoost, όπως κάναμε στην προηγούμενη ανάρτησή μας.
    • Εκπαιδεύστε και συντονίστε ένα προσαρμοσμένο μοντέλο που βασίζεται σε ένα από τα κύρια πλαίσια όπως το Scikit-learn, το TensorFlow ή το PyTorch. Το AWS παρέχει μια επιλογή προκατασκευασμένων εικόνων Docker για αυτόν τον σκοπό. Για αυτήν την ανάρτηση, χρησιμοποιούμε αυτήν την επιλογή, η οποία σας επιτρέπει να πειραματιστείτε γρήγορα εκτελώντας τον δικό σας κώδικα πάνω από μια προκατασκευασμένη εικόνα κοντέινερ.
    • Φέρτε τη δική σας προσαρμοσμένη εικόνα Docker σε περίπτωση που θέλετε να χρησιμοποιήσετε ένα πλαίσιο ή λογισμικό που δεν υποστηρίζεται διαφορετικά. Αυτή η επιλογή απαιτεί τη μεγαλύτερη προσπάθεια, αλλά παρέχει επίσης τον υψηλότερο βαθμό ευελιξίας και ελέγχου.
  3. Εκπαιδεύστε το μοντέλο με τα δεδομένα σας. Ανάλογα με την εφαρμογή του αλγορίθμου από το προηγούμενο βήμα, αυτό μπορεί να είναι τόσο απλό όσο η αναφορά των δεδομένων εκπαίδευσης και η εκτέλεση της εργασίας εκπαίδευσης ή με την παροχή επιπλέον προσαρμοσμένου κώδικα για εκπαίδευση. Στην περίπτωσή μας, χρησιμοποιούμε κάποιο προσαρμοσμένο κώδικα εκπαίδευσης στην Python που βασίζεται στο Scikit-learn.
  4. Εφαρμόστε βελτιστοποίηση υπερπαραμέτρων (ως «συνομιλία» με το μοντέλο ML σας). Μετά την εκπαίδευση, συνήθως θέλετε να βελτιστοποιήσετε την απόδοση του μοντέλου σας βρίσκοντας τον πιο πολλά υποσχόμενο συνδυασμό τιμών για τις υπερπαραμέτρους του αλγορίθμου σας.

Ανάλογα με τον αλγόριθμο ML και το μέγεθος του μοντέλου σας, το τελευταίο βήμα βελτιστοποίησης υπερπαραμέτρων μπορεί να αποδειχθεί μεγαλύτερη πρόκληση από την αναμενόμενη. Οι ακόλουθες ερωτήσεις είναι τυπικές για τους επαγγελματίες ML σε αυτό το στάδιο και μπορεί να σας φανούν γνωστές:

  • Τι είδους υπερπαράμετροι έχουν αντίκτυπο στο πρόβλημα ML μου;
  • Πώς μπορώ να αναζητήσω αποτελεσματικά έναν τεράστιο χώρο υπερπαραμέτρων για να βρω αυτές τις τιμές με την καλύτερη απόδοση;
  • Πώς επηρεάζει ο συνδυασμός ορισμένων τιμών υπερπαραμέτρων τη μέτρηση απόδοσής μου;
  • Το κόστος έχει σημασία. πώς μπορώ να χρησιμοποιήσω τους πόρους μου με αποτελεσματικό τρόπο;
  • Τι είδους πειράματα συντονισμού αξίζουν και πώς μπορώ να τα συγκρίνω;

Δεν είναι εύκολο να απαντήσετε σε αυτές τις ερωτήσεις, αλλά υπάρχουν καλά νέα. Το SageMaker AMT παίρνει τα βαριά από εσάς και σας επιτρέπει να επικεντρωθείτε στην επιλογή της σωστής στρατηγικής HPO και τιμών τιμών που θέλετε να εξερευνήσετε. Επιπλέον, η λύση οπτικοποίησης μας διευκολύνει την επαναληπτική ανάλυση και τη διαδικασία πειραματισμού για την αποτελεσματική εύρεση τιμών υπερπαραμέτρων με καλή απόδοση.

Στις επόμενες ενότητες, κατασκευάζουμε ένα μοντέλο αναγνώρισης ψηφίων από την αρχή χρησιμοποιώντας το Scikit-learn και δείχνουμε όλες αυτές τις έννοιες σε δράση.

Επισκόπηση λύσεων

Το SageMaker προσφέρει μερικές πολύ χρήσιμες λειτουργίες για την εκπαίδευση, την αξιολόγηση και τον συντονισμό του μοντέλου μας. Καλύπτει όλες τις λειτουργίες ενός κύκλου ζωής ML από άκρο σε άκρο, επομένως δεν χρειάζεται καν να αφήσουμε το σημειωματάριό μας Jupyter.

Στην πρώτη μας ανάρτηση, χρησιμοποιήσαμε τον ενσωματωμένο αλγόριθμο SageMaker XGBoost. Για λόγους επίδειξης, αυτή τη φορά μεταβαίνουμε σε έναν ταξινομητή Random Forest επειδή μπορούμε στη συνέχεια να δείξουμε πώς να παρέχετε τον δικό σας κώδικα εκπαίδευσης. Επιλέξαμε να παρέχουμε το δικό μας σενάριο Python και να χρησιμοποιήσουμε το Scikit-learn ως πλαίσιο. Τώρα, πώς εκφράζουμε ότι θέλουμε να χρησιμοποιήσουμε ένα συγκεκριμένο πλαίσιο ML; Όπως θα δούμε, το SageMaker χρησιμοποιεί μια άλλη υπηρεσία AWS στο παρασκήνιο για να ανακτήσει μια προκατασκευασμένη εικόνα κοντέινερ Docker για εκπαίδευση—Μητρώο εμπορευματοκιβωτίων Amazon Elastic (ECR Amazon).

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

  1. Πρώτα, φορτώστε και προετοιμάστε τα δεδομένα. Χρησιμοποιούμε Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3) για να ανεβάσετε ένα αρχείο που περιέχει τα χειρόγραφα ψηφία μας.
  2. Στη συνέχεια, προετοιμάστε το σενάριο εκπαίδευσης και τις εξαρτήσεις πλαισίου. Παρέχουμε τον προσαρμοσμένο κώδικα εκπαίδευσης στην Python, παραπέμπουμε σε ορισμένες εξαρτημένες βιβλιοθήκες και κάνουμε μια δοκιμαστική εκτέλεση.
  3. Για να ορίσουμε τις μετρήσεις προσαρμοσμένου στόχου, το SageMaker μας επιτρέπει να ορίσουμε μια τυπική έκφραση για να εξαγάγουμε τις μετρήσεις που χρειαζόμαστε από τα αρχεία καταγραφής κοντέινερ.
  4. Εκπαιδεύστε το μοντέλο χρησιμοποιώντας το πλαίσιο scikit-learn. Αναφέροντας μια προκατασκευασμένη εικόνα κοντέινερ, δημιουργούμε ένα αντίστοιχο αντικείμενο Εκτιμητή και περνάμε το προσαρμοσμένο σενάριο εκπαίδευσης.
  5. Το AMT μας δίνει τη δυνατότητα να δοκιμάσουμε διάφορες στρατηγικές HPO. Επικεντρωνόμαστε σε δύο από αυτές για αυτήν την ανάρτηση: τυχαία αναζήτηση και αναζήτηση Bayesian.
  6. Επιλέξτε μεταξύ των στρατηγικών SageMaker HPO.
  7. Οραματιστείτε, αναλύστε και συγκρίνετε τα αποτελέσματα συντονισμού. Το πακέτο οπτικοποίησης μας επιτρέπει να ανακαλύψουμε ποια στρατηγική έχει καλύτερη απόδοση και ποιες τιμές υπερπαραμέτρων παρέχουν την καλύτερη απόδοση με βάση τις μετρήσεις μας.
  8. Συνεχίστε την εξερεύνηση του χώρου υπερπαραμέτρων και ξεκινήστε θερμά τις εργασίες HPO.

Η AMT φροντίζει για την κλιμάκωση και τη διαχείριση της υποκείμενης υπολογιστικής υποδομής για την εκτέλεση των διαφόρων εργασιών συντονισμού σε Amazon Elastic Compute Cloud (Amazon EC2) περιπτώσεις. Με αυτόν τον τρόπο, δεν χρειάζεται να επιβαρύνεστε με περιπτώσεις παροχής, να χειρίζεστε προβλήματα λειτουργικού συστήματος και υλικού ή να συγκεντρώνετε αρχεία καταγραφής μόνοι σας. Η εικόνα του πλαισίου ML ανακτάται από το Amazon ECR και τα τεχνουργήματα του μοντέλου, συμπεριλαμβανομένων των αποτελεσμάτων συντονισμού, αποθηκεύονται στο Amazon S3. Όλα τα αρχεία καταγραφής και οι μετρήσεις συλλέγονται στο amazoncloudwatch για εύκολη πρόσβαση και περαιτέρω ανάλυση εάν χρειάζεται.

Προϋποθέσεις

Επειδή πρόκειται για συνέχεια μιας σειράς, συνιστάται, αλλά όχι απαραίτητα, η ανάγνωση η πρώτη μας ανάρτηση σχετικά με το SageMaker AMT και το HPO. Εκτός από αυτό, η βασική εξοικείωση με τις έννοιες ML και τον προγραμματισμό Python είναι χρήσιμη. Συνιστούμε επίσης να ακολουθήσετε κάθε βήμα στο συνοδευτικό σημειωματάριο από το αποθετήριο του GitHub κατά την ανάγνωση αυτής της ανάρτησης. Το σημειωματάριο μπορεί να εκτελεστεί ανεξάρτητα από το πρώτο, αλλά χρειάζεται κάποιο κώδικα από υποφακέλους. Βεβαιωθείτε ότι έχετε κλωνοποιήσει το πλήρες αποθετήριο στο περιβάλλον σας, όπως περιγράφεται στο αρχείο README.

Ο πειραματισμός με τον κώδικα και η χρήση των επιλογών διαδραστικής απεικόνισης βελτιώνει σημαντικά την μαθησιακή σας εμπειρία. Λοιπόν, ελέγξτε το.

Φορτώστε και προετοιμάστε τα δεδομένα

Ως πρώτο βήμα, φροντίζουμε να έχετε κατεβάσει ψηφιακά δεδομένα που χρειαζόμαστε για εκπαίδευση είναι προσβάσιμη στο SageMaker. Το Amazon S3 μας επιτρέπει να το κάνουμε αυτό με ασφαλή και επεκτάσιμο τρόπο. Ανατρέξτε στο σημειωματάριο για τον πλήρη πηγαίο κώδικα και μη διστάσετε να τον προσαρμόσετε με τα δικά σας δεδομένα.

sm_sess = sagemaker.session.Session(boto_session=boto_sess, sagemaker_client=sm)
BUCKET = sm_sess.default_bucket()
PREFIX = 'amt-visualize-demo'
s3_data_url = f's3://{BUCKET}/{PREFIX}/data'
digits = datasets.load_digits()
digits_df = pd.DataFrame(digits.data)
digits_df['y'] = digits.target
digits_df.to_csv('data/digits.csv', index=False)
!aws s3 sync data/ {s3_data_url} —exclude '*' —include 'digits.csv'

Η digits.csv Το αρχείο περιέχει δεδομένα χαρακτηριστικών και ετικέτες. Κάθε ψηφίο αντιπροσωπεύεται από τιμές pixel σε μια εικόνα 8×8, όπως απεικονίζεται στην παρακάτω εικόνα για το ψηφίο 4.
Σύνολο δεδομένων ψηφίων από το Scikit-learn

Προετοιμάστε το σενάριο εκπαίδευσης και τις εξαρτήσεις πλαισίου

Τώρα που τα δεδομένα αποθηκεύονται στον κάδο S3, μπορούμε να ορίσουμε το προσαρμοσμένο σενάριο εκπαίδευσης με βάση Scikit-μάθετε στην Python. Το SageMaker μας δίνει την επιλογή να αναφέρουμε απλώς το αρχείο Python αργότερα για εκπαίδευση. Οποιεσδήποτε εξαρτήσεις όπως οι βιβλιοθήκες Scikit-learn ή pandas μπορούν να παρέχονται με δύο τρόπους:

  • Μπορούν να προσδιορίζονται ρητά στο α requirements.txt φιλέτο
  • Είναι προεγκατεστημένα στην υποκείμενη εικόνα κοντέινερ ML, η οποία παρέχεται είτε από το SageMaker είτε προσαρμοσμένη

Και οι δύο επιλογές θεωρούνται γενικά τυπικοί τρόποι διαχείρισης εξαρτήσεων, επομένως μπορεί να είστε ήδη εξοικειωμένοι με αυτό. Υποστηρίζει το SageMaker μια ποικιλία πλαισίων ML σε ένα διαχειριζόμενο περιβάλλον έτοιμο προς χρήση. Αυτό περιλαμβάνει πολλά από τα πιο δημοφιλή πλαίσια επιστήμης δεδομένων και ML όπως τα PyTorch, TensorFlow ή Scikit-learn, όπως στην περίπτωσή μας. Δεν χρησιμοποιούμε επιπλέον requirements.txt αρχείο, αλλά μη διστάσετε να προσθέσετε μερικές βιβλιοθήκες για να το δοκιμάσετε.

Ο κώδικας της εφαρμογής μας περιέχει μια μέθοδο που ονομάζεται fit(), το οποίο δημιουργεί έναν νέο ταξινομητή για την εργασία αναγνώρισης ψηφίων και τον εκπαιδεύει. Σε αντίθεση με την πρώτη μας ανάρτηση όπου χρησιμοποιήσαμε τον ενσωματωμένο αλγόριθμο XGBoost SageMaker, τώρα χρησιμοποιούμε ένα RandomForestClassifier παρέχεται από τη βιβλιοθήκη ML sklearn. Το κάλεσμα των fit() Η μέθοδος στο αντικείμενο ταξινομητή ξεκινά τη διαδικασία εκπαίδευσης χρησιμοποιώντας ένα υποσύνολο (80%) των δεδομένων CSV μας:

def fit(train_dir, n_estimators, max_depth, min_samples_leaf, max_features, min_weight_fraction_leaf): digits = pd.read_csv(Path(train_dir)/'digits.csv') Xtrain, Xtest, ytrain, ytest = train_test_split(digits.iloc[:, :-1], digits.iloc[:, -1], test_size=.2) m = RandomForestClassifier(n_estimators=n_estimators, max_depth=max_depth, min_samples_leaf=min_samples_leaf, max_features=max_features, min_weight_fraction_leaf=min_weight_fraction_leaf) m.fit(Xtrain, ytrain) predicted = m.predict(Xtest) pre, rec, f1, _ = precision_recall_fscore_support(ytest, predicted, pos_label=1, average='weighted') print(f'pre: {pre:5.3f} rec: {rec:5.3f} f1: {f1:5.3}') return m

Δείτε το πλήρες σενάριο στο σημειωματάριό μας Jupyter στο GitHub.

Πριν περιστρέψετε πόρους κοντέινερ για την πλήρη διαδικασία εκπαίδευσης, προσπαθήσατε να εκτελέσετε απευθείας το σενάριο; Αυτή είναι μια καλή πρακτική για να διασφαλίσετε γρήγορα ότι ο κώδικας δεν έχει συντακτικά σφάλματα, να ελέγξετε για αντιστοίχιση διαστάσεων των δομών δεδομένων σας και ορισμένα άλλα σφάλματα από νωρίς.

Υπάρχουν δύο τρόποι για να εκτελέσετε τον κώδικά σας τοπικά. Αρχικά, μπορείτε να το εκτελέσετε αμέσως στο σημειωματάριο, το οποίο σας επιτρέπει επίσης να χρησιμοποιήσετε το Python Debugger pdb:

# Running the code from within the notebook. It would then be possible to use the Python Debugger, pdb.
from train import fit
fit('data', 100, 10, 1, 'auto', 0.01)

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

!cd src && python train.py --train ../data/ --model-dir /tmp/ --n-estimators 100

Ως έξοδο, μπορείτε να δείτε τα πρώτα αποτελέσματα για την απόδοση του μοντέλου με βάση την ακρίβεια των αντικειμενικών μετρήσεων, την ανάκληση και τη βαθμολογία F1. Για παράδειγμα, pre: 0.970 rec: 0.969 f1: 0.969.

Δεν είναι κακό για μια τόσο γρήγορη προπόνηση. Αλλά από πού προήλθαν αυτοί οι αριθμοί και τι κάνουμε με αυτούς;

Καθορίστε προσαρμοσμένες αντικειμενικές μετρήσεις

Θυμηθείτε, στόχος μας είναι να εκπαιδεύσουμε πλήρως και να συντονίσουμε το μοντέλο μας με βάση τις αντικειμενικές μετρήσεις που θεωρούμε σχετικές για την εργασία μας. Επειδή χρησιμοποιούμε ένα προσαρμοσμένο σενάριο εκπαίδευσης, πρέπει να ορίσουμε ρητά αυτές τις μετρήσεις για το SageMaker.

Το σενάριό μας εκπέμπει την ακρίβεια μετρήσεων, την ανάκληση και το σκορ F1 κατά τη διάρκεια της προπόνησης απλά χρησιμοποιώντας το print λειτουργία:

print(f'pre: {pre:5.3f} rec: {rec:5.3f} f1: {f1:5.3}')

Η τυπική έξοδος καταγράφεται από το SageMaker και αποστέλλεται στο CloudWatch ως ροή καταγραφής. Για να ανακτήσουμε τις τιμές μετρήσεων και να εργαστούμε με αυτές αργότερα στο SageMaker AMT, πρέπει να παρέχουμε ορισμένες πληροφορίες σχετικά με τον τρόπο ανάλυσης αυτής της εξόδου. Μπορούμε να το πετύχουμε αυτό ορίζοντας δηλώσεις κανονικών εκφράσεων (για περισσότερες πληροφορίες, ανατρέξτε στο Παρακολούθηση και ανάλυση εργασιών εκπαίδευσης χρησιμοποιώντας μετρήσεις Amazon CloudWatch):

metric_definitions = [ {'Name': 'valid-precision', 'Regex': r'pre:s+(-?[0-9.]+)'}, {'Name': 'valid-recall', 'Regex': r'rec:s+(-?[0-9.]+)'}, {'Name': 'valid-f1', 'Regex': r'f1:s+(-?[0-9.]+)'}] 

Ας δούμε μαζί τον πρώτο ορισμό της μέτρησης στον προηγούμενο κώδικα. Το SageMaker θα αναζητήσει έξοδο στο αρχείο καταγραφής με το οποίο ξεκινά pre: και ακολουθείται από ένα ή περισσότερα κενά και μετά έναν αριθμό που θέλουμε να εξαγάγουμε, γι' αυτό χρησιμοποιούμε τη στρογγυλή παρένθεση. Κάθε φορά που το SageMaker βρίσκει μια τέτοια τιμή, τη μετατρέπει σε μέτρηση CloudWatch με το όνομα valid-precision.

Εκπαιδεύστε το μοντέλο χρησιμοποιώντας το πλαίσιο Scikit-learn

Αφού δημιουργήσουμε το προπονητικό μας σενάριο train.py και δίνουμε οδηγίες στο SageMaker για τον τρόπο παρακολούθησης των μετρήσεων στο CloudWatch, ορίζουμε α Εκτιμητής SageMaker αντικείμενο. Ξεκινά την εργασία εκπαίδευσης και χρησιμοποιεί τον τύπο παρουσίας που καθορίζουμε. Αλλά πώς μπορεί αυτός ο τύπος παρουσίας να είναι διαφορετικός από αυτόν που εκτελείτε Στούντιο Amazon SageMaker σημειωματάριο και γιατί; Το SageMaker Studio εκτελεί τις εργασίες εκπαίδευσης (και εξαγωγής συμπερασμάτων) σε ξεχωριστές περιπτώσεις υπολογισμού από το σημειωματάριό σας. Αυτό σας επιτρέπει να συνεχίσετε να εργάζεστε στο σημειωματάριό σας ενώ οι εργασίες εκτελούνται στο παρασκήνιο.

Η παράμετρος framework_version αναφέρεται στην έκδοση Scikit-learn που χρησιμοποιούμε για την εκπαιδευτική μας εργασία. Εναλλακτικά, μπορούμε να περάσουμε image_uri στο estimator. Μπορείτε να ελέγξετε εάν το αγαπημένο σας πλαίσιο ή η βιβλιοθήκη ML είναι διαθέσιμη ως α προ-ενσωματωμένη εικόνα SageMaker Docker και χρησιμοποιήστε το ως έχει ή με προεκτάσεις.

Επιπλέον, μπορούμε να εκτελέσουμε εργασίες εκπαίδευσης SageMaker σε EC2 Spot Instances με ρύθμιση use_spot_instances προς την True. Είναι περιπτώσεις πλεονάζουσας χωρητικότητας που μπορούν εξοικονομήστε έως και 90% του κόστους. Αυτές οι περιπτώσεις παρέχουν ευελιξία σχετικά με το πότε εκτελούνται οι εργασίες κατάρτισης.

estimator = SKLearn( 'train.py', source_dir='src', role=get_execution_role(), instance_type= 'ml.m5.large', instance_count=1, framework_version='0.23-1', metric_definitions=metric_definitions, # Uncomment the following three lines to use Managed Spot Training # use_spot_instances= True, # max_run= 60 * 60 * 24, # max_wait= 60 * 60 * 24, hyperparameters = {'n-estimators': 100, 'max-depth': 10, 'min-samples-leaf': 1, 'max-features': 'auto', 'min-weight-fraction-leaf': 0.1}
)

Αφού ρυθμιστεί το αντικείμενο Εκτιμητής, ξεκινάμε την εκπαίδευση καλώντας το fit() λειτουργία, παρέχοντας τη διαδρομή προς το σύνολο δεδομένων εκπαίδευσης στο Amazon S3. Μπορούμε να χρησιμοποιήσουμε την ίδια μέθοδο για να παρέχουμε δεδομένα επικύρωσης και δοκιμής. Ρυθμίσαμε το wait παράμετρος για την True ώστε να μπορούμε να χρησιμοποιήσουμε το εκπαιδευμένο μοντέλο στα επόμενα κελιά κώδικα.

estimator.fit({'train': s3_data_url}, wait=True)

Ορισμός υπερπαραμέτρων και εκτέλεση εργασιών συντονισμού

Μέχρι στιγμής, έχουμε εκπαιδεύσει το μοντέλο με ένα σύνολο τιμών υπερπαραμέτρων. Ήταν όμως καλές αυτές οι αξίες; Ή θα μπορούσαμε να ψάξουμε για καλύτερα; Ας χρησιμοποιήσουμε το Κλάση HyperparameterTuner για να εκτελέσετε μια συστηματική αναζήτηση στο χώρο των υπερπαραμέτρων. Πώς αναζητούμε αυτόν τον χώρο με το tuner; Οι απαραίτητες παράμετροι είναι το όνομα της μέτρησης του αντικειμενικού και ο τύπος του στόχου που θα καθοδηγήσουν τη βελτιστοποίηση. Η στρατηγική βελτιστοποίησης είναι ένα άλλο βασικό επιχείρημα για τον δέκτη επειδή καθορίζει περαιτέρω τον χώρο αναζήτησης. Ακολουθούν τέσσερις διαφορετικές στρατηγικές για να διαλέξετε:

  • Αναζήτηση πλέγματος
  • Τυχαία αναζήτηση
  • Βελτιστοποίηση Bayesian (προεπιλογή)
  • Υπερζώνη

Περιγράφουμε περαιτέρω αυτές τις στρατηγικές και σας εξοπλίζουμε με κάποιες οδηγίες για να επιλέξετε μία αργότερα σε αυτήν την ανάρτηση.

Πριν ορίσουμε και εκτελέσουμε το αντικείμενο του δέκτη μας, ας ανακεφαλαιώσουμε την κατανόησή μας από την άποψη της αρχιτεκτονικής. Καλύψαμε την αρχιτεκτονική επισκόπηση του SageMaker AMT στο η τελευταία μας ανάρτηση και αναπαράγετε ένα απόσπασμά του εδώ για ευκολία.

Αρχιτεκτονική αυτόματης ρύθμισης μοντέλων Amazon SageMaker

Μπορούμε να επιλέξουμε ποιες υπερπαράμετροι θέλουμε να συντονίσουμε ή να αφήσουμε στατικές. Για δυναμικές υπερπαραμέτρους, παρέχουμε hyperparameter_ranges που μπορεί να χρησιμοποιηθεί για τη βελτιστοποίηση για συντονίσιμες υπερπαραμέτρους. Επειδή χρησιμοποιούμε έναν ταξινομητή Random Forest, χρησιμοποιήσαμε τις υπερπαραμέτρους από το Τεκμηρίωση Random Forest που μαθαίνει Scikit.

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

tuner_parameters = { 'estimator': estimator, 'base_tuning_job_name': 'random', 'metric_definitions': metric_definitions, 'objective_metric_name': 'valid-f1', 'objective_type': 'Maximize', 'hyperparameter_ranges': hpt_ranges, 'strategy': 'Random', 'max_jobs': n, # 50 'max_parallel_jobs': k # 2 } 

Παρόμοια με του Εκτιμητή fit λειτουργία, ξεκινάμε μια εργασία συντονισμού καλώντας τον δέκτη fit:

random_tuner = HyperparameterTuner(**tuner_parameters)
random_tuner.fit({'train': s3_data_url}, wait=False)

Αυτό είναι το μόνο που πρέπει να κάνουμε για να επιτρέψουμε στο SageMaker να εκτελέσει τις εργασίες εκπαίδευσης (n=50) στο παρασκήνιο, το καθένα χρησιμοποιώντας διαφορετικό σύνολο υπερπαραμέτρων. Εξετάζουμε τα αποτελέσματα αργότερα σε αυτήν την ανάρτηση. Αλλά πριν από αυτό, ας ξεκινήσουμε μια άλλη εργασία συντονισμού, αυτή τη φορά εφαρμόζοντας τη στρατηγική βελτιστοποίησης Bayes. Θα συγκρίνουμε οπτικά και τις δύο στρατηγικές μετά την ολοκλήρωσή τους.

tuner_parameters['strategy'] = 'Bayesian'
tuner_parameters['base_tuning_job_name'] = 'bayesian'
bayesian_tuner = HyperparameterTuner(**tuner_parameters)
bayesian_tuner.fit({'train': s3_data_url}, wait=False)

Σημειώστε ότι και οι δύο εργασίες δέκτη μπορούν να εκτελούνται παράλληλα επειδή το SageMaker ενορχηστρώνει τις απαιτούμενες περιπτώσεις υπολογισμού ανεξάρτητα η μία από την άλλη. Αυτό είναι πολύ χρήσιμο για τους επαγγελματίες που πειραματίζονται με διαφορετικές προσεγγίσεις ταυτόχρονα, όπως κάνουμε εμείς εδώ.

Επιλέξτε μεταξύ των στρατηγικών SageMaker HPO

Όσον αφορά τις στρατηγικές συντονισμού, έχετε μερικές επιλογές με το SageMaker AMT: αναζήτηση πλέγματος, τυχαία αναζήτηση, βελτιστοποίηση Bayes και Hyperband. Αυτές οι στρατηγικές καθορίζουν τον τρόπο με τον οποίο οι αλγόριθμοι αυτόματου συντονισμού εξερευνούν τις καθορισμένες περιοχές υπερπαραμέτρων.

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

Η Bayesian βελτιστοποίηση ακολουθεί διαφορετική προσέγγιση από την τυχαία αναζήτηση. Λαμβάνει υπόψη το ιστορικό προηγούμενων επιλογών και επιλέγει τιμές που είναι πιθανό να αποδώσουν τα καλύτερα αποτελέσματα. Εάν θέλετε να μάθετε από προηγούμενες εξερευνήσεις, μπορείτε να το πετύχετε αυτό μόνο με την εκτέλεση μιας νέας εργασίας συντονισμού μετά τις προηγούμενες. Λογικό, σωστά; Με αυτόν τον τρόπο, η Bayesian βελτιστοποίηση εξαρτάται από τις προηγούμενες εκτελέσεις. Αλλά βλέπετε ποια στρατηγική HPO επιτρέπει υψηλότερο παραλληλισμό;

Υπερζώνη είναι ενδιαφέρον! Χρησιμοποιεί μια στρατηγική πολλαπλής πιστότητας, που σημαίνει ότι κατανέμει δυναμικά πόρους στις πιο υποσχόμενες εργασίες κατάρτισης και σταματά εκείνες που παρουσιάζουν χαμηλή απόδοση. Επομένως, η Hyperband είναι υπολογιστικά αποδοτική με πόρους, μαθαίνοντας από προηγούμενες εργασίες κατάρτισης. Μετά τη διακοπή των διαμορφώσεων με χαμηλή απόδοση, ξεκινά μια νέα διαμόρφωση και οι τιμές της επιλέγονται τυχαία.

Ανάλογα με τις ανάγκες σας και τη φύση του μοντέλου σας, μπορείτε να επιλέξετε μεταξύ τυχαίας αναζήτησης, Bayesian βελτιστοποίησης ή Hyperband ως στρατηγική συντονισμού. Το καθένα έχει τη δική του προσέγγιση και τα πλεονεκτήματά του, επομένως είναι σημαντικό να εξετάσετε ποια λειτουργεί καλύτερα για την εξερεύνηση ML. Τα καλά νέα για τους επαγγελματίες ML είναι ότι μπορείτε να επιλέξετε την καλύτερη στρατηγική HPO συγκρίνοντας οπτικά τον αντίκτυπο κάθε δοκιμής στην αντικειμενική μέτρηση. Στην επόμενη ενότητα, βλέπουμε πώς να προσδιορίσουμε οπτικά τον αντίκτυπο διαφορετικών στρατηγικών.

Οραματιστείτε, αναλύστε και συγκρίνετε τα αποτελέσματα συντονισμού

Όταν ολοκληρωθούν οι εργασίες συντονισμού μας, γίνεται συναρπαστικό. Τι αποτελέσματα δίνουν; Τι είδους ώθηση μπορείτε να περιμένετε στη μέτρησή μας σε σύγκριση με το βασικό σας μοντέλο; Ποιες είναι οι υπερπαράμετροι με την καλύτερη απόδοση για την περίπτωση χρήσης μας;

Ένας γρήγορος και απλός τρόπος για να δείτε τα αποτελέσματα HPO είναι να επισκεφτείτε την κονσόλα SageMaker. Κάτω από Εργασίες συντονισμού υπερπαραμέτρων, μπορούμε να δούμε (ανά εργασία συντονισμού) τον συνδυασμό τιμών υπερπαραμέτρων που έχουν δοκιμαστεί και έχουν αποδώσει την καλύτερη απόδοση όπως μετράται από την αντικειμενική μας μέτρηση (valid-f1).

Μετρήσεις για εργασίες συντονισμού υπερπαραμέτρων

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

Ένα καλό εργαλείο οπτικοποίησης μπορεί να σας βοηθήσει πολύ να κατανοήσετε τη βελτίωση από το HPO με την πάροδο του χρόνου και να λάβετε εμπειρική ανατροφοδότηση σχετικά με τις αποφάσεις σχεδιασμού του μοντέλου σας ML. Δείχνει τον αντίκτυπο κάθε μεμονωμένης υπερπαραμέτρου στη μέτρηση του στόχου σας και παρέχει καθοδήγηση για περαιτέρω βελτιστοποίηση των αποτελεσμάτων συντονισμού σας.

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

Αρχικά, ας δημιουργήσουμε μια οπτικοποίηση για τυχαία αναζήτηση. Μπορούμε να το κάνουμε αυτό καλώντας visualize_tuning_job() από amtviz και περνώντας το πρώτο μας αντικείμενο δέκτη ως όρισμα:

from amtviz import visualize_tuning_job
visualize_tuning_job(random_tuner, advanced=True, trials_only=True)

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

Αποτελέσματα εργασιών βελτιστοποίησης υπερπαραμέτρων

Κάθε κουκκίδα αντιπροσωπεύει την απόδοση μιας μεμονωμένης εργασίας εκπαίδευσης (ο στόχος μας valid-f1 στον άξονα y) με βάση τον χρόνο έναρξης του (άξονας x), που παράγεται από ένα συγκεκριμένο σύνολο υπερπαραμέτρων. Επομένως, εξετάζουμε την απόδοση του μοντέλου μας καθώς εξελίσσεται κατά τη διάρκεια της εργασίας συντονισμού.

Η διακεκομμένη γραμμή υπογραμμίζει το καλύτερο αποτέλεσμα που βρέθηκε μέχρι στιγμής και υποδηλώνει βελτίωση με την πάροδο του χρόνου. Οι δύο καλύτερες προπονητικές εργασίες πέτυχαν βαθμολογία F1 περίπου 0.91.

Εκτός από τη διακεκομμένη γραμμή που δείχνει τη αθροιστική πρόοδο, βλέπετε κάποια τάση στο γράφημα;

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

Τα επόμενα γραφήματα σάς βοηθούν να μετρήσετε την επίδραση των υπερπαραμέτρων στη συνολική απόδοση. Όλες οι υπερπαράμετροι οπτικοποιούνται, αλλά για λόγους συντομίας, εστιάζουμε σε δύο από αυτές: n-estimators και max-depth.

Λεπτομέρειες εργασίας υπερπαραμέτρων

Χρησιμοποιούσαμε τις δύο κορυφαίες προπονήσεις μας n-estimators περίπου 20 και 80, και max-depth περίπου 10 και 18, αντίστοιχα. Οι ακριβείς τιμές υπερπαραμέτρων εμφανίζονται μέσω επεξήγησης εργαλείου για κάθε κουκκίδα (εργασία εκπαίδευσης). Τονίζονται ακόμη και δυναμικά σε όλα τα γραφήματα και σας δίνουν μια πολυδιάστατη προβολή! Το είδες αυτό? Κάθε υπερπαράμετρος σχεδιάζεται σε σχέση με την αντικειμενική μέτρηση, ως ξεχωριστό γράφημα.

Τώρα, τι είδους γνώσεις έχουμε n-estimators?

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

Αντίθετα, η συσχέτιση των max-depth Η υπερπαράμετρος της αντικειμενικής μας μέτρησης είναι μάλλον χαμηλή. Δεν μπορούμε να πούμε με σαφήνεια ποια εύρη τιμών έχουν καλύτερη απόδοση από μια γενική άποψη.

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

Ας εξετάσουμε τα αποτελέσματα της δεύτερης εργασίας συντονισμού με χρήση Bayesian βελτιστοποίησης. Μπορούμε να χρησιμοποιήσουμε amtviz να οπτικοποιήσουμε τα αποτελέσματα με τον ίδιο τρόπο που κάναμε μέχρι τώρα για τον δέκτη τυχαίας αναζήτησης. Ή, ακόμα καλύτερα, μπορούμε να χρησιμοποιήσουμε τη δυνατότητα της συνάρτησης για να συγκρίνουμε και τις δύο εργασίες συντονισμού σε ένα ενιαίο σύνολο γραφημάτων. Αρκετά βολικό!

visualize_tuning_job([random_tuner, bayesian_tuner], advanced=True, trials_only=True)

Βελτιστοποίηση υπερπαραμέτρων Job Bayesian VS Random

Υπάρχουν περισσότερες κουκκίδες τώρα επειδή οπτικοποιούμε τα αποτελέσματα όλων των εργασιών εκπαίδευσης και για τις δύο, την τυχαία αναζήτηση (πορτοκαλί κουκκίδες) και τη βελτιστοποίηση Bayes (μπλε κουκκίδες). Στη δεξιά πλευρά, μπορείτε να δείτε ένα γράφημα πυκνότητας που απεικονίζει την κατανομή όλων των βαθμολογιών F1. Η πλειονότητα των εργασιών εκπαίδευσης πέτυχε αποτελέσματα στο πάνω μέρος της κλίμακας F1 (πάνω από 0.6)—αυτό είναι καλό!

Ποιο είναι το βασικό πακέτο εδώ; Το διάγραμμα διασποράς δείχνει ξεκάθαρα το όφελος της βελτιστοποίησης Bayes. Παρέχει καλύτερα αποτελέσματα με την πάροδο του χρόνου, επειδή μπορεί να μάθει από προηγούμενες εκτελέσεις. Γι' αυτό πετύχαμε σημαντικά καλύτερα αποτελέσματα χρησιμοποιώντας το Bayesian σε σύγκριση με τα τυχαία (0.967 έναντι 0.919) με τον ίδιο αριθμό εργασιών κατάρτισης.

Υπάρχουν ακόμη περισσότερα με τα οποία μπορείτε να κάνετε amtviz. Ας τρυπήσουμε μέσα.

Εάν δώσετε στο SageMaker AMT την οδηγία να εκτελέσει μεγαλύτερο αριθμό εργασιών για συντονισμό, το να βλέπετε πολλές δοκιμές ταυτόχρονα μπορεί να γίνει ακατάστατο. Αυτός είναι ένας από τους λόγους για τους οποίους κάναμε αυτά τα γραφήματα διαδραστικά. Μπορείτε να κάνετε κλικ και να σύρετε σε κάθε γραφική παράσταση διασποράς υπερπαραμέτρων για να κάνετε μεγέθυνση σε συγκεκριμένα εύρη τιμών και να βελτιώσετε την οπτική σας ερμηνεία των αποτελεσμάτων. Όλα τα άλλα γραφήματα ενημερώνονται αυτόματα. Είναι πολύ χρήσιμο, έτσι δεν είναι; Δείτε τα επόμενα γραφήματα ως παράδειγμα και δοκιμάστε το μόνοι σας στο σημειωματάριό σας!

Δυνατότητες οπτικοποίησης εργασίας βελτιστοποίησης υπερπαραμέτρων

Ως μαξιμαλιστής συντονισμού, μπορείτε επίσης να αποφασίσετε ότι η εκτέλεση άλλης εργασίας συντονισμού υπερπαραμέτρων θα μπορούσε να βελτιώσει περαιτέρω την απόδοση του μοντέλου σας. Αλλά αυτή τη φορά, μπορεί να διερευνηθεί ένα πιο συγκεκριμένο εύρος τιμών υπερπαραμέτρων, επειδή γνωρίζετε ήδη (περίπου) πού να περιμένετε καλύτερα αποτελέσματα. Για παράδειγμα, μπορείτε να επιλέξετε να εστιάσετε σε τιμές μεταξύ 100–200 για n-estimators, όπως φαίνεται στο διάγραμμα. Αυτό επιτρέπει στην AMT να επικεντρωθεί στις πιο υποσχόμενες εργασίες εκπαίδευσης και αυξάνει την αποτελεσματικότητά σας συντονισμού.

Για να συνοψίσω, amtviz σας παρέχει ένα πλούσιο σύνολο δυνατοτήτων οπτικοποίησης που σας επιτρέπουν να κατανοήσετε καλύτερα τον αντίκτυπο των υπερπαραμέτρων του μοντέλου σας στην απόδοση και να επιτρέψετε πιο έξυπνες αποφάσεις στις δραστηριότητές σας συντονισμού.

Συνεχίστε την εξερεύνηση του χώρου υπερπαραμέτρων και ξεκινήστε θερμά τις εργασίες HPO

Είδαμε ότι το AMT μας βοηθά να εξερευνήσουμε αποτελεσματικά τον χώρο αναζήτησης υπερπαραμέτρων. Τι γίνεται όμως αν χρειαζόμαστε πολλούς γύρους συντονισμού για να βελτιώσουμε επαναληπτικά τα αποτελέσματά μας; Όπως αναφέρθηκε στην αρχή, θέλουμε να δημιουργήσουμε έναν κύκλο ανατροφοδότησης βελτιστοποίησης — τη «συζήτησή μας» με το μοντέλο. Χρειάζεται να ξεκινάμε από το μηδέν κάθε φορά;

Ας δούμε την έννοια του τρεξίματος α εργασία συντονισμού υπερπαραμέτρων θερμής εκκίνησης. Δεν ξεκινά νέες εργασίες συντονισμού από την αρχή, επαναχρησιμοποιεί ό,τι έχει μάθει στις προηγούμενες εκτελέσεις HPO. Αυτό μας βοηθά να είμαστε πιο αποτελεσματικοί με τον χρόνο συντονισμού και τους υπολογιστικούς πόρους μας. Μπορούμε να επαναλάβουμε περαιτέρω τα προηγούμενα αποτελέσματα μας. Για να χρησιμοποιήσουμε θερμές εκκινήσεις, δημιουργούμε α WarmStartConfig και καθορίστε warm_start_type as IDENTICAL_DATA_AND_ALGORITHM. Αυτό σημαίνει ότι αλλάζουμε τις τιμές των υπερπαραμέτρων αλλά δεν αλλάζουμε τα δεδομένα ή τον αλγόριθμο. Λέμε στην AMT να μεταφέρει την προηγούμενη γνώση στη νέα μας εργασία συντονισμού.

Αναφερόμενοι στις προηγούμενες εργασίες βελτιστοποίησης Bayes και συντονισμού τυχαίας αναζήτησης ως parents, μπορούμε να τα χρησιμοποιήσουμε και τα δύο για το ζεστό ξεκίνημα:

warm_start_config = WarmStartConfig(warm_start_type=WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM, parents=[bayesian_tuner_name, random_tuner_name])
tuner_parameters['warm_start_config'] = warm_start_config

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

Υπερπαράμετρος Βελτιστοποίηση Εργασίας Warmstart

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

Με άλλα λόγια, η AMT επιλέγει αυτόματα πολλά υποσχόμενα σύνολα τιμών υπερπαραμέτρων με βάση τις γνώσεις της από προηγούμενες δοκιμές. Αυτό φαίνεται στο επόμενο διάγραμμα. Για παράδειγμα, ο αλγόριθμος θα δοκιμάσει μια χαμηλή τιμή για n-estimators λιγότερο συχνά επειδή είναι γνωστό ότι παράγουν κακές βαθμολογίες F1. Δεν σπαταλάμε πόρους σε αυτό, χάρη στις θερμές εκκινήσεις.

Οπτικοποιημένες εργασίες βελτιστοποίησης υπερπαραμέτρων

εκκαθάριση

Για να αποφύγετε ανεπιθύμητο κόστος όταν τελειώσετε τον πειραματισμό με το HPO, πρέπει να αφαιρέσετε όλα τα αρχεία στον κάδο S3 με το πρόθεμα amt-visualize-demo και επίσης κλείστε τους πόρους του SageMaker Studio.

Εκτελέστε τον ακόλουθο κώδικα στο σημειωματάριό σας για να αφαιρέσετε όλα τα αρχεία S3 από αυτήν την ανάρτηση:

!aws s3 rm s3://{BUCKET}/amt-visualize-demo --recursive

Εάν θέλετε να διατηρήσετε τα σύνολα δεδομένων ή τα τεχνουργήματα του μοντέλου, μπορείτε να τροποποιήσετε το πρόθεμα στον κώδικα σε amt-visualize-demo/data για να διαγράψετε μόνο τα δεδομένα ή amt-visualize-demo/output για να διαγράψετε μόνο τα τεχνουργήματα του μοντέλου.

Συμπέρασμα

Μάθαμε πώς η τέχνη της δημιουργίας λύσεων ML περιλαμβάνει την εξερεύνηση και τη βελτιστοποίηση υπερπαραμέτρων. Η προσαρμογή αυτών των πόμολων και των μοχλών είναι μια απαιτητική αλλά ανταποδοτική διαδικασία που οδηγεί σε ταχύτερους χρόνους εκπαίδευσης, βελτιωμένη ακρίβεια μοντέλου και συνολικά καλύτερες λύσεις ML. Η λειτουργικότητα SageMaker AMT μας βοηθά να εκτελέσουμε πολλές εργασίες συντονισμού και να τις ξεκινήσουμε θερμά, ενώ παρέχει σημεία δεδομένων για περαιτέρω έλεγχο, οπτική σύγκριση και ανάλυση.

Σε αυτήν την ανάρτηση, εξετάσαμε τις στρατηγικές HPO που χρησιμοποιούμε με το SageMaker AMT. Ξεκινήσαμε με την τυχαία αναζήτηση, μια απλή αλλά αποτελεσματική στρατηγική όπου οι υπερπαράμετροι συλλέγονται τυχαία από έναν χώρο αναζήτησης. Στη συνέχεια, συγκρίναμε τα αποτελέσματα με τη βελτιστοποίηση Bayes, η οποία χρησιμοποιεί πιθανοτικά μοντέλα για να καθοδηγήσει την αναζήτηση βέλτιστων υπερπαραμέτρων. Αφού εντοπίσαμε μια κατάλληλη στρατηγική HPO και καλά εύρη τιμών υπερπαραμέτρων μέσω αρχικών δοκιμών, δείξαμε πώς να χρησιμοποιούμε θερμές εκκινήσεις για τον εξορθολογισμό των μελλοντικών εργασιών HPO.

Μπορείτε να εξερευνήσετε τον χώρο αναζήτησης υπερπαραμέτρων συγκρίνοντας ποσοτικά αποτελέσματα. Έχουμε προτείνει την οπτική σύγκριση δίπλα-δίπλα και παρέχουμε το απαραίτητο πακέτο για διαδραστική εξερεύνηση. Πείτε μας στα σχόλια πόσο χρήσιμο ήταν για εσάς στο ταξίδι συντονισμού υπερπαραμέτρων!


Σχετικά με τους συγγραφείς

Ουεμίτ ΓιόλνταςÜmit Yoldas είναι Senior Solutions Architect με τις Υπηρεσίες Web της Amazon. Συνεργάζεται με εταιρικούς πελάτες σε διάφορες βιομηχανίες στη Γερμανία. Έχει ωθεί να μεταφράσει έννοιες AI σε λύσεις πραγματικού κόσμου. Εκτός δουλειάς, απολαμβάνει χρόνο με την οικογένεια, απολαμβάνοντας καλό φαγητό και επιδιώκει τη γυμναστική.

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

Mariano kampΜαριάνο Καμπ είναι ένας κύριος αρχιτέκτονας λύσεων με τις υπηρεσίες Web της Amazon. Συνεργάζεται με τράπεζες και ασφαλιστικές εταιρείες στη Γερμανία για τη μηχανική μάθηση. Στον ελεύθερο χρόνο του, ο Μαριάνο απολαμβάνει την πεζοπορία με τη γυναίκα του.

Σφραγίδα ώρας:

Περισσότερα από Μηχανική εκμάθηση AWS