Καθώς οι πελάτες επιταχύνουν τη μετεγκατάστασή τους στο cloud και μεταμορφώνουν την επιχείρησή τους, ορισμένοι βρίσκονται σε καταστάσεις όπου πρέπει να διαχειρίζονται λειτουργίες πληροφορικής σε περιβάλλον multicloud. Για παράδειγμα, μπορεί να έχετε αποκτήσει μια εταιρεία που λειτουργούσε ήδη σε διαφορετικό πάροχο cloud ή μπορεί να έχετε φόρτο εργασίας που δημιουργεί αξία από μοναδικές δυνατότητες που παρέχονται από το AWS. Ένα άλλο παράδειγμα είναι οι ανεξάρτητοι προμηθευτές λογισμικού (ISV) που καθιστούν τα προϊόντα και τις υπηρεσίες τους διαθέσιμα σε διαφορετικές πλατφόρμες cloud προς όφελος των τελικών πελατών τους. Εναλλακτικά, ένας οργανισμός μπορεί να δραστηριοποιείται σε μια Περιοχή όπου δεν είναι διαθέσιμος ένας κύριος πάροχος cloud και προκειμένου να ανταποκριθεί στις απαιτήσεις κυριαρχίας δεδομένων ή διαμονής δεδομένων, μπορεί να χρησιμοποιήσει έναν δευτερεύοντα πάροχο cloud.
Σε αυτά τα σενάρια, καθώς αρχίζετε να ενστερνίζεστε τη γενετική τεχνητή νοημοσύνη, τα μεγάλα γλωσσικά μοντέλα (LLM) και τις τεχνολογίες μηχανικής εκμάθησης (ML) ως βασικό μέρος της επιχείρησής σας, μπορεί να αναζητάτε επιλογές για να επωφεληθείτε από AWS AI και ML δυνατότητες εκτός του AWS σε περιβάλλον multicloud. Για παράδειγμα, μπορεί να θέλετε να το χρησιμοποιήσετε Amazon Sage Maker για να δημιουργήσετε και να εκπαιδεύσετε το μοντέλο ML ή να χρησιμοποιήσετε Amazon SageMaker Jumpstart για να αναπτύξετε προκατασκευασμένα μοντέλα ML ή τρίτων κατασκευαστών, τα οποία μπορείτε να αναπτύξετε με το πάτημα μερικών κουμπιών. Ή μπορεί να θέλετε να εκμεταλλευτείτε Θεμέλιο του Αμαζονίου για να δημιουργήσετε και να κλιμακώσετε παραγωγικές εφαρμογές τεχνητής νοημοσύνης ή μπορείτε να αξιοποιήσετε Προεκπαιδευμένες υπηρεσίες AI της AWS, που δεν απαιτούν από εσάς να μάθετε δεξιότητες μηχανικής μάθησης. Το AWS παρέχει υποστήριξη για σενάρια όπου οι οργανισμοί θέλουν φέρνουν το δικό τους μοντέλο στο Amazon SageMaker or στον καμβά του Amazon SageMaker για προβλέψεις.
Σε αυτήν την ανάρτηση, δείχνουμε μία από τις πολλές επιλογές που έχετε για να εκμεταλλευτείτε το ευρύτερο και βαθύτερο σύνολο δυνατοτήτων AI/ML του AWS σε περιβάλλον multicloud. Δείχνουμε πώς μπορείτε να δημιουργήσετε και να εκπαιδεύσετε ένα μοντέλο ML στο AWS και να αναπτύξετε το μοντέλο σε άλλη πλατφόρμα. Εκπαιδεύουμε το μοντέλο χρησιμοποιώντας το Amazon SageMaker, αποθηκεύουμε τα τεχνουργήματα του μοντέλου Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3) και αναπτύξτε και εκτελέστε το μοντέλο στο Azure. Αυτή η προσέγγιση είναι επωφελής εάν χρησιμοποιείτε υπηρεσίες AWS για ML για το πιο ολοκληρωμένο σύνολο δυνατοτήτων του, ωστόσο πρέπει να εκτελέσετε το μοντέλο σας σε άλλο πάροχο cloud σε μία από τις περιπτώσεις που συζητήσαμε.
Βασικές έννοιες
Στούντιο Amazon SageMaker είναι ένα διαδικτυακό, ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) για μηχανική μάθηση. Το SageMaker Studio επιτρέπει σε επιστήμονες δεδομένων, μηχανικούς ML και μηχανικούς δεδομένων να προετοιμάσουν δεδομένα, να δημιουργήσουν, να εκπαιδεύσουν και να αναπτύξουν μοντέλα ML σε μια διεπαφή ιστού. Με το SageMaker Studio, μπορείτε να έχετε πρόσβαση σε ειδικά σχεδιασμένα εργαλεία για κάθε στάδιο του κύκλου ζωής της ανάπτυξης ML, από την προετοιμασία δεδομένων έως τη δημιουργία, την εκπαίδευση και την ανάπτυξη των μοντέλων σας ML, βελτιώνοντας την παραγωγικότητα της ομάδας επιστήμης δεδομένων έως και δέκα φορές. Σημειωματάρια SageMaker Studio είναι σημειωματάρια γρήγορης εκκίνησης, συνεργασίας που ενσωματώνονται με ειδικά σχεδιασμένα εργαλεία ML στο SageMaker και σε άλλες υπηρεσίες AWS.
Το SageMaker είναι μια ολοκληρωμένη υπηρεσία ML που δίνει τη δυνατότητα σε επιχειρησιακούς αναλυτές, επιστήμονες δεδομένων και μηχανικούς MLOps να δημιουργήσουν, να εκπαιδεύσουν και να αναπτύξουν μοντέλα ML για οποιαδήποτε περίπτωση χρήσης, ανεξάρτητα από την τεχνογνωσία της ML.
Το AWS παρέχει Δοχεία Deep Learning (DLC) για δημοφιλή πλαίσια ML όπως τα PyTorch, TensorFlow και Apache MXNet, τα οποία μπορείτε να χρησιμοποιήσετε με το SageMaker για εκπαίδευση και εξαγωγή συμπερασμάτων. Τα DLC είναι διαθέσιμα ως εικόνες Docker Μητρώο εμπορευματοκιβωτίων Amazon Elastic (Amazon ECR). Οι εικόνες του Docker είναι προεγκατεστημένες και δοκιμασμένες με τις πιο πρόσφατες εκδόσεις δημοφιλών πλαισίων βαθιάς εκμάθησης καθώς και με άλλες εξαρτήσεις που απαιτούνται για εκπαίδευση και εξαγωγή συμπερασμάτων. Για μια πλήρη λίστα των προκατασκευασμένων εικόνων Docker που διαχειρίζεται το SageMaker, βλ Διαδρομές μητρώου Docker και Παράδειγμα κώδικα. Το Amazon ECR υποστηρίζει σάρωση ασφαλείας και είναι ενσωματωμένο με Επιθεωρητής Amazon υπηρεσία διαχείρισης ευπάθειας για την κάλυψη των απαιτήσεων ασφάλειας συμμόρφωσης με την εικόνα του οργανισμού σας και για την αυτοματοποίηση της σάρωσης αξιολόγησης ευπάθειας. Οι οργανισμοί μπορούν επίσης να χρησιμοποιήσουν Aws trainium και Αίσθηση AWS για καλύτερη τιμή-απόδοση για την εκτέλεση εργασιών εκπαίδευσης ML ή συμπερασμάτων.
Επισκόπηση λύσεων
Σε αυτήν την ενότητα, περιγράφουμε πώς να δημιουργήσετε και να εκπαιδεύσετε ένα μοντέλο χρησιμοποιώντας το SageMaker και να αναπτύξετε το μοντέλο στο Azure Functions. Χρησιμοποιούμε ένα σημειωματάριο SageMaker Studio για την κατασκευή, την εκπαίδευση και την ανάπτυξη του μοντέλου. Εκπαιδεύουμε το μοντέλο στο SageMaker χρησιμοποιώντας μια προ-ενσωματωμένη εικόνα Docker για το PyTorch. Αν και αναπτύσσουμε το εκπαιδευμένο μοντέλο στο Azure σε αυτήν την περίπτωση, θα μπορούσατε να χρησιμοποιήσετε την ίδια προσέγγιση για να αναπτύξετε το μοντέλο σε άλλες πλατφόρμες, όπως σε εγκαταστάσεις ή άλλες πλατφόρμες cloud.
Όταν δημιουργούμε μια εργασία εκπαίδευσης, το SageMaker εκκινεί τις περιπτώσεις υπολογισμού ML και χρησιμοποιεί τον εκπαιδευτικό μας κώδικα και το σύνολο δεδομένων εκπαίδευσης για να εκπαιδεύσει το μοντέλο. Αποθηκεύει τα προκύπτοντα τεχνουργήματα του μοντέλου και άλλα αποτελέσματα σε έναν κάδο S3 που καθορίζουμε ως είσοδο στην εργασία εκπαίδευσης. Όταν ολοκληρωθεί η εκπαίδευση του μοντέλου, χρησιμοποιούμε το Ανοίξτε το Neural Network Exchange (ONNX) βιβλιοθήκη χρόνου εκτέλεσης για εξαγωγή του μοντέλου PyTorch ως μοντέλο ONNX.
Τέλος, αναπτύσσουμε το μοντέλο ONNX μαζί με έναν προσαρμοσμένο κώδικα συμπερασμάτων γραμμένο σε Python στις συναρτήσεις Azure χρησιμοποιώντας το Azure CLI. Το ONNX υποστηρίζει τα περισσότερα από τα πλαίσια και εργαλεία ML που χρησιμοποιούνται συνήθως. Ένα πράγμα που πρέπει να σημειωθεί είναι ότι η μετατροπή ενός μοντέλου ML σε ONNX είναι χρήσιμη εάν θέλετε να χρησιμοποιήσετε ένα διαφορετικό πλαίσιο ανάπτυξης στόχου, όπως το PyTorch σε TensorFlow. Εάν χρησιμοποιείτε το ίδιο πλαίσιο και στην πηγή και στον στόχο, δεν χρειάζεται να μετατρέψετε το μοντέλο σε μορφή ONNX.
Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική αυτής της προσέγγισης.
Χρησιμοποιούμε ένα σημειωματάριο SageMaker Studio μαζί με το SDK SageMaker Python να κατασκευάσουμε και να εκπαιδεύσουμε το μοντέλο μας. Το SageMaker Python SDK είναι μια βιβλιοθήκη ανοιχτού κώδικα για εκπαίδευση και ανάπτυξη μοντέλων ML στο SageMaker. Για περισσότερες λεπτομέρειες, ανατρέξτε στο Δημιουργήστε ή ανοίξτε ένα σημειωματάριο Amazon SageMaker Studio.
Τα αποσπάσματα κώδικα στις ακόλουθες ενότητες έχουν δοκιμαστεί στο περιβάλλον σημειωματάριου SageMaker Studio χρησιμοποιώντας την εικόνα Data Science 3.0 και τον πυρήνα Python 3.0.
Σε αυτή τη λύση, δείχνουμε τα ακόλουθα βήματα:
- Εκπαιδεύστε ένα μοντέλο PyTorch.
- Εξαγάγετε το μοντέλο PyTorch ως μοντέλο ONNX.
- Συσκευάστε το μοντέλο και τον κωδικό συμπερασμάτων.
- Αναπτύξτε το μοντέλο στις λειτουργίες Azure.
Προϋποθέσεις
Θα πρέπει να έχετε τις ακόλουθες προϋποθέσεις:
- Λογαριασμός AWS.
- Ένας χρήστης τομέα SageMaker και SageMaker Studio. Για οδηγίες για τη δημιουργία αυτών, ανατρέξτε στο Ενσωματωμένη στον τομέα Amazon SageMaker με χρήση γρήγορης εγκατάστασης.
- Το Azure CLI.
- Πρόσβαση στο Azure και διαπιστευτήρια για έναν κύριο υπηρεσίας που έχει δικαιώματα δημιουργίας και διαχείρισης Λειτουργιών Azure.
Εκπαιδεύστε ένα μοντέλο με το PyTorch
Σε αυτήν την ενότητα, περιγράφουμε λεπτομερώς τα βήματα για την εκπαίδευση ενός μοντέλου PyTorch.
Εγκατάσταση εξαρτήσεων
Εγκαταστήστε τις βιβλιοθήκες για να εκτελέσετε τα βήματα που απαιτούνται για την εκπαίδευση και την ανάπτυξη του μοντέλου:
pip install torchvision onnx onnxruntime
Ολοκληρώστε την αρχική ρύθμιση
Ξεκινάμε με την εισαγωγή του AWS SDK για Python (Boto3) και την SDK SageMaker Python. Ως μέρος της ρύθμισης, ορίζουμε τα εξής:
- Ένα αντικείμενο συνεδρίας που παρέχει πρακτικές μεθόδους στο πλαίσιο του SageMaker και του δικού μας λογαριασμού.
- Ένας ρόλος SageMaker που χρησιμοποιούσε το ARN για την ανάθεση αδειών στην υπηρεσία εκπαίδευσης και φιλοξενίας. Το χρειαζόμαστε έτσι ώστε αυτές οι υπηρεσίες να έχουν πρόσβαση στους κάδους S3 όπου είναι αποθηκευμένα τα δεδομένα και το μοντέλο μας. Για οδηγίες σχετικά με τη δημιουργία ενός ρόλου που ανταποκρίνεται στις ανάγκες της επιχείρησής σας, ανατρέξτε στο Ρόλοι SageMaker. Για αυτήν την ανάρτηση, χρησιμοποιούμε τον ίδιο ρόλο εκτέλεσης με την παρουσία του σημειωματάριου στο Studio. Παίρνουμε αυτόν τον ρόλο καλώντας
sagemaker.get_execution_role()
. - Η προεπιλεγμένη Περιοχή όπου θα εκτελεστεί η εκπαιδευτική μας εργασία.
- Ο προεπιλεγμένος κάδος και το πρόθεμα που χρησιμοποιούμε για να αποθηκεύσουμε την έξοδο του μοντέλου.
Δείτε τον ακόλουθο κώδικα:
import sagemaker
import boto3
import os execution_role = sagemaker.get_execution_role()
region = boto3.Session().region_name
session = sagemaker.Session()
bucket = session.default_bucket()
prefix = "sagemaker/mnist-pytorch"
Δημιουργήστε το σύνολο δεδομένων εκπαίδευσης
Χρησιμοποιούμε το σύνολο δεδομένων που είναι διαθέσιμο στον δημόσιο κάδο sagemaker-example-files-prod-{region}
. Το σύνολο δεδομένων περιέχει τα ακόλουθα αρχεία:
- train-images-idx3-ubyte.gz – Περιέχει εικόνες σετ προπόνησης
- train-labels-idx1-ubyte.gz – Περιέχει ετικέτες σετ εκπαίδευσης
- t10k-images-idx3-ubyte.gz – Περιέχει εικόνες σετ δοκιμής
- t10k-labels-idx1-ubyte.gz – Περιέχει ετικέτες σετ δοκιμής
Χρησιμοποιούμε τοtorchvision.datasets
μονάδα για λήψη των δεδομένων από τον δημόσιο κάδο τοπικά πριν τα ανεβάσετε στον κάδο δεδομένων εκπαίδευσης. Περνάμε αυτήν τη θέση κάδου ως είσοδο στην εργασία εκπαίδευσης του SageMaker. Το σενάριο εκπαίδευσης χρησιμοποιεί αυτήν τη θέση για να κατεβάσει και να προετοιμάσει τα δεδομένα εκπαίδευσης και, στη συνέχεια, να εκπαιδεύσει το μοντέλο. Δείτε τον παρακάτω κώδικα:
MNIST.mirrors = [ f"https://sagemaker-example-files-prod-{region}.s3.amazonaws.com/datasets/image/MNIST/"
] MNIST( "data", download=True, transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] ),
)
Δημιουργήστε το σενάριο εκπαίδευσης
Με το SageMaker, μπορείτε να φέρετε το δικό σας μοντέλο χρησιμοποιώντας λειτουργία σεναρίου. Με τη λειτουργία σεναρίου, μπορείτε να χρησιμοποιήσετε τα προκατασκευασμένα κοντέινερ SageMaker και να παρέχετε το δικό σας σενάριο εκπαίδευσης, το οποίο έχει τον ορισμό του μοντέλου, μαζί με τυχόν προσαρμοσμένες βιβλιοθήκες και εξαρτήσεις. ο SDK SageMaker Python περνά το σενάριό μας ως ένα entry_point
στο κοντέινερ, το οποίο φορτώνει και εκτελεί τη λειτουργία τρένου από το παρεχόμενο σενάριο για να εκπαιδεύσει το μοντέλο μας.
Όταν ολοκληρωθεί η εκπαίδευση, το SageMaker αποθηκεύει την έξοδο του μοντέλου στον κάδο S3 που παρέχουμε ως παράμετρο στην εργασία εκπαίδευσης.
Ο κώδικας εκπαίδευσης μας προσαρμόζεται από τα παρακάτω Παράδειγμα σεναρίου PyTorch. Το ακόλουθο απόσπασμα από τον κώδικα δείχνει τον ορισμό του μοντέλου και τη λειτουργία του τρένου:
# define network class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.dropout1 = nn.Dropout(0.25) self.dropout2 = nn.Dropout(0.5) self.fc1 = nn.Linear(9216, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.conv1(x) x = F.relu(x) x = self.conv2(x) x = F.relu(x) x = F.max_pool2d(x, 2) x = self.dropout1(x) x = torch.flatten(x, 1) x = self.fc1(x) x = F.relu(x) x = self.dropout2(x) x = self.fc2(x) output = F.log_softmax(x, dim=1) return output
# train def train(args, model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) if args.dry_run: break
Εκπαιδεύστε το μοντέλο
Τώρα που έχουμε ρυθμίσει το περιβάλλον μας και δημιουργήσαμε το σύνολο δεδομένων εισόδου και το προσαρμοσμένο σενάριο εκπαίδευσης, μπορούμε να ξεκινήσουμε την εκπαίδευση μοντέλου χρησιμοποιώντας το SageMaker. Χρησιμοποιούμε τον εκτιμητή PyTorch στο SageMaker Python SDK για να ξεκινήσουμε μια εργασία εκπαίδευσης στο SageMaker. Περνάμε τις απαιτούμενες παραμέτρους στον εκτιμητή και καλούμε τη μέθοδο fit. Όταν καλούμε το fit στον εκτιμητή PyTorch, το SageMaker ξεκινά μια εργασία εκπαίδευσης χρησιμοποιώντας το σενάριό μας ως κώδικα εκπαίδευσης:
from sagemaker.pytorch import PyTorch output_location = f"s3://{bucket}/{prefix}/output"
print(f"training artifacts will be uploaded to: {output_location}") hyperparameters={ "batch-size": 100, "epochs": 1, "lr": 0.1, "gamma": 0.9, "log-interval": 100
} instance_type = "ml.c4.xlarge"
estimator = PyTorch( entry_point="train.py", source_dir="code", # directory of your training script role=execution_role, framework_version="1.13", py_version="py39", instance_type=instance_type, instance_count=1, volume_size=250, output_path=output_location, hyperparameters=hyperparameters
) estimator.fit(inputs = { 'training': f"{inputs}", 'testing': f"{inputs}"
})
Εξαγάγετε το εκπαιδευμένο μοντέλο ως μοντέλο ONNX
Αφού ολοκληρωθεί η εκπαίδευση και το μοντέλο μας αποθηκευτεί στην προκαθορισμένη θέση στο Amazon S3, εξάγουμε το μοντέλο σε ένα μοντέλο ONNX χρησιμοποιώντας το χρόνο εκτέλεσης ONNX.
Περιλαμβάνουμε τον κωδικό για την εξαγωγή του μοντέλου μας στο ONNX στο σενάριο εκπαίδευσης για να εκτελεστεί μετά την ολοκλήρωση της εκπαίδευσης.
Το PyTorch εξάγει το μοντέλο στο ONNX εκτελώντας το μοντέλο χρησιμοποιώντας την είσοδο μας και καταγράφοντας ένα ίχνος τελεστών που χρησιμοποιούνται για τον υπολογισμό της εξόδου. Χρησιμοποιούμε μια τυχαία είσοδο του σωστού τύπου με το PyTorch torch.onnx.export
λειτουργία εξαγωγής του μοντέλου στο ONNX. Καθορίζουμε επίσης την πρώτη διάσταση στην είσοδο μας ως δυναμική έτσι ώστε το μοντέλο μας να δέχεται μια μεταβλητή batch_size
των εισροών κατά την εξαγωγή συμπερασμάτων.
def export_to_onnx(model, model_dir, device): logger.info("Exporting the model to onnx.") dummy_input = torch.randn(1, 1, 28, 28).to(device) input_names = [ "input_0" ] output_names = [ "output_0" ] path = os.path.join(model_dir, 'mnist-pytorch.onnx') torch.onnx.export(model, dummy_input, path, verbose=True, input_names=input_names, output_names=output_names, dynamic_axes={'input_0' : {0 : 'batch_size'}, # variable length axes 'output_0' : {0 : 'batch_size'}})
Το ONNX είναι μια ανοιχτή τυπική μορφή για μοντέλα βαθιάς μάθησης που επιτρέπει τη διαλειτουργικότητα μεταξύ πλαισίων βαθιάς μάθησης όπως το PyTorch, το Microsoft Cognitive Toolkit (CNTK) και άλλα. Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε οποιοδήποτε από αυτά τα πλαίσια για να εκπαιδεύσετε το μοντέλο και στη συνέχεια να εξαγάγετε τα προεκπαιδευμένα μοντέλα σε μορφή ONNX. Εξάγοντας το μοντέλο στο ONNX, απολαμβάνετε το πλεονέκτημα μιας ευρύτερης επιλογής συσκευών και πλατφορμών ανάπτυξης.
Κατεβάστε και εξαγάγετε τα τεχνουργήματα του μοντέλου
Το μοντέλο ONNX που έχει αποθηκεύσει το σενάριο εκπαίδευσης έχει αντιγραφεί από το SageMaker στο Amazon S3 στη θέση εξόδου που καθορίσαμε όταν ξεκινήσαμε την εργασία εκπαίδευσης. Τα τεχνουργήματα του μοντέλου αποθηκεύονται ως ένα συμπιεσμένο αρχείο αρχειοθέτησης που ονομάζεται model.tar.gz
. Πραγματοποιούμε λήψη αυτού του αρχείου αρχειοθέτησης σε έναν τοπικό κατάλογο στην παρουσία του σημειωματάριου Studio μας και εξάγουμε τα τεχνουργήματα του μοντέλου, δηλαδή το μοντέλο ONNX.
import tarfile local_model_file = 'model.tar.gz'
model_bucket,model_key = estimator.model_data.split('/',2)[-1].split('/',1)
s3 = boto3.client("s3")
s3.download_file(model_bucket,model_key,local_model_file) model_tar = tarfile.open(local_model_file)
model_file_name = model_tar.next().name
model_tar.extractall('.')
model_tar.close()
Επικυρώστε το μοντέλο ONNX
Το μοντέλο ONNX εξάγεται σε ένα αρχείο με όνομα mnist-pytorch.onnx
από το σενάριο εκπαίδευσης μας. Αφού κατεβάσουμε και εξαγάγουμε αυτό το αρχείο, μπορούμε προαιρετικά να επικυρώσουμε το μοντέλο ONNX χρησιμοποιώντας το onnx.checker
μονάδα μέτρησης. ο check_model
Η λειτουργία σε αυτήν την ενότητα ελέγχει τη συνοχή ενός μοντέλου. Δημιουργείται εξαίρεση εάν η δοκιμή αποτύχει.
import onnx onnx_model = onnx.load("mnist-pytorch.onnx")
onnx.checker.check_model(onnx_model)
Συσκευάστε το μοντέλο και τον κωδικό συμπερασμάτων
Για αυτήν την ανάρτηση, χρησιμοποιούμε την ανάπτυξη .zip για τις λειτουργίες Azure. Σε αυτήν τη μέθοδο, συσκευάζουμε το μοντέλο, τον συνοδευτικό κώδικα και τις ρυθμίσεις μας για τις λειτουργίες Azure σε ένα αρχείο .zip και το δημοσιεύουμε στο Azure Functions. Ο παρακάτω κώδικας δείχνει τη δομή καταλόγου του πακέτου ανάπτυξης μας:
mnist-onnx
├── function_app.py
├── model
│ └── mnist-pytorch.onnx
└── requirements.txt
Κατάλογος εξαρτήσεων
Παραθέτουμε τις εξαρτήσεις για τον κώδικα συμπερασμάτων μας στο requirements.txt
αρχείο στη ρίζα του πακέτου μας. Αυτό το αρχείο χρησιμοποιείται για τη δημιουργία του περιβάλλοντος Azure Functions όταν δημοσιεύουμε το πακέτο.
azure-functions
numpy
onnxruntime
Γράψτε τον κώδικα συμπερασμάτων
Χρησιμοποιούμε την Python για να γράψουμε τον ακόλουθο κώδικα συμπερασμάτων, χρησιμοποιώντας τη βιβλιοθήκη ONNX Runtime για να φορτώσουμε το μοντέλο μας και να εκτελέσουμε το συμπέρασμα. Αυτό δίνει εντολή στην εφαρμογή Azure Functions να κάνει το τελικό σημείο διαθέσιμο στο /classify
σχετική διαδρομή.
import logging
import azure.functions as func
import numpy as np
import os
import onnxruntime as ort
import json app = func.FunctionApp() def preprocess(input_data_json): # convert the JSON data into the tensor input return np.array(input_data_json['data']).astype('float32') def run_model(model_path, req_body): session = ort.InferenceSession(model_path) input_data = preprocess(req_body) logging.info(f"Input Data shape is {input_data.shape}.") input_name = session.get_inputs()[0].name # get the id of the first input of the model try: result = session.run([], {input_name: input_data}) except (RuntimeError) as e: print("Shape={0} and error={1}".format(input_data.shape, e)) return result[0] def get_model_path(): d=os.path.dirname(os.path.abspath(__file__)) return os.path.join(d , './model/mnist-pytorch.onnx') @app.function_name(name="mnist_classify")
@app.route(route="classify", auth_level=func.AuthLevel.ANONYMOUS)
def main(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') # Get the img value from the post. try: req_body = req.get_json() except ValueError: pass if req_body: # run model result = run_model(get_model_path(), req_body) # map output to integer and return result string. digits = np.argmax(result, axis=1) logging.info(type(digits)) return func.HttpResponse(json.dumps({"digits": np.array(digits).tolist()})) else: return func.HttpResponse( "This HTTP triggered function successfully.", status_code=200 )
Αναπτύξτε το μοντέλο στις λειτουργίες Azure
Τώρα που έχουμε συσκευάσει τον κώδικα στην απαιτούμενη μορφή .zip, είμαστε έτοιμοι να τον δημοσιεύσουμε στο Azure Functions. Αυτό το κάνουμε χρησιμοποιώντας το Azure CLI, ένα βοηθητικό πρόγραμμα γραμμής εντολών για τη δημιουργία και τη διαχείριση πόρων Azure. Εγκαταστήστε το Azure CLI με τον ακόλουθο κώδικα:
!pip install -q azure-cli
Στη συνέχεια, ολοκληρώστε τα παρακάτω βήματα:
- Συνδεθείτε στο Azure:
!az login
- Ρυθμίστε τις παραμέτρους δημιουργίας πόρων:
import random random_suffix = str(random.randint(10000,99999)) resource_group_name = f"multicloud-{random_suffix}-rg" storage_account_name = f"multicloud{random_suffix}" location = "ukwest" sku_storage = "Standard_LRS" functions_version = "4" python_version = "3.9" function_app = f"multicloud-mnist-{random_suffix}"
- Χρησιμοποιήστε τις ακόλουθες εντολές για να δημιουργήσετε την εφαρμογή Azure Functions μαζί με τους προαπαιτούμενους πόρους:
!az group create --name {resource_group_name} --location {location} !az storage account create --name {storage_account_name} --resource-group {resource_group_name} --location {location} --sku {sku_storage} !az functionapp create --name {function_app} --resource-group {resource_group_name} --storage-account {storage_account_name} --consumption-plan-location "{location}" --os-type Linux --runtime python --runtime-version {python_version} --functions-version {functions_version}
- Ρυθμίστε τις Λειτουργίες Azure έτσι ώστε όταν αναπτύσσουμε το πακέτο Λειτουργίες, το
requirements.txt
Το αρχείο χρησιμοποιείται για τη δημιουργία των εξαρτήσεων της εφαρμογής μας:!az functionapp config appsettings set --name {function_app} --resource-group {resource_group_name} --settings @./functionapp/settings.json
- Διαμορφώστε την εφαρμογή Functions για να εκτελέσει το μοντέλο Python v2 και να εκτελέσει μια κατασκευή του κώδικα που λαμβάνει μετά την ανάπτυξη .zip:
{ "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", "SCM_DO_BUILD_DURING_DEPLOYMENT": true }
- Αφού έχουμε την ομάδα πόρων, το κοντέινερ αποθήκευσης και την εφαρμογή Functions με τη σωστή διαμόρφωση, δημοσιεύστε τον κώδικα στην εφαρμογή Functions:
!az functionapp deployment source config-zip -g {resource_group_name} -n {function_app} --src {function_archive} --build-remote true
Δοκιμάστε το μοντέλο
Έχουμε αναπτύξει το μοντέλο ML στο Azure Functions ως έναυσμα HTTP, πράγμα που σημαίνει ότι μπορούμε να χρησιμοποιήσουμε τη διεύθυνση URL της εφαρμογής Functions για να στείλουμε ένα αίτημα HTTP στη συνάρτηση για να καλέσετε τη συνάρτηση και να εκτελέσετε το μοντέλο.
Για να προετοιμάσετε την είσοδο, πραγματοποιήστε λήψη των αρχείων εικόνων δοκιμής από τον κάδο παραδειγμάτων αρχείων SageMaker και προετοιμάστε ένα σύνολο δειγμάτων στη μορφή που απαιτείται από το μοντέλο:
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import matplotlib.pyplot as plt transform=transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]
) test_dataset = datasets.MNIST(root='../data', download=True, train=False, transform=transform)
test_loader = DataLoader(test_dataset, batch_size=16, shuffle=True) test_features, test_labels = next(iter(test_loader))
Χρησιμοποιήστε τη βιβλιοθήκη αιτημάτων για να στείλετε ένα αίτημα ανάρτησης στο τελικό σημείο συμπερασμάτων με τα δείγματα εισόδων. Το τελικό σημείο συμπερασμάτων παίρνει τη μορφή όπως φαίνεται στον ακόλουθο κώδικα:
import requests, json def to_numpy(tensor): return tensor.detach().cpu().numpy() if tensor.requires_grad else tensor.cpu().numpy() url = f"https://{function_app}.azurewebsites.net/api/classify"
response = requests.post(url, json.dumps({"data":to_numpy(test_features).tolist()}) )
predictions = json.loads(response.text)['digits']
εκκαθάριση
Όταν ολοκληρώσετε τη δοκιμή του μοντέλου, διαγράψτε την ομάδα πόρων μαζί με τους πόρους που περιέχονται, συμπεριλαμβανομένου του κοντέινερ αποθήκευσης και της εφαρμογής Λειτουργίες:
!az group delete --name {resource_group_name} --yes
Επιπλέον, συνιστάται να τερματίσετε τους αδρανείς πόρους στο SageMaker Studio για να μειώσετε το κόστος. Για περισσότερες πληροφορίες, ανατρέξτε στο Εξοικονομήστε κόστος κλείνοντας αυτόματα τους αδρανούς πόρους στο Amazon SageMaker Studio.
Συμπέρασμα
Σε αυτήν την ανάρτηση, δείξαμε πώς μπορείτε να δημιουργήσετε και να εκπαιδεύσετε ένα μοντέλο ML με το SageMaker και να το αναπτύξετε σε άλλο πάροχο cloud. Στη λύση, χρησιμοποιήσαμε ένα σημειωματάριο SageMaker Studio, αλλά για φόρτους εργασίας παραγωγής, συνιστούσαμε τη χρήση MLOps να δημιουργήσει επαναλαμβανόμενες ροές εργασίας εκπαίδευσης για να επιταχύνει την ανάπτυξη και την ανάπτυξη μοντέλων.
Αυτή η ανάρτηση δεν έδειξε όλους τους πιθανούς τρόπους ανάπτυξης και εκτέλεσης ενός μοντέλου σε περιβάλλον multicloud. Για παράδειγμα, μπορείτε επίσης να συσκευάσετε το μοντέλο σας σε μια εικόνα κοντέινερ μαζί με κώδικα συμπερασμάτων και βιβλιοθήκες εξαρτήσεων για να εκτελέσετε το μοντέλο ως εφαρμογή σε κοντέινερ σε οποιαδήποτε πλατφόρμα. Για περισσότερες πληροφορίες σχετικά με αυτήν την προσέγγιση, ανατρέξτε στο Αναπτύξτε εφαρμογές κοντέινερ σε περιβάλλον multicloud χρησιμοποιώντας το Amazon CodeCatalyst. Ο σκοπός της ανάρτησης είναι να δείξει πώς οι οργανισμοί μπορούν να χρησιμοποιήσουν τις δυνατότητες AWS AI/ML σε περιβάλλον multicloud.
Σχετικά με τους συγγραφείς
Raja Vaidyanathan είναι αρχιτέκτονας λύσεων στην AWS που υποστηρίζει πελάτες παγκόσμιων χρηματοοικονομικών υπηρεσιών. Η Raja συνεργάζεται με πελάτες για να δημιουργήσει λύσεις σε περίπλοκα προβλήματα με μακροπρόθεσμο θετικό αντίκτυπο στην επιχείρησή τους. Είναι ένας ισχυρός επαγγελματίας μηχανικός με δεξιότητες στη στρατηγική πληροφορικής, στη διαχείριση εταιρικών δεδομένων και στην αρχιτεκτονική εφαρμογών, με ιδιαίτερα ενδιαφέροντα στην ανάλυση και τη μηχανική μάθηση.
Amandeep Bajwa είναι Senior Solutions Architect στην AWS που υποστηρίζει επιχειρήσεις χρηματοοικονομικών υπηρεσιών. Βοηθά τους οργανισμούς να επιτύχουν τα επιχειρηματικά τους αποτελέσματα προσδιορίζοντας την κατάλληλη στρατηγική μετασχηματισμού cloud με βάση τις τάσεις του κλάδου και τις προτεραιότητες του οργανισμού. Μερικοί από τους τομείς στους οποίους συμβουλεύεται η Amandeep είναι η μετανάστευση στο cloud, η στρατηγική cloud (συμπεριλαμβανομένου του υβριδικού και του multicloud), ο ψηφιακός μετασχηματισμός, τα δεδομένα και τα αναλυτικά στοιχεία και η τεχνολογία γενικά.
Prema Iyer είναι Ανώτερος Τεχνικός Διευθυντής Λογαριασμού για την Υποστήριξη AWS Enterprise. Συνεργάζεται με εξωτερικούς πελάτες σε μια ποικιλία έργων, βοηθώντας τους να βελτιώσουν την αξία των λύσεών τους όταν χρησιμοποιούν το AWS.
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- PlatoData.Network Vertical Generative Ai. Ενδυναμώστε τον εαυτό σας. Πρόσβαση εδώ.
- PlatoAiStream. Web3 Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- PlatoESG. Ανθρακας, Cleantech, Ενέργεια, Περιβάλλον, Ηλιακός, Διαχείριση των αποβλήτων. Πρόσβαση εδώ.
- PlatoHealth. Ευφυΐα βιοτεχνολογίας και κλινικών δοκιμών. Πρόσβαση εδώ.
- πηγή: https://aws.amazon.com/blogs/machine-learning/train-and-deploy-ml-models-in-a-multicloud-environment-using-amazon-sagemaker/
- :έχει
- :είναι
- :δεν
- :που
- $UP
- 1
- 10
- 100
- 13
- 25
- 28
- 32
- 7
- 9
- a
- Σχετικα
- επιταχύνουν
- Αποδέχεται
- πρόσβαση
- Λογαριασμός
- Κατορθώνω
- αποκτήθηκαν
- Πλεονέκτημα
- Μετά το
- AI
- AI / ML
- Όλα
- επιτρέπει
- κατά μήκος
- ήδη
- Επίσης
- Αν και
- Amazon
- Amazon Sage Maker
- Καμβάς Amazon SageMaker
- Στούντιο Amazon SageMaker
- Amazon υπηρεσίες Web
- an
- Αναλυτές
- analytics
- και
- ανώνυμος
- Άλλος
- κάθε
- Apache
- app
- Εφαρμογή
- εφαρμογές
- πλησιάζω
- κατάλληλος
- αρχιτεκτονική
- Αρχείο
- ΕΙΝΑΙ
- περιοχές
- AS
- εκτίμηση
- At
- αυτοματοποίηση
- αυτομάτως
- διαθέσιμος
- AWS
- ΑΞΟΝΕΣ
- Γαλανός
- βασίζονται
- BE
- ήταν
- πριν
- αρχίζουν
- ευεργετική
- όφελος
- Καλύτερα
- μεταξύ
- και οι δύο
- φέρω
- ευρύτερη
- χτίζω
- Κτίριο
- επιχείρηση
- αλλά
- by
- κλήση
- που ονομάζεται
- κλήση
- CAN
- καμβάς
- δυνατότητες
- κουβαλάω
- περίπτωση
- έλεγχοι
- τάξη
- Ταξινόμηση
- κλικ
- Backup
- κωδικός
- γνωστική
- συνεργατική
- εταίρα
- πλήρης
- συγκρότημα
- Συμμόρφωση
- περιεκτικός
- Υπολογίστε
- διαμόρφωση
- που περιέχονται
- Δοχείο
- Εμπορευματοκιβώτια
- Περιέχει
- συμφραζόμενα
- ευκολία
- μετατρέψετε
- μετατροπή
- πυρήνας
- Δικαστικά έξοδα
- θα μπορούσε να
- δημιουργία
- δημιουργήθηκε
- δημιουργία
- δημιουργία
- Διαπιστεύσεις
- έθιμο
- Πελάτες
- ημερομηνία
- διαχείριση δεδομένων
- Προετοιμασία δεδομένων
- επιστημονικά δεδομένα
- σύνολα δεδομένων
- βαθύς
- βαθιά μάθηση
- πιο βαθιά
- Προεπιλογή
- ορίζεται
- ορισμός
- αποδεικνύουν
- εξαρτήσεις
- Εξάρτηση
- παρατάσσω
- αναπτυχθεί
- ανάπτυξη
- ανάπτυξη
- περιγράφουν
- λεπτομέρεια
- καθέκαστα
- Ανάπτυξη
- συσκευή
- Συσκευές
- διαφορετικές
- ψηφιακό
- ψηφιακή Μετασχηματισμού
- ψηφία
- Διάσταση
- συζήτηση
- do
- Λιμενεργάτης
- τομέα
- γίνεται
- Μην
- κάτω
- κατεβάσετε
- κατά την διάρκεια
- δυναμικός
- e
- αλλιώς
- αγκαλιάζω
- δίνει τη δυνατότητα
- ενεργοποίηση
- τέλος
- Τελικό σημείο
- Μηχανική
- Μηχανικοί
- Εταιρεία
- επιχειρήσεις
- Περιβάλλον
- εποχή
- εποχές
- Κάθε
- παράδειγμα
- Εκτός
- εξαίρεση
- εκτέλεση
- εξειδίκευση
- εξαγωγή
- εξαγωγές
- εξωτερικός
- εκχύλισμα
- αποτυγχάνει
- Χαρακτηριστικά
- λίγοι
- Αρχεία
- Αρχεία
- οικονομικός
- των χρηματοπιστωτικών υπηρεσιών
- Εύρεση
- Όνομα
- ταιριάζουν
- Εξής
- Για
- μορφή
- Θεμέλιο
- Πλαίσιο
- πλαισίων
- από
- λειτουργία
- λειτουργίες
- General
- δημιουργεί
- γενετική
- Παραγωγική τεχνητή νοημοσύνη
- παίρνω
- Παγκόσμιο
- παγκόσμια οικονομική
- Group
- Έχω
- he
- βοήθεια
- βοηθά
- φιλοξενία
- Πως
- Πώς να
- HTML
- http
- HTTPS
- Υβριδικό
- ID
- προσδιορισμό
- Idle
- if
- απεικονίζει
- εικόνα
- εικόνες
- Επίπτωση
- εισαγωγή
- εισαγωγή
- βελτίωση
- βελτίωση
- in
- περιλαμβάνουν
- Συμπεριλαμβανομένου
- ανεξάρτητος
- βιομηχανία
- πληροφορίες
- αρχικός
- εισαγωγή
- είσοδοι
- εγκαθιστώ
- παράδειγμα
- οδηγίες
- ενσωματώσει
- ενσωματωθεί
- πρόθεση
- συμφέροντα
- περιβάλλον λειτουργίας
- Διαλειτουργικότητα
- σε
- IT
- ΤΟΥ
- Δουλειά
- Θέσεις εργασίας
- jpg
- json
- Γλώσσα
- large
- αργότερο
- ξεκινάει
- ΜΑΘΑΊΝΩ
- μάθηση
- Μήκος
- Μόχλευση
- βιβλιοθήκες
- Βιβλιοθήκη
- κύκλος ζωής
- γραμμή
- linux
- Λιστα
- φορτίο
- φορτία
- τοπικός
- τοπικά
- τοποθεσία
- ξύλευση
- μακροπρόθεσμος
- κοιτάζοντας
- off
- μηχανή
- μάθηση μηχανής
- κάνω
- διαχείριση
- διαχειρίζεται
- διαχείριση
- διευθυντής
- πολοί
- χάρτη
- matplotlib
- Ενδέχεται..
- μέσα
- Γνωρίστε
- πληροί
- μέθοδος
- μέθοδοι
- Microsoft
- ενδέχεται να
- μετανάστευση
- ML
- MLOps
- Τρόπος
- μοντέλο
- μοντέλα
- Μονάδα μέτρησης
- περισσότερο
- πλέον
- όνομα
- Ονομάστηκε
- και συγκεκριμένα
- Ανάγκη
- που απαιτούνται
- ανάγκες
- καθαρά
- δίκτυο
- νευρικός
- νευρικό σύστημα
- σημειωματάριο
- πολλοί
- αντικείμενο
- of
- on
- ONE
- ανοίξτε
- ανοικτού κώδικα
- λειτουργίας
- λειτουργίες
- φορείς
- Επιλογές
- or
- τάξη
- επιχειρήσεις
- οργανωτικός
- οργανώσεις
- OS
- ΑΛΛΑ
- δικός μας
- έξω
- αποτελέσματα
- παραγωγή
- εκτός
- δική
- πακέτο
- συσκευάζονται
- παράμετρος
- παράμετροι
- μέρος
- Ειδικότερα
- κόμμα
- passieren
- περάσματα
- μονοπάτι
- Εκτελέστε
- δικαιώματα
- πλατφόρμες
- Πλατφόρμες
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- Δημοφιλής
- θετικός
- δυνατός
- Θέση
- Προβλέψεις
- προετοιμασία
- Προετοιμάστε
- προαπαιτούμενα
- πρωταρχικός
- Κύριος
- προβλήματα
- Επεξεργασμένο
- παραγωγή
- παραγωγικότητα
- Προϊόντα
- επαγγελματίας
- έργα
- παρέχουν
- παρέχεται
- προμηθευτής
- παρέχει
- δημόσιο
- δημοσιεύει
- Python
- pytorch
- Γρήγορα
- εγείρει
- τυχαίος
- έτοιμος
- λαμβάνει
- συνιστάται
- εγγραφή
- μείωση
- παραπέμπω
- Ανεξάρτητα
- περιοχή
- μητρώου
- σχετικής
- επαναληπτός
- ζητήσει
- αιτήματα
- απαιτούν
- απαιτείται
- απαιτήσεις
- πόρος
- Υποστηρικτικό υλικό
- απάντησης
- αποτέλεσμα
- με αποτέλεσμα
- απόδοση
- δεξιά
- Ρόλος
- ρίζα
- τρέξιμο
- τρέξιμο
- τρέχει
- σοφός
- ίδιο
- αποθηκεύονται
- Κλίμακα
- σάρωσης
- σενάρια
- Επιστήμη
- επιστήμονες
- γραφή
- SDK
- δευτερεύων
- Τμήμα
- τμήματα
- ασφάλεια
- δείτε
- επιλογή
- ΕΑΥΤΟΣ
- στείλετε
- αρχαιότερος
- υπηρεσία
- Υπηρεσίες
- Συνεδρίαση
- σειρά
- ρυθμίσεις
- setup
- Shape
- αυτή
- θα πρέπει να
- δείχνουν
- έδειξε
- παρουσιάζεται
- Δείχνει
- τερματίστε
- κλείσιμο
- Απλούς
- καταστάσεων
- έμπειρος
- δεξιότητες
- So
- λογισμικό
- λύση
- Λύσεις
- μερικοί
- Πηγή
- κυριαρχία
- καθορίζεται
- Στάδιο
- πρότυπο
- Εκκίνηση
- ξεκίνησε
- ξεκινά
- Βήματα
- χώρος στο δίσκο
- κατάστημα
- αποθηκεύονται
- Στρατηγική
- Σπάγγος
- ισχυρός
- δομή
- στούντιο
- Ακολούθως
- Επιτυχώς
- τέτοιος
- υποστήριξη
- Στήριξη
- Υποστηρίζει
- Πάρτε
- παίρνει
- στόχος
- Τεχνικός
- Τεχνολογίες
- Τεχνολογία
- δέκα
- tensorflow
- δοκιμή
- δοκιμαστεί
- Δοκιμές
- κείμενο
- ότι
- Η
- Η Πηγη
- τους
- Τους
- τους
- τότε
- Αυτοί
- αυτοί
- πράγμα
- Τρίτος
- αυτό
- φορές
- προς την
- εργαλειοθήκη
- εργαλεία
- δάδα
- Torchvision
- Ιχνος
- Τρένο
- εκπαιδευμένο
- Εκπαίδευση
- Μεταμορφώστε
- Μεταμόρφωση
- Στρατηγική μετασχηματισμού
- μετασχηματισμών
- Τάσεις
- ενεργοποιούν
- ενεργοποιήθηκε
- αληθής
- προσπαθώ
- τύπος
- μοναδικός
- Φορτώθηκε
- Ανέβασμα
- URL
- χρήση
- περίπτωση χρήσης
- μεταχειρισμένος
- Χρήστες
- χρησιμοποιεί
- χρησιμοποιώντας
- χρησιμότητα
- ΕΠΙΚΥΡΩΝΩ
- αξία
- μεταβλητή
- ποικιλία
- πωλητές
- εκδόσεις
- ευπάθεια
- θέλω
- ήταν
- τρόπους
- we
- ιστός
- διαδικτυακές υπηρεσίες
- Web-based
- ΛΟΙΠΌΝ
- πότε
- Ποιό
- θα
- με
- εντός
- ροές εργασίας
- λειτουργεί
- γράφω
- γραπτή
- X
- ακόμη
- Εσείς
- Σας
- zephyrnet
- Zip