Κατά την ανάπτυξη μοντέλων Deep Learning σε κλίμακα, είναι σημαντικό να χρησιμοποιείτε αποτελεσματικά το υποκείμενο υλικό για να μεγιστοποιήσετε την απόδοση και τα οφέλη κόστους. Για φόρτους εργασίας παραγωγής που απαιτούν υψηλή απόδοση και χαμηλή καθυστέρηση, η επιλογή του Amazon Elastic Compute Cloud Το παράδειγμα (EC2), η στοίβα εξυπηρέτησης μοντέλων και η αρχιτεκτονική ανάπτυξης είναι πολύ σημαντικά. Η αναποτελεσματική αρχιτεκτονική μπορεί να οδηγήσει σε μη βέλτιστη χρήση των επιταχυντών και σε αδικαιολόγητα υψηλό κόστος παραγωγής.
Σε αυτήν την ανάρτηση σας καθοδηγούμε στη διαδικασία ανάπτυξης διακομιστών μοντέλων FastAPI σε συσκευές AWS Inferentia (που βρίσκονται στο Amazon EC2 Inf1 και Amazon EC Inf2 περιπτώσεις). Επιδεικνύουμε επίσης τη φιλοξενία ενός δείγματος μοντέλου που αναπτύσσεται παράλληλα σε όλους τους NeuronCores για μέγιστη χρήση υλικού.
Επισκόπηση λύσεων
Το FastAPI είναι ένα πλαίσιο web ανοιχτού κώδικα για την εξυπηρέτηση εφαρμογών Python που είναι πολύ πιο γρήγορο από τα παραδοσιακά πλαίσια όπως το Flask και το Django. Χρησιμοποιεί ένα Ασύγχρονη διεπαφή πύλης διακομιστή (ΑΣΓΗ) αντί του ευρέως χρησιμοποιούμενου Διεπαφή πύλης διακομιστή Web (WSGI). Το ASGI επεξεργάζεται τα εισερχόμενα αιτήματα ασύγχρονα σε αντίθεση με το WSGI που επεξεργάζεται αιτήματα διαδοχικά. Αυτό καθιστά το FastAPI την ιδανική επιλογή για τον χειρισμό αιτημάτων ευαίσθητων σε λανθάνουσα κατάσταση. Μπορείτε να χρησιμοποιήσετε το FastAPI για να αναπτύξετε έναν διακομιστή που φιλοξενεί ένα τελικό σημείο σε περιπτώσεις Inferentia (Inf1/Inf2) που ακούει αιτήματα πελατών μέσω μιας καθορισμένης θύρας.
Στόχος μας είναι να επιτύχουμε την υψηλότερη απόδοση με το χαμηλότερο κόστος μέσω της μέγιστης χρήσης του υλικού. Αυτό μας επιτρέπει να χειριζόμαστε περισσότερα αιτήματα συμπερασμάτων με λιγότερους επιταχυντές. Κάθε συσκευή AWS Inferentia1 περιέχει τέσσερις NeuronCores-v1 και κάθε συσκευή AWS Inferentia2 περιέχει δύο NeuronCores-v2. ο AWS Neuron Το SDK μάς επιτρέπει να χρησιμοποιούμε κάθε έναν από τους NeuronCores παράλληλα, κάτι που μας δίνει περισσότερο έλεγχο στη φόρτωση και την εξαγωγή τεσσάρων ή περισσότερων μοντέλων παράλληλα χωρίς να θυσιάζει την απόδοση.
Με το FastAPI, έχετε την επιλογή του διακομιστή ιστού Python (οπλίτης, Uvicorn, Υπερκορν, Δάφνη). Αυτοί οι διακομιστές Ιστού παρέχουν και στρώμα αφαίρεσης πάνω από το υποκείμενο μοντέλο Μηχανικής Μάθησης (ML). Ο πελάτης που ζητά έχει το πλεονέκτημα ότι αγνοεί το φιλοξενούμενο μοντέλο. Ένας πελάτης δεν χρειάζεται να γνωρίζει το όνομα ή την έκδοση του μοντέλου που έχει αναπτυχθεί στον διακομιστή. το όνομα του τελικού σημείου είναι πλέον απλώς ένας διακομιστής μεσολάβησης μιας συνάρτησης που φορτώνει και εκτελεί το μοντέλο. Αντίθετα, σε ένα εργαλείο εξυπηρέτησης για συγκεκριμένο πλαίσιο, όπως το TensorFlow Serving, το όνομα και η έκδοση του μοντέλου αποτελούν μέρος του ονόματος τελικού σημείου. Εάν το μοντέλο αλλάξει από την πλευρά του διακομιστή, ο πελάτης πρέπει να γνωρίζει και να αλλάξει την κλήση του API στο νέο τελικό σημείο ανάλογα. Επομένως, εάν εξελίσσετε συνεχώς τα μοντέλα έκδοσης, όπως στην περίπτωση της δοκιμής A/B, τότε η χρήση ενός γενικού διακομιστή web Python με FastAPI είναι ένας βολικός τρόπος εξυπηρέτησης μοντέλων, επειδή το όνομα του τελικού σημείου είναι στατικό.
Ο ρόλος ενός διακομιστή ASGI είναι να δημιουργεί έναν καθορισμένο αριθμό εργαζομένων που ακούν για αιτήματα πελατών και εκτελούν τον κώδικα συμπερασμάτων. Μια σημαντική δυνατότητα του διακομιστή είναι να βεβαιωθεί ότι ο απαιτούμενος αριθμός εργαζομένων είναι διαθέσιμος και ενεργός. Σε περίπτωση που ένας εργαζόμενος σκοτωθεί, ο διακομιστής πρέπει να ξεκινήσει έναν νέο εργαζόμενο. Σε αυτό το πλαίσιο, ο διακομιστής και οι εργαζόμενοι ενδέχεται να αναγνωρίζονται από το αναγνωριστικό διαδικασίας Unix (PID). Για αυτήν την ανάρτηση, χρησιμοποιούμε α Υπερκορν διακομιστή, που είναι μια δημοφιλής επιλογή για διακομιστές ιστού Python.
Σε αυτήν την ανάρτηση, μοιραζόμαστε τις βέλτιστες πρακτικές για την ανάπτυξη μοντέλων βαθιάς εκμάθησης με το FastAPI σε AWS Inferentia NeuronCores. Δείχνουμε ότι μπορείτε να αναπτύξετε πολλά μοντέλα σε ξεχωριστούς NeuronCores που μπορούν να κληθούν ταυτόχρονα. Αυτή η ρύθμιση αυξάνει την απόδοση επειδή μπορούν να συναχθούν ταυτόχρονα πολλαπλά μοντέλα και η χρήση του NeuronCore είναι πλήρως βελτιστοποιημένη. Ο κωδικός βρίσκεται στο GitHub repo. Το παρακάτω σχήμα δείχνει την αρχιτεκτονική του τρόπου ρύθμισης της λύσης σε μια παρουσία EC2 Inf2.
Η ίδια αρχιτεκτονική ισχύει για έναν τύπο παρουσίας EC2 Inf1 με τη διαφορά ότι έχει τέσσερις πυρήνες. Έτσι αυτό αλλάζει λίγο το διάγραμμα της αρχιτεκτονικής.
AWS Inferentia NeuronCores
Ας ψάξουμε λίγο βαθύτερα στα εργαλεία που παρέχονται από το AWS Neuron για να ασχοληθούμε με τους NeuronCores. Οι παρακάτω πίνακες δείχνουν τον αριθμό των NeuronCores σε κάθε τύπο παρουσίας Inf1 και Inf2. Τα κεντρικά vCPU και η μνήμη του συστήματος είναι κοινόχρηστα σε όλους τους διαθέσιμους NeuronCores.
Μέγεθος Στιγμιότυπου | # Επιταχυντές Inferentia | # NeuronCores-v1 | vCPU | Μνήμη (GiB) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf1.2xlarge | 1 | 4 | 8 | 16 |
Inf1.6xlarge | 4 | 16 | 24 | 48 |
Inf1.24xlarge | 16 | 64 | 96 | 192 |
Μέγεθος Στιγμιότυπου | # Επιταχυντές Inferentia | # NeuronCores-v2 | vCPU | Μνήμη (GiB) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf2.8xlarge | 1 | 2 | 32 | 32 |
Inf2.24xlarge | 6 | 12 | 96 | 192 |
Inf2.48xlarge | 12 | 24 | 192 | 384 |
Οι περιπτώσεις Inf2 περιέχουν το νέο NeuronCores-v2 σε σύγκριση με το NeuronCore-v1 στις περιπτώσεις Inf1. Παρά τους λιγότερους πυρήνες, είναι σε θέση να προσφέρουν 4 φορές υψηλότερη απόδοση και 10 φορές χαμηλότερο λανθάνοντα χρόνο από τις περιπτώσεις Inf1. Οι περιπτώσεις Inf2 είναι ιδανικές για φόρτους εργασίας Deep Learning, όπως Generative AI, Large Language Models (LLM) στην οικογένεια OPT/GPT και μετασχηματιστές όρασης όπως το Stable Diffusion.
Το Neuron Runtime είναι υπεύθυνο για την εκτέλεση μοντέλων σε συσκευές Neuron. Το Neuron Runtime καθορίζει ποιος NeuronCore θα εκτελέσει ποιο μοντέλο και πώς θα το εκτελέσει. Η διαμόρφωση του Neuron Runtime ελέγχεται με τη χρήση του μεταβλητές περιβάλλοντος σε επίπεδο διαδικασίας. Από προεπιλογή, οι επεκτάσεις πλαισίου Neuron θα φροντίζουν για τη διαμόρφωση του Neuron Runtime εκ μέρους του χρήστη. Ωστόσο, σαφείς διαμορφώσεις είναι επίσης δυνατές για την επίτευξη πιο βελτιστοποιημένης συμπεριφοράς.
Δύο δημοφιλείς μεταβλητές περιβάλλοντος είναι NEURON_RT_NUM_CORES
και NEURON_RT_VISIBLE_CORES
. Με αυτές τις μεταβλητές περιβάλλοντος, οι διεργασίες Python μπορούν να συνδεθούν με έναν NeuronCore. Με NEURON_RT_NUM_CORES
, ένας καθορισμένος αριθμός πυρήνων μπορεί να δεσμευτεί για μια διεργασία και με NEURON_RT_VISIBLE_CORES
, μπορεί να γίνει κράτηση για μια σειρά από NeuronCores. Για παράδειγμα, NEURON_RT_NUM_CORES=2 myapp.py
θα κρατήσει δύο πυρήνες και NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
θα κρατήσει μηδέν, έναν και δύο πυρήνες για myapp.py
. Μπορείτε επίσης να κάνετε κράτηση NeuronCores σε όλες τις συσκευές (τσιπ AWS Inferentia). Ετσι, NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
θα κρατήσει τους τέσσερις πρώτους πυρήνες device1
και ένας πυρήνας επάνω device2
σε έναν τύπο παρουσίας Ec2 Inf1. Ομοίως, σε έναν τύπο παρουσίας EC2 Inf2, αυτή η διαμόρφωση θα κρατήσει δύο πυρήνες κατά μήκος device1
και device2
και ένας πυρήνας επάνω device3
. Ο παρακάτω πίνακας συνοψίζει τη διαμόρφωση αυτών των μεταβλητών.
Όνομα | Περιγραφή | Χαρακτηριστικά | Αναμενόμενες Αξίες | Προεπιλεγμένη τιμή | Έκδοση RT |
NEURON_RT_VISIBLE_CORES |
Εύρος συγκεκριμένων Neuron Cores που απαιτούνται για τη διαδικασία | Εύρος ακέραιου αριθμού (όπως 1-3) | Οποιαδήποτε τιμή ή εύρος μεταξύ 0 και Max NeuronCore στο σύστημα | Ν/Α | 2.0 + |
NEURON_RT_NUM_CORES |
Αριθμός Neuron Cores που απαιτείται από τη διαδικασία | Ακέραιος αριθμός | Μια τιμή από 1 έως Max NeuronCore στο σύστημα | 0, το οποίο ερμηνεύεται ως "όλα" | 2.0 + |
Για μια λίστα με όλες τις μεταβλητές περιβάλλοντος, ανατρέξτε στο Neuron Runtime Configuration.
Από προεπιλογή, κατά τη φόρτωση μοντέλων, τα μοντέλα φορτώνονται στο NeuronCore 0 και μετά στο NeuronCore 1, εκτός εάν δηλώνεται ρητά από τις προηγούμενες μεταβλητές περιβάλλοντος. Όπως προσδιορίστηκε προηγουμένως, οι NeuronCores μοιράζονται τις διαθέσιμες vCPU κεντρικού υπολογιστή και τη μνήμη συστήματος. Επομένως, τα μοντέλα που αναπτύσσονται σε κάθε NeuronCore θα ανταγωνίζονται για τους διαθέσιμους πόρους. Αυτό δεν θα είναι πρόβλημα εάν το μοντέλο χρησιμοποιεί τους NeuronCores σε μεγάλο βαθμό. Αλλά εάν ένα μοντέλο εκτελείται μόνο εν μέρει στους NeuronCore και τα υπόλοιπα σε κεντρικούς υπολογιστές vCPU, τότε η εξέταση της διαθεσιμότητας της CPU ανά NeuronCore είναι σημαντική. Αυτό επηρεάζει και την επιλογή του στιγμιότυπου.
Ο παρακάτω πίνακας δείχνει τον αριθμό των κεντρικών υπολογιστών vCPU και της μνήμης συστήματος που είναι διαθέσιμη ανά μοντέλο, εάν ένα μοντέλο είχε αναπτυχθεί σε κάθε NeuronCore. Ανάλογα με τη χρήση του NeuronCore, τη χρήση vCPU και μνήμης της εφαρμογής σας, συνιστάται η εκτέλεση δοκιμών για να μάθετε ποια διαμόρφωση είναι η πιο αποδοτική για την εφαρμογή σας. ο Εργαλείο Neuron Top μπορεί να βοηθήσει στην οπτικοποίηση της χρήσης του πυρήνα και της χρήσης της μνήμης συσκευής και κεντρικού υπολογιστή. Με βάση αυτές τις μετρήσεις μπορεί να ληφθεί μια τεκμηριωμένη απόφαση. Δείχνουμε τη χρήση του Neuron Top στο τέλος αυτού του ιστολογίου.
Μέγεθος Στιγμιότυπου | # Επιταχυντές Inferentia | # Μοντέλα | vCPU/Μοντέλο | Μνήμη/Μοντέλο (GiB) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf1.2xlarge | 1 | 4 | 2 | 4 |
Inf1.6xlarge | 4 | 16 | 1.5 | 3 |
Inf1.24xlarge | 16 | 64 | 1.5 | 3 |
Μέγεθος Στιγμιότυπου | # Επιταχυντές Inferentia | # Μοντέλα | vCPU/Μοντέλο | Μνήμη/Μοντέλο (GiB) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf2.8xlarge | 1 | 2 | 16 | 64 |
Inf2.24xlarge | 6 | 12 | 8 | 32 |
Inf2.48xlarge | 12 | 24 | 8 | 32 |
Για να δοκιμάσετε μόνοι σας τις δυνατότητες του Neuron SDK, δείτε τις πιο πρόσφατες Δυνατότητες Neuron για PyTorch.
Εγκατάσταση συστήματος
Ακολουθεί η ρύθμιση συστήματος που χρησιμοποιείται για αυτήν τη λύση:
Ρυθμίστε τη λύση
Υπάρχουν μερικά πράγματα που πρέπει να κάνουμε για να ρυθμίσουμε τη λύση. Ξεκινήστε δημιουργώντας έναν ρόλο IAM που θα υποθέσει η παρουσία σας EC2 που θα της επιτρέψει να σπρώξει και να τραβήξει από Μητρώο εμπορευματοκιβωτίων Amazon Elastic.
Βήμα 1: Ρυθμίστε το ρόλο IAM
- Ξεκινήστε κάνοντας σύνδεση στην κονσόλα και μεταβαίνοντας στο IAM > Ρόλοι > Δημιουργία ρόλου
- Επιλέξτε τον τύπο αξιόπιστης οντότητας
AWS Service
- Επιλέξτε EC2 ως την υπηρεσία υπό περίπτωση χρήσης
- Πατήστε Επόμενο και θα μπορείτε να δείτε όλες τις διαθέσιμες πολιτικές
- Για τους σκοπούς αυτής της λύσης, θα δώσουμε στην παρουσία μας EC2 πλήρη πρόσβαση στο ECR. Φιλτράρισμα για AmazonEC2ContainerRegistryFullAccess και επιλέξτε το.
- Πατήστε επόμενο και ονομάστε το ρόλο
inf-ecr-access
Σημείωση: η πολιτική που επισυνάψαμε παρέχει στην παρουσία EC2 πλήρη πρόσβαση στο Amazon ECR. Συνιστούμε ανεπιφύλακτα να ακολουθήσετε το αρχή των ελάχιστων προνομίων για φόρτους εργασίας παραγωγής.
Βήμα 2: Ρύθμιση του AWS CLI
Εάν χρησιμοποιείτε το προδιαγεγραμμένο Deep Learning AMI που αναφέρεται παραπάνω, έρχεται με εγκατεστημένο το AWS CLI. Εάν χρησιμοποιείτε διαφορετικό AMI (Amazon Linux 2023, Base Ubuntu κ.λπ.), εγκαταστήστε τα εργαλεία CLI ακολουθώντας αυτός ο οδηγός.
Αφού εγκαταστήσετε τα εργαλεία CLI, διαμορφώστε το CLI χρησιμοποιώντας την εντολή aws configure
. Εάν έχετε κλειδιά πρόσβασης, μπορείτε να τα προσθέσετε εδώ, αλλά δεν τα χρειάζεστε απαραίτητα για την αλληλεπίδραση με τις υπηρεσίες AWS. Βασιζόμαστε στους ρόλους του IAM για να το κάνουμε αυτό.
Note: Πρέπει να εισαγάγουμε τουλάχιστον μία τιμή (προεπιλεγμένη περιοχή ή προεπιλεγμένη μορφή) για να δημιουργήσουμε το προεπιλεγμένο προφίλ. Για αυτό το παράδειγμα, πηγαίνουμε με us-east-2
καθώς η περιοχή και json
ως προεπιλεγμένη έξοδο.
Κλωνοποιήστε το αποθετήριο Github
Η GitHub repo παρέχει όλα τα απαραίτητα σενάρια για την ανάπτυξη μοντέλων που χρησιμοποιούν FastAPI σε NeuronCores σε στιγμιότυπα AWS Inferentia. Αυτό το παράδειγμα χρησιμοποιεί δοχεία Docker για να διασφαλίσει ότι μπορούμε να δημιουργήσουμε επαναχρησιμοποιήσιμες λύσεις. Σε αυτό το παράδειγμα περιλαμβάνεται το ακόλουθο config.properties αρχείο για τους χρήστες να παρέχουν εισόδους.
Το αρχείο διαμόρφωσης χρειάζεται προθέματα ονομάτων που ορίζονται από το χρήστη για την εικόνα Docker και τα κοντέινερ Docker. ο build.sh
σενάριο στο fastapi
και trace-model
Οι φάκελοι το χρησιμοποιούν για τη δημιουργία εικόνων Docker.
Συγκεντρώστε ένα μοντέλο στο AWS Inferentia
Θα ξεκινήσουμε με την ανίχνευση του μοντέλου και την παραγωγή ενός αρχείου PyTorch Torchscript .pt. Ξεκινήστε με πρόσβαση trace-model
καταλόγου και τροποποίηση του αρχείου .env. Ανάλογα με τον τύπο του στιγμιότυπου που επιλέξατε, τροποποιήστε το CHIP_TYPE
μέσα στο .env
αρχείο. Για παράδειγμα, θα επιλέξουμε το Inf2 ως οδηγό. Τα ίδια βήματα ισχύουν για τη διαδικασία ανάπτυξης για το Inf1.
Στη συνέχεια ορίστε την προεπιλεγμένη περιοχή στο ίδιο αρχείο. Αυτή η περιοχή θα χρησιμοποιηθεί για τη δημιουργία ενός αποθετηρίου ECR και οι εικόνες Docker θα προωθηθούν σε αυτό το αποθετήριο. Επίσης σε αυτόν τον φάκελο, παρέχουμε όλα τα σενάρια που είναι απαραίτητα για την ανίχνευση α bert-base-uncased
μοντέλο στο AWS Inferentia. Αυτό το σενάριο θα μπορούσε να χρησιμοποιηθεί για τα περισσότερα μοντέλα που είναι διαθέσιμα Αγκαλιάζοντας το πρόσωπο. ο Dockerfile έχει όλες τις εξαρτήσεις για να τρέξει μοντέλα με Neuron και εκτελεί το trace-model.py κωδικός ως σημείο εισόδου.
Επεξήγηση της συλλογής νευρώνων
Το API του Neuron SDK μοιάζει πολύ με το PyTorch Python API. ο torch.jit.trace()
από το PyTorch παίρνει το μοντέλο και το δείγμα τανυστή εισόδου ως ορίσματα. Τα δείγματα εισόδου τροφοδοτούνται στο μοντέλο και οι λειτουργίες που καλούνται καθώς αυτή η είσοδος περνάει μέσα από τα επίπεδα του μοντέλου καταγράφονται ως TorchScript. Για να μάθετε περισσότερα σχετικά με το JIT Tracing στο PyTorch, ανατρέξτε στα παρακάτω τεκμηρίωση.
Όπως ακριβώς torch.jit.trace()
, μπορείτε να ελέγξετε αν το μοντέλο σας μπορεί να μεταγλωττιστεί στο AWS Inferentia με τον ακόλουθο κώδικα για inf1 instances.
Για το inf2, καλείται η βιβλιοθήκη torch_neuronx
. Δείτε πώς μπορείτε να δοκιμάσετε τη μεταγλώττιση του μοντέλου σας σε περιπτώσεις inf2.
Μετά τη δημιουργία του στιγμιότυπου ίχνους, μπορούμε να περάσουμε το παράδειγμα εισόδου τανυστή ως εξής:
Και τέλος αποθηκεύστε την έξοδο TorchScript που προκύπτει στον τοπικό δίσκο
Όπως φαίνεται στον προηγούμενο κώδικα, μπορείτε να χρησιμοποιήσετε compiler_args
και optimizations
για τη βελτιστοποίηση της ανάπτυξης. Για μια λεπτομερή λίστα επιχειρημάτων για το torch.neuron.trace
API, ανατρέξτε στο PyTorch-Neuron trace python API.
Λάβετε υπόψη τα ακόλουθα σημαντικά σημεία:
- Το Neuron SDK δεν υποστηρίζει δυναμικά σχήματα τανυστή από αυτήν τη στιγμή. Επομένως, ένα μοντέλο θα πρέπει να μεταγλωττιστεί ξεχωριστά για διαφορετικά σχήματα εισόδου. Για περισσότερες πληροφορίες σχετικά με την εκτέλεση συμπερασμάτων σε σχήματα μεταβλητής εισόδου με bucketing, ανατρέξτε στο Εκτέλεση συμπερασμάτων σε μεταβλητά σχήματα εισόδου με κάδο.
- Εάν αντιμετωπίζετε προβλήματα μνήμης κατά τη μεταγλώττιση ενός μοντέλου, δοκιμάστε να μεταγλωττίσετε το μοντέλο σε μια παρουσία AWS Inferentia με περισσότερες vCPU ή μνήμη ή ακόμα και μια μεγάλη παρουσία c6i ή r6i καθώς η μεταγλώττιση χρησιμοποιεί μόνο CPU. Μόλις μεταγλωττιστεί, το μοντέλο εντοπισμού μπορεί πιθανώς να εκτελεστεί σε μικρότερα μεγέθη στιγμιότυπων AWS Inferentia.
Επεξήγηση διαδικασίας κατασκευής
Τώρα θα φτιάξουμε αυτό το κοντέινερ τρέχοντας χτίζω.χ. Το αρχείο script build δημιουργεί απλώς την εικόνα Docker τραβώντας μια βασική εικόνα κοντέινερ Deep Learning και εγκαθιστώντας το HuggingFace transformers
πακέτο. Βασισμένο στο CHIP_TYPE
καθορίζεται στο .env
αρχείο, το docker.properties
αρχείο αποφασίζει το κατάλληλο BASE_IMAGE
. Αυτό BASE_IMAGE
δείχνει μια εικόνα κοντέινερ Deep Learning για Neuron Runtime που παρέχεται από την AWS.
Είναι διαθέσιμο μέσω ενός ιδιωτικού αποθετηρίου ECR. Για να μπορέσουμε να τραβήξουμε την εικόνα, πρέπει να συνδεθούμε και να λάβουμε προσωρινά διαπιστευτήρια AWS.
Note: πρέπει να αντικαταστήσουμε την περιοχή που αναφέρεται στην εντολή που καθορίζεται από τη σημαία περιοχής και εντός του URI αποθετηρίου με την περιοχή που βάλαμε στο .env αρχείο.
Για να διευκολύνουμε αυτή τη διαδικασία, μπορούμε να χρησιμοποιήσουμε το fetch-credentials.sh
αρχείο. Η περιοχή θα ληφθεί αυτόματα από το αρχείο .env.
Στη συνέχεια, θα προωθήσουμε την εικόνα χρησιμοποιώντας το σενάριο σπρώξτε.σ. Το σενάριο push δημιουργεί ένα αποθετήριο στο Amazon ECR για εσάς και ωθεί την εικόνα του κοντέινερ.
Τέλος, όταν η εικόνα χτιστεί και ωθηθεί, μπορούμε να την τρέξουμε ως κοντέινερ τρέχοντας τρέχω.sh και ουρά τρέχει κορμούς με κούτσουρα.sh. Στα αρχεία καταγραφής του μεταγλωττιστή (δείτε το παρακάτω στιγμιότυπο οθόνης), θα δείτε το ποσοστό των αριθμητικών τελεστών που μεταγλωττίστηκαν στο Neuron και το ποσοστό των υπο-γραφημάτων του μοντέλου που μεταγλωττίστηκαν με επιτυχία στο Neuron. Το στιγμιότυπο οθόνης δείχνει τα αρχεία καταγραφής του μεταγλωττιστή για το bert-base-uncased-squad2
μοντέλο. Τα αρχεία καταγραφής δείχνουν ότι το 95.64% των αριθμητικών τελεστών έχουν μεταγλωττιστεί και δίνει επίσης μια λίστα με τελεστές που έχουν μεταγλωττιστεί στο Neuron και αυτούς που δεν υποστηρίζονται.
Εδώ είναι μια λίστα όλων των υποστηριζόμενων χειριστών στο πιο πρόσφατο πακέτο PyTorch Neuron. Ομοίως, εδώ είναι η λίστα όλων των υποστηριζόμενων χειριστών στο πιο πρόσφατο πακέτο PyTorch Neuronx.
Αναπτύξτε μοντέλα με FastAPI
Μετά τη μεταγλώττιση των μοντέλων, το ανιχνευμένο μοντέλο θα είναι παρόν στο trace-model
ντοσιέ. Σε αυτό το παράδειγμα, έχουμε τοποθετήσει το μοντέλο ανίχνευσης για μέγεθος παρτίδας 1. Θεωρούμε ότι το μέγεθος παρτίδας 1 είναι εδώ για να λάβουμε υπόψη εκείνες τις περιπτώσεις χρήσης όπου δεν είναι εφικτό ή απαιτείται μεγαλύτερο μέγεθος παρτίδας. Για περιπτώσεις χρήσης όπου απαιτούνται μεγαλύτερα μεγέθη παρτίδων, το φακός.neuron.DataParallel (για Inf1) ή φακός.neuronx.DataParallel (για Inf2) το API μπορεί επίσης να είναι χρήσιμο.
Η fast-api φάκελος παρέχει όλα τα απαραίτητα σενάρια για την ανάπτυξη μοντέλων με FastAPI. Για να αναπτύξετε τα μοντέλα χωρίς αλλαγές, απλώς εκτελέστε το αναπτύξτε.sh script και θα δημιουργήσει μια εικόνα κοντέινερ FastAPI, θα εκτελέσει κοντέινερ στον καθορισμένο αριθμό πυρήνων και θα αναπτύξει τον καθορισμένο αριθμό μοντέλων ανά διακομιστή σε κάθε διακομιστή μοντέλου FastAPI. Αυτός ο φάκελος περιέχει επίσης ένα .env
αρχείο, τροποποιήστε το ώστε να αντικατοπτρίζει το σωστό CHIP_TYPE
και AWS_DEFAULT_REGION
.
Note: Τα σενάρια FastAPI βασίζονται στις ίδιες μεταβλητές περιβάλλοντος που χρησιμοποιούνται για τη δημιουργία, την προώθηση και την εκτέλεση των εικόνων ως κοντέινερ. Τα σενάρια ανάπτυξης FastAPI θα χρησιμοποιούν τις τελευταίες γνωστές τιμές από αυτές τις μεταβλητές. Έτσι, εάν εντοπίσατε το μοντέλο για τον τύπο παρουσίας Inf1 τελευταίο, αυτό το μοντέλο θα αναπτυχθεί μέσω αυτών των σεναρίων.
Η fastapi-server.py Το αρχείο που είναι υπεύθυνο για τη φιλοξενία του διακομιστή και την αποστολή των αιτημάτων στο μοντέλο κάνει τα εξής:
- Διαβάζει τον αριθμό των μοντέλων ανά διακομιστή και τη θέση του μεταγλωττισμένου μοντέλου από το αρχείο ιδιοτήτων
- Ορίζει ορατά NeuronCores ως μεταβλητές περιβάλλοντος στο κοντέινερ Docker και διαβάζει τις μεταβλητές περιβάλλοντος για να καθορίσει ποιους NeuronCores θα χρησιμοποιήσει
- Παρέχει ένα API συμπερασμάτων για το
bert-base-uncased-squad2
μοντέλο - Με
jit.load()
, φορτώνει τον αριθμό των μοντέλων ανά διακομιστή όπως καθορίζεται στη διαμόρφωση και αποθηκεύει τα μοντέλα και τους απαιτούμενους tokenizers σε παγκόσμια λεξικά
Με αυτήν τη ρύθμιση, θα ήταν σχετικά εύκολο να ρυθμίσετε API που να αναφέρουν ποια μοντέλα και πόσα μοντέλα είναι αποθηκευμένα σε κάθε NeuronCore. Ομοίως, τα API θα μπορούσαν να γραφτούν για να διαγράψουν μοντέλα από συγκεκριμένους NeuronCores.
Η Dockerfile για την κατασκευή κοντέινερ FastAPI βασίζεται στην εικόνα Docker που δημιουργήσαμε για την ανίχνευση των μοντέλων. Αυτός είναι ο λόγος που το λιμενεργάτης.ιδιοκτησίες Το αρχείο καθορίζει τη διαδρομή ECR προς την εικόνα Docker για τον εντοπισμό των μοντέλων. Στη ρύθμισή μας, τα κοντέινερ Docker σε όλους τους NeuronCores είναι παρόμοια, επομένως μπορούμε να δημιουργήσουμε μία εικόνα και να εκτελέσουμε πολλά κοντέινερ από μία εικόνα. Για να αποφύγουμε τυχόν σφάλματα σημείου εισόδου, καθορίζουμε ENTRYPOINT ["/usr/bin/env"]
στο Dockerfile πριν εκτελέσετε το startup.sh
σενάριο, το οποίο μοιάζει hypercorn fastapi-server:app -b 0.0.0.0:8080
. Αυτό το σενάριο εκκίνησης είναι το ίδιο για όλα τα κοντέινερ. Εάν χρησιμοποιείτε την ίδια βασική εικόνα όπως για τα μοντέλα ανίχνευσης, μπορείτε να δημιουργήσετε αυτό το κοντέινερ εκτελώντας απλώς το σενάριο build.sh. ο push.sh
Το σενάριο παραμένει το ίδιο με πριν για την ανίχνευση μοντέλων. Η τροποποιημένη εικόνα Docker και το όνομα κοντέινερ παρέχονται από το docker.properties
αρχείο.
Η run.sh file
κάνει τα εξής:
- Διαβάζει την εικόνα Docker και το όνομα του κοντέινερ από το ιδιότητες αρχείο, το οποίο με τη σειρά του διαβάζει το
config.properties
αρχείο, το οποίο έχει αnum_cores
ρύθμιση χρήστη - Ξεκινά ένα βρόχο από το 0 έως το
num_cores
και για κάθε πυρήνα:- Ορίζει τον αριθμό θύρας και τον αριθμό συσκευής
- Ορίζει το
NEURON_RT_VISIBLE_CORES
μεταβλητή περιβάλλοντος - Καθορίζει την τοποθέτηση έντασης ήχου
- Εκτελεί ένα κοντέινερ Docker
Για λόγους σαφήνειας, η εντολή εκτέλεσης Docker για ανάπτυξη στο NeuronCore 0 για Inf1 θα μοιάζει με τον ακόλουθο κώδικα:
Η εντολή εκτέλεσης για την ανάπτυξη στο NeuronCore 5 θα μοιάζει με τον ακόλουθο κώδικα:
Αφού αναπτυχθούν τα κοντέινερ, χρησιμοποιούμε το run_apis.py script, το οποίο καλεί τα API σε παράλληλα νήματα. Ο κώδικας έχει ρυθμιστεί για να καλεί έξι μοντέλα που έχουν αναπτυχθεί, ένα σε κάθε NeuronCore, αλλά μπορεί εύκολα να αλλάξει σε διαφορετική ρύθμιση. Καλούμε τα API από την πλευρά του πελάτη ως εξής:
Παρακολούθηση NeuronCore
Μετά την ανάπτυξη των διακομιστών μοντέλων, για την παρακολούθηση της χρήσης του NeuronCore, μπορούμε να χρησιμοποιήσουμε neuron-top
να παρατηρήσει σε πραγματικό χρόνο το ποσοστό χρήσης κάθε NeuronCore. νευρώνας-κορυφή είναι ένα εργαλείο CLI στο Neuron SDK για παροχή πληροφοριών όπως NeuronCore, vCPU και χρήση μνήμης. Σε ένα ξεχωριστό τερματικό, πληκτρολογήστε την ακόλουθη εντολή:
Η έξοδος θα πρέπει να είναι παρόμοια με την παρακάτω εικόνα. Σε αυτό το σενάριο, έχουμε ορίσει τη χρήση δύο NeuronCores και δύο μοντέλων ανά διακομιστή σε μια παρουσία Inf2.xlarge. Το παρακάτω στιγμιότυπο οθόνης δείχνει ότι δύο μοντέλα μεγέθους 287.8 MB το καθένα είναι φορτωμένα σε δύο NeuronCores. Με φορτωμένα συνολικά 4 μοντέλα, μπορείτε να δείτε ότι η μνήμη της συσκευής που χρησιμοποιείται είναι 1.3 GB. Χρησιμοποιήστε τα πλήκτρα βέλους για να μετακινηθείτε μεταξύ των NeuronCores σε διαφορετικές συσκευές
Ομοίως, σε έναν τύπο παρουσίας Inf1.16xlarge βλέπουμε συνολικά 12 μοντέλα (2 μοντέλα ανά πυρήνα πάνω από 6 πυρήνες) φορτωμένα. Καταναλώνεται συνολική μνήμη 2.1 GB και κάθε μοντέλο έχει μέγεθος 177.2 MB.
Αφού εκτελέσετε το run_apis.py script, μπορείτε να δείτε το ποσοστό χρήσης καθενός από τους έξι NeuronCores (δείτε το παρακάτω στιγμιότυπο οθόνης). Μπορείτε επίσης να δείτε τη χρήση vCPU συστήματος και τη χρήση vCPU χρόνου εκτέλεσης.
Το ακόλουθο στιγμιότυπο οθόνης δείχνει το ποσοστό χρήσης πυρήνα της παρουσίας Inf2.
Ομοίως, αυτό το στιγμιότυπο οθόνης δείχνει τη χρήση πυρήνα σε έναν τύπο παρουσίας inf1.6xlarge.
εκκαθάριση
Για να καθαρίσετε όλα τα κοντέινερ Docker που δημιουργήσατε, παρέχουμε α εκκαθάριση.sh σενάριο που καταργεί όλα τα κοντέινερ που τρέχουν και έχουν σταματήσει. Αυτό το σενάριο θα καταργήσει όλα τα κοντέινερ, επομένως μην το χρησιμοποιήσετε εάν θέλετε να συνεχίσετε να λειτουργούν ορισμένα κοντέινερ.
Συμπέρασμα
Οι φόρτοι εργασίας παραγωγής έχουν συχνά υψηλή απόδοση, χαμηλή καθυστέρηση και απαιτήσεις κόστους. Οι αναποτελεσματικές αρχιτεκτονικές που χρησιμοποιούν μη βέλτιστα επιταχυντές θα μπορούσαν να οδηγήσουν σε αδικαιολόγητα υψηλό κόστος παραγωγής. Σε αυτήν την ανάρτηση, δείξαμε πώς να χρησιμοποιείτε βέλτιστα τα NeuronCores με το FastAPI για να μεγιστοποιήσετε την απόδοση με ελάχιστη καθυστέρηση. Έχουμε δημοσιεύσει τις οδηγίες στο δικό μας GitHub repo. Με αυτήν την αρχιτεκτονική λύσης, μπορείτε να αναπτύξετε πολλά μοντέλα σε κάθε NeuronCore και να λειτουργήσετε πολλά μοντέλα παράλληλα σε διαφορετικούς NeuronCore χωρίς να χάσετε την απόδοση. Για περισσότερες πληροφορίες σχετικά με τον τρόπο ανάπτυξης μοντέλων σε κλίμακα με υπηρεσίες όπως Υπηρεσία Amazon Elastic Kubernetes (Amazon EKS), ανατρέξτε στο Εξυπηρετήστε 3,000 μοντέλα βαθιάς εκμάθησης στο Amazon EKS με το AWS Inferentia για κάτω από 50 $ την ώρα.
Σχετικά με τους συγγραφείς
Ανκούρ Σριβαστάβα είναι αρχιτέκτονας Sr. Solutions στην ομάδα ML Frameworks. Επικεντρώνεται στην παροχή βοήθειας στους πελάτες με αυτοδιαχειριζόμενη κατανεμημένη εκπαίδευση και εξαγωγή συμπερασμάτων σε κλίμακα για το AWS. Η εμπειρία του περιλαμβάνει βιομηχανική προγνωστική συντήρηση, ψηφιακά δίδυμα, πιθανοτική βελτιστοποίηση σχεδίασης και έχει ολοκληρώσει τις διδακτορικές του σπουδές από τη Μηχανολογία στο Πανεπιστήμιο Rice και τη μεταδιδακτορική έρευνα από το Ινστιτούτο Τεχνολογίας της Μασαχουσέτης.
KC Tung είναι Senior Solution Architect στα AWS Annapurna Labs. Ειδικεύεται στην εκπαίδευση και ανάπτυξη μοντέλων μεγάλης βαθιάς μάθησης σε κλίμακα στο cloud. Έχει Ph.D. στη μοριακή βιοφυσική από το University of Texas Southwestern Medical Center στο Ντάλας. Έχει μιλήσει σε AWS Summits και AWS Reinvent. Σήμερα βοηθά τους πελάτες να εκπαιδεύσουν και να αναπτύξουν μεγάλα μοντέλα PyTorch και TensorFlow στο AWS cloud. Είναι συγγραφέας δύο βιβλίων: Μάθετε το TensorFlow Enterprise και Αναφορά TensorFlow 2 Pocket.
Pronoy Chopra είναι Senior Solutions Architect με την ομάδα Startups Generative AI στο AWS. Ειδικεύεται στην αρχιτεκτονική και ανάπτυξη λύσεων IoT και Machine Learning. Έχει συνιδρυθεί δύο startups στο παρελθόν και του αρέσει να ασχολείται με έργα στον τομέα IoT, AI/ML και Serverless.
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- PlatoData.Network Vertical Generative Ai. Ενδυναμώστε τον εαυτό σας. Πρόσβαση εδώ.
- PlatoAiStream. Web3 Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- PlatoESG. Αυτοκίνητο / EVs, Ανθρακας, Cleantech, Ενέργεια, Περιβάλλον, Ηλιακός, Διαχείριση των αποβλήτων. Πρόσβαση εδώ.
- BlockOffsets. Εκσυγχρονισμός της περιβαλλοντικής αντιστάθμισης ιδιοκτησίας. Πρόσβαση εδώ.
- πηγή: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- :έχει
- :είναι
- :δεν
- :που
- $UP
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- Ικανός
- Σχετικα
- πάνω από
- αφαίρεση
- επιταχυντές
- πρόσβαση
- πρόσβαση
- αναλόγως
- Λογαριασμός
- Κατορθώνω
- απέναντι
- ενεργός
- προσθέτω
- κατά
- AI
- AI / ML
- Όλα
- επιτρέπουν
- επιτρέπει
- Επίσης
- Amazon
- Amazon EC2
- Amazon υπηρεσίες Web
- an
- και
- κάθε
- api
- APIs
- app
- Εφαρμογή
- εφαρμογές
- Εφαρμογή
- κατάλληλος
- αρχιτεκτονική
- ΕΙΝΑΙ
- επιχειρήματα
- AS
- υποθέτω
- At
- συγγραφέας
- αυτομάτως
- διαθεσιμότητα
- διαθέσιμος
- αποφύγετε
- AWS
- Αίσθηση AWS
- βάση
- βασίζονται
- BE
- επειδή
- γίνονται
- ήταν
- πριν
- χάρη
- συμπεριφορά
- είναι
- όφελος
- οφέλη
- ΚΑΛΎΤΕΡΟΣ
- βέλτιστες πρακτικές
- μεταξύ
- Βιοφυσικής
- Κομμάτι
- Μπλοκ
- Βιβλία
- χτίζω
- Κτίριο
- χτισμένο
- αλλά
- by
- κλήση
- που ονομάζεται
- κλήσεις
- CAN
- δυνατότητες
- ικανότητα
- ο οποίος
- περίπτωση
- περιπτώσεις
- Κέντρο
- αλλαγή
- άλλαξε
- Αλλαγές
- έλεγχος
- τσιπ
- επιλογή
- Επιλέξτε
- επέλεξε
- σαφήνεια
- πελάτης
- στενά
- Backup
- κωδικός
- έρχεται
- σύγκριση
- ανταγωνίζονται
- Ολοκληρώθηκε το
- Υπολογίστε
- διαμόρφωση
- Εξετάστε
- θεωρώντας
- πρόξενος
- καταναλώνεται
- περιέχουν
- Δοχείο
- Εμπορευματοκιβώτια
- Περιέχει
- συμφραζόμενα
- συνεχώς
- αντίθεση
- έλεγχος
- ελέγχεται
- Βολικός
- πυρήνας
- διορθώσει
- Κόστος
- Δικαστικά έξοδα
- θα μπορούσε να
- Ζευγάρι
- δημιουργία
- δημιουργήθηκε
- δημιουργεί
- δημιουργία
- Διαπιστεύσεις
- κρίσιμος
- Πελάτες
- Ντάλας
- απόφαση
- βαθύς
- βαθιά μάθηση
- βαθύτερη
- Προεπιλογή
- αποδεικνύουν
- Σε συνάρτηση
- παρατάσσω
- αναπτυχθεί
- ανάπτυξη
- ανάπτυξη
- Υπηρεσίες
- καθορισμένο
- Παρά
- λεπτομερής
- καθορίζει
- ανάπτυξη
- συσκευή
- Συσκευές
- διαφορετικές
- Διάχυση
- DIG
- ψηφιακό
- Ψηφιακά δίδυμα
- διανέμονται
- κατανεμημένη εκπαίδευση
- Django
- do
- Λιμενεργάτης
- κάνει
- Όχι
- τομέα
- Μην
- δυναμικός
- κάθε
- Νωρίτερα
- ευκολότερη
- εύκολα
- εύκολος
- EC
- αποτελεσματικά
- τέλος
- Τελικό σημείο
- ασκούν
- Μηχανική
- εξασφαλίζω
- εισάγετε
- οντότητα
- καταχώριση
- Περιβάλλον
- λάθη
- κ.λπ.
- Even
- Κάθε
- εξελίσσεται
- παράδειγμα
- Εκτός
- εμπειρία
- επεκτάσεις
- Πρόσωπο
- οικογένεια
- γρηγορότερα
- εφικτός
- Χαρακτηριστικά
- Fed
- λιγότερα
- Εικόνα
- Αρχεία
- φιλτράρισμα
- Τελικά
- Εύρεση
- Όνομα
- εστιάζει
- Εξής
- εξής
- Για
- μορφή
- Βρέθηκαν
- τέσσερα
- Πλαίσιο
- πλαισίων
- από
- πλήρη
- πλήρως
- λειτουργία
- πύλη
- γενετική
- Παραγωγική τεχνητή νοημοσύνη
- παίρνω
- GitHub
- Δώστε
- δίνει
- Παγκόσμιο
- μετάβαση
- καθοδηγήσει
- λαβή
- hands-on
- υλικού
- Έχω
- he
- βοήθεια
- βοήθεια
- βοηθά
- εδώ
- Ψηλά
- υψηλότερο
- υψηλότερο
- του
- οικοδεσπότης
- φιλοξενείται
- φιλοξενία
- οικοδεσπότες
- Πως
- Πώς να
- Ωστόσο
- HTML
- http
- HTTPS
- Πρόσωπο αγκαλιάς
- ID
- ιδανικό
- προσδιορίζονται
- if
- εικόνα
- εικόνες
- εισαγωγή
- σημαντικό
- in
- περιλαμβάνονται
- περιλαμβάνει
- Εισερχόμενος
- Αυξήσεις
- βιομηχανικές
- ανεπαρκής
- πληροφορίες
- ενημερώνεται
- εισαγωγή
- είσοδοι
- εγκαθιστώ
- εγκατασταθεί
- εγκατάσταση
- παράδειγμα
- αντί
- Ινστιτούτο
- οδηγίες
- αλληλεπιδρούν
- σε
- επικαλείται
- IoT
- ζήτημα
- θέματα
- IT
- ΤΟΥ
- JIT
- jpg
- μόλις
- Διατήρηση
- πλήκτρα
- Ξέρω
- γνωστός
- Labs
- Γλώσσα
- large
- Επίθετο
- Αφάνεια
- αργότερο
- ξεκινήσει
- στρώμα
- στρώματα
- οδηγήσει
- ΜΑΘΑΊΝΩ
- μάθηση
- Επίπεδο
- Βιβλιοθήκη
- Μου αρέσει
- linux
- Λιστα
- Εισηγμένες
- λίγο
- λίγο πιο βαθιά
- LLM
- φόρτωση
- φορτία
- τοπικός
- τοποθεσία
- ξύλευση
- Σύνδεση
- ματιά
- μοιάζει
- ΦΑΊΝΕΤΑΙ
- να χάσει
- Χαμηλός
- χαμηλότερα
- χαμηλότερο
- μηχανή
- μάθηση μηχανής
- που
- συντήρηση
- κάνω
- ΚΑΝΕΙ
- Κατασκευή
- πολοί
- Μασαχουσέτη
- Ινστιτούτο Τεχνολογίας της Μασαχουσέτης
- max
- Αυξάνω στον ανώτατο βαθμό
- ανώτατο όριο
- Ενδέχεται..
- μηχανικός
- ιατρικών
- Μνήμη
- Metrics
- νου
- ελάχιστο
- ML
- μοντέλο
- μοντέλα
- τροποποιημένο
- τροποποιήσει
- μοριακός
- Παρακολούθηση
- περισσότερο
- πλέον
- μετακινήσετε
- πολύ
- πολλαπλούς
- πρέπει
- όνομα
- αναγκαίως
- απαραίτητος
- Ανάγκη
- που απαιτούνται
- ανάγκες
- Νέα
- επόμενη
- τώρα
- αριθμός
- σκοπός
- παρατηρούμε
- of
- προσφορά
- συχνά
- on
- μια φορά
- ONE
- αποκλειστικά
- επάνω σε
- ανοικτού κώδικα
- λειτουργούν
- λειτουργίες
- φορείς
- αντίθετος
- βελτιστοποίηση
- Βελτιστοποίηση
- βελτιστοποιημένη
- or
- δικός μας
- έξω
- παραγωγή
- επί
- πακέτο
- Παράλληλο
- μέρος
- passieren
- Το παρελθόν
- μονοπάτι
- για
- ποσοστό
- επίδοση
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- Σημείο
- σημεία
- Πολιτικές
- πολιτική
- Δημοφιλής
- δυνατός
- Θέση
- πρακτικές
- παρόν
- ιδιωτικός
- πιθανώς
- διαδικασια μας
- Διεργασίες
- που παράγουν
- παραγωγή
- Προφίλ ⬇️
- έργα
- ιδιότητες
- παρέχουν
- παρέχεται
- παρέχει
- πληρεξούσιο
- δημοσιεύθηκε
- τραβώντας
- σκοπός
- Σπρώξτε
- πίεσε
- ωθεί
- βάζω
- Python
- pytorch
- σειρά
- πραγματικός
- σε πραγματικό χρόνο
- συνιστώ
- συνιστάται
- καταγράφονται
- αντανακλούν
- περιοχή
- σχετικά
- βασίζονται
- βασιζόμενοι
- λείψανα
- αφαιρέστε
- αντικαθιστώ
- Αποθήκη
- αιτήματα
- απαιτείται
- απαιτήσεις
- έρευνα
- μοιάζει
- Απόθεμα
- επιφυλάχθηκε
- Υποστηρικτικό υλικό
- απάντησης
- υπεύθυνος
- ΠΕΡΙΦΕΡΕΙΑ
- με αποτέλεσμα
- επαναχρησιμοποιήσιμη
- Ρύζι
- Ρόλος
- ρόλους
- τρέξιμο
- τρέξιμο
- τρέχει
- θυσιάζοντας
- ίδιο
- Αποθήκευση
- Κλίμακα
- σενάριο
- Εφαρμογές
- SDK
- δείτε
- επιλογή
- αποστολή
- αρχαιότερος
- ευαίσθητος
- ξεχωριστό
- Χωρίς διακομιστή
- Διακομιστές
- υπηρεσία
- Υπηρεσίες
- εξυπηρετούν
- σειρά
- τον καθορισμό
- setup
- σχήματα
- Κοινοποίηση
- Shared
- θα πρέπει να
- δείχνουν
- έδειξε
- παρουσιάζεται
- Δείχνει
- πλευρά
- παρόμοιες
- Ομοίως
- απλά
- ΕΞΙ
- Μέγεθος
- μεγέθη
- μικρότερος
- So
- λύση
- Λύσεις
- μερικοί
- ειδικεύεται
- συγκεκριμένες
- καθορίζεται
- ομιλείται
- σταθερός
- σωρός
- Εκκίνηση
- εκκίνηση
- Startups
- δήλωσε
- Βήματα
- σταμάτησε
- αποθηκεύονται
- καταστήματα
- δυνατά
- μελέτες
- Επιτυχώς
- τέτοιος
- Σύνοδοι Κορυφής
- υποστήριξη
- υποστηριζόνται!
- βέβαιος
- σύστημα
- τραπέζι
- Πάρτε
- λαμβάνεται
- παίρνει
- Τεχνολογία
- προσωρινή
- tensorflow
- τερματικό
- δοκιμή
- Δοκιμές
- δοκιμές
- Τέξας
- από
- ότι
- Η
- τους
- Τους
- τότε
- επομένως
- Αυτοί
- αυτοί
- πράγματα
- αυτό
- εκείνοι
- Μέσω
- διακίνηση
- Δεμένος
- ώρα
- προς την
- σήμερα
- εργαλείο
- εργαλεία
- κορυφή
- δάδα
- Σύνολο
- Ιχνος
- Εντοπισμός
- παραδοσιακός
- Τρένο
- Εκπαίδευση
- μετασχηματιστές
- Έμπιστος
- προσπαθώ
- ΣΤΡΟΦΗ
- Δίδυμοι
- δύο
- τύπος
- Ubuntu
- υπό
- υποκείμενες
- πανεπιστήμιο
- unix
- ΧΩΡΙΣ λογο
- επάνω σε
- us
- Χρήση
- χρήση
- μεταχειρισμένος
- Χρήστες
- Χρήστες
- χρησιμοποιεί
- χρησιμοποιώντας
- χρησιμοποιώ
- χρησιμοποιεί
- αξιοποιώντας
- αξία
- Αξίες
- εκδοχή
- πολύ
- ορατός
- όραμα
- τόμος
- θέλω
- ήταν
- Τρόπος..
- we
- ιστός
- του web server
- διαδικτυακές υπηρεσίες
- ΛΟΙΠΌΝ
- ήταν
- πότε
- Ποιό
- WHY
- ευρέως
- θα
- με
- εντός
- χωρίς
- εργάτης
- εργαζομένων
- θα
- γραφή
- γραπτή
- Εσείς
- Σας
- τον εαυτό σας
- zephyrnet
- μηδέν