Παρακολουθήστε τα πειράματά σας ML από άκρο σε άκρο με το Data Version Control και το Amazon SageMaker Experiments PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Παρακολουθήστε τα πειράματά σας ML από άκρο σε άκρο με τα Data Version Control και τα Amazon SageMaker Experiments

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

Αυτή η ανάρτηση σάς καθοδηγεί σε ένα παράδειγμα για το πώς να παρακολουθείτε τα πειράματά σας σε κώδικα, δεδομένα, τεχνουργήματα και μετρήσεις χρησιμοποιώντας Πειράματα Amazon SageMaker σε συνδυασμό με Έλεγχος έκδοσης δεδομένων (DVC). Δείχνουμε πώς μπορείτε να χρησιμοποιήσετε το DVC δίπλα-δίπλα Amazon Sage Maker εργασίες επεξεργασίας και κατάρτισης. Εκπαιδεύουμε διαφορετικά μοντέλα CatBoost στο σύνολο δεδομένων κατοικιών της Καλιφόρνια από το Αποθετήριο StatLibκαι αλλάξτε τις στρατηγικές διατήρησης, ενώ παρακολουθείτε την έκδοση δεδομένων με το DVC. Σε κάθε μεμονωμένο πείραμα, παρακολουθούμε τεχνουργήματα εισόδου και εξόδου, κώδικα και μετρήσεις χρησιμοποιώντας τα πειράματα SageMaker.

Πειράματα SageMaker

Το SageMaker Experiments είναι μια υπηρεσία AWS για την παρακολούθηση πειραμάτων μηχανικής μάθησης (ML). ο SageMaker Experiments Python SDK είναι μια διεπαφή υψηλού επιπέδου για αυτήν την υπηρεσία που σας βοηθά να παρακολουθείτε πληροφορίες πειράματος χρησιμοποιώντας Python.

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

Όταν συζητάμε τα πειράματα SageMaker, αναφερόμαστε στις ακόλουθες έννοιες:

  • Πείραμα – Μια συλλογή σχετικών δοκιμών. Προσθέτετε δοκιμές σε ένα πείραμα που θέλετε να συγκρίνετε μαζί.
  • Δίκη – Μια περιγραφή μιας ροής εργασίας ML πολλαπλών βημάτων. Κάθε βήμα στη ροή εργασίας περιγράφεται από ένα δοκιμαστικό στοιχείο.
  • Δοκιμαστικό συστατικό – Περιγραφή ενός μόνο βήματος σε μια ροή εργασίας ML, όπως καθαρισμός δεδομένων, εξαγωγή χαρακτηριστικών, εκπαίδευση μοντέλων ή αξιολόγηση μοντέλου.
  • Ιχνηλάτης – Ένας διαχειριστής περιβάλλοντος Python για την καταγραφή πληροφοριών σχετικά με ένα μόνο δοκιμαστικό στοιχείο (για παράδειγμα, παραμέτρους, μετρήσεις ή τεχνουργήματα).

Έλεγχος έκδοσης δεδομένων

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

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

Το DVC έχει τα ακόλουθα χαρακτηριστικά:

  • Το DVC είναι α δωρεάν, ανοιχτή πηγή γραμμή εντολών εργαλείο.
  • Το DVC λειτουργεί πάνω από τα αποθετήρια Git και έχει παρόμοια διεπαφή γραμμής εντολών και ροή με το Git. Το DVC μπορεί επίσης να λειτουργήσει αυτόνομα, αλλά χωρίς εκδόσεων δυνατότητες.
  • Η έκδοση εκδόσεων δεδομένων ενεργοποιείται αντικαθιστώντας μεγάλα αρχεία, καταλόγους δεδομένων, μοντέλα ML και ούτω καθεξής με μικρά μετααρχεία (εύκολος χειρισμός με το Git). Αυτά τα σύμβολα κράτησης θέσης δείχνουν τα αρχικά δεδομένα, τα οποία είναι αποσυνδεδεμένα από τη διαχείριση πηγαίου κώδικα.
  • Μπορείτε να χρησιμοποιήσετε εσωτερική αποθήκευση ή αποθήκευση στο cloud για να αποθηκεύσετε τα δεδομένα του έργου ξεχωριστά από τη βάση του κώδικά του. Αυτός είναι ο τρόπος με τον οποίο οι επιστήμονες δεδομένων μπορούν να μεταφέρουν μεγάλα σύνολα δεδομένων ή να μοιραστούν ένα μοντέλο εκπαιδευμένο σε GPU με άλλους.
  • Το DVC κάνει τα έργα επιστήμης δεδομένων αναπαραγώγιμα δημιουργώντας ελαφριά αγωγών χρησιμοποιώντας σιωπηρά γραφήματα εξάρτησης και κωδικοποιώντας τα δεδομένα και τα αντικείμενα που εμπλέκονται.
  • Το DVC είναι αγνωστικιστής πλατφόρμας. Εκτελείται σε όλα τα μεγάλα λειτουργικά συστήματα (Linux, macOS και Windows) και λειτουργεί ανεξάρτητα από τις γλώσσες προγραμματισμού (Python, R, Julia, shell scripts κ.λπ.) ή τις βιβλιοθήκες ML (Keras, TensorFlow, PyTorch, Scipy και ούτω καθεξής) περισσότερα) που χρησιμοποιούνται στο έργο.
  • Το DVC είναι γρήγορο εγκαθιστώ και δεν απαιτεί ειδική υποδομή, ούτε εξαρτάται από API ή εξωτερικές υπηρεσίες. Είναι ένα αυτόνομο εργαλείο CLI.

SageMaker Experiments και δείγμα DVC

Ο ακόλουθος Δείγμα GitHub δείχνει πώς να χρησιμοποιήσετε το DVC στο περιβάλλον του SageMaker. Συγκεκριμένα, εξετάζουμε πώς να δημιουργήσετε μια προσαρμοσμένη εικόνα με βιβλιοθήκες DVC εγκατεστημένες από προεπιλογή για να παρέχετε ένα συνεπές περιβάλλον ανάπτυξης στους επιστήμονες δεδομένων σας στο Στούντιο Amazon SageMakerκαι πώς να τρέξετε το DVC παράλληλα με τη διαχειριζόμενη υποδομή του SageMaker για επεξεργασία και εκπαίδευση. Επιπλέον, δείχνουμε πώς να εμπλουτίσετε τις πληροφορίες παρακολούθησης του SageMaker με πληροφορίες έκδοσης δεδομένων από το DVC και να τις οπτικοποιήσετε στην κονσόλα του Studio.

Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική λύση και τη ροή εργασίας.

Δημιουργήστε μια προσαρμοσμένη εικόνα Studio με ήδη εγκατεστημένο DVC

Σε αυτή τη Αποθετήριο GitHub, εξηγούμε πώς να δημιουργήσετε μια προσαρμοσμένη εικόνα για το Studio που έχει ήδη εγκαταστήσει το DVC. Το πλεονέκτημα της δημιουργίας μιας εικόνας και της διάθεσης της σε όλους τους χρήστες του Studio είναι ότι δημιουργεί ένα συνεπές περιβάλλον για τους χρήστες του Studio, το οποίο θα μπορούσαν επίσης να εκτελούν τοπικά. Αν και το δείγμα βασίζεται σε AWS Cloud9, μπορείτε επίσης να δημιουργήσετε το κοντέινερ στον τοπικό σας υπολογιστή, αρκεί να έχετε εγκαταστήσει και να λειτουργεί το Docker. Αυτό το δείγμα βασίζεται στα ακόλουθα Dockerfile και περιβάλλον.yml. Η προκύπτουσα εικόνα Docker αποθηκεύεται στο Μητρώο εμπορευματοκιβωτίων Amazon Elastic (Amazon EMR) στον λογαριασμό σας AWS. Δείτε τον παρακάτω κώδικα:

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

Μπορείτε τώρα να δημιουργήστε έναν νέο τομέα Studio or ενημερώστε έναν υπάρχοντα τομέα Studio που έχει πρόσβαση στη νέα εικόνα Docker.

Χρησιμοποιούμε Κιτ ανάπτυξης AWS Cloud (AWS CDK) για να δημιουργήσετε τους ακόλουθους πόρους μέσω AWS CloudFormation:

  • Ένας ρόλος εκτέλεσης του SageMaker με τα σωστά δικαιώματα στον νέο ή τον υπάρχοντα τομέα Studio σας
  • Μια εικόνα SageMaker και μια έκδοση εικόνας SageMaker από την εικόνα Docker conda-env-dvc-kernel που δημιουργήσαμε νωρίτερα
  • An AppImageConfig που καθορίζει πώς πρέπει να ρυθμιστεί η πύλη του πυρήνα
  • Ένας χρήστης Studio (data-scientist-dvc) με τον σωστό ρόλο εκτέλεσης του SageMaker και την προσαρμοσμένη εικόνα Studio που είναι διαθέσιμη σε αυτό

Για αναλυτικές οδηγίες, ανατρέξτε στο Συσχετίστε μια προσαρμοσμένη εικόνα με το SageMaker Studio.

Τρέξτε το εργαστήριο

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

  1. Στον τομέα Studio, εκκινήστε το Studio για το data-scientist-dvc χρήστη.
  2. Επιλέξτε το εικονίδιο Git και μετά επιλέξτε Κλωνοποιήστε ένα αποθετήριο.
    Κλωνοποιήστε ένα αποθετήριο
  3. Εισαγάγετε τη διεύθυνση URL του αποθετηρίου (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) και επιλέξτε Κλώνος.Κλωνοποιήστε ένα κουμπί repo
  4. Στο πρόγραμμα περιήγησης αρχείων, επιλέξτε το amazon-sagemaker-experiments-dvc-demo αποθήκη.
  5. Ανοίξτε το dvc_sagemaker_script_mode.ipynb σημειωματάριο.
  6. Για Προσαρμοσμένη εικόνα, επιλέξτε την εικόνα conda-env-dvc-kernel.
  7. Επιλέξτε Αγορά.
    conda-env-dvc-kernel

Διαμορφώστε το DVC για έκδοση δεδομένων

Δημιουργούμε έναν υποκατάλογο όπου προετοιμάζουμε τα δεδομένα: sagemaker-dvc-sample. Μέσα σε αυτόν τον υποκατάλογο, αρχικοποιούμε ένα νέο αποθετήριο Git και ορίζουμε το τηλεχειριστήριο σε ένα αποθετήριο που δημιουργούμε στο AWS CodeCommit. Ο στόχος είναι να έχουμε διαμορφώσεις και αρχεία DVC για παρακολούθηση δεδομένων σε έκδοση σε αυτό το αποθετήριο. Ωστόσο, το Git προσφέρει εγγενείς δυνατότητες διαχείρισης υποέργων μέσω, για παράδειγμα, υπομονάδων git και υποδέντρων git και μπορείτε να επεκτείνετε αυτό το δείγμα για να χρησιμοποιήσετε οποιοδήποτε από τα προαναφερθέντα εργαλεία που ταιριάζουν καλύτερα στη ροή εργασίας σας.

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

Αν και μπορείτε να αντικαταστήσετε το CodeCommit με οποιαδήποτε άλλη υπηρεσία ελέγχου πηγής, όπως το GitHub, το Gitlab ή το Bitbucket, πρέπει να σκεφτείτε πώς να χειριστείτε τα διαπιστευτήρια για το σύστημά σας. Μια δυνατότητα είναι να αποθηκεύσετε αυτά τα διαπιστευτήρια Διευθυντής μυστικών AWS και ανακτήστε τα κατά την εκτέλεση από το σημειωματάριο Studio καθώς και από τις εργασίες επεξεργασίας και εκπαίδευσης του SageMaker.

Εκκίνηση DVC

Επεξεργαστείτε και εκπαιδεύστε με το DVC και το SageMaker

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

Ρυθμίστε ένα πείραμα SageMaker

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

Δημιουργούμε ένα πείραμα με το όνομα DEMO-sagemaker-experiments-dvc με δύο δοκιμασίες, dvc-trial-single-file και dvc-trial-multi-files, το καθένα αντιπροσωπεύει μια διαφορετική έκδοση του συνόλου δεδομένων.

Ας δημιουργήσουμε το DEMO-sagemaker-experiments-dvc πείραμα:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

Δοκιμή 1: Δημιουργήστε μεμονωμένα αρχεία για εκπαίδευση και επικύρωση

Σε αυτήν την ενότητα, δημιουργούμε ένα σενάριο επεξεργασίας που ανακτά τα ακατέργαστα δεδομένα απευθείας από Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3) ως είσοδος. το επεξεργάζεται για να δημιουργήσει τα σύνολα δεδομένων αμαξοστοιχίας, επικύρωσης και δοκιμής· και αποθηκεύει τα αποτελέσματα πίσω στο Amazon S3 χρησιμοποιώντας DVC. Επιπλέον, δείχνουμε πώς μπορείτε να παρακολουθείτε τα τεχνουργήματα εξόδου που δημιουργούνται από το DVC με το SageMaker κατά την εκτέλεση εργασιών επεξεργασίας και εκπαίδευσης και μέσω των πειραμάτων SageMaker.

Αρχικά, δημιουργούμε το dvc-trial-single-file δοκιμή και προσθέστε το στο DEMO-sagemaker-experiments-dvc πείραμα. Με αυτόν τον τρόπο, διατηρούμε όλα τα δοκιμαστικά στοιχεία που σχετίζονται με αυτό το τεστ οργανωμένα με ουσιαστικό τρόπο.

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

Χρησιμοποιήστε το DVC σε μια εργασία επεξεργασίας του SageMaker για να δημιουργήσετε την έκδοση ενός αρχείου

Σε αυτήν την ενότητα, δημιουργούμε ένα σενάριο επεξεργασίας που λαμβάνει τα ακατέργαστα δεδομένα απευθείας από το Amazon S3 ως είσοδο χρησιμοποιώντας τη δυνατότητα φόρτωσης διαχειριζόμενων δεδομένων του SageMaker. το επεξεργάζεται για να δημιουργήσει τα σύνολα δεδομένων αμαξοστοιχίας, επικύρωσης και δοκιμής· και αποθηκεύει τα αποτελέσματα πίσω στο Amazon S3 χρησιμοποιώντας DVC. Είναι πολύ σημαντικό να κατανοήσουμε ότι όταν χρησιμοποιούμε DVC για αποθήκευση δεδομένων στο Amazon S3 (ή αντλούμε δεδομένα από το Amazon S3), χάνουμε τις δυνατότητες φόρτωσης διαχειριζόμενων δεδομένων του SageMaker, οι οποίες ενδέχεται να έχουν αντίκτυπο στην απόδοση και το κόστος των εργασιών επεξεργασίας και εκπαίδευσης , ειδικά όταν εργάζεστε με πολύ μεγάλα σύνολα δεδομένων. Για περισσότερες πληροφορίες σχετικά με τις διαφορετικές δυνατότητες λειτουργίας εγγενούς εισαγωγής του SageMaker, ανατρέξτε στο Πρόσβαση στα δεδομένα εκπαίδευσης.

Τέλος, ενοποιούμε τις δυνατότητες παρακολούθησης DVC με τις δυνατότητες παρακολούθησης του SageMaker κατά την εκτέλεση εργασιών επεξεργασίας μέσω του SageMaker Experiments.

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

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

Το σενάριο προεπεξεργασίας κλωνοποιεί το αποθετήριο Git. δημιουργεί τα σύνολα δεδομένων αμαξοστοιχίας, επικύρωσης και δοκιμής. και το συγχρονίζει χρησιμοποιώντας DVC. Όπως αναφέρθηκε προηγουμένως, όταν χρησιμοποιούμε DVC, δεν μπορούμε να εκμεταλλευτούμε τις εγγενείς δυνατότητες φόρτωσης δεδομένων του SageMaker. Εκτός από τις ποινές απόδοσης που μπορεί να υποστούμε σε μεγάλα σύνολα δεδομένων, χάνουμε επίσης τις δυνατότητες αυτόματης παρακολούθησης για τα τεχνουργήματα εξόδου. Ωστόσο, χάρη στον ιχνηλάτη και το DVC Python API, μπορούμε να αντισταθμίσουμε αυτές τις ελλείψεις, να ανακτήσουμε τέτοιες πληροφορίες κατά τη διάρκεια της εκτέλεσης και να τις αποθηκεύσουμε στο δοκιμαστικό στοιχείο με λίγη προσπάθεια. Η προστιθέμενη αξία με αυτόν τον τρόπο είναι να έχετε σε ενιαία προβολή των τεχνουργημάτων εισόδου και εξόδου που ανήκουν σε αυτή τη συγκεκριμένη εργασία επεξεργασίας.

Το πλήρες σενάριο Python προεπεξεργασίας είναι διαθέσιμο στο GitHub repo.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

Το SageMaker μας δίνει τη δυνατότητα να εκτελούμε το σενάριο επεξεργασίας μας σε εικόνες κοντέινερ που διαχειρίζεται η AWS και οι οποίες είναι βελτιστοποιημένες για εκτέλεση στην υποδομή AWS. Εάν το σενάριό μας απαιτεί πρόσθετες εξαρτήσεις, μπορούμε να παρέχουμε ένα requirements.txt αρχείο. Όταν ξεκινάμε την εργασία επεξεργασίας, το SageMaker χρησιμοποιεί pip-install για να εγκαταστήσουμε όλες τις βιβλιοθήκες που χρειαζόμαστε (για παράδειγμα, βιβλιοθήκες που σχετίζονται με DVC). Εάν χρειάζεται να έχετε αυστηρότερο έλεγχο όλων των βιβλιοθηκών που είναι εγκατεστημένες στα κοντέινερ, μπορείτε να φέρετε το δικό σας κοντέινερ στο SageMaker, για παράδειγμα για μεταποίηση και εκπαίδευση.

Έχουμε τώρα όλα τα συστατικά για να εκτελέσουμε την εργασία επεξεργασίας του SageMaker:

  • Ένα σενάριο επεξεργασίας που μπορεί να επεξεργαστεί πολλά ορίσματα (--train-test-split-ratio) και δύο περιβαλλοντικές μεταβλητές (DVC_REPO_URL και DVC_BRANCH)
  • A requiremets.txt φιλέτο
  • Ένα αποθετήριο Git (στο CodeCommit)
  • Ένα πείραμα και δοκιμή του SageMaker
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

Στη συνέχεια, εκτελούμε την εργασία επεξεργασίας με το preprocessing-experiment.py γραφή, experiment_config, dvc_repo_url, να dvc_branch ορίσαμε νωρίτερα.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

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

Το παρακάτω στιγμιότυπο οθόνης δείχνει πού μπορείτε να βρείτε τις αποθηκευμένες πληροφορίες στο Studio. Σημειώστε τις τιμές για dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URL, να data_commit_hash σχετικά με την παράμετροι Tab.

Καρτέλα παραμέτρων SageMaker Experiments

Σημειώστε επίσης τις λεπτομέρειες εισόδου και εξόδου στο Αντικείμενα Tab.

Καρτέλα τεχνουργημάτων SageMaker Experiments

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

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

Προπονούμαστε στο dvc-trial-single-file υποκατάστημα πρώτα.

Όταν τραβάουμε δεδομένα με DVC, χρησιμοποιούμε την ακόλουθη δομή δεδομένων:

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

Τώρα δημιουργούμε έναν Εκτιμητή Scikit-learn χρησιμοποιώντας το SDK SageMaker Python. Αυτό μας επιτρέπει να καθορίσουμε τα ακόλουθα:

  • Η διαδρομή προς το αρχείο πηγής Python, το οποίο θα πρέπει να εκτελείται ως σημείο εισόδου στην εκπαίδευση.
  • Ο ρόλος IAM που ελέγχει τα δικαιώματα πρόσβασης σε δεδομένα Amazon S3 και CodeCommit και εκτέλεση λειτουργιών SageMaker.
  • Μια λίστα με λεξικά που καθορίζουν τις μετρήσεις που χρησιμοποιούνται για την αξιολόγηση των εργασιών κατάρτισης.
  • Ο αριθμός και το είδος των περιπτώσεων εκπαίδευσης. Χρησιμοποιούμε ένα ml.m5.μεγάλο παράδειγμα.
  • Υπερπαράμετροι που χρησιμοποιούνται για προπόνηση.
  • Μεταβλητές περιβάλλοντος για χρήση κατά τη διάρκεια της εργασίας εκπαίδευσης. Χρησιμοποιούμε DVC_REPO_URL, DVC_BRANCH, να USER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

Καλούμε τη μέθοδο προσαρμογής του Εκτιμητή με το experiment_config που ορίσαμε νωρίτερα για να ξεκινήσει η εκπαίδευση.

%%time
estimator.fit(experiment_config=experiment_config)

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

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

Δοκιμή 2: Δημιουργία πολλαπλών αρχείων για εκπαίδευση και επικύρωση

Δημιουργούμε ένα νέο dvc-trial-multi-files δοκιμή και προσθέστε το στο τρέχον DEMO-sagemaker-experiments-dvc πείραμα.

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

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

Μπορείτε να εξερευνήσετε το δεύτερο σενάριο προεπεξεργασίας Python στο GitHub.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

Η εργασία επεξεργασίας διαρκεί περίπου 5 λεπτά για να ολοκληρωθεί. Τώρα μπορείτε να δείτε τις δοκιμαστικές λεπτομέρειες για το σύνολο δεδομένων πολλών αρχείων.

Τα ακόλουθα στιγμιότυπα οθόνης δείχνουν πού μπορείτε να βρείτε τις αποθηκευμένες πληροφορίες στο SageMaker Experiments στο Δοκιμαστικά εξαρτήματα ενότητα στη διεπαφή χρήστη του Studio. Σημειώστε τις τιμές για dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URL, να data_commit_hash σχετικά με την παράμετροι Tab.

Καρτέλα παραμέτρων πειραμάτων πολλών αρχείων SageMaker

Μπορείτε επίσης να ελέγξετε τις λεπτομέρειες εισόδου και εξόδου στο Αντικείμενα Tab.

Καρτέλα τεχνουργημάτων πειραμάτων πολλών αρχείων SageMaker

Τώρα προπονούμαστε στο dvc-trial-multi-files κλαδί. Όταν τραβάουμε δεδομένα με DVC, χρησιμοποιούμε την ακόλουθη δομή δεδομένων:

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

Παρόμοια όπως κάναμε πριν, δημιουργούμε ένα νέο Scikit-learn Estimator με το δοκιμαστικό όνομα dvc-trial-multi-files και ξεκινήστε τη δουλειά της εκπαίδευσης.

%%time

estimator.fit(experiment_config=experiment_config)

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

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

Φιλοξενήστε το μοντέλο σας στο SageMaker

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

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

Αρχικά, λαμβάνουμε το πιο πρόσφατο σύνολο δεδομένων δοκιμής τοπικά στο σημειωματάριο ανάπτυξης στο Studio. Για το σκοπό αυτό, μπορούμε να χρησιμοποιήσουμε dvc.api.read() για να φορτώσετε τα ανεπεξέργαστα δεδομένα που είχαν αποθηκευτεί στο Amazon S3 από την εργασία επεξεργασίας του SageMaker.

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

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

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

Διαγράψτε το τελικό σημείο

Θα πρέπει να διαγράψετε τα τελικά σημεία όταν δεν χρησιμοποιούνται πλέον, επειδή χρεώνονται κατά τη στιγμή που θα αναπτυχθεί (για περισσότερες πληροφορίες, βλ. Τιμολόγηση του Amazon SageMaker). Φροντίστε να διαγράψετε το τελικό σημείο για να αποφύγετε μη αναμενόμενο κόστος.

predictor.delete_endpoint()

εκκαθάριση

Πριν καταργήσετε όλους τους πόρους που δημιουργήσατε, βεβαιωθείτε ότι όλες οι εφαρμογές έχουν διαγραφεί από το data-scientist-dvc χρήστη, συμπεριλαμβανομένων όλων των εφαρμογών KernelGateway, καθώς και της προεπιλεγμένης εφαρμογής JupiterServer.

Στη συνέχεια, μπορείτε να καταστρέψετε τη στοίβα AWS CDK εκτελώντας την ακόλουθη εντολή:

cdk destroy

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

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

Συμπέρασμα

Σε αυτήν την ανάρτηση, διαβάσατε ένα παράδειγμα για το πώς να παρακολουθείτε τα πειράματά σας σε κώδικα, δεδομένα, τεχνουργήματα και μετρήσεις χρησιμοποιώντας τα πειράματα SageMaker και τις εργασίες επεξεργασίας και εκπαίδευσης του SageMaker σε συνδυασμό με το DVC. Δημιουργήσαμε μια εικόνα Docker που περιέχει DVC, η οποία ήταν απαραίτητη για το Studio ως σημειωματάριο ανάπτυξης, και δείξαμε πώς μπορείτε να χρησιμοποιήσετε εργασίες επεξεργασίας και εκπαίδευσης με το DVC. Ετοιμάσαμε δύο εκδόσεις των δεδομένων και χρησιμοποιήσαμε DVC για να τα διαχειριστούμε με το Git. Στη συνέχεια χρησιμοποιήσατε το SageMaker Experiments για να παρακολουθείτε την επεξεργασία και την εκπαίδευση με τις δύο εκδόσεις των δεδομένων, προκειμένου να έχετε μια ενοποιημένη προβολή παραμέτρων, τεχνουργημάτων και μετρήσεων σε ένα μόνο τζάμι. Τέλος, αναπτύξατε το μοντέλο σε ένα τελικό σημείο του SageMaker και χρησιμοποιήσατε ένα δοκιμαστικό σύνολο δεδομένων από τη δεύτερη έκδοση δεδομένων για να καλέσετε το τελικό σημείο του SageMaker και να λάβετε προβλέψεις.

Ως επόμενο βήμα, μπορείτε να επεκτείνετε το υπάρχον σημειωματάριο και να εισαγάγετε τη δική σας στρατηγική μηχανικής λειτουργιών και να χρησιμοποιήσετε το DVC και το SageMaker για να εκτελέσετε τα πειράματά σας. Πάμε να φτιάξουμε!

Για περαιτέρω ανάγνωση, ανατρέξτε στις ακόλουθες πηγές:


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

Πάολο Ντι ΦραντσέσκοΠάολο Ντι Φραντσέσκο είναι αρχιτέκτονας λύσεων στην AWS. Έχει εμπειρία στον τομέα των τηλεπικοινωνιών και της μηχανικής λογισμικού. Είναι παθιασμένος με τη μηχανική μάθηση και επί του παρόντος εστιάζει στη χρήση της εμπειρίας του για να βοηθήσει τους πελάτες να επιτύχουν τους στόχους τους στο AWS, ιδιαίτερα σε συζητήσεις γύρω από τα MLOps. Εκτός δουλειάς, του αρέσει να παίζει ποδόσφαιρο και να διαβάζει.

Εϊτάν ΣέλαΕϊτάν Σέλα είναι Αρχιτέκτονας λύσεων Specialist Machine Learning με τις Υπηρεσίες Ιστού της Amazon. Συνεργάζεται με πελάτες AWS για να παρέχει καθοδήγηση και τεχνική βοήθεια, βοηθώντας τους να δημιουργήσουν και να λειτουργήσουν λύσεις μηχανικής εκμάθησης στο AWS. Στον ελεύθερο χρόνο του, ο Eitan απολαμβάνει το τζόκινγκ και την ανάγνωση των πιο πρόσφατων άρθρων μηχανικής εκμάθησης.

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

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