Αναπτύξτε και διαχειριστείτε αγωγούς μηχανικής εκμάθησης με το Terraform χρησιμοποιώντας το Amazon SageMaker PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Αναπτύξτε και διαχειριστείτε αγωγούς μηχανικής εκμάθησης με το Terraform χρησιμοποιώντας το Amazon SageMaker

Οι πελάτες AWS βασίζονται στην Infrastructure as Code (IaC) για να σχεδιάσουν, να αναπτύξουν και να διαχειριστούν την υποδομή τους στο cloud. Το IaC διασφαλίζει ότι η υποδομή και οι υπηρεσίες πελατών είναι συνεπείς, επεκτάσιμες και αναπαραγώγιμες, ενώ είναι σε θέση να ακολουθούν τις βέλτιστες πρακτικές στον τομέα των λειτουργιών ανάπτυξης (DevOps).

Μια πιθανή προσέγγιση για τη διαχείριση της υποδομής και των υπηρεσιών AWS με το IaC είναι Terraform, το οποίο επιτρέπει στους προγραμματιστές να οργανώσουν την υποδομή τους σε επαναχρησιμοποιήσιμες μονάδες κώδικα. Αυτή η πτυχή αποκτά ολοένα και μεγαλύτερη σημασία στον τομέα της μηχανικής μάθησης (ML). Η ανάπτυξη και η διαχείριση αγωγών ML, συμπεριλαμβανομένης της εκπαίδευσης και των συμπερασμάτων με το Terraform ως IaC, σάς επιτρέπει να κλιμακώνεστε εύκολα για πολλαπλές περιπτώσεις χρήσης ML ή Περιοχές χωρίς να χρειάζεται να αναπτύξετε την υποδομή από την αρχή. Επιπλέον, παρέχει συνοχή για την υποδομή (για παράδειγμα, τύπο και μέγεθος παράδειγμα) για εκπαίδευση και εξαγωγή συμπερασμάτων σε διαφορετικές υλοποιήσεις του αγωγού ML. Αυτό σας επιτρέπει να δρομολογείτε τα αιτήματα και την εισερχόμενη κίνηση σε διαφορετικά Amazon Sage Maker καταληκτικά σημεία.

Σε αυτήν την ανάρτηση, σας δείχνουμε πώς να αναπτύσσετε και να διαχειρίζεστε αγωγούς ML χρησιμοποιώντας Terraform και Amazon SageMaker.

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

Αυτή η ανάρτηση παρέχει κώδικα και σας καθοδηγεί στα βήματα που είναι απαραίτητα για την ανάπτυξη της υποδομής AWS για αγωγούς ML με το Terraform για εκπαίδευση μοντέλων και εξαγωγή συμπερασμάτων χρησιμοποιώντας το Amazon SageMaker. Η διαχείριση του αγωγού ML γίνεται μέσω Λειτουργίες βημάτων AWS για την ενορχήστρωση των διαφορετικών βημάτων που εφαρμόζονται στον αγωγό ML, όπως φαίνεται στο παρακάτω σχήμα.

Βήματα Λειτουργίας Βήματος

Βήμα Λειτουργίες ξεκινά ένα AWS Lambda λειτουργία, δημιουργώντας ένα μοναδικό αναγνωριστικό εργασίας, το οποίο στη συνέχεια χρησιμοποιείται κατά την έναρξη μιας εργασίας εκπαίδευσης του SageMaker. Το Step Functions δημιουργεί επίσης ένα μοντέλο, διαμόρφωση τελικού σημείου και τελικό σημείο που χρησιμοποιούνται για εξαγωγή συμπερασμάτων. Οι πρόσθετοι πόροι περιλαμβάνουν τα ακόλουθα:

Ο κώδικας που σχετίζεται με το ML για εκπαίδευση και εξαγωγή συμπερασμάτων με μια εικόνα Docker βασίζεται κυρίως στην υπάρχουσα εργασία που ακολουθεί Αποθετήριο GitHub.

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

Διάγραμμα Αρχιτεκτονικής

Σας καθοδηγούμε στα ακόλουθα βήματα υψηλού επιπέδου:

  1. Αναπτύξτε την υποδομή AWS σας με το Terraform.
  2. Σπρώξτε την εικόνα Docker στο Amazon ECR.
  3. Εκτελέστε τη διοχέτευση ML.
  4. Επικαλέστε το τελικό σημείο σας.

Δομή αποθετηρίου

Μπορείτε να βρείτε το αποθετήριο που περιέχει τον κώδικα και τα δεδομένα που χρησιμοποιούνται για αυτήν την ανάρτηση παρακάτω Αποθετήριο GitHub.

Το αποθετήριο περιλαμβάνει τους ακόλουθους καταλόγους:

  • /terraform – Αποτελείται από τους ακόλουθους υποφακέλους:
    • ./infrastructure – Περιέχει το αρχείο main.tf που καλεί τη μονάδα αγωγού ML, επιπλέον των δηλώσεων μεταβλητών που χρησιμοποιούμε για την ανάπτυξη της υποδομής
    • ./ml-pipeline-module – Περιέχει τη μονάδα αγωγού Terraform ML, την οποία μπορούμε να χρησιμοποιήσουμε ξανά
  • /src – Αποτελείται από τους ακόλουθους υποφακέλους:
    • ./container – Περιέχει παράδειγμα κώδικα για εκπαίδευση και συμπέρασμα με τους ορισμούς για την εικόνα Docker
    • ./lambda_function – Περιέχει τον κώδικα Python για τις διαμορφώσεις που δημιουργεί τη συνάρτηση Lambda, όπως ένα μοναδικό αναγνωριστικό εργασίας για την εργασία εκπαίδευσης SageMaker
  • /data – Περιέχει το ακόλουθο αρχείο:
    • ./iris.csv – Περιέχει δεδομένα για την εκπαίδευση του μοντέλου ML

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

Για αυτήν την καθοδήγηση, θα πρέπει να έχετε τις ακόλουθες προϋποθέσεις:

Αναπτύξτε την υποδομή AWS σας με το Terraform

Για να αναπτύξετε τη διοχέτευση ML, πρέπει να προσαρμόσετε μερικές μεταβλητές και ονόματα σύμφωνα με τις ανάγκες σας. Ο κωδικός για αυτό το βήμα βρίσκεται στο /terraform Κατάλογο.

Κατά την προετοιμασία για πρώτη φορά, ανοίξτε το αρχείο terraform/infrastructure/terraform.tfvars και προσαρμόστε τη μεταβλητή όνομα_προγράμματος στο όνομα του έργου σας, εκτός από τη μεταβλητή περιοχή εάν θέλετε να αναπτυχθείτε σε άλλη Περιφέρεια. Μπορείτε επίσης να αλλάξετε πρόσθετες μεταβλητές, όπως τύπους παρουσιών για εκπαίδευση και συμπέρασμα.

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

export AWS_PROFILE=<your_aws_cli_profile_name>
cd terraform/infrastructure
terraform init
terraform plan
terraform apply

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

Η έξοδος θα πρέπει να μοιάζει με την ακόλουθη εμφανιζόμενη έξοδο, συμπεριλαμβανομένης της διεύθυνσης URL του αποθετηρίου ECR:

Apply complete! Resources: 19 added, 0 changed, 0 destroyed. Outputs: ecr_repository_url = <account_number>.dkr.ecr.eu-west-1.amazonaws.com/ml-pipeline-terraform-demo

Σπρώξτε την εικόνα Docker στο Amazon ECR

Για να εκπαιδεύσουν η διοχέτευση ML και το SageMaker και να παρέχουν ένα τελικό σημείο του SageMaker για συμπεράσματα, πρέπει να παρέχετε μια εικόνα Docker και να την αποθηκεύσετε στο Amazon ECR. Μπορείτε να βρείτε ένα παράδειγμα στον κατάλογο src/container. Εάν έχετε ήδη εφαρμόσει την υποδομή AWS από το προηγούμενο βήμα, μπορείτε να προωθήσετε την εικόνα Docker όπως περιγράφεται. Αφού αναπτυχθεί η εικόνα του Docker, μπορείτε να κάνετε τις ακόλουθες ενέργειες και να την προωθήσετε στο Amazon ECR (προσαρμόστε τη διεύθυνση URL ECR του Amazon σύμφωνα με τις ανάγκες σας):

cd src/container
export AWS_PROFILE=<your_aws_cli_profile_name>
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin <account_number>.dkr.ecr.eu-west-1.amazonaws.com
docker build -t ml-training .
docker tag ml-training:latest <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>:latest
docker push <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>

Εάν έχετε ήδη εφαρμόσει την υποδομή AWS με το Terraform, μπορείτε να προωθήσετε τις αλλαγές του κώδικα και της εικόνας Docker απευθείας στο Amazon ECR χωρίς να πραγματοποιήσετε ξανά ανάπτυξη μέσω Terraform.

Εκτελέστε τη διοχέτευση ML

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

Λειτουργία Start Step

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

Κατάσταση τελικού σημείου SageMaker

Επικαλέστε το τελικό σημείο σας

Για να καλέσετε το τελικό σας σημείο (σε αυτό το παράδειγμα, για το σύνολο δεδομένων iris), μπορείτε να χρησιμοποιήσετε το ακόλουθο σενάριο Python με το AWS SDK για Python (Boto3). Μπορείτε να το κάνετε αυτό από ένα σημειωματάριο SageMaker ή να ενσωματώσετε το ακόλουθο απόσπασμα κώδικα σε μια συνάρτηση Lambda:

import boto3
from io import StringIO
import pandas as pd client = boto3.client('sagemaker-runtime') endpoint_name = 'Your endpoint name' # Your endpoint name.
content_type = "text/csv"   # The MIME type of the input data in the request body. payload = pd.DataFrame([[1.5,0.2,4.4,2.6]])
csv_file = StringIO()
payload.to_csv(csv_file, sep=",", header=False, index=False)
payload_as_csv = csv_file.getvalue() response = client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType=content_type,
Body=payload_as_csv
) label = response['Body'].read().decode('utf-8')
print(label)

εκκαθάριση

Μπορείτε να καταστρέψετε την υποδομή που δημιουργήθηκε από το Terraform με την εντολή terraform death, αλλά πρέπει πρώτα να διαγράψετε τα δεδομένα και τα αρχεία στους κάδους S3. Επιπλέον, το τελικό σημείο του SageMaker (ή πολλά τελικά σημεία του SageMaker εάν εκτελούνται πολλές φορές) δημιουργείται μέσω των Λειτουργιών Βήματος και δεν διαχειρίζεται μέσω Terraform. Αυτό σημαίνει ότι η ανάπτυξη πραγματοποιείται όταν εκτελείται η διοχέτευση ML με Λειτουργίες Βήματος. Επομένως, βεβαιωθείτε ότι έχετε διαγράψει επίσης το τελικό σημείο του SageMaker ή τα τελικά σημεία που δημιουργήθηκαν μέσω της διοχέτευσης Step Functions ML για να αποφύγετε περιττό κόστος. Ολοκληρώστε τα παρακάτω βήματα:

  1. Στην κονσόλα Amazon S3, διαγράψτε το σύνολο δεδομένων στον κάδο εκπαίδευσης S3.
  2. Διαγράψτε όλα τα μοντέλα που εκπαιδεύσατε μέσω της διοχέτευσης ML στον κάδο μοντέλων S3, είτε μέσω της κονσόλας Amazon S3 είτε μέσω του AWS CLI.
  3. Καταστρέψτε την υποδομή που δημιουργήθηκε μέσω Terraform:
    cd terraform/infrastructure
    terraform destroy

  4. Διαγράψτε τα τελικά σημεία του SageMaker, τη διαμόρφωση τελικού σημείου και τα μοντέλα που δημιουργήθηκαν μέσω των Λειτουργιών Βήματος, είτε στην κονσόλα SageMaker είτε μέσω του AWS CLI.

Συμπέρασμα

Συγχαρητήρια! Έχετε αναπτύξει μια διοχέτευση ML χρησιμοποιώντας το SageMaker με το Terraform. Αυτό το παράδειγμα λύσης δείχνει πώς μπορείτε εύκολα να αναπτύξετε υποδομές και υπηρεσίες AWS για αγωγούς ML με επαναχρησιμοποιήσιμο τρόπο. Αυτό σας επιτρέπει να κλιμακώνετε για περιπτώσεις πολλαπλών χρήσεων ή Περιοχές και επιτρέπει την εκπαίδευση και την ανάπτυξη μοντέλων ML με ένα κλικ με συνεπή τρόπο. Επιπλέον, μπορείτε να εκτελέσετε τη διοχέτευση ML πολλές φορές, για παράδειγμα, όταν είναι διαθέσιμα νέα δεδομένα ή θέλετε να αλλάξετε τον κώδικα αλγορίθμου. Μπορείτε επίσης να επιλέξετε να δρομολογήσετε αιτήματα ή κυκλοφορία σε διαφορετικά τελικά σημεία του SageMaker.

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


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

Αναπτύξτε και διαχειριστείτε αγωγούς μηχανικής εκμάθησης με το Terraform χρησιμοποιώντας το Amazon SageMaker PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Oliver Zollikofer είναι Επιστήμονας Δεδομένων στο Amazon Web Services. Επιτρέπει στους πελάτες παγκόσμιων επιχειρήσεων να δημιουργήσουν, να εκπαιδεύσουν και να αναπτύξουν μοντέλα μηχανικής εκμάθησης, καθώς και να διαχειριστούν τον κύκλο ζωής του μοντέλου ML με τα MLOps. Επιπλέον, κατασκευάζει και αρχιτέκτονα σχετικές λύσεις cloud.

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

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