Νοημοσύνη δεδομένων Πλάτωνα.
Κάθετη Αναζήτηση & Αι.

Βελτιώστε την παραγωγικότητα προγραμματιστών ML με το Weights & Biases: Ένα παράδειγμα υπολογιστικής όρασης στο Amazon SageMaker

Ημερομηνία:

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

Καθώς περισσότεροι οργανισμοί χρησιμοποιούν τεχνικές βαθιάς εκμάθησης, όπως η όραση υπολογιστή και η επεξεργασία φυσικής γλώσσας, η προσωπικότητα του προγραμματιστή μηχανικής μάθησης (ML) χρειάζεται κλιμακούμενα εργαλεία γύρω από την παρακολούθηση πειραμάτων, τη γενεαλογία και τη συνεργασία. Η παρακολούθηση πειράματος περιλαμβάνει μεταδεδομένα όπως λειτουργικό σύστημα, υποδομή που χρησιμοποιείται, βιβλιοθήκη και σύνολα δεδομένων εισόδου και εξόδου—που συχνά παρακολουθούνται με μη αυτόματο τρόπο σε ένα υπολογιστικό φύλλο. Το Lineage περιλαμβάνει την παρακολούθηση των συνόλων δεδομένων, των μετασχηματισμών και των αλγορίθμων που χρησιμοποιούνται για τη δημιουργία ενός μοντέλου ML. Η συνεργασία περιλαμβάνει προγραμματιστές ML που εργάζονται σε ένα μεμονωμένο έργο και επίσης προγραμματιστές ML που μοιράζονται τα αποτελέσματά τους σε ομάδες και με ενδιαφερόμενους φορείς — μια διαδικασία που συνήθως γίνεται μέσω email, στιγμιότυπων οθόνης και παρουσιάσεων PowerPoint.

Σε αυτήν την ανάρτηση, εκπαιδεύουμε ένα μοντέλο για την αναγνώριση αντικειμένων για μια περίπτωση χρήσης αυτόνομου οχήματος χρησιμοποιώντας Weights & Biases (W&B) και Amazon Sage Maker. Δείχνουμε πώς η κοινή λύση μειώνει τη χειρωνακτική εργασία για τον προγραμματιστή ML, δημιουργεί μεγαλύτερη διαφάνεια στη διαδικασία ανάπτυξης μοντέλων και δίνει τη δυνατότητα στις ομάδες να συνεργάζονται σε έργα.

Εκτελούμε αυτό το παράδειγμα Στούντιο Amazon SageMaker για να δοκιμάσετε μόνοι σας.

Επισκόπηση βαρών και προκαταλήψεων

Το Weights & Biases βοηθά τις ομάδες ML να δημιουργήσουν καλύτερα μοντέλα πιο γρήγορα. Με λίγες μόνο γραμμές κώδικα στο σημειωματάριό σας SageMaker, μπορείτε να διορθώσετε άμεσα, να συγκρίνετε και να αναπαράγετε τα μοντέλα σας —αρχιτεκτονική, υπερπαράμετροι, δεσμεύσεις git, βάρη μοντέλων, χρήση GPU, σύνολα δεδομένων και προβλέψεις— όλα αυτά ενώ συνεργάζεστε με τους συμπαίκτες σας.

Η W&B εμπιστεύεται περισσότερους από 200,000 επαγγελματίες ML από μερικές από τις πιο καινοτόμες εταιρείες και ερευνητικούς οργανισμούς στον κόσμο. Για να το δοκιμάσετε δωρεάν, εγγραφείτε στο Βάρη και προκαταλήψεις, Ή επισκεφθείτε το Καταχώριση W&B AWS Marketplace.

Ξεκινώντας με το SageMaker Studio

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

Για να ξεκινήσετε με το Studio, χρειάζεστε έναν λογαριασμό AWS και έναν Διαχείριση ταυτότητας και πρόσβασης AWS (IAM) χρήστης ή ρόλος με δικαιώματα δημιουργίας τομέα Studio. Αναφέρομαι σε Ενσωματωμένος στον τομέα Amazon SageMaker για να δημιουργήσετε έναν τομέα και το Τεκμηρίωση στούντιο για μια επισκόπηση σχετικά με τη χρήση της οπτικής διεπαφής και των σημειωματάριων του Studio.

Ρυθμίστε το περιβάλλον

Για αυτήν την ανάρτηση, μας ενδιαφέρει να τρέξουμε τον δικό μας κώδικα, οπότε ας εισάγουμε μερικά σημειωματάρια από το GitHub. Χρησιμοποιούμε τα παρακάτω GitHub repo για παράδειγμα, ας φορτώσουμε αυτό το σημειωματάριο.

Μπορείτε να κλωνοποιήσετε ένα αποθετήριο είτε μέσω του τερματικού είτε μέσω του Studio UI. Για να κλωνοποιήσετε ένα αποθετήριο μέσω του τερματικού, ανοίξτε ένα τερματικό συστήματος (στο Αρχεία μενού, επιλέξτε Νέα και τερματικό) και πληκτρολογήστε την ακόλουθη εντολή:

git clone https://github.com/wandb/SageMakerStudio

Για να κλωνοποιήσετε ένα αποθετήριο από τη διεπαφή χρήστη του Studio, βλ Κλωνοποιήστε ένα αποθετήριο Git στο SageMaker Studio.

Για να ξεκινήσετε, επιλέξτε το 01_data_processing.ipynb σημειωματάριο. Σας ζητείται μια προτροπή εναλλαγής πυρήνα. Αυτό το παράδειγμα χρησιμοποιεί το PyTorch, ώστε να μπορούμε να επιλέξουμε το προκατασκευασμένο PyTorch 1.10 Python 3.8 βελτιστοποιημένη GPU εικόνα για να ξεκινήσει το σημειωματάριό μας. Μπορείτε να δείτε την εφαρμογή να ξεκινά και όταν ο πυρήνας είναι έτοιμος, εμφανίζει τον τύπο παρουσίας και τον πυρήνα πάνω δεξιά στο σημειωματάριό σας.

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

%pip install -r requirements.txt

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

Χρησιμοποιήστε Weights & Biases στο SageMaker Studio

Βάρη και προκαταλήψεις (wandb) είναι μια τυπική βιβλιοθήκη Python. Μόλις εγκατασταθεί, είναι τόσο απλό όσο η προσθήκη μερικών γραμμών κώδικα στο σενάριο εκπαίδευσης και είστε έτοιμοι να καταγράψετε πειράματα. Το έχουμε ήδη εγκαταστήσει μέσω του αρχείου μας request.txt. Μπορείτε επίσης να το εγκαταστήσετε χειροκίνητα με τον ακόλουθο κώδικα:

! pip install wandb

Μελέτη περίπτωσης: Αυτόνομη σημασιολογική κατάτμηση οχημάτων

Σύνολο δεδομένων

Χρησιμοποιούμε το Βάση δεδομένων βίντεο με ετικέτα οδήγησης Cambridge (CamVid) για αυτό το παράδειγμα. Περιέχει μια συλλογή βίντεο με σημασιολογικές ετικέτες κατηγορίας αντικειμένων, με μεταδεδομένα. Η βάση δεδομένων παρέχει ετικέτες βασικής αλήθειας που συσχετίζουν κάθε pixel με μία από τις 32 σημασιολογικές κλάσεις. Μπορούμε να εκδόσουμε το σύνολο δεδομένων μας ως α ραβδί.Αντικείμενο, με αυτόν τον τρόπο μπορούμε να το αναφέρουμε αργότερα. Δείτε τον παρακάτω κώδικα:

with wandb.init(project="sagemaker_camvid_demo", job_type="upload"):
   artifact = wandb.Artifact(
       name='camvid-dataset',
       type='dataset',
       metadata={
           "url": 'https://s3.amazonaws.com/fast-ai-imagelocal/camvid.tgz',
           "class_labels": class_labels
       },
       description="The Cambridge-driving Labeled Video Database (CamVid) is the first collection of videos with object class semantic labels, complete with metadata. The database provides ground truth labels that associate each pixel with one of 32 semantic classes."
   )
   artifact.add_dir(path)
   wandb.log_artifact(artifact)

Μπορείτε να ακολουθήσετε στο 01_data_processing.ipynb σημειωματάριο.

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

Οι πίνακες Weights & Biases υποστηρίζουν πολλές μορφές εμπλουτισμένων μέσων, όπως εικόνα, ήχος και κυματομορφές. Για μια πλήρη λίστα μορφών πολυμέσων, ανατρέξτε στο Τύποι δεδομένων.

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

εικόνα

Εκπαιδεύστε ένα μοντέλο

Μπορούμε τώρα να δημιουργήσουμε ένα μοντέλο και να το εκπαιδεύσουμε στο σύνολο δεδομένων μας. Χρησιμοποιούμε PyTorch και fastai για να πρωτοτυπήσετε γρήγορα μια γραμμή βάσης και στη συνέχεια να χρησιμοποιήσετε wandb.Sweeps για τη βελτιστοποίηση των υπερπαραμέτρων μας. Ακολουθήστε στο 02_semantic_segmentation.ipynb σημειωματάριο. Όταν σας ζητηθεί ένας πυρήνας κατά το άνοιγμα του σημειωματάριου, επιλέξτε τον ίδιο πυρήνα από το πρώτο μας σημειωματάριο, PyTorch 1.10 Python 3.8 βελτιστοποιημένη GPU. Τα πακέτα σας είναι ήδη εγκατεστημένα επειδή χρησιμοποιείτε την ίδια εφαρμογή.

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

Επειδή η fastai βιβλιοθήκη έχει ενοποίηση με wandb, μπορείτε απλά να περάσετε το WandbCallback στον εκπαιδευόμενο:

from fastai.callback.wandb import WandbCallback

loss_func=FocalLossFlat(axis=1)
model = SegmentationModel(backbone, hidden_dim, num_classes=num_classes)
wandb_callback = WandbCallback(log_preds=True)
   learner = Learner(
        data_loader,
        model,
        loss_func=loss_func,
        metrics=metrics,
        cbs=[wandb_callback],
    )

learn.fit_one_cycle(TRAIN_EPOCHS, LEARNING_RATE)

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

Αναζήτηση υπερπαραμέτρων με σαρώσεις

Για να βελτιώσουμε την απόδοση του βασικού μοντέλου, πρέπει να επιλέξουμε το καλύτερο μοντέλο και το καλύτερο σύνολο υπερπαραμέτρων για εκπαίδευση. Το W&B το κάνει εύκολο για εμάς να το χρησιμοποιήσουμε σκουπίσματα.

Εκτελούμε α Αναζήτηση υπερπαραμέτρων Bayes με στόχο τη μεγιστοποίηση της ακρίβειας πρώτου πλάνου του μοντέλου στο σύνολο δεδομένων επικύρωσης. Για να εκτελέσουμε το σάρωση, ορίζουμε το αρχείο ρυθμίσεων sweep.yaml. Μέσα σε αυτό το αρχείο, περνάμε την επιθυμητή μέθοδο προς χρήση: bayes και τις παραμέτρους και τις αντίστοιχες τιμές τους για αναζήτηση. Στην περίπτωσή μας, δοκιμάζουμε διαφορετικές ραχοκοκαλιές, μεγέθη παρτίδας και λειτουργίες απώλειας. Εξερευνούμε επίσης διαφορετικές παραμέτρους βελτιστοποίησης, όπως ο ρυθμός εκμάθησης και η μείωση του βάρους. Επειδή αυτές είναι συνεχείς τιμές, λαμβάνουμε δείγμα από μια κατανομή. Υπάρχουν πολλά διαθέσιμες επιλογές διαμόρφωσης για σαρώσεις.

program: train.py
project: sagemaker_camvid_demo
method: bayes
metric:
    name: foreground_acc
    goal: maximize
early_terminate:
    type: hyperband
    min_iter: 5
parameters:
    backbone:
        values: ["mobilenetv2_100","mobilenetv3_small_050","mobilenetv3_large_100","resnet18","resnet34","resnet50","vgg19"]
    batch_size: 
        values: [8, 16]
    image_resize_factor: 
        value: 4
    loss_function: 
        values: ["categorical_cross_entropy", "focal", "dice"]
    learning_rate: 
        distribution: uniform 
        min: 1e-5
        max: 1e-2
    weight_decay: 
        distribution: uniform
        min: 0.0 
        max: 0.05

Στη συνέχεια, σε ένα τερματικό, ξεκινάτε τη σάρωση χρησιμοποιώντας το Γραμμή εντολών wandb:

$ wandb sweep sweep.yaml —-project="sagemaker_camvid_demo"

Στη συνέχεια, ξεκινήστε έναν πράκτορα σάρωσης σε αυτό το μηχάνημα με τον ακόλουθο κώδικα:

$ wandb agent <sweep_id>

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

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

Μπορούμε να αντλήσουμε τις ακόλουθες βασικές πληροφορίες από τη σάρωση:

  • Ο χαμηλότερος ρυθμός μάθησης και η χαμηλότερη μείωση βάρους έχουν ως αποτέλεσμα καλύτερη ακρίβεια στο προσκήνιο και καλύτερες βαθμολογίες Dice.
  • Το μέγεθος της παρτίδας έχει ισχυρές θετικές συσχετίσεις με τις μετρήσεις.
  • Η Σκελετοί βασισμένοι σε VGG μπορεί να μην είναι καλή επιλογή για να εκπαιδεύσουμε το τελικό μας μοντέλο, επειδή είναι επιρρεπείς στο να καταλήξουν σε α εξαφανιζόμενη κλίση. (Φιλτράρονται καθώς η απώλεια αποκλίνει.)
  • Η ResNet οι ραχοκοκαλιές έχουν ως αποτέλεσμα την καλύτερη συνολική απόδοση σε σχέση με τις μετρήσεις.
  • Η ραχοκοκαλιά ResNet34 ή ResNet50 θα πρέπει να επιλεγεί για το τελικό μοντέλο λόγω της ισχυρής τους απόδοσης όσον αφορά τις μετρήσεις.

Γενεαλογία δεδομένων και μοντέλου

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

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

εικόνα

Ερμηνεύουν προβλέψεις μοντέλων

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

Καταγράψαμε τις προβλεπόμενες μάσκες μαζί με τον συντελεστή βαθμολογίας Dice ανά τάξη σε έναν πίνακα. Στη συνέχεια, φιλτράραμε κατά σειρές που περιέχουν τις επιθυμητές κατηγορίες και ταξινομήσαμε κατά αύξουσα σειρά στη βαθμολογία Dice.

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

εικόνα

Μπορούμε να επαναλάβουμε αυτήν την ανάλυση με άλλες ευάλωτες τάξεις, όπως τα ποδήλατα ή τα φανάρια.

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

Συμπέρασμα

Αυτή η ανάρτηση παρουσίασε την πλατφόρμα Weights & Biases MLOps, πώς να ρυθμίσετε το W&B στο SageMaker Studio και πώς να εκτελέσετε ένα εισαγωγικό σημειωματάριο για την κοινή λύση. Στη συνέχεια, εξετάσαμε μια περίπτωση χρήσης αυτόνομης σημασιολογικής τμηματοποίησης οχημάτων και επιδείξαμε εκπαιδευτικές σειρές παρακολούθησης με πειράματα W&B, βελτιστοποίηση υπερπαραμέτρων χρησιμοποιώντας σαρώσεις W&B και ερμηνεία αποτελεσμάτων με πίνακες W&B.

Εάν ενδιαφέρεστε να μάθετε περισσότερα, μπορείτε να αποκτήσετε πρόσβαση στο live Έκθεση W&B. Για να δοκιμάσετε δωρεάν το Weights & Biases, εγγραφείτε στο Βάρη και προκαταλήψεις, Ή επισκεφθείτε το Καταχώριση W&B AWS Marketplace.


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

Thomas Capelle είναι Μηχανικός Μηχανικής Μάθησης στο Weights and Biases. Είναι υπεύθυνος για τη διατήρηση και ενημέρωση του αποθετηρίου www.github.com/wandb/examples. Χτίζει επίσης περιεχόμενο σε MLOPS, εφαρμογές της W&B σε βιομηχανίες και διασκεδαστική βαθιά μάθηση γενικά. Προηγουμένως χρησιμοποιούσε βαθιά εκμάθηση για να λύσει βραχυπρόθεσμες προβλέψεις για την ηλιακή ενέργεια. Έχει ένα υπόβαθρο στον Πολεοδομικό Σχεδιασμό, στη Συνδυαστική Βελτιστοποίηση, στα Οικονομικά των Μεταφορών και στα Εφαρμοσμένα Μαθηματικά.

Ντούργκα Σούρι είναι αρχιτέκτονας ML Solutions στην ομάδα Amazon SageMaker Service SA. Είναι παθιασμένη να κάνει τη μηχανική μάθηση προσβάσιμη σε όλους. Στα 3 χρόνια της στο AWS, βοήθησε στη δημιουργία πλατφορμών AI/ML για εταιρικούς πελάτες. Όταν δεν εργάζεται, λατρεύει τις βόλτες με μοτοσικλέτα, τα μυθιστορήματα μυστηρίου και τις πεζοπορίες με το τετράχρονο χάσκι της.

Karthik Bharathy είναι ο ηγέτης προϊόντων για το Amazon SageMaker με πάνω από μια δεκαετία εμπειρίας διαχείρισης προϊόντων, στρατηγικής προϊόντος, εκτέλεσης και εκτόξευσης.

spot_img

Τελευταία Νοημοσύνη

spot_img

Συνομιλία με μας

Γεια σου! Πώς μπορώ να σε βοηθήσω?