Με Amazon Sage Maker, μπορείτε να διαχειριστείτε ολόκληρο τον κύκλο ζωής μηχανικής εκμάθησης από άκρο σε άκρο (ML). Προσφέρει πολλές εγγενείς δυνατότητες για να βοηθήσει στη διαχείριση πτυχών ροών εργασίας ML, όπως παρακολούθηση πειραμάτων και διακυβέρνηση μοντέλου μέσω του μητρώου μοντέλων. Αυτή η ανάρτηση παρέχει μια λύση προσαρμοσμένη σε πελάτες που χρησιμοποιούν ήδη MLflow, μια πλατφόρμα ανοιχτού κώδικα για τη διαχείριση ροών εργασίας ML.
Σε το προηγούμενο άρθρο , συζητήσαμε το MLflow και πώς μπορεί να εκτελεστεί σε AWS και να ενσωματωθεί με το SageMaker—ιδίως κατά την παρακολούθηση εργασιών εκπαίδευσης ως πειράματα και την ανάπτυξη ενός μοντέλου που έχει καταχωριστεί στο MLflow στη διαχειριζόμενη υποδομή του SageMaker. Ωστόσο, το έκδοση ανοιχτού κώδικα του MLflow δεν παρέχει εγγενείς μηχανισμούς ελέγχου πρόσβασης χρηστών για πολλούς ενοικιαστές στον διακομιστή παρακολούθησης. Αυτό σημαίνει ότι κάθε χρήστης με πρόσβαση στον διακομιστή έχει δικαιώματα διαχειριστή και μπορεί να τροποποιήσει πειράματα, εκδόσεις μοντέλων και στάδια. Αυτό μπορεί να είναι μια πρόκληση για τις επιχειρήσεις σε ρυθμιζόμενες βιομηχανίες που πρέπει να διατηρήσουν ισχυρό μοντέλο διακυβέρνησης για σκοπούς ελέγχου.
Σε αυτήν την ανάρτηση, αντιμετωπίζουμε αυτούς τους περιορισμούς εφαρμόζοντας τον έλεγχο πρόσβασης εκτός του διακομιστή MLflow και εκφορτώνοντας εργασίες ελέγχου ταυτότητας και εξουσιοδότησης σε Amazon API Gateway, όπου εφαρμόζουμε λεπτομερείς μηχανισμούς ελέγχου πρόσβασης σε επίπεδο πόρων χρησιμοποιώντας Ταυτότητα και πρόσβαση Διαχείρισης (ΕΓΩ ΕΙΜΑΙ). Με αυτόν τον τρόπο, μπορούμε να επιτύχουμε ισχυρή και ασφαλή πρόσβαση στον διακομιστή MLflow τόσο από την υποδομή που διαχειρίζεται το SageMaker όσο και από Στούντιο Amazon SageMaker, χωρίς να χρειάζεται να ανησυχείτε για τα διαπιστευτήρια και όλη την πολυπλοκότητα πίσω από τη διαχείριση διαπιστευτηρίων. Ο αρθρωτός σχεδιασμός που προτείνεται σε αυτήν την αρχιτεκτονική καθιστά εύκολη την τροποποίηση της λογικής ελέγχου πρόσβασης χωρίς να επηρεάζει τον ίδιο τον διακομιστή MLflow. Τέλος, χάρη στην επεκτασιμότητα του SageMaker Studio, βελτιώνουμε περαιτέρω την εμπειρία του επιστήμονα δεδομένων καθιστώντας το MLflow προσβάσιμο μέσα στο Studio, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.
Το MLflow έχει ενσωματώσει τη δυνατότητα που ενεργοποιεί αίτηση υπογραφής χρησιμοποιώντας διαπιστευτήρια AWS στο upstream αποθετήριο για το Python SDK του, βελτιώνοντας την ενσωμάτωση με το SageMaker. Οι αλλαγές στο MLflow Python SDK είναι διαθέσιμες για όλους από την έκδοση MLflow 1.30.0.
Σε υψηλό επίπεδο, αυτή η ανάρτηση δείχνει τα εξής:
- Πώς να αναπτύξετε έναν διακομιστή MLflow σε μια αρχιτεκτονική χωρίς διακομιστή που εκτελείται σε ιδιωτικό υποδίκτυο που δεν είναι προσβάσιμο απευθείας από το εξωτερικό. Για αυτήν την εργασία, χτίζουμε πάνω από το ακόλουθο αποθετήριο GitHub: Διαχειριστείτε τον κύκλο ζωής μηχανικής εκμάθησης με το MLflow και το Amazon SageMaker.
- Πώς να εκθέσετε τον διακομιστή MLflow μέσω ιδιωτικών ενσωματώσεων σε μια πύλη API και να εφαρμόσετε έναν ασφαλή έλεγχο πρόσβασης για πρόσβαση μέσω προγραμματισμού μέσω του SDK και πρόσβασης προγράμματος περιήγησης μέσω της διεπαφής χρήστη MLflow.
- Πώς να καταγράψετε πειράματα και εκτελέσεις και να καταχωρήσετε μοντέλα σε έναν διακομιστή MLflow από το SageMaker χρησιμοποιώντας τους συσχετισμένους ρόλους εκτέλεσης του SageMaker για τον έλεγχο ταυτότητας και την εξουσιοδότηση αιτημάτων και πώς να γίνει έλεγχος ταυτότητας μέσω Amazon Cognito στη διεπαφή χρήστη MLflow. Παρέχουμε παραδείγματα που αποδεικνύουν την παρακολούθηση πειράματος και τη χρήση του μητρώου μοντέλων με MLflow από τις εργασίες εκπαίδευσης SageMaker και το Studio, αντίστοιχα, στις παρεχόμενες σημειωματάριο.
- Πώς να χρησιμοποιήσετε το MLflow ως κεντρικό αποθετήριο σε μια ρύθμιση πολλών λογαριασμών.
- Πώς να επεκτείνετε το Studio για να βελτιώσετε την εμπειρία χρήστη αποδίδοντας το MLflow μέσα στο Studio. Για αυτήν την εργασία, δείχνουμε πώς να επωφεληθείτε από την επεκτασιμότητα του Studio εγκαθιστώντας μια επέκταση JupyterLab.
Τώρα ας βουτήξουμε βαθύτερα στις λεπτομέρειες.
Επισκόπηση λύσεων
Μπορείτε να σκεφτείτε το MLflow ως τρία διαφορετικά βασικά στοιχεία που λειτουργούν δίπλα-δίπλα:
- Ένα REST API για τον διακομιστή παρακολούθησης MLflow backend
- SDK για να αλληλεπιδράσετε μέσω προγραμματισμού με τα API του διακομιστή παρακολούθησης MLflow από τον κώδικα εκπαίδευσης του μοντέλου σας
- Μια διεπαφή React για τη διεπαφή χρήστη MLflow για την οπτικοποίηση των πειραμάτων, των εκτελέσεων και των τεχνουργημάτων σας
Σε υψηλό επίπεδο, η αρχιτεκτονική που έχουμε οραματιστεί και υλοποιήσει φαίνεται στο παρακάτω σχήμα.
Προϋποθέσεις
Πριν αναπτύξετε τη λύση, βεβαιωθείτε ότι έχετε πρόσβαση σε έναν λογαριασμό AWS με δικαιώματα διαχειριστή.
Αναπτύξτε την υποδομή λύσης
Για να αναπτύξετε τη λύση που περιγράφεται σε αυτήν την ανάρτηση, ακολουθήστε τις λεπτομερείς οδηγίες στο Αποθετήριο GitHub ΔΙΑΒΑΣΤΕ. Για να αυτοματοποιήσουμε την ανάπτυξη της υποδομής, χρησιμοποιούμε το Κιτ ανάπτυξης AWS Cloud (AWS CDK). Το AWS CDK είναι ένα πλαίσιο ανάπτυξης λογισμικού ανοιχτού κώδικα για δημιουργία AWS CloudFormation στοίβες μέσω της αυτόματης Πρότυπο CloudFormation γενιά. Μια στοίβα είναι μια συλλογή πόρων AWS που μπορούν να ενημερωθούν, να μετακινηθούν ή να διαγραφούν μέσω προγραμματισμού. AWS CDK κατασκευές είναι τα δομικά στοιχεία των εφαρμογών AWS CDK, που αντιπροσωπεύουν το σχέδιο για τον καθορισμό αρχιτεκτονικών cloud.
Συνδυάζουμε τέσσερις στοίβες:
- Η MLFlowVPCSstack Η στοίβα εκτελεί τις ακόλουθες ενέργειες:
- Η RestApiGatewayStack Η στοίβα εκτελεί τις ακόλουθες ενέργειες:
- Εκθέτει τον διακομιστή MLflow μέσω του AWS PrivateLink σε μια πύλη REST API.
- Αναπτύσσει μια ομάδα χρηστών Amazon Cognito για τη διαχείριση των χρηστών που έχουν πρόσβαση στη διεπαφή χρήστη (ακόμα είναι άδειο μετά την ανάπτυξη).
- Αναπτύσσει ένα AWS Lambda εξουσιοδοτητής για την επαλήθευση του διακριτικού JWT με τα κλειδιά ID ομάδας χρηστών Amazon Cognito και επιστρέφει τις πολιτικές IAM για να επιτρέψει ή να απορρίψει ένα αίτημα. Αυτή η στρατηγική εξουσιοδότησης εφαρμόζεται σε
<MLFlow-Tracking-Server-URI>/*
. - Προσθέτει έναν εξουσιοδοτητή IAM. Αυτό θα εφαρμοστεί στο στο
<MLFlow-Tracking-Server-URI>/api/*
, το οποίο θα έχει προτεραιότητα έναντι του προηγούμενου.
- Η AmplifyMLFlowStack Η στοίβα εκτελεί την ακόλουθη ενέργεια:
- Δημιουργεί μια εφαρμογή συνδεδεμένη με το διορθωμένο αποθετήριο MLflow στο AWS CodeCommit για να δημιουργήσετε και να αναπτύξετε τη διεπαφή χρήστη MLflow.
- Η SageMakerStudioUserStack Η στοίβα εκτελεί τις ακόλουθες ενέργειες:
- Αναπτύσσει έναν τομέα Studio (αν δεν υπάρχει ακόμα).
- Προσθέτει τρεις χρήστες, ο καθένας με διαφορετικό ρόλο εκτέλεσης του SageMaker εφαρμόζοντας διαφορετικό επίπεδο πρόσβασης:
- mlflow-admin – Έχει άδεια διαχειριστή για οποιουσδήποτε πόρους MLflow.
- mlflow-reader – Διαθέτει δικαιώματα διαχειριστή μόνο για ανάγνωση σε οποιουσδήποτε πόρους MLflow.
- mlflow-model-approver – Έχει τα ίδια δικαιώματα με το mlflow-reader, plus μπορεί να καταχωρήσει νέα μοντέλα από υπάρχουσες εκτελέσεις στο MLflow και να προωθήσει υπάρχοντα καταχωρημένα μοντέλα σε νέα στάδια.
Αναπτύξτε τον διακομιστή παρακολούθησης MLflow σε αρχιτεκτονική χωρίς διακομιστή
Στόχος μας είναι να έχουμε μια αξιόπιστη, εξαιρετικά διαθέσιμη, οικονομικά αποδοτική και ασφαλή ανάπτυξη του διακομιστή παρακολούθησης MLflow. Οι τεχνολογίες χωρίς διακομιστή είναι ο τέλειος υποψήφιος για να ικανοποιήσει όλες αυτές τις απαιτήσεις με ελάχιστα λειτουργικά έξοδα. Για να το πετύχουμε αυτό, δημιουργούμε μια εικόνα κοντέινερ Docker για τον διακομιστή παρακολούθησης πειράματος MLflow και την εκτελούμε στο AWS Fargate στο Amazon ECS στο αποκλειστικό VPC του που εκτελείται σε ιδιωτικό υποδίκτυο. Το MLflow βασίζεται σε δύο στοιχεία αποθήκευσης: το backend store και για το artifact store. Για το κατάστημα υποστήριξης, χρησιμοποιούμε το Aurora Serverless και για το κατάστημα αντικειμένων, χρησιμοποιούμε το Amazon S3. Για την αρχιτεκτονική υψηλού επιπέδου, ανατρέξτε στο Σενάριο 4: MLflow με απομακρυσμένο Tracking Server, backend και καταστήματα αντικειμένων. Εκτενείς λεπτομέρειες σχετικά με τον τρόπο εκτέλεσης αυτής της εργασίας μπορείτε να βρείτε στο ακόλουθο αποθετήριο GitHub: Διαχειριστείτε τον κύκλο ζωής μηχανικής εκμάθησης με το MLflow και το Amazon SageMaker.
Ασφαλής ροή ML μέσω API Gateway
Σε αυτό το σημείο, δεν διαθέτουμε ακόμη μηχανισμό ελέγχου πρόσβασης. Ως πρώτο βήμα, εκθέτουμε το MLflow στον έξω κόσμο χρησιμοποιώντας το AWS PrivateLink, το οποίο δημιουργεί μια ιδιωτική σύνδεση μεταξύ του VPC και άλλων υπηρεσιών AWS, στην περίπτωσή μας το API Gateway. Στη συνέχεια, τα εισερχόμενα αιτήματα στο MLflow υποβάλλονται σε μεσολάβηση μέσω a REST API Gateway, δίνοντάς μας τη δυνατότητα να εφαρμόσουμε αρκετούς μηχανισμούς εξουσιοδότησης εισερχόμενων αιτημάτων. Για τους σκοπούς μας, εστιάζουμε μόνο σε δύο:
- Χρήση εξουσιοδοτών IAM - Με Εξουσιοδοτητές IAM, ο αιτών πρέπει να έχει εκχωρηθεί η σωστή πολιτική IAM για πρόσβαση στους πόρους της πύλης API. Κάθε αίτημα πρέπει να προσθέτει πληροφορίες ελέγχου ταυτότητας σε αιτήματα που αποστέλλονται μέσω HTTP από Έκδοση υπογραφής AWS 4.
- Χρήση εξουσιοδοτών Lambda – Αυτό προσφέρει τη μεγαλύτερη ευελιξία επειδή αφήνει τον πλήρη έλεγχο του τρόπου με τον οποίο μπορεί να εγκριθεί ένα αίτημα. Τελικά, το Εξουσιοδοτητής λάμδα πρέπει να επιστρέψει μια πολιτική IAM, η οποία με τη σειρά της θα αξιολογηθεί από το API Gateway σχετικά με το εάν το αίτημα πρέπει να επιτραπεί ή να απορριφθεί.
Για την πλήρη λίστα των υποστηριζόμενων μηχανισμών ελέγχου ταυτότητας και εξουσιοδότησης στο API Gateway, ανατρέξτε στο Έλεγχος και διαχείριση πρόσβασης σε REST API στο API Gateway.
Έλεγχος ταυτότητας Python SDK MLflow (εξουσιοδοτητής IAM)
Ο διακομιστής παρακολούθησης πειράματος MLflow υλοποιεί α REST API να αλληλεπιδρούν με προγραμματικό τρόπο με τους πόρους και τα τεχνουργήματα. Το MLflow Python SDK παρέχει έναν βολικό τρόπο καταγραφής μετρήσεων, εκτελέσεων και τεχνουργημάτων και διασυνδέεται με τους πόρους API που φιλοξενούνται στον χώρο ονομάτων <MLflow-Tracking-Server-URI>/api/
. Διαμορφώνουμε το API Gateway ώστε να χρησιμοποιεί τον εξουσιοδοτητή IAM για έλεγχο πρόσβασης πόρων σε αυτόν τον χώρο ονομάτων, απαιτώντας έτσι κάθε αίτημα να υπογράφεται με την έκδοση 4 της υπογραφής AWS.
Για να διευκολυνθεί η διαδικασία υπογραφής αιτήματος, ξεκινώντας από το MLflow 1.30.0, αυτή η δυνατότητα μπορεί να ενεργοποιηθεί απρόσκοπτα. Βεβαιωθείτε ότι το requests_auth_aws_sigv4
βιβλιοθήκη είναι εγκατεστημένη στο σύστημα και ορίστε το MLFLOW_TRACKING_AWS_SIGV4
μεταβλητή περιβάλλοντος σε True
. Περισσότερες πληροφορίες μπορείτε να βρείτε στο επίσημη τεκμηρίωση MLflow.
Σε αυτό το σημείο, το MLflow SDK χρειάζεται μόνο διαπιστευτήρια AWS. Επειδή request_auth_aws_sigv4
χρησιμοποιεί Boto3 για να ανακτήσουμε τα διαπιστευτήρια, γνωρίζουμε ότι μπορεί φόρτωση διαπιστευτηρίων από τα μεταδεδομένα παρουσίας όταν ένας ρόλος IAM σχετίζεται με ένα Amazon Elastic Compute Cloud (Amazon EC2) παράδειγμα (για άλλους τρόπους παροχής διαπιστευτηρίων στο Boto3, βλ Διαπιστεύσεις). Αυτό σημαίνει ότι μπορεί επίσης να φορτώσει διαπιστευτήρια AWS όταν εκτελείται από μια διαχειριζόμενη παρουσία του SageMaker από τον σχετικό ρόλο εκτέλεσης, όπως θα συζητηθεί αργότερα σε αυτήν την ανάρτηση.
Διαμορφώστε τις πολιτικές IAM για πρόσβαση σε API MLflow μέσω της πύλης API
Μπορείτε να χρησιμοποιήσετε ρόλους και πολιτικές IAM για να ελέγξετε ποιος μπορεί να καλεί πόρους στην πύλη API. Για περισσότερες λεπτομέρειες και δηλώσεις αναφοράς πολιτικής IAM, ανατρέξτε στο Ελέγξτε την πρόσβαση για την επίκληση ενός API.
Ο παρακάτω κώδικας δείχνει ένα παράδειγμα πολιτικής IAM που εκχωρεί στον καλούντα δικαιώματα σε όλες τις μεθόδους σε όλους τους πόρους στο API Gateway που προστατεύει τη ροή MLflow, δίνοντας ουσιαστικά πρόσβαση διαχειριστή στον διακομιστή MLflow:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/*/*",
"Effect": "Allow"
}
]
}
Εάν θέλουμε μια πολιτική που επιτρέπει σε έναν χρήστη πρόσβαση μόνο για ανάγνωση σε όλους τους πόρους, η πολιτική IAM θα μοιάζει με τον ακόλουθο κώδικα:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/GET/*",
"arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/runs/search/",
"arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/experiments/search",
],
"Effect": "Allow"
}
]
}
Ένα άλλο παράδειγμα μπορεί να είναι μια πολιτική που δίνει δικαιώματα σε συγκεκριμένους χρήστες να καταχωρούν μοντέλα στο μητρώο μοντέλων και να τα προωθούν αργότερα σε συγκεκριμένα στάδια (σταδιοποίηση, παραγωγή κ.λπ.):
{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/GET/*", "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/runs/search/", "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/experiments/search", "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/model-versions/*", "arn:aws:execute-api:<REGION>:<ACCOUNT_ID>:<MLFLOW_API_ID>/<STAGE>/POST/api/2.0/mlflow/registered-models/*" ], "Effect": "Allow" } ]
}
Έλεγχος ταυτότητας διεπαφής χρήστη MLflow (εξουσιοδοτητής Lambda)
Η πρόσβαση του προγράμματος περιήγησης στον διακομιστή MLflow γίνεται από τη διεπαφή χρήστη MLflow που υλοποιείται με το React. Η διεπαφή χρήστη MLflow δεν έχει σχεδιαστεί για να υποστηρίζει πιστοποιημένους χρήστες. Η εφαρμογή μιας ισχυρής ροής σύνδεσης μπορεί να φαίνεται τρομακτική εργασία, αλλά ευτυχώς μπορούμε να βασιστούμε στο Ενισχύστε τα στοιχεία UI React για έλεγχο ταυτότητας, που μειώνει σημαντικά την προσπάθεια δημιουργίας ροής σύνδεσης σε μια εφαρμογή React, χρησιμοποιώντας το Amazon Cognito για το κατάστημα ταυτοτήτων.
Το Amazon Cognito μας επιτρέπει να διαχειριζόμαστε τη δική μας βάση χρηστών και επίσης υποστήριξη ομοσπονδίας ταυτότητας τρίτων, καθιστώντας εφικτή τη δημιουργία, για παράδειγμα, ομοσπονδίας ADFS (βλ Δημιουργία Ομοσπονδίας ADFS για την εφαρμογή Ιστού σας χρησιμοποιώντας ομάδες χρηστών Amazon Cognito Για περισσότερες πληροφορίες). Τα διακριτικά που εκδίδονται από το Amazon Cognito πρέπει να επαληθεύονται στο API Gateway. Η απλή επαλήθευση του διακριτικού δεν αρκεί για λεπτομερή έλεγχο πρόσβασης, επομένως ο εξουσιοδοτητής Lambda μας δίνει την ευελιξία να εφαρμόσουμε τη λογική που χρειαζόμαστε. Στη συνέχεια, μπορούμε να δημιουργήσουμε τον δικό μας εξουσιοδοτητή Lambda για να επαληθεύσουμε το διακριτικό JWT και να δημιουργήσουμε τις πολιτικές IAM για να επιτρέψουμε στο API Gateway να αρνηθεί ή να επιτρέψει το αίτημα. Το παρακάτω διάγραμμα απεικονίζει τη ροή σύνδεσης MLflow.
Για περισσότερες πληροφορίες σχετικά με τις πραγματικές αλλαγές κώδικα, ανατρέξτε στο αρχείο ενημέρωσης κώδικα cognito.patch, που ισχύει για την έκδοση 2.3.1 MLflow.
Αυτή η ενημέρωση κώδικα εισάγει δύο δυνατότητες:
- Προσθέστε τα στοιχεία Amplify UI και διαμορφώστε τις λεπτομέρειες Amazon Cognito μέσω μεταβλητών περιβάλλοντος που υλοποιούν τη ροή σύνδεσης
- Εξαγάγετε το JWT από τη συνεδρία και δημιουργήστε μια κεφαλίδα εξουσιοδότησης με ένα διακριτικό φορέα για το πού θα στείλετε το JWT
Αν και η διατήρηση αποκλίνοντα κώδικα από το upstream προσθέτει πάντα περισσότερη πολυπλοκότητα από το να βασίζεστε στο upstream, αξίζει να σημειωθεί ότι οι αλλαγές είναι ελάχιστες επειδή βασιζόμαστε στα στοιχεία διεπαφής χρήστη Amplify React.
Με τη νέα ροή σύνδεσης σε ισχύ, ας δημιουργήσουμε το build παραγωγής για την ενημερωμένη διεπαφή χρήστη MLflow. AWS Amplify Hosting είναι μια υπηρεσία AWS που παρέχει μια ροή εργασίας βασισμένη σε git για CI/CD και φιλοξενία εφαρμογών Ιστού. Το βήμα κατασκευής στον αγωγό ορίζεται από το buildspec.yaml
, όπου μπορούμε να εισάγουμε ως μεταβλητές περιβάλλοντος λεπτομέρειες σχετικά με το αναγνωριστικό συγκέντρωσης χρηστών Amazon Cognito, το αναγνωριστικό συγκέντρωσης ταυτότητας Amazon Cognito και το αναγνωριστικό πελάτη ομάδας χρηστών που απαιτείται από το στοιχείο Amplify UI React για τη διαμόρφωση της ροής ελέγχου ταυτότητας. Ο παρακάτω κώδικας είναι ένα παράδειγμα του buildspec.yaml
αρχείο:
version: "1.0"
applications: - frontend: phases: preBuild: commands: - fallocate -l 4G /swapfile - chmod 600 /swapfile - mkswap /swapfile - swapon /swapfile - swapon -s - yarn install build: commands: - echo "REACT_APP_REGION=$REACT_APP_REGION" >> .env - echo "REACT_APP_COGNITO_USER_POOL_ID=$REACT_APP_COGNITO_USER_POOL_ID" >> .env - echo "REACT_APP_COGNITO_IDENTITY_POOL_ID=$REACT_APP_COGNITO_IDENTITY_POOL_ID" >> .env - echo "REACT_APP_COGNITO_USER_POOL_CLIENT_ID=$REACT_APP_COGNITO_USER_POOL_CLIENT_ID" >> .env - yarn run build artifacts: baseDirectory: build files: - "**/*"
Καταγράψτε με ασφάλεια πειράματα και εκτελείται χρησιμοποιώντας τον ρόλο εκτέλεσης του SageMaker
Μία από τις βασικές πτυχές της λύσης που συζητείται εδώ είναι η ασφαλής ενσωμάτωση με το SageMaker. Το SageMaker είναι μια διαχειριζόμενη υπηρεσία και ως εκ τούτου εκτελεί λειτουργίες για λογαριασμό σας. Αυτό που επιτρέπεται να κάνει το SageMaker ορίζεται από τις πολιτικές IAM που συνδέονται με τον ρόλο εκτέλεσης που συσχετίζετε με μια εργασία εκπαίδευσης του SageMaker ή που συσχετίζετε με ένα προφίλ χρήστη που εργάζεται από το Studio. Για περισσότερες πληροφορίες σχετικά με τον ρόλο εκτέλεσης του SageMaker, ανατρέξτε στο Ρόλοι SageMaker.
Ρυθμίζοντας την πύλη API ώστε να χρησιμοποιεί έλεγχο ταυτότητας IAM στο <MLFlow-Tracking-Server-URI>/api/*
πόρους, μπορούμε να ορίσουμε ένα σύνολο πολιτικών IAM στον ρόλο εκτέλεσης του SageMaker που θα επιτρέψουν στο SageMaker να αλληλεπιδρά με το MLflow σύμφωνα με το επίπεδο πρόσβασης που έχει καθοριστεί.
Κατά τη ρύθμιση του MLFLOW_TRACKING_AWS_SIGV4
μεταβλητή περιβάλλοντος σε True
ενώ εργάζεστε στο Studio ή σε μια εργασία εκπαίδευσης του SageMaker, το MLflow Python SDK θα υπογράφει αυτόματα όλα τα αιτήματα, τα οποία θα επικυρώνονται από το API Gateway:
os.environ['MLFLOW_TRACKING_AWS_SIGV4'] = "True"
mlflow.set_tracking_uri(tracking_uri)
mlflow.set_experiment(experiment_name)
Δοκιμάστε τον ρόλο εκτέλεσης του SageMaker με το MLflow SDK
Εάν αποκτήσετε πρόσβαση στον τομέα Studio που δημιουργήθηκε, θα βρείτε τρεις χρήστες:
- mlflow-admin – Συσχετίζεται με έναν ρόλο εκτέλεσης με παρόμοια δικαιώματα όπως ο χρήστης στους διαχειριστές της ομάδας Amazon Cognito
- mlflow-reader – Συσχετίζεται με έναν ρόλο εκτέλεσης με παρόμοια δικαιώματα με τον χρήστη στους αναγνώστες της ομάδας Amazon Cognito
- mlflow-model-approver – Συσχετίζεται με έναν ρόλο εκτέλεσης με παρόμοια δικαιώματα όπως ο χρήστης στην ομάδα Amazon Cognito εγκρίσεις μοντέλων
Για να δοκιμάσετε τους τρεις διαφορετικούς ρόλους, ανατρέξτε στο τα εργαστήρια παρέχεται ως μέρος αυτού του δείγματος σε κάθε προφίλ χρήστη.
Το παρακάτω διάγραμμα απεικονίζει τη ροή εργασίας για τα προφίλ χρηστών του Studio και τον έλεγχο ταυτότητας εργασιών SageMaker με MLflow.
Ομοίως, όταν εκτελείτε εργασίες SageMaker στη διαχειριζόμενη υποδομή του SageMaker, εάν ορίσετε τη μεταβλητή περιβάλλοντος MLFLOW_TRACKING_AWS_SIGV4
προς την True
, και ο ρόλος εκτέλεσης του SageMaker που μεταβιβάστηκε στις εργασίες έχει τη σωστή πολιτική IAM για πρόσβαση στην πύλη API, μπορείτε να αλληλεπιδράτε με ασφάλεια με τον διακομιστή παρακολούθησης MLflow χωρίς να χρειάζεται να διαχειρίζεστε μόνοι σας τα διαπιστευτήρια. Κατά την εκτέλεση εργασιών εκπαίδευσης του SageMaker και την προετοιμασία μιας κλάσης εκτιμητή, μπορείτε να μεταβιβάσετε μεταβλητές περιβάλλοντος που θα εισάγει το SageMaker και να τις καταστήσετε διαθέσιμες στο σενάριο εκπαίδευσης, όπως φαίνεται στον ακόλουθο κώδικα:
environment={ "AWS_DEFAULT_REGION": region, "MLFLOW_EXPERIMENT_NAME": experiment_name, "MLFLOW_TRACKING_URI": tracking_uri, "MLFLOW_AMPLIFY_UI_URI": mlflow_amplify_ui, "MLFLOW_TRACKING_AWS_SIGV4": "true", "MLFLOW_USER": user
} 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='1.0-1', base_job_name='mlflow', environment=environment
)
Οπτικοποιήστε εκτελέσεις και πειράματα από τη διεπαφή χρήστη MLflow
Αφού ολοκληρωθεί η πρώτη ανάπτυξη, ας συμπληρώσουμε τη δεξαμενή χρηστών του Amazon Cognito με τρεις χρήστες, ο καθένας από τους οποίους ανήκει σε διαφορετική ομάδα, για να δοκιμάσουμε τα δικαιώματα που έχουμε εφαρμόσει. Μπορείτε να χρησιμοποιήσετε αυτό το σενάριο add_users_and_groups.py για να εμφανίσετε τη δεξαμενή χρηστών. Μετά την εκτέλεση του σεναρίου, εάν ελέγξετε τη συγκέντρωση χρηστών του Amazon Cognito στην κονσόλα Amazon Cognito, θα πρέπει να δείτε τους τρεις χρήστες που έχουν δημιουργηθεί.
Στην πλευρά του REST API Gateway, ο εξουσιοδοτητής Lambda θα επαληθεύσει πρώτα την υπογραφή του διακριτικού χρησιμοποιώντας το κλειδί συγκέντρωσης χρηστών Amazon Cognito και θα επαληθεύσει τις αξιώσεις. Μόνο μετά από αυτό θα εξαγάγει την ομάδα Amazon Cognito στην οποία ανήκει ο χρήστης από την αξίωση στο διακριτικό JWT (cognito:groups
) και εφαρμόστε διαφορετικά δικαιώματα με βάση την ομάδα που έχουμε προγραμματίσει.
Για τη συγκεκριμένη περίπτωσή μας, έχουμε τρεις ομάδες:
- admins – Μπορεί να δει και να επεξεργαστεί τα πάντα
- αναγνώστες – Μπορείς να δεις μόνο τα πάντα
- εγκρίτες μοντέλων – Το ίδιο με τους αναγνώστες, το plus μπορεί να καταχωρήσει μοντέλα, να δημιουργήσει εκδόσεις και να προωθήσει εκδόσεις μοντέλων στο επόμενο στάδιο
Ανάλογα με την ομάδα, ο εξουσιοδοτητής Lambda θα δημιουργήσει διαφορετικές πολιτικές IAM. Αυτό είναι απλώς ένα παράδειγμα για το πώς μπορεί να επιτευχθεί η εξουσιοδότηση. με έναν εξουσιοδοτητή Lambda, μπορείτε να εφαρμόσετε οποιαδήποτε λογική χρειάζεστε. Επιλέξαμε να δημιουργήσουμε την πολιτική IAM κατά το χρόνο εκτέλεσης στην ίδια τη συνάρτηση Lambda. Ωστόσο, μπορείτε να δημιουργήσετε εκ των προτέρων κατάλληλες πολιτικές IAM, να τις αποθηκεύσετε Amazon DynamoDB, και να τα ανακτήσετε κατά το χρόνο εκτέλεσης σύμφωνα με τη δική σας επιχειρηματική λογική. Ωστόσο, εάν θέλετε να περιορίσετε μόνο ένα υποσύνολο ενεργειών, θα πρέπει να το γνωρίζετε Ορισμός MLflow REST API.
Μπορείτε να εξερευνήσετε τον κωδικό για τον εξουσιοδοτητή Lambda στο GitHub repo.
Θέματα πολλαπλών λογαριασμών
Οι ροές εργασίας της επιστήμης δεδομένων πρέπει να περάσουν πολλαπλά στάδια καθώς προχωρούν από τον πειραματισμό στην παραγωγή. Μια κοινή προσέγγιση περιλαμβάνει ξεχωριστούς λογαριασμούς αφιερωμένους σε διαφορετικές φάσεις της ροής εργασιών AI/ML (πειραματισμός, ανάπτυξη και παραγωγή). Ωστόσο, μερικές φορές είναι επιθυμητό να έχετε έναν αποκλειστικό λογαριασμό που λειτουργεί ως κεντρικός χώρος αποθήκευσης για μοντέλα. Παρόλο που η αρχιτεκτονική και το δείγμα μας αναφέρονται σε έναν μόνο λογαριασμό, μπορεί εύκολα να επεκταθεί για την υλοποίηση αυτού του τελευταίου σεναρίου, χάρη στο Δυνατότητα IAM για εναλλαγή ρόλων ακόμη και σε όλους τους λογαριασμούς.
Το παρακάτω διάγραμμα απεικονίζει μια αρχιτεκτονική που χρησιμοποιεί το MLflow ως κεντρικό αποθετήριο σε έναν απομονωμένο λογαριασμό AWS.
Για αυτήν την περίπτωση χρήσης, έχουμε δύο λογαριασμούς: έναν για τον διακομιστή MLflow και έναν για τον πειραματισμό που είναι προσβάσιμος από την ομάδα επιστήμης δεδομένων. Για να ενεργοποιήσουμε την πρόσβαση μεταξύ λογαριασμών από μια εργασία εκπαίδευσης SageMaker που εκτελείται στον λογαριασμό επιστήμης δεδομένων, χρειαζόμαστε τα ακόλουθα στοιχεία:
- Ένας ρόλος εκτέλεσης του SageMaker στον λογαριασμό AWS της επιστήμης δεδομένων με συνημμένη πολιτική IAM που επιτρέπει την ανάληψη διαφορετικού ρόλου στον λογαριασμό MLflow:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "<ARN-ROLE-IN-MLFLOW-ACCOUNT>" }
}
- Ένας ρόλος IAM στον λογαριασμό MLflow με συνημμένη τη σωστή πολιτική IAM που παραχωρεί πρόσβαση στον διακομιστή παρακολούθησης MLflow και επιτρέπει στον ρόλο εκτέλεσης του SageMaker στον λογαριασμό επιστήμης δεδομένων να τον αναλάβει:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "<ARN-SAGEMAKER-EXECUTION-ROLE-IN-DATASCIENCE-ACCOUNT>" }, "Action": "sts:AssumeRole" } ]
}
Μέσα στο σενάριο εκπαίδευσης που εκτελείται στον λογαριασμό επιστήμης δεδομένων, μπορείτε να χρησιμοποιήσετε αυτό το παράδειγμα πριν αρχικοποιήσετε τον πελάτη MLflow. Πρέπει να αναλάβετε το ρόλο στο λογαριασμό MLflow και να αποθηκεύσετε τα προσωρινά διαπιστευτήρια ως μεταβλητές περιβάλλοντος, επειδή αυτό το νέο σύνολο διαπιστευτηρίων θα ληφθεί από μια νέα περίοδο λειτουργίας Boto3 που έχει αρχικοποιηθεί στον πελάτη MLflow.
import boto3 # Session using the SageMaker Execution Role in the Data Science Account
session = boto3.Session()
sts = session.client("sts") response = sts.assume_role( RoleArn="<ARN-ROLE-IN-MLFLOW-ACCOUNT>", RoleSessionName="AssumedMLflowAdmin"
) credentials = response['Credentials']
os.environ['AWS_ACCESS_KEY_ID'] = credentials['AccessKeyId']
os.environ['AWS_SECRET_ACCESS_KEY'] = credentials['SecretAccessKey']
os.environ['AWS_SESSION_TOKEN'] = credentials['SessionToken'] # set remote mlflow server and initialize a new boto3 session in the context
# of the assumed role
mlflow.set_tracking_uri(tracking_uri)
experiment = mlflow.set_experiment(experiment_name)
Σε αυτό το παράδειγμα, RoleArn
είναι το ARN του ρόλου που θέλετε να αναλάβετε και RoleSessionName
είναι το όνομα που επιλέγετε για την υποτιθέμενη συνεδρία. ο sts.assume_role
Η μέθοδος επιστρέφει προσωρινά διαπιστευτήρια ασφαλείας που θα χρησιμοποιήσει ο πελάτης MLflow για να δημιουργήσει έναν νέο πελάτη για τον αναλαμβανόμενο ρόλο. Στη συνέχεια, ο πελάτης MLflow θα στείλει υπογεγραμμένα αιτήματα στο API Gateway στο πλαίσιο του αναλαμβανόμενου ρόλου.
Απόδοση MLflow μέσα στο SageMaker Studio
Το SageMaker Studio βασίζεται στο JupyterLab και, όπως και στο JupyterLab, μπορείτε να εγκαταστήσετε επεκτάσεις για να ενισχύσετε την παραγωγικότητά σας. Χάρη σε αυτήν την ευελιξία, οι επιστήμονες δεδομένων που εργάζονται με το MLflow και το SageMaker μπορούν να βελτιώσουν περαιτέρω την ενσωμάτωσή τους αποκτώντας πρόσβαση στο περιβάλλον χρήστη MLflow από το περιβάλλον του Studio και οπτικοποιώντας αμέσως τα πειράματα και τις εκτελέσεις που έχουν καταγραφεί. Το ακόλουθο στιγμιότυπο οθόνης δείχνει ένα παράδειγμα MLflow που αποδόθηκε στο Studio.
Για πληροφορίες σχετικά με την εγκατάσταση επεκτάσεων JupyterLab στο Studio, ανατρέξτε στο Το Amazon SageMaker Studio και το SageMaker Notebook Instance έρχονται τώρα με φορητούς υπολογιστές JupyterLab 3 για την ενίσχυση της παραγωγικότητας των προγραμματιστών. Για λεπτομέρειες σχετικά με την προσθήκη αυτοματισμού μέσω διαμορφώσεων κύκλου ζωής, ανατρέξτε στο Προσαρμόστε το Amazon SageMaker Studio χρησιμοποιώντας τις διαμορφώσεις κύκλου ζωής.
Στο αποθετήριο δειγμάτων που υποστηρίζει αυτήν την ανάρτηση, παρέχουμε οδηγίες για τον τρόπο εγκατάστασης του jupyterlab-iframe
επέκταση. Αφού εγκατασταθεί η επέκταση, μπορείτε να αποκτήσετε πρόσβαση στη διεπαφή χρήστη του MLflow χωρίς να αποχωρήσετε από το Studio χρησιμοποιώντας το ίδιο σύνολο διαπιστευτηρίων που έχετε αποθηκεύσει στη συγκέντρωση χρηστών του Amazon Cognito.
Τα επόμενα βήματα
Υπάρχουν πολλές επιλογές για επέκταση αυτής της εργασίας. Μια ιδέα είναι να ενοποιήσετε το χώρο αποθήκευσης ταυτότητας τόσο για το SageMaker Studio όσο και για τη διεπαφή χρήστη MLflow. Μια άλλη επιλογή θα ήταν να χρησιμοποιήσετε μια υπηρεσία ομοσπονδίας ταυτότητας τρίτου μέρους με το Amazon Cognito και στη συνέχεια να χρησιμοποιήσετε Κέντρο Ταυτότητας AWS IAM (διάδοχος του AWS Single Sign-On) για να παραχωρήσετε πρόσβαση στο Studio χρησιμοποιώντας την ίδια ταυτότητα τρίτου μέρους. Ένα άλλο είναι η εισαγωγή πλήρους αυτοματισμού χρησιμοποιώντας Αγωγοί Amazon SageMaker για το τμήμα CI/CD του κτιρίου του μοντέλου και χρησιμοποιώντας το MLflow ως κεντρικό διακομιστή παρακολούθησης πειράματος και μητρώο μοντέλων με ισχυρές δυνατότητες διακυβέρνησης, καθώς και αυτοματοποίηση για αυτόματη ανάπτυξη εγκεκριμένων μοντέλων σε τελικό σημείο φιλοξενίας SageMaker.
Συμπέρασμα
Ο στόχος αυτής της ανάρτησης ήταν να παρέχει έλεγχο πρόσβασης σε επίπεδο επιχείρησης για MLflow. Για να το πετύχουμε αυτό, διαχωρίσαμε τις διαδικασίες ελέγχου ταυτότητας και εξουσιοδότησης από τον διακομιστή MLflow και τις μεταφέραμε στο API Gateway. Χρησιμοποιήσαμε δύο μεθόδους εξουσιοδότησης που προσφέρονται από το API Gateway, τους εξουσιοδοτητές IAM και τους εξουσιοδοτητές Lambda, για να καλύψουμε τις απαιτήσεις τόσο του MLflow Python SDK όσο και του MLflow UI. Είναι σημαντικό να κατανοήσουμε ότι οι χρήστες είναι εξωτερικοί στο MLflow, επομένως μια συνεπής διακυβέρνηση απαιτεί τη διατήρηση των πολιτικών IAM, ειδικά σε περίπτωση πολύ λεπτομερών αδειών. Τέλος, δείξαμε πώς να βελτιώσουμε την εμπειρία των επιστημόνων δεδομένων ενσωματώνοντας το MLflow στο Studio μέσω απλών επεκτάσεων.
Δοκιμάστε τη λύση μόνοι σας με πρόσβαση στο GitHub repo και ενημερώστε μας αν έχετε απορίες στα σχόλια!
Επιπρόσθετο υλικό
Για περισσότερες πληροφορίες σχετικά με το SageMaker και το MLflow, ανατρέξτε στα ακόλουθα:
Σχετικά με τους Συγγραφείς
Πάολο Ντι Φραντσέσκο είναι Senior Solutions Architect στο Amazon Web Services (AWS). Είναι Διδάκτωρ Μηχανικού Τηλεπικοινωνιών και έχει εμπειρία στη μηχανική λογισμικού. Είναι παθιασμένος με τη μηχανική μάθηση και επί του παρόντος εστιάζει στη χρήση της εμπειρίας του για να βοηθήσει τους πελάτες να επιτύχουν τους στόχους τους στο AWS, ιδιαίτερα σε συζητήσεις γύρω από τα MLOps. Εκτός δουλειάς, του αρέσει να παίζει ποδόσφαιρο και να διαβάζει.
Κρις Φρέγκλι είναι Κύριος Ειδικός Αρχιτέκτονας Λύσεων για την τεχνητή νοημοσύνη και τη μηχανική μάθηση στην Amazon Web Services (AWS) με έδρα το Σαν Φρανσίσκο της Καλιφόρνια. Είναι συν-συγγραφέας του βιβλίου O'Reilly, "Data Science on AWS". Ο Chris είναι επίσης ο ιδρυτής πολλών παγκόσμιων συναντήσεων που επικεντρώνονται στα Apache Spark, TensorFlow, Ray και KubeFlow. Μιλάει τακτικά σε συνέδρια τεχνητής νοημοσύνης και μηχανικής μάθησης σε όλο τον κόσμο, συμπεριλαμβανομένων των O'Reilly AI, Open Data Science Conference και Big Data Spain.
Irshad Buchh είναι κύριος αρχιτέκτονας λύσεων στο Amazon Web Services (AWS). Ο Irshad συνεργάζεται με μεγάλους συνεργάτες AWS Global ISV και SI και τους βοηθά να χτίσουν τη στρατηγική τους στο cloud και να υιοθετήσουν ευρεία την πλατφόρμα υπολογιστών cloud της Amazon. Ο Irshad αλληλεπιδρά με τους CIO, τους CTO και τους Αρχιτέκτονές τους και τους βοηθάει και τους τελικούς πελάτες τους να εφαρμόσουν το cloud όραμά τους. Ο Irshad κατέχει τις στρατηγικές και τεχνικές δεσμεύσεις και την τελική επιτυχία σχετικά με συγκεκριμένα έργα υλοποίησης και αναπτύσσει βαθιά τεχνογνωσία στις τεχνολογίες των Υπηρεσιών Ιστού της Amazon καθώς και ευρεία τεχνογνωσία σχετικά με τον τρόπο κατασκευής των εφαρμογών και των υπηρεσιών χρησιμοποιώντας την πλατφόρμα Amazon Web Services.
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- PlatoAiStream. Web3 Data Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- Minting the Future με την Adryenn Ashley. Πρόσβαση εδώ.
- Αγορά και πώληση μετοχών σε εταιρείες PRE-IPO με το PREIPO®. Πρόσβαση εδώ.
- πηγή: https://aws.amazon.com/blogs/machine-learning/securing-mlflow-in-aws-fine-grained-access-control-with-aws-native-services/
- :έχει
- :είναι
- :δεν
- :που
- $UP
- 1
- 100
- 30
- 7
- a
- ΠΛΗΡΟΦΟΡΙΕΣ
- πρόσβαση
- προσιτός
- πρόσβαση
- Σύμφωνα με
- Λογαριασμός
- Λογαριασμοί
- Κατορθώνω
- επιτευχθεί
- απέναντι
- Ενέργειες
- ενεργειών
- πράξεις
- προσθέτω
- προσθήκη
- διεύθυνση
- Προσθέτει
- διαχειριστής
- Υιοθεσία
- Πλεονέκτημα
- Μετά το
- AI
- AI / ML
- στοχεύουν
- Όλα
- επιτρέπουν
- επιτρέπει
- ήδη
- Επίσης
- Αν και
- πάντοτε
- Amazon
- Amazon Cognito
- Amazon EC2
- Amazon Sage Maker
- Στούντιο Amazon SageMaker
- Amazon υπηρεσίες Web
- Amazon Web Services (AWS)
- an
- και
- Άλλος
- κάθε
- Apache
- api
- APIs
- app
- εμφανίζομαι
- εφαρμόσιμος
- Εφαρμογή
- εφαρμογές
- εφαρμοσμένος
- Εφαρμογή
- πλησιάζω
- κατάλληλος
- εγκεκριμένη
- εφαρμογές
- αρχιτεκτονική
- ΕΙΝΑΙ
- γύρω
- AS
- πτυχές
- ανατεθεί
- Συνεργάτης
- συσχετισμένη
- υποτίθεται
- At
- έλεγχος
- αυγή
- Auth
- πιστοποιώ την αυθεντικότητα
- επικυρωμένο
- Πιστοποίηση
- εξουσιοδότηση
- εξουσιοδοτώ
- εξουσιοδοτημένο
- αυτοματοποίηση
- αυτομάτως
- Αυτοματοποίηση
- διαθέσιμος
- AWS
- Backend
- βάση
- βασίζονται
- BE
- Φορέας
- επειδή
- ήταν
- πριν
- πίσω
- ανήκει
- μεταξύ
- Μεγάλος
- Big Data
- Μπλοκ
- βιβλίο
- ώθηση
- και οι δύο
- ευρύς
- πρόγραμμα περιήγησης
- χτίζω
- Κτίριο
- επιχείρηση
- αλλά
- by
- Καλιφόρνια
- επισκέπτης
- CAN
- υποψήφιος
- δυνατότητες
- περίπτωση
- προμηθεύω
- κεντρικός
- κεντρική
- πρόκληση
- Αλλαγές
- έλεγχος
- Επιλέξτε
- chris
- ισχυρισμός
- αξιώσεις
- τάξη
- πελάτης
- Backup
- cloud computing
- Συν-Συγγραφέας
- κωδικός
- συλλογή
- συνδυασμός
- Ελάτε
- Κοινός
- πλήρης
- περίπλοκο
- συστατικό
- εξαρτήματα
- Υπολογίστε
- χρήση υπολογιστή
- Διάσκεψη
- συνέδρια
- σύνδεση
- συνεπής
- πρόξενος
- παγιώνω
- Δοχείο
- συμφραζόμενα
- έλεγχος
- Βολικός
- πυρήνας
- διορθώσει
- αποδοτική
- δημιουργία
- δημιουργήθηκε
- ΠΙΣΤΟΠΟΙΗΤΙΚΟ
- Διαπιστεύσεις
- Τη στιγμή
- Πελάτες
- ημερομηνία
- επιστημονικά δεδομένα
- επιστήμονας δεδομένων
- αφιερωμένο
- βαθύς
- βαθιά τεχνογνωσία
- βαθύτερη
- ορίζεται
- κατέδειξε
- καταδεικνύει
- αποδεικνύοντας
- παρατάσσω
- ανάπτυξη
- ανάπτυξη
- περιγράφεται
- Υπηρεσίες
- σχεδιασμένα
- λεπτομερής
- καθέκαστα
- Εργολάβος
- ανάπτυξη
- Ανάπτυξη
- διαφορετικές
- κατευθείαν
- συζήτηση
- συζητήσεις
- do
- Λιμενεργάτης
- Όχι
- πράξη
- τομέα
- Μην
- κάθε
- εύκολα
- ηχώ
- αποτέλεσμα
- προσπάθεια
- στοιχεία
- ενεργοποιήσετε
- ενεργοποιημένη
- δίνει τη δυνατότητα
- τέλος
- από άκρη σε άκρη
- Τελικό σημείο
- Μηχανική
- ενίσχυση
- αρκετά
- σε επίπεδο επιχειρήσεων
- επιχειρήσεις
- Περιβάλλον
- ειδικά
- καθιερώνει
- αξιολόγηση
- Even
- τελικά
- Κάθε
- όλοι
- παράδειγμα
- παραδείγματα
- εκτέλεση
- υπάρχουν
- υφιστάμενα
- Επέκταση
- εμπειρία
- πείραμα
- πειράματα
- εξειδίκευση
- διερευνήσει
- επεκτείνουν
- επέκταση
- επεκτάσεις
- εκτενής
- εξωτερικός
- εκχύλισμα
- διευκολύνω
- εφικτός
- Χαρακτηριστικό
- Ομοσπονδία
- Εικόνα
- Αρχεία
- Αρχεία
- Τελικά
- Εύρεση
- Όνομα
- Ευελιξία
- ροή
- Συγκέντρωση
- επικεντρώθηκε
- εστιάζοντας
- ακολουθήστε
- Εξής
- ποδόσφαιρο
- Για
- Βρέθηκαν
- ιδρυτής
- τέσσερα
- Πλαίσιο
- Φρανσίσκο
- από
- εμπρός
- εμπρόσθιο άκρο
- frontend
- πλήρη
- λειτουργία
- περαιτέρω
- πύλη
- παράγουν
- παράγεται
- γενεά
- GitHub
- Δώστε
- Δίνοντας
- Παγκόσμιο
- Στόχοι
- διακυβέρνησης
- χορηγεί
- επιχορηγήσεις
- μεγαλύτερη
- σε μεγάλο βαθμό
- Group
- Ομάδα
- Έχω
- που έχει
- he
- βοήθεια
- βοηθά
- εδώ
- Ψηλά
- υψηλού επιπέδου
- υψηλά
- του
- κατέχει
- φιλοξενείται
- φιλοξενία
- Πως
- Πώς να
- Ωστόσο
- HTML
- http
- HTTPS
- ID
- ιδέα
- ταυτότητες
- Ταυτότητα
- if
- απεικονίζει
- εικόνα
- αμέσως
- επιπτώσεις
- εφαρμογή
- εκτέλεση
- εφαρμοστεί
- εκτελεστικών
- υλοποιεί
- σημαντικό
- βελτίωση
- βελτίωση
- in
- Συμπεριλαμβανομένου
- Εισερχόμενος
- βιομηχανίες
- πληροφορίες
- Υποδομή
- εγκαθιστώ
- εγκατασταθεί
- εγκατάσταση
- παράδειγμα
- οδηγίες
- ενσωματωθεί
- Ενσωμάτωση
- ολοκλήρωση
- ολοκληρώσεις
- αλληλεπιδρούν
- διαδραστικός
- διεπαφές
- σε
- εισαγάγει
- Εισάγει
- απομονωμένος
- Εκδόθηκε
- IT
- ΤΟΥ
- εαυτό
- Δουλειά
- Θέσεις εργασίας
- μόλις
- Jwt
- Διατήρηση
- Κλειδί
- πλήκτρα
- Ξέρω
- KubeFlow
- large
- Επίθετο
- αργότερα
- μάθηση
- αφήνοντας
- ας
- Επίπεδο
- Βιβλιοθήκη
- κύκλος ζωής
- Μου αρέσει
- περιορισμούς
- συνδέονται
- Λιστα
- φορτίο
- κούτσουρο
- καταγραφεί
- ξύλευση
- λογική
- Σύνδεση
- ματιά
- μοιάζει
- μηχανή
- μάθηση μηχανής
- Η διατήρηση
- κάνω
- ΚΑΝΕΙ
- Κατασκευή
- διαχείριση
- διαχειρίζεται
- διαχείριση
- διαχείριση
- πολοί
- μέσα
- μηχανισμός
- μηχανισμούς
- Meetups
- μέθοδος
- μέθοδοι
- Metrics
- ενδέχεται να
- ελάχιστος
- ML
- MLOps
- μοντέλο
- μοντέλα
- τροποποιήσει
- σπονδυλωτή
- περισσότερο
- πολλαπλών
- πολλαπλούς
- πρέπει
- όνομα
- ντόπιος
- Ανάγκη
- που απαιτούνται
- χρειάζονται
- ανάγκες
- Νέα
- επόμενη
- σημειωματάριο
- τώρα
- of
- προσφέρονται
- προσφορές
- on
- ONE
- αποκλειστικά
- ανοίξτε
- ανοιχτά δεδομένα
- ανοικτού κώδικα
- Λογισμικό ανοικτού κώδικα
- επιχειρήσεων
- λειτουργίες
- Επιλογή
- Επιλογές
- or
- OS
- ΑΛΛΑ
- δικός μας
- έξω
- εκτός
- επί
- δική
- ανήκει
- μέρος
- Ειδικότερα
- Συνεργάτες
- passieren
- πέρασε
- παθιασμένος
- Patch
- τέλειος
- εκτελεί
- άδεια
- δικαιώματα
- εκλεκτός
- αγωγού
- Μέρος
- πλατφόρμες
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- παιχνίδι
- συν
- Σημείο
- Πολιτικές
- πολιτική
- πισίνα
- δυνατότητα
- Θέση
- πρακτικά
- προηγούμενος
- Κύριος
- ιδιωτικός
- διαδικασια μας
- Διεργασίες
- παραγωγή
- παραγωγικότητα
- Προφίλ ⬇️
- προφίλ
- προγραμματικός
- προγραμματισμένος
- Πρόοδος
- έργα
- email marketing
- προτείνεται
- παρέχουν
- παρέχεται
- παρέχει
- σκοποί
- Python
- Ερωτήσεις
- RAY
- φθάσουν
- Αντίδραση
- αναγνώστες
- Ανάγνωση
- μειώνει
- περιοχή
- κάντε ΕΓΓΡΑΦΗ
- καταχωρηθεί
- μητρώου
- τακτικά
- ρυθμίζονται
- ρυθμιζόμενες βιομηχανίες
- αξιόπιστος
- βασίζονται
- μακρινός
- απόδοση
- Αποθήκη
- εκπροσωπούν
- ζητήσει
- αιτήματα
- απαιτήσεις
- Απαιτεί
- πόρος
- Υποστηρικτικό υλικό
- αντίστοιχα
- απάντησης
- ΠΕΡΙΦΕΡΕΙΑ
- περιορίζω
- απόδοση
- Επιστροφές
- δικαιώματα
- εύρωστος
- Ρόλος
- ρόλους
- τρέξιμο
- τρέξιμο
- σοφός
- ίδιο
- Σαν
- Σαν Φρανσίσκο
- σενάριο
- Επιστήμη
- Επιστήμονας
- επιστήμονες
- SDK
- άψογα
- προστατευμένο περιβάλλον
- ασφαλώς
- ασφάλεια
- ασφάλεια
- δείτε
- σπόρος
- στείλετε
- αρχαιότερος
- ξεχωριστό
- Χωρίς διακομιστή
- υπηρεσία
- Υπηρεσίες
- Συνεδρίαση
- σειρά
- τον καθορισμό
- setup
- διάφοροι
- θα πρέπει να
- δείχνουν
- παρουσιάζεται
- Δείχνει
- πλευρά
- υπογράψουν
- υπογραφεί
- υπογραφή
- παρόμοιες
- Απλούς
- απλά
- αφού
- ενιαίας
- So
- λογισμικό
- ανάπτυξη λογισμικού
- τεχνολογία λογισμικού
- λύση
- Λύσεις
- Ισπανία
- Σπινθήρας
- Μιλάει
- ειδικός
- συγκεκριμένες
- καθορίζεται
- σωρός
- Στοίβες
- στάδια
- σκαλωσιά
- Ξεκινήστε
- Δήλωση
- δηλώσεις
- Βήμα
- Βήματα
- Ακόμη
- χώρος στο δίσκο
- κατάστημα
- αποθηκεύονται
- ειλικρινής
- Στρατηγική
- Στρατηγική
- ισχυρός
- στούντιο
- υποδίκτυο
- επιτυχία
- τέτοιος
- προμήθεια
- υποστήριξη
- υποστηριζόνται!
- Στήριξη
- διακόπτης
- σύστημα
- επειξειργασμένος από ραπτήν
- Πάρτε
- Έργο
- εργασίες
- Τεχνικός
- Τεχνολογίες
- τηλεπικοινωνία
- προσωρινή
- tensorflow
- δοκιμή
- από
- Ευχαριστώ
- ότι
- Η
- ο κόσμος
- τους
- Τους
- τότε
- εκ τούτου
- επομένως
- Αυτοί
- αυτοί
- νομίζω
- τρίτους
- αυτό
- τρία
- Μέσω
- ώρα
- προς την
- ένδειξη
- κουπόνια
- κορυφή
- Παρακολούθηση
- Τρένο
- Εκπαίδευση
- μεταφέρονται
- αληθής
- ΣΤΡΟΦΗ
- δύο
- ui
- τελικός
- υπό
- καταλαβαίνω
- ενημερώθηκε
- επάνω σε
- us
- χρήση
- περίπτωση χρήσης
- Χρήστες
- Η εμπειρία χρήστη
- Χρήστες
- χρησιμοποιώντας
- χρησιμοποιώ
- χρησιμοποιούνται
- επικυρωμένο
- επαληθεύεται
- επαληθεύει
- επαληθεύοντας
- εκδοχή
- πολύ
- μέσω
- όραμα
- θέλω
- ήταν
- Τρόπος..
- τρόπους
- we
- ιστός
- διαδικτυακές υπηρεσίες
- ΛΟΙΠΌΝ
- Τι
- πότε
- αν
- Ποιό
- ενώ
- Ο ΟΠΟΊΟΣ
- ολόκληρο
- θα
- με
- εντός
- χωρίς
- Εργασία
- ροές εργασίας
- εργαζόμενος
- λειτουργεί
- κόσμος
- ανησυχία
- αξία
- θα
- ακόμη
- Εσείς
- Σας
- τον εαυτό σας
- zephyrnet