Παρακολούθηση των αλλαγών του Έργου Μηχανικής Εκμάθησης με τον Neptune

Κόμβος πηγής: 1216273

Εισαγωγή

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

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

  • Εάν έχετε εργαστεί σε οποιοδήποτε έργο ML, θα ξέρετε ότι το πιο δύσκολο κομμάτι είναι να φτάσετε σε καλή απόδοση - γεγονός που καθιστά απαραίτητη τη διεξαγωγή πολλών πειραμάτων, τροποποιώντας διαφορετικές παραμέτρους και παρακολουθώντας καθεμία από αυτές.
  • Δεν θέλετε να χάνετε χρόνο αναζητώντας αυτό το καλό μοντέλο που είχατε στο παρελθόν - ένα απόθεμα όλων των πειραμάτων που πραγματοποιήσατε στο παρελθόν το κάνει χωρίς προβλήματα.
  • Μόνο μια μικρή αλλαγή στο alpha και η ακρίβεια του μοντέλου αγγίζει την οροφή - Η καταγραφή των μικρών αλλαγών που κάνουμε στο μοντέλο μας και οι σχετικές μετρήσεις εξοικονομούν πολύ χρόνο.
  • Όλα τα πειράματά σας κάτω από μια στέγη - Η παρακολούθηση πειραμάτων βοηθά στη σύγκριση όλων των διαφορετικών διαδρομών που πραγματοποιείτε συγκεντρώνοντας όλες τις πληροφορίες κάτω από μια στέγη.

Θα πρέπει απλώς να παρακολουθούμε τις παραμέτρους του μοντέλου μηχανικής εκμάθησης;

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

Ποσειδώνας | Παράμετρος μοντέλου ML
1 εικόνα
  • Κώδικας: Κώδικας που χρησιμοποιείται για την εκτέλεση των πειραμάτων
  • Δεδομένα: Αποθήκευση εκδόσεων των δεδομένων που χρησιμοποιούνται για εκπαίδευση και αξιολόγηση
  • Περιβάλλο: Αποθήκευση των αρχείων διαμόρφωσης περιβάλλοντος όπως «Dockerfile», «requirements.txt» κ.λπ.
  • παράμετροι: Αποθήκευση των διαφόρων υπερπαραμέτρων που χρησιμοποιούνται για το μοντέλο.
  • Μετρήσεις: Καταγραφή μετρήσεων εκπαίδευσης και επικύρωσης για όλες τις πειραματικές εκτελέσεις.

 

Γιατί να μην χρησιμοποιήσετε ένα φύλλο excel;

να μην χρησιμοποιείται φύλλο excel | Ποσειδώνας

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

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

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

 

Ας το δούμε σε δράση!

Εγκαταστήστε το Neptune στην Python

Για να εγκαταστήσουμε το Neptune, θα μπορούσαμε να εκτελέσουμε την ακόλουθη εντολή:

pip install neptune-client

Για την εισαγωγή του πελάτη Neptune, θα μπορούσαμε να χρησιμοποιήσουμε την ακόλουθη γραμμή:

εισαγωγή neptune.νέο ως Neptune

 

Χρειάζεται διαπιστευτήρια;

Πρέπει να περάσουμε τα διαπιστευτήριά μας στη μέθοδο neptune.init() για να ενεργοποιήσουμε την καταγραφή μεταδεδομένων στον Neptune.

run = neptune.init(project='',api_token='')

Μπορούμε να δημιουργήσουμε ένα νέο έργο με τη σύνδεση https://app.neptune.ai/ και, στη συνέχεια, ανακτήστε το όνομα του έργου και το διακριτικό API.

 

Καταγραφή των παραμέτρων στον Ποσειδώνα

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

από το sklearn.datasets εισαγωγή load_iris από το sklearn.ensemble εισαγωγή RandomForestClassifier από το sklearn.model_selection εισαγωγή train_test_split από το sklearn.metrics εισαγωγή f1_score από το joblib εισαγωγή δεδομένων απόδειξης = load_iris() X_train, X_tralittest,y στόχος , test_size=0.4, random_state=1234) params = {'n_estimators': 10, 'max_depth': 3, 'min_samples_leaf': 1, 'min_samples_split': 2, 'max_features': 3, } params*class = ) clf.fit(X_train, y_train) y_train_pred = clf.predict_proba(X_train) y_test_pred = clf.predict_proba(X_test) train_f1 = f1_score(y_train, y_train_pred.argmax(μέσος όρος_πυρήνας (άξονας_1=1)), y_test, y_test_pred.argmax(axis=1), average='macro')

Για να καταγράψουμε τις παραμέτρους του παραπάνω μοντέλου, θα μπορούσαμε να χρησιμοποιήσουμε το αντικείμενο εκτέλεσης που ξεκινήσαμε πριν ως εξής:

run['parameters'] = παράμετροι

Ο Neptune επιτρέπει επίσης την παρακολούθηση κώδικα και περιβάλλοντος κατά τη δημιουργία του αντικειμένου εκτέλεσης ως εξής:

run = neptune.init(project=' stateasy005/iris',api_token='', source_files=['*.py', 'requirements.txt'])

 

Μπορώ να καταγράψω και τις μετρήσεις;

Οι μετρήσεις εκπαίδευσης και αξιολόγησης μπορούν να καταγραφούν ξανά χρησιμοποιώντας το αντικείμενο εκτέλεσης που δημιουργήσαμε:

run['train/f1'] = train_f1 run['test/f1'] = test_f1

 

Συντόμευση για να καταγράψετε τα πάντα ταυτόχρονα;

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

Αυτή η περίληψη μπορεί να ληφθεί χρησιμοποιώντας τον ακόλουθο κώδικα:

εισαγωγή του neptune.new.integrations.sklearn ως npt_utils
run["cls_summary "] = npt_utils.create_classifier_summary(clf, X_train, X_test, y_train, y_test)

Αυτό οδηγεί στη δημιουργία των παρακάτω
φακέλους στο Neptune UI όπως φαίνεται παρακάτω:

 

Τι υπάρχει μέσα στους φακέλους; 

Η «διαγνωστικά διαγράμματα» φάκελο είναι χρήσιμο καθώς μπορεί κανείς να αξιολογήσει τα πειράματά του χρησιμοποιώντας πολλαπλές μετρήσεις μόνο με μία γραμμή κώδικα στη σύνοψη του ταξινομητή.

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

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

 

Τι θα λέγατε για την παλινδρόμηση και τη ομαδοποίηση χρησιμοποιώντας τον Ποσειδώνα

Μπορούμε να λάβουμε παρόμοια σύνοψη εάν έχουμε ένα μοντέλο παλινδρόμησης χρησιμοποιώντας τις ακόλουθες γραμμές:

εισαγωγή του neptune.new.integrations.sklearn ως npt_utils
run['rfr_summary'] = npt_utils.create_regressor_summary(rfr, X_train, X_test, y_train, y_test)

Ομοίως, και για ομαδοποίηση, μπορούμε να δημιουργήσουμε μια σύνοψη με τη βοήθεια των παρακάτω γραμμών κώδικα:

εισαγωγή neptune.new.integrations.sklearn ως npt_utils run['kmeans_summary'] = npt_utils.create_kmeans_summary(km, X, n_clusters=5)

Εδώ, km είναι το όνομα του μοντέλου k-means.

 

Πώς μπορώ να ανεβάσω τα δεδομένα μου στο Neptune;

Μπορούμε επίσης να καταγράψουμε αρχεία csv σε μια εκτέλεση και να τα δούμε στο Neptune UI χρησιμοποιώντας τις ακόλουθες γραμμές κώδικα:

run['test/preds'].upload('path/to/test_preds.csv')

Μεταφόρτωση αντικειμένων στον Ποσειδώνα

Οποιαδήποτε εικόνα που μια γραφική παράσταση χρησιμοποιεί βιβλιοθήκες όπως matplotlib, plotly κ.λπ. μπορεί επίσης να καταγραφεί στον Neptune.

εισαγωγή του matplotlib.pyplot ως plt plt.plot(data) run["dataset/distribution"].log(plt.gcf())

Για να κατεβάσουμε αργότερα τα ίδια αρχεία μέσω προγραμματισμού, μπορούμε να χρησιμοποιήσουμε τη μέθοδο λήψης του αντικειμένου 'run' χρησιμοποιώντας την ακόλουθη γραμμή κώδικα:

run['artifacts/images'].download()

 

Τελικές Σκέψεις

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

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

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

Nibedita Dutta

Η Nibedita είναι μεταπτυχιακός στη Χημική Μηχανική από το IIT Kharagpur και επί του παρόντος εργάζεται ως Senior Consultant στην AbsolutData Analytics. Με την τρέχουσα ιδιότητά της, εργάζεται στην κατασκευή λύσεων βασισμένων σε AI/ML για πελάτες από μια σειρά βιομηχανιών.

Πηγή εικόνας

Εικόνα 1: https://tinyurl.com/em429czk

Τα μέσα που εμφανίζονται σε αυτό το άρθρο δεν ανήκουν στο Analytics Vidhya και χρησιμοποιούνται κατά την κρίση του συγγραφέα.

Πηγή: https://www.analyticsvidhya.com/blog/2021/10/tracking-your-machine-learning-project-changes-with-neptune/

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

Περισσότερα από Ανάλυση Vidhya