Amazon Sage Maker τελικά σημεία πολλαπλών μοντέλων Τα (MME) παρέχουν έναν επεκτάσιμο και οικονομικά αποδοτικό τρόπο για την ανάπτυξη μεγάλου αριθμού μοντέλων μηχανικής εκμάθησης (ML). Σας δίνει τη δυνατότητα να αναπτύξετε πολλά μοντέλα ML σε ένα μόνο κοντέινερ σερβιρίσματος πίσω από ένα μόνο τελικό σημείο. Από εκεί, το SageMaker διαχειρίζεται τη φόρτωση και την εκφόρτωση των μοντέλων και την κλιμάκωση των πόρων για λογαριασμό σας με βάση τα μοτίβα επισκεψιμότητάς σας. Θα επωφεληθείτε από την κοινή χρήση και την επαναχρησιμοποίηση πόρων φιλοξενίας και τη μειωμένη λειτουργική επιβάρυνση της διαχείρισης μεγάλης ποσότητας μοντέλων.
Τον Νοέμβριο του 2022, Τα MME πρόσθεσαν υποστήριξη για GPUs, το οποίο σας επιτρέπει να εκτελείτε πολλά μοντέλα σε μία συσκευή GPU και να κλιμακώνετε παρουσίες GPU πίσω από ένα μόνο τελικό σημείο. Αυτό ικανοποιεί την ισχυρή ζήτηση MME για μοντέλα βαθιάς νευρωνικών δικτύων (DNN) που επωφελούνται από τον επιταχυνόμενο υπολογισμό με GPU. Αυτά περιλαμβάνουν την όραση υπολογιστή (CV), την επεξεργασία φυσικής γλώσσας (NLP) και τα μοντέλα γενετικής τεχνητής νοημοσύνης. Οι λόγοι της ζήτησης περιλαμβάνουν τα ακόλουθα:
- Τα μοντέλα DNN είναι συνήθως μεγάλα σε μέγεθος και πολυπλοκότητα και συνεχίζουν να αναπτύσσονται με γρήγορους ρυθμούς. Λαμβάνοντας ως παράδειγμα τα μοντέλα NLP, πολλά από αυτά υπερβαίνουν τα δισεκατομμύρια παραμέτρους, γεγονός που απαιτεί από τις GPU να ικανοποιούν απαιτήσεις χαμηλής καθυστέρησης και υψηλής απόδοσης.
- Παρατηρήσαμε μια αυξημένη ανάγκη για προσαρμογή αυτών των μοντέλων για την παροχή υπερ-εξατομικευμένων εμπειριών σε μεμονωμένους χρήστες. Καθώς η ποσότητα αυτών των μοντέλων αυξάνεται, υπάρχει ανάγκη για μια ευκολότερη λύση για την ανάπτυξη και τη λειτουργία πολλών μοντέλων σε κλίμακα.
- Οι παρουσίες GPU είναι ακριβές και θέλετε να επαναχρησιμοποιήσετε αυτές τις παρουσίες όσο το δυνατόν περισσότερο για να μεγιστοποιήσετε τη χρήση της GPU και να μειώσετε το λειτουργικό κόστος.
Παρόλο που όλοι αυτοί οι λόγοι υποδεικνύουν ότι τα MME με GPU ως ιδανική επιλογή για μοντέλα DNN, συνιστάται να πραγματοποιήσετε δοκιμή φόρτωσης για να βρείτε τη σωστή διαμόρφωση τελικού σημείου που ικανοποιεί τις απαιτήσεις σας σε περίπτωση χρήσης. Πολλοί παράγοντες μπορούν να επηρεάσουν τα αποτελέσματα δοκιμών φορτίου, όπως ο τύπος του στιγμιότυπου, ο αριθμός των περιπτώσεων, το μέγεθος του μοντέλου και η αρχιτεκτονική του μοντέλου. Επιπλέον, η δοκιμή φόρτωσης μπορεί να βοηθήσει στην καθοδήγηση των στρατηγικών αυτόματης κλιμάκωσης χρησιμοποιώντας τις σωστές μετρήσεις αντί για επαναληπτικές μεθόδους δοκιμής και σφάλματος.
Για αυτούς τους λόγους, συγκεντρώσαμε αυτήν την ανάρτηση για να σας βοηθήσουμε να εκτελέσετε τη σωστή δοκιμή φόρτωσης σε MME με GPU και να βρείτε την καλύτερη διαμόρφωση για την περίπτωση χρήσης ML. Μοιραζόμαστε τα αποτελέσματα δοκιμών φόρτωσης για μερικά από τα πιο δημοφιλή μοντέλα DNN σε NLP και CV που φιλοξενούνται με χρήση MME σε διαφορετικούς τύπους παρουσιών. Συνοψίζουμε τις πληροφορίες και τα συμπεράσματα από τα αποτελέσματα των δοκιμών μας για να σας βοηθήσουμε να λάβετε μια τεκμηριωμένη απόφαση σχετικά με τη διαμόρφωση των δικών σας αναπτύξεων. Στην πορεία, μοιραζόμαστε επίσης τη συνιστώμενη προσέγγισή μας για την εκτέλεση δοκιμών φόρτωσης για MME σε GPU. Τα συνιστώμενα εργαλεία και η τεχνική καθορίζουν τον βέλτιστο αριθμό μοντέλων που μπορούν να φορτωθούν ανά τύπο εμφάνισης και σας βοηθούν να επιτύχετε την καλύτερη τιμή-απόδοση.
Επισκόπηση λύσεων
Για μια εισαγωγή στα MME και MME με GPU, ανατρέξτε στο Δημιουργήστε ένα τελικό σημείο πολλαπλών μοντέλων και Εκτελέστε πολλά μοντέλα βαθιάς εκμάθησης σε GPU με τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker. Για το πλαίσιο της δοκιμής φόρτωσης σε αυτήν την ανάρτηση, μπορείτε να κάνετε λήψη του δείγματος του κώδικα μας από το GitHub repo για να αναπαράγετε τα αποτελέσματα ή να το χρησιμοποιήσετε ως πρότυπο για να αξιολογήσετε τα δικά σας μοντέλα. Υπάρχουν δύο σημειωματάρια που παρέχονται στο repo: ένα για μοντέλα βιογραφικών δοκιμών φορτίου και ένα για NLP. Αρκετά μοντέλα διαφορετικών μεγεθών και αρχιτεκτονικών συγκρίθηκαν σε διαφορετικούς τύπους παρουσιών GPU: ml.g4dn.2xlarge, ml.g5.2xlarge και ml.p3.2xlarge. Αυτό θα πρέπει να παρέχει μια λογική διατομή απόδοσης στις ακόλουθες μετρήσεις για κάθε παρουσία και τύπο μοντέλου:
- Μέγιστος αριθμός μοντέλων που μπορούν να φορτωθούν στη μνήμη GPU
- Ο λανθάνοντας χρόνος απόκρισης από άκρο σε άκρο παρατηρείται στην πλευρά του πελάτη για κάθε ερώτημα συμπερασμάτων
- Μέγιστη απόδοση ερωτημάτων ανά δευτερόλεπτο που μπορεί να επεξεργαστεί το τελικό σημείο χωρίς σφάλμα
- Μέγιστος τρέχων χρηστών ανά παρουσία πριν παρατηρηθεί αποτυχημένο αίτημα
Ο παρακάτω πίνακας παραθέτει τα μοντέλα που δοκιμάστηκαν.
Χρήση θήκης | Όνομα μοντέλου | Μέγεθος στο δίσκο | Αριθμός παραμέτρων |
CV | resnet50 |
100Mb | 25M |
CV | convnext_base |
352Mb | 88M |
CV | vit_large_patch16_224 |
1.2Gb | 304M |
NLP | bert-base-uncased |
436Mb | 109M |
NLP | roberta-large |
1.3Gb | 335M |
Ο παρακάτω πίνακας παραθέτει τις παρουσίες GPU που δοκιμάστηκαν.
Τύπος συμβολής | Τύπος GPU | Αριθμός GPU | Μνήμη GPU (GiB) |
ml.g4dn.2xlarge | GPU NVIDIA T4 | 1 | 16 |
ml.g5.2xμεγάλο | GPU NVIDIA A10G Tensor Core | 1 | 24 |
ml.p3.2xlarge | GPU NVIDIA® V100 Tensor Core | 1 | 16 |
Όπως αναφέρθηκε προηγουμένως, το παράδειγμα κώδικα μπορεί να υιοθετηθεί σε άλλα μοντέλα και τύπους παραδειγμάτων.
Λάβετε υπόψη ότι τα MME προς το παρόν υποστηρίζουν μόνο μεμονωμένες περιπτώσεις GPU. Για τη λίστα των υποστηριζόμενων τύπων παρουσιών, ανατρέξτε στο Υποστηριζόμενοι αλγόριθμοι, πλαίσια και παρουσίες.
Η διαδικασία συγκριτικής αξιολόγησης αποτελείται από τα ακόλουθα βήματα:
- Ανακτήστε ένα προεκπαιδευμένο μοντέλο από ένα κέντρο μοντέλων.
- Προετοιμάστε το τεχνούργημα μοντέλου για προβολή σε SageMaker MME (βλ Εκτελέστε πολλά μοντέλα βαθιάς εκμάθησης σε GPU με τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker Για περισσότερες πληροφορίες).
- Αναπτύξτε ένα SageMaker MME σε μια παρουσία GPU.
- Προσδιορίστε τον μέγιστο αριθμό μοντέλων που μπορούν να φορτωθούν στη μνήμη GPU εντός ενός καθορισμένου ορίου.
- Χρησιμοποιήστε το Locust Load Testing Framework για να προσομοιώσετε επισκεψιμότητα που τυχαία καλεί μοντέλα που έχουν φορτωθεί στο στιγμιότυπο.
- Συλλέξτε δεδομένα και αναλύστε τα αποτελέσματα.
- Προαιρετικά, επαναλάβετε τα βήματα 2–6 μετά τη μεταγλώττιση του μοντέλου στο TensorRT.
Τα βήματα 4 και 5 δικαιολογούν μια βαθύτερη ματιά. Τα μοντέλα σε ένα SageMaker GPU MME φορτώνονται στη μνήμη με δυναμικό τρόπο. Επομένως, στο Βήμα 4, ανεβάζουμε ένα αρχικό τεχνούργημα μοντέλου στο Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3) και καλέστε το μοντέλο για να το φορτώσετε στη μνήμη. Μετά την αρχική επίκληση, μετράμε την ποσότητα της μνήμης GPU που καταναλώθηκε, κάνουμε ένα αντίγραφο του αρχικού μοντέλου, καλούμε το αντίγραφο του μοντέλου για να το φορτώσουμε στη μνήμη και μετράμε ξανά τη συνολική ποσότητα μνήμης GPU που καταναλώνεται. Αυτή η διαδικασία επαναλαμβάνεται έως ότου επιτευχθεί ένα καθορισμένο όριο ποσοστιαίας χρήσης μνήμης GPU. Για το σημείο αναφοράς, ορίσαμε το όριο στο 90% για να παρέχουμε μια λογική προσωρινή μνήμη για εξαγωγή συμπερασμάτων σε μεγαλύτερες παρτίδες ή αφήνοντας λίγο χώρο για τη φόρτωση άλλων μοντέλων που χρησιμοποιούνται λιγότερο συχνά.
Προσομοίωση κίνησης χρηστών
Αφού προσδιορίσουμε τον αριθμό των μοντέλων, μπορούμε να εκτελέσουμε μια δοκιμή φόρτωσης χρησιμοποιώντας το Locust Load Testing Framework. Η δοκιμή φόρτωσης προσομοιώνει αιτήματα χρηστών σε τυχαία μοντέλα και μετρά αυτόματα μετρήσεις όπως ο λανθάνοντας χρόνος απόκρισης και η απόδοση.
Το Locust υποστηρίζει προσαρμοσμένα σχήματα δοκιμής φόρτωσης που σας επιτρέπουν να ορίσετε προσαρμοσμένα μοτίβα κυκλοφορίας. Το σχήμα που χρησιμοποιήθηκε σε αυτό το σημείο αναφοράς φαίνεται στο παρακάτω διάγραμμα. Στα πρώτα 30 δευτερόλεπτα, το τελικό σημείο θερμαίνεται με 10 ταυτόχρονους χρήστες. Μετά από 30 δευτερόλεπτα, δημιουργούνται νέοι χρήστες με ρυθμό δύο ανά δευτερόλεπτο, φτάνοντας τους 20 ταυτόχρονους χρήστες στο σημείο των 40 δευτερολέπτων. Στη συνέχεια, το τελικό σημείο συγκρίνεται σταθερά με 20 ταυτόχρονους χρήστες μέχρι το σημείο των 60 δευτερολέπτων, οπότε το Locust αρχίζει και πάλι να αυξάνει τους χρήστες με δύο ανά δευτερόλεπτο μέχρι τους 40 ταυτόχρονους χρήστες. Αυτό το μοτίβο αύξησης και σταθερής δοκιμής επαναλαμβάνεται έως ότου το τελικό σημείο αυξηθεί σε 200 ταυτόχρονους χρήστες. Ανάλογα με την περίπτωση χρήσης σας, μπορεί να θέλετε να προσαρμόσετε το σχήμα δοκιμής φόρτωσης στο locust_benchmark_sm.py για να αντικατοπτρίζει με μεγαλύτερη ακρίβεια τα αναμενόμενα μοτίβα επισκεψιμότητας. Για παράδειγμα, εάν σκοπεύετε να φιλοξενήσετε μοντέλα μεγαλύτερων γλωσσών, μια δοκιμή φόρτωσης με 200 ταυτόχρονους χρήστες ενδέχεται να μην είναι εφικτή για ένα μοντέλο που φιλοξενείται σε μία μόνο παρουσία και, επομένως, μπορεί να θέλετε να μειώσετε τον αριθμό χρηστών ή να αυξήσετε τον αριθμό των παρουσιών. Μπορεί επίσης να θέλετε να παρατείνετε τη διάρκεια της δοκιμής φορτίου για να μετρήσετε με μεγαλύτερη ακρίβεια τη σταθερότητα του τελικού σημείου για μεγαλύτερο χρονικό διάστημα.
stages = [
{"duration": 30, "users": 10, "spawn_rate": 5},
{"duration": 60, "users": 20, "spawn_rate": 1},
{"duration": 90, "users": 40, "spawn_rate": 2},
…
]
Σημειώστε ότι έχουμε συγκριθεί μόνο το τελικό σημείο με ομοιογενή μοντέλα που λειτουργούν όλα σε σταθερές βάσεις εξυπηρέτησης χρησιμοποιώντας είτε PyTorch είτε TensorRT. Αυτό συμβαίνει επειδή τα MME είναι τα πλέον κατάλληλα για τη φιλοξενία πολλών μοντέλων με παρόμοια χαρακτηριστικά, όπως κατανάλωση μνήμης και χρόνο απόκρισης. Τα πρότυπα συγκριτικής αξιολόγησης που παρέχονται στο GitHub repo μπορεί ακόμα να χρησιμοποιηθεί για να προσδιοριστεί εάν η εξυπηρέτηση ετερογενών μοντέλων σε MME θα απέφερε την επιθυμητή απόδοση και σταθερότητα.
Συγκριτικά αποτελέσματα για μοντέλα βιογραφικών
Χρησιμοποιήστε το σημειωματάριο cv-benchmark.ipynb για να εκτελέσετε δοκιμές φόρτωσης για μοντέλα υπολογιστικής όρασης. Μπορείτε να προσαρμόσετε τις παραμέτρους του προεκπαιδευμένου ονόματος μοντέλου και του τύπου στιγμιότυπου για τη δοκιμή φόρτου απόδοσης σε διαφορετικούς συνδυασμούς μοντέλων και τύπων παρουσίας. Δοκιμάσαμε σκόπιμα τρία μοντέλα βιογραφικών σε διαφορετικές σειρές μεγεθών από το μικρότερο έως το μεγαλύτερο: resnet50
(25 εκατ.), convnext_base
(88M), και vit_large_patch16_224
(304Μ). Ίσως χρειαστεί να προσαρμοστείτε στον κώδικα, εάν επιλέξετε ένα μοντέλο εκτός αυτής της λίστας. Επιπλέον, ο φορητός υπολογιστής ορίζει προεπιλογή το σχήμα εικόνας εισόδου σε τανυστήρα εικόνας 224x224x3. Θυμηθείτε να προσαρμόσετε ανάλογα το σχήμα εισόδου, εάν χρειάζεται να κάνετε συγκριτική αξιολόγηση μοντέλων που λαμβάνουν εικόνα διαφορετικού μεγέθους.
Αφού εκτελέσετε ολόκληρο το σημειωματάριο, θα λάβετε πολλές απεικονίσεις ανάλυσης απόδοσης. Οι δύο πρώτες περιγράφουν λεπτομερώς την απόδοση του μοντέλου σε σχέση με την αύξηση των ταυτόχρονων χρηστών. Τα παρακάτω σχήματα είναι τα παραδείγματα οπτικοποιήσεων που δημιουργήθηκαν για το ResNet50
μοντέλο που εκτελείται σε ml.g4dn.2xlarge, συγκρίνοντας το PyTorch (αριστερά) με το TensorRT (δεξιά). Τα γραφήματα της επάνω γραμμής δείχνουν την καθυστέρηση και την απόδοση του μοντέλου στον άξονα y με αυξανόμενους αριθμούς ταυτόχρονων εργαζομένων πελατών που αντανακλώνται στον άξονα x. Τα γραφήματα κάτω ράβδων δείχνουν τον αριθμό των επιτυχημένων και αποτυχημένων αιτημάτων.
Εξετάζοντας όλα τα μοντέλα υπολογιστικής όρασης που δοκιμάσαμε, παρατηρήσαμε τα εξής:
- Η καθυστέρηση (σε χιλιοστά του δευτερολέπτου) είναι υψηλότερη και η απόδοση (αιτήματα ανά δευτερόλεπτο) είναι χαμηλότερη για μεγαλύτερα μοντέλα (
resnet50 > convnext_base > vit_large_patch16_224
). - Η αύξηση της καθυστέρησης είναι ανάλογη με τον αριθμό των χρηστών, καθώς περισσότερα αιτήματα βρίσκονται στην ουρά στον διακομιστή συμπερασμάτων.
- Τα μεγάλα μοντέλα καταναλώνουν περισσότερους υπολογιστικούς πόρους και μπορούν να φτάσουν τα μέγιστα όρια απόδοσης με λιγότερους χρήστες από ένα μικρότερο μοντέλο. Αυτό παρατηρείται με το
vit_large_patch16_224
μοντέλο, το οποίο κατέγραψε το πρώτο αποτυχημένο αίτημα σε 140 ταυτόχρονους χρήστες. Όντας σημαντικά μεγαλύτερο από τα άλλα δύο μοντέλα που δοκιμάστηκαν, είχε και τα περισσότερα συνολικά αποτυχημένα αιτήματα σε υψηλότερο ταυτόχρονο. Αυτό είναι ένα σαφές μήνυμα ότι το τελικό σημείο θα πρέπει να κλιμακωθεί πέρα από μια μεμονωμένη παρουσία, εάν η πρόθεση είναι να υποστηρίξει περισσότερους από 140 ταυτόχρονους χρήστες.
Στο τέλος της εκτέλεσης του σημειωματάριου, λαμβάνετε επίσης μια συνοπτική σύγκριση των μοντέλων PyTorch έναντι TensorRT για καθεμία από τις τέσσερις βασικές μετρήσεις. Από τις δοκιμές αναφοράς μας, όλα τα μοντέλα βιογραφικών είδαν μια ώθηση στην απόδοση των μοντέλων μετά τη συλλογή του TensorRT. Παίρνοντας το δικό μας ResNet50
και πάλι ως παράδειγμα, η καθυστέρηση μειώθηκε κατά 32%, ενώ η απόδοση αυξήθηκε κατά 18%. Αν και ο μέγιστος αριθμός ταυτόχρονων χρηστών παρέμεινε ο ίδιος για ResNet50
, και τα δύο άλλα μοντέλα παρουσίασαν βελτίωση κατά 14% στον αριθμό των ταυτόχρονων χρηστών που μπορούν να υποστηρίξουν. Η βελτίωση της απόδοσης του TensorRT, ωστόσο, έγινε εις βάρος της υψηλότερης χρήσης μνήμης, με αποτέλεσμα λιγότερα μοντέλα να φορτώνονται από MME. Ο αντίκτυπος είναι περισσότερο για μοντέλα που χρησιμοποιούν ένα συνελικτικό νευρωνικό δίκτυο (CNN). Στην πραγματικότητα, το μοντέλο ResNet50 κατανάλωνε περίπου διπλάσια μνήμη GPU από το PyTorch στο TensorRT, με αποτέλεσμα να φορτωθούν 50% λιγότερα μοντέλα (46 έναντι 23). Διαγνώσουμε περαιτέρω αυτή τη συμπεριφορά στην επόμενη ενότητα.
Συγκριτικά αποτελέσματα για μοντέλα NLP
Για τα μοντέλα NLP, χρησιμοποιήστε το σημειωματάριο nlp-benchmark.ipynb για να εκτελέσετε τη δοκιμή φόρτωσης. Η ρύθμιση του φορητού υπολογιστή θα πρέπει να μοιάζει πολύ. Δοκιμάσαμε δύο μοντέλα NLP: bert-base-uncased (109M) και roberta-large (335M). Το προεκπαιδευμένο μοντέλο και το tokenizer λαμβάνονται και τα δύο από το Hugging Face και το δοκιμαστικό ωφέλιμο φορτίο δημιουργείται από το tokenizer χρησιμοποιώντας μια συμβολοσειρά δείγματος. Το μέγιστο μήκος ακολουθίας είναι προεπιλεγμένο στα 128. Εάν χρειάζεται να δοκιμάσετε μεγαλύτερες συμβολοσειρές, θυμηθείτε να προσαρμόσετε αυτήν την παράμετρο. Διατρέχοντας το σημειωματάριο NLP δημιουργείται το ίδιο σύνολο οπτικοποιήσεων: Pytorch (αριστερά) vs TensorRT (δεξιά).
Από αυτά, παρατηρήσαμε ακόμη περισσότερα οφέλη απόδοσης του TensorRT για μοντέλα NLP. Λαμβάνοντας το roberta-large
μοντέλο σε μια περίπτωση ml.g4dn.2xlarge, για παράδειγμα, η καθυστέρηση συμπερασμάτων μειώθηκε δραματικά από 180 χιλιοστά του δευτερολέπτου σε 56 χιλιοστά του δευτερολέπτου (70% βελτίωση), ενώ η απόδοση βελτιώθηκε κατά 406% από 33 αιτήματα ανά δευτερόλεπτο σε 167. Επιπλέον, ο μέγιστος αριθμός ταυτόχρονων Οι χρήστες αυξήθηκαν κατά 50%· Τα αποτυχημένα αιτήματα δεν παρατηρήθηκαν έως ότου φτάσαμε τους 180 ταυτόχρονους χρήστες, σε σύγκριση με 120 για το αρχικό μοντέλο PyTorch. Όσον αφορά τη χρήση της μνήμης, είδαμε ένα λιγότερο μοντέλο να φορτώνεται για το TensorRT (από εννέα μοντέλα σε οκτώ). Ωστόσο, ο αρνητικός αντίκτυπος είναι πολύ μικρότερος σε σύγκριση με αυτό που παρατηρήσαμε με τα μοντέλα που βασίζονται στο CNN.
Ανάλυση αξιοποίησης μνήμης
Ο παρακάτω πίνακας δείχνει την πλήρη ανάλυση σχετικά με τον αντίκτυπο της χρήσης μνήμης από το PyTorch στο TensorRT. Αναφέραμε νωρίτερα ότι τα μοντέλα που βασίζονται στο CNN επηρεάζονται πιο αρνητικά. ο ResNet50
μοντέλο είχε πάνω από 50% μείωση στον αριθμό των μοντέλων που φορτώθηκαν και στους τρεις τύπους παρουσιών GPU. Convnext_base
είχε ακόμη μεγαλύτερη μείωση κατά 70% περίπου. Από την άλλη πλευρά, η πρόσκρουση στα μοντέλα μετασχηματιστών είναι μικρή ή μικτή. vit_large_patch16_224
και roberta-large
είχε μέση μείωση περίπου 20% και 3%, αντίστοιχα, ενώ bert-base-uncased
είχε βελτίωση περίπου 40%.
Εξετάζοντας όλα τα σημεία δεδομένων στο σύνολό τους όσον αφορά την ανώτερη απόδοση σε καθυστέρηση, απόδοση και αξιοπιστία, καθώς και τον μικρό αντίκτυπο στον μέγιστο αριθμό μοντέλων που έχουν φορτωθεί, προτείνουμε το μοντέλο TensorRT για αρχιτεκτονικές μοντέλων που βασίζονται σε μετασχηματιστές. Για τα CNN, πιστεύουμε ότι απαιτείται περαιτέρω ανάλυση απόδοσης κόστους για να διασφαλιστεί ότι το όφελος απόδοσης υπερτερεί του κόστους της πρόσθετης υποδομής φιλοξενίας.
Περίπτωση χρήσης ML | Αρχιτεκτονική | Όνομα μοντέλου | Τύπος συμβολής | Πλαίσιο | Max Models Loaded | Διαφορά (%) | Μέσος όρος Διαφορά (%) |
CV | CNN | Resnet50 |
ml.g4dn.2xlarge | PyTorch | 46 | -50% | -50% |
TensorRT | 23 | ||||||
ml.g5.2xμεγάλο | PyTorch | 70 | -51% | ||||
TensorRT | 34 | ||||||
ml.p3.2xlarge | PyTorch | 49 | -51% | ||||
TensorRT | 24 | ||||||
Convnext_base |
ml.g4dn.2xlarge | PyTorch | 33 | -50% | -70% | ||
TensorRT | 10 | ||||||
ml.g5.2xμεγάλο | PyTorch | 50 | -70% | ||||
TensorRT | 16 | ||||||
ml.p3.2xlarge | PyTorch | 35 | -69% | ||||
TensorRT | 11 | ||||||
Μετασχηματιστής | vit_large_patch16_224 |
ml.g4dn.2xlarge | PyTorch | 10 | -30% | -20% | |
TensorRT | 7 | ||||||
ml.g5.2xμεγάλο | PyTorch | 15 | -13% | ||||
TensorRT | 13 | ||||||
ml.p3.2xlarge | PyTorch | 11 | -18% | ||||
TensorRT | 9 | ||||||
NLP | Roberta-large |
ml.g4dn.2xlarge | PyTorch | 9 | -11% | -3% | |
TensorRT | 8 | ||||||
ml.g5.2xμεγάλο | PyTorch | 13 | 0% | ||||
TensorRT | 13 | ||||||
ml.p3.2xlarge | PyTorch | 9 | 0% | ||||
TensorRT | 9 | ||||||
Bert-base-uncased |
ml.g4dn.2xlarge | PyTorch | 26 | 62% | 40% | ||
TensorRT | 42 | ||||||
ml.g5.2xμεγάλο | PyTorch | 39 | 28% | ||||
TensorRT | 50 | ||||||
ml.p3.2xlarge | PyTorch | 28 | 29% | ||||
TensorRT | 36 |
Οι παρακάτω πίνακες παραθέτουν τα πλήρη αποτελέσματα συγκριτικής αξιολόγησης για όλες τις μετρήσεις και στους τρεις τύπους παρουσιών GPU.
ml.g4dn.2xlarge |
||||||||||||
Χρήση θήκης | Αρχιτεκτονική | Όνομα μοντέλου | Αριθμός παραμέτρων | Πλαίσιο | Max Models Loaded | Διαφορά (%) | Καθυστέρηση (ms) | Διαφορά (%) | Διανομή (qps) | Διαφορά (%) | Μέγιστος ταυτόχρονος χρήστης | Διαφορά (%) |
CV | CNN | resnet50 |
25M | PyTorch | 46 | -50% | 164 | -32% | 120 | 18% | 180 | NA |
TensorRT | 23 | . | 111 | . | 142 | . | 180 | . | ||||
convnext_base |
88M | PyTorch | 33 | -70% | 154 | -22% | 64 | 102% | 140 | 14% | ||
TensorRT | 10 | . | 120 | . | 129 | . | 160 | . | ||||
Μετασχηματιστής | vit_large_patch16_224 |
304M | PyTorch | 10 | -30% | 425 | -69% | 26 | 304% | 140 | 14% | |
TensorRT | 7 | . | 131 | . | 105 | . | 160 | . | ||||
NLP | bert-base-uncased |
109M | PyTorch | 26 | 62% | 70 | -39% | 105 | 142% | 140 | 29% | |
TensorRT | 42 | . | 43 | . | 254 | . | 180 | . | ||||
roberta-large |
335M | PyTorch | 9 | -11% | 187 | -70% | 33 | 406% | 120 | 50% | ||
TensorRT | 8 | . | 56 | . | 167 | . | 180 | . |
ml.g5.2xμεγάλο |
||||||||||||
Χρήση θήκης | Αρχιτεκτονική | Όνομα μοντέλου | Αριθμός παραμέτρων | Πλαίσιο | Max Models Loaded | Διαφορά (%) | Καθυστέρηση (ms) | Διαφορά (%) | Διανομή (qps) | Διαφορά (%) | Μέγιστος ταυτόχρονος χρήστης | Διαφορά (%) |
CV | CNN | resnet50 |
25M | PyTorch | 70 | -51% | 159 | -31% | 146 | 14% | 180 | 11% |
TensorRT | 34 | . | 110 | . | 166 | . | 200 | . | ||||
convnext_base |
88M | PyTorch | 50 | -68% | 149 | -23% | 134 | 13% | 180 | 0% | ||
TensorRT | 16 | . | 115 | . | 152 | . | 180 | . | ||||
Μετασχηματιστής | vit_large_patch16_224 |
304M | PyTorch | 15 | -13% | 149 | -22% | 105 | 35% | 160 | 25% | |
TensorRT | 13 | . | 116 | . | 142 | . | 200 | . | ||||
NLP | bert-base-uncased |
109M | PyTorch | 39 | 28% | 65 | -29% | 183 | 38% | 180 | 11% | |
TensorRT | 50 | . | 46 | . | 253 | . | 200 | . | ||||
roberta-large |
335M | PyTorch | 13 | 0% | 97 | -38% | 121 | 46% | 140 | 14% | ||
TensorRT | 13 | . | 60 | . | 177 | . | 160 | . |
ml.p3.2xlarge |
||||||||||||
Χρήση θήκης | Αρχιτεκτονική | Όνομα μοντέλου | Αριθμός παραμέτρων | Πλαίσιο | Max Models Loaded | Διαφορά (%) | Καθυστέρηση (ms) | Διαφορά (%) | Διανομή (qps) | Διαφορά (%) | Μέγιστος ταυτόχρονος χρήστης | Διαφορά (%) |
CV | CNN | resnet50 |
25M | PyTorch | 49 | -51% | 197 | -41% | 94 | 18% | 160 | -12% |
TensorRT | 24 | . | 117 | . | 111 | . | 140 | . | ||||
convnext_base |
88M | PyTorch | 35 | -69% | 178 | -23% | 89 | 11% | 140 | 14% | ||
TensorRT | 11 | . 137 | 137 | . | 99 | . | 160 | . | ||||
Μετασχηματιστής | vit_large_patch16_224 |
304M | PyTorch | 11 | -18% | 186 | -28% | 83 | 23% | 140 | 29% | |
TensorRT | 9 | . | 134 | . | 102 | . | 180 | . | ||||
NLP | bert-base-uncased |
109M | PyTorch | 28 | 29% | 77 | -40% | 133 | 59% | 140 | 43% | |
TensorRT | 36 | . | 46 | . | 212 | . | 200 | . | ||||
roberta-large |
335M | PyTorch | 9 | 0% | 108 | -44% | 88 | 60% | 160 | 0% | ||
TensorRT | 9 | . | 61 | . | 141 | . | 160 | . |
Ο παρακάτω πίνακας συνοψίζει τα αποτελέσματα σε όλους τους τύπους παρουσιών. Το παράδειγμα ml.g5.2xlarge παρέχει την καλύτερη απόδοση, ενώ το παράδειγμα ml.p3.2xlarge έχει γενικά χαμηλότερες επιδόσεις παρόλο που είναι το πιο ακριβό από τα τρία. Οι περιπτώσεις g5 και g4dn δείχνουν την καλύτερη τιμή για φόρτους εργασίας εξαγωγής συμπερασμάτων.
Χρήση θήκης | Αρχιτεκτονική | Όνομα μοντέλου | Αριθμός παραμέτρων | Πλαίσιο | Τύπος συμβολής | Max Models Loaded | Διαφορά (%) | Καθυστέρηση (ms) | Διαφορά (%) | Διανομή (qps) | Διαφορά (%) | Μέγιστος ταυτόχρονος χρήστης |
CV | CNN | resnet50 |
25M | PyTorch | ml.g5.2xμεγάλο | 70 | . | 159 | . | 146 | . | 180 |
. | . | . | . | . | ml.p3.2xlarge | 49 | . | 197 | . | 94 | . | 160 |
. | . | . | . | . | ml.g4dn.2xlarge | 46 | . | 164 | . | 120 | . | 180 |
CV | CN | resnet50 |
25M | TensorRT | ml.g5.2xμεγάλο | 34 | -51% | 110 | -31% | 166 | 14% | 200 |
. | . | . | . | . | ml.p3.2xlarge | 24 | -51% | 117 | -41% | 111 | 18% | 200 |
. | . | . | . | . | ml.g4dn.2xlarge | 23 | -50% | 111 | -32% | 142 | 18% | 180 |
NLP | Μετασχηματιστής | bert-base-uncased |
109M | pytorch | ml.g5.2xμεγάλο | 39 | . | 65 | . | 183 | . | 180 |
. | . | . | . | . | ml.p3.2xlarge | 28 | . | 77 | . | 133 | . | 140 |
. | . | . | . | . | ml.g4dn.2xlarge | 26 | . | 70 | . | 105 | . | 140 |
NLP | Μετασχηματιστής | bert-base-uncased |
109M | TensorRT | ml.g5.2xμεγάλο | 50 | 28% | 46 | -29% | 253 | 38% | 200 |
. | . | . | . | . | ml.p3.2xlarge | 36 | 29% | 46 | -40% | 212 | 59% | 200 |
. | . | . | . | . | ml.g4dn.2xlarge | 42 | 62% | 43 | -39% | 254 | 142% | 180 |
εκκαθάριση
Αφού ολοκληρώσετε τη δοκιμή φόρτωσης, καθαρίστε τους πόρους που δημιουργούνται για να αποφύγετε πρόσθετες χρεώσεις. Οι κύριοι πόροι είναι τα τελικά σημεία του SageMaker και τα αρχεία τεχνουργημάτων μοντέλων στο Amazon S3. Για να σας διευκολύνουμε, τα αρχεία του σημειωματάριου έχουν τον ακόλουθο κώδικα καθαρισμού για να σας βοηθήσουν να τα διαγράψετε:
Συμπέρασμα
Σε αυτήν την ανάρτηση, μοιραστήκαμε τα αποτελέσματα των δοκιμών και την ανάλυσή μας για διάφορα μοντέλα βαθιάς νευρωνικών δικτύων που εκτελούνται σε τερματικά σημεία πολλαπλών μοντέλων SageMaker με GPU. Τα αποτελέσματα και οι πληροφορίες που μοιραστήκαμε θα πρέπει να παρέχουν μια λογική διατομή απόδοσης σε διαφορετικές μετρήσεις και τύπους παρουσιών. Στη διαδικασία, εισαγάγαμε επίσης τη συνιστώμενη προσέγγισή μας για την εκτέλεση δοκιμών συγκριτικής αξιολόγησης για MME SageMaker με GPU. Τα εργαλεία και το δείγμα κώδικα που παρέχουμε μπορούν να σας βοηθήσουν να ξεκινήσετε γρήγορα τις δοκιμές αναφοράς και να λάβετε μια πιο τεκμηριωμένη απόφαση σχετικά με το πώς να φιλοξενήσετε οικονομικά εκατοντάδες μοντέλα DNN σε επιταχυνόμενο υπολογιστικό υλικό. Για να ξεκινήσετε με τη συγκριτική αξιολόγηση των δικών σας μοντέλων με υποστήριξη MME για GPU, ανατρέξτε στο Υποστηριζόμενοι αλγόριθμοι, πλαίσια και παρουσίες και την GitHub repo για πρόσθετα παραδείγματα και τεκμηρίωση.
Σχετικά με τους συγγραφείς
Τζέιμς Γου είναι Senior AI/ML Specialist Solution Architect στο AWS. βοηθώντας τους πελάτες να σχεδιάσουν και να δημιουργήσουν λύσεις AI/ML. Το έργο του James καλύπτει ένα ευρύ φάσμα περιπτώσεων χρήσης ML, με πρωταρχικό ενδιαφέρον για την όραση υπολογιστών, τη βαθιά μάθηση και την κλιμάκωση της ML σε όλη την επιχείρηση. Πριν από την ένταξή του στην AWS, ο James ήταν αρχιτέκτονας, προγραμματιστής και ηγέτης τεχνολογίας για περισσότερα από 10 χρόνια, συμπεριλαμβανομένων 6 ετών στη μηχανική και 4 ετών σε βιομηχανίες μάρκετινγκ και διαφήμισης.
Vikram Elango είναι Αρχιτέκτονας Specialist Solutions AI/ML στην Amazon Web Services, με έδρα τη Βιρτζίνια των ΗΠΑ. Η Vikram βοηθά τους πελάτες του χρηματοοικονομικού και ασφαλιστικού κλάδου με σχεδιασμό, ηγετική σκέψη να δημιουργήσουν και να αναπτύξουν εφαρμογές μηχανικής εκμάθησης σε κλίμακα. Επί του παρόντος επικεντρώνεται στην επεξεργασία φυσικής γλώσσας, στην υπεύθυνη τεχνητή νοημοσύνη, στη βελτιστοποίηση συμπερασμάτων και στην κλιμάκωση της ML σε όλη την επιχείρηση. Στον ελεύθερο χρόνο του, του αρέσει να ταξιδεύει, να κάνει πεζοπορία, να μαγειρεύει και να κατασκηνώνει με την οικογένειά του.
Σάιμον Ζαμαρίν είναι ένας αρχιτέκτονας λύσεων AI / ML του οποίου η κύρια εστίαση είναι να βοηθά τους πελάτες να εξάγουν αξία από τα στοιχεία τους. Στον ελεύθερο χρόνο του, ο Simon απολαμβάνει να ξοδεύει χρόνο με την οικογένεια, να διαβάζει επιστημονικά και να εργάζεται σε διάφορα έργα σπιτιού DIY.
Saurabh Trikande είναι Ανώτερος Διευθυντής Προϊόντων για το Amazon SageMaker Inference. Είναι παθιασμένος με τη συνεργασία με πελάτες και παρακινείται από τον στόχο του εκδημοκρατισμού της μηχανικής μάθησης. Εστιάζει στις βασικές προκλήσεις που σχετίζονται με την ανάπτυξη πολύπλοκων εφαρμογών ML, μοντέλων ML πολλαπλών μισθωτών, βελτιστοποιήσεις κόστους και καθιστώντας την ανάπτυξη μοντέλων βαθιάς μάθησης πιο προσιτή. Στον ελεύθερο χρόνο του, ο Saurabh απολαμβάνει την πεζοπορία, μαθαίνει για καινοτόμες τεχνολογίες, ακολουθεί το TechCrunch και περνά χρόνο με την οικογένειά του.
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- Platoblockchain. Web3 Metaverse Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- πηγή: https://aws.amazon.com/blogs/machine-learning/achieve-high-performance-at-scale-for-model-serving-using-amazon-sagemaker-multi-model-endpoints-with-gpu/
- 10
- 100
- 11
- 2022
- 7
- a
- ικανότητα
- Σχετικα
- επιτάχυνση
- προσιτός
- αναλόγως
- με ακρίβεια
- Κατορθώνω
- απέναντι
- προστιθέμενη
- Επιπλέον
- Πρόσθετος
- Επιπλέον
- θετός
- Διαφήμιση
- Μετά το
- AI
- AI / ML
- αλγόριθμοι
- Όλα
- επιτρέπει
- Αν και
- Amazon
- Amazon Sage Maker
- Amazon υπηρεσίες Web
- ποσό
- ανάλυση
- αναλύσει
- και
- Άλλος
- εφαρμογές
- πλησιάζω
- περίπου
- αρχιτεκτονική
- Ενεργητικό
- αυτόματη
- αυτομάτως
- μέσος
- AWS
- μπαρ
- βασίζονται
- επειδή
- πριν
- πίσω
- είναι
- Πιστεύω
- αναφοράς
- συγκριτική αξιολόγηση
- συγκριτικής αξιολόγησης
- όφελος
- ΚΑΛΎΤΕΡΟΣ
- Πέρα
- μεγαλύτερος
- δισεκατομμύρια
- επιτροπή
- ώθηση
- Κάτω μέρος
- ρυθμιστικό
- χτίζω
- βάρος
- περίπτωση
- περιπτώσεις
- προκλήσεις
- χαρακτηριστικά
- φορτία
- Διάγραμμα
- Διαγράμματα
- καθαρός
- πελάτης
- CNN
- κωδικός
- συνδυασμοί
- σύγκριση
- συγκρίνοντας
- σύγκριση
- πλήρης
- συγκρότημα
- περίπλοκο
- Αποτελείται
- Υπολογίστε
- υπολογιστή
- Computer Vision
- συμπέρασμα
- ανταγωνιστής
- διαμόρφωση
- συνεπής
- καταναλώνουν
- καταναλώνεται
- κατανάλωση
- Δοχείο
- συμφραζόμενα
- ΣΥΝΕΧΕΙΑ
- πυρήνας
- Κόστος
- αποδοτική
- Καλύμματα
- Σταυρός
- Ρεύμα
- Τη στιγμή
- έθιμο
- Πελάτες
- ημερομηνία
- σημεία δεδομένων
- απόφαση
- βαθύς
- βαθιά μάθηση
- βαθύτερη
- προεπιλογές
- παραδώσει
- Ζήτηση
- Δημοκρατικός
- αποδεικνύουν
- Σε συνάρτηση
- παρατάσσω
- ανάπτυξη
- ανάπτυξη
- αναπτύξεις
- Υπηρεσίες
- επιθυμητή
- Παρά
- λεπτομέρεια
- καθέκαστα
- Προσδιορίστε
- αποφασισμένος
- Εργολάβος
- συσκευή
- διαφορετικές
- Diy
- τεκμηρίωση
- κατεβάσετε
- δραματικά
- δυναμικός
- κάθε
- Νωρίτερα
- ευκολότερη
- είτε
- Τελικό σημείο
- Μηχανική
- Εταιρεία
- Ολόκληρος
- σφάλμα
- Even
- παράδειγμα
- παραδείγματα
- υπερβαίνω
- αναμένεται
- ακριβά
- Δραστηριοτητες
- επεκτείνουν
- εκχύλισμα
- Πρόσωπο
- παράγοντες
- Απέτυχε
- οικογένεια
- Μόδα
- εφικτός
- Σχήματα
- Αρχεία
- οικονομικός
- Εύρεση
- Όνομα
- Συγκέντρωση
- επικεντρώθηκε
- εστιάζει
- Εξής
- Πλαίσιο
- πλαισίων
- από
- πλήρη
- περαιτέρω
- γενικά
- παράγεται
- δημιουργεί
- γενετική
- Παραγωγική τεχνητή νοημοσύνη
- παίρνω
- δίνει
- γκολ
- μετάβαση
- GPU
- GPU
- γραφικές παραστάσεις
- Μεγαλώνοντας
- καθοδηγήσει
- χέρι
- υλικού
- βοήθεια
- βοήθεια
- βοηθά
- Ψηλά
- υψηλότερο
- οικοδεσπότης
- φιλοξενείται
- φιλοξενία
- Σπίτι
- Πως
- Πώς να
- Ωστόσο
- HTML
- HTTPS
- Hub
- Εκατοντάδες
- ιδανικό
- εικόνα
- Επίπτωση
- επηρεάζονται
- βελτιωθεί
- βελτίωση
- in
- περιλαμβάνουν
- Συμπεριλαμβανομένου
- Αυξάνουν
- αυξημένη
- Αυξήσεις
- αύξηση
- ατομικές
- βιομηχανίες
- βιομηχανία
- επιρροή
- ενημερώνεται
- Υποδομή
- αρχικός
- καινοτόμες
- καινοτόμες τεχνολογίες
- εισαγωγή
- ιδέες
- παράδειγμα
- ασφάλιση
- πρόθεση
- τόκος
- εισήγαγε
- Εισαγωγή
- επικαλείται
- IT
- ενώνει
- Κλειδί
- Γλώσσα
- large
- μεγαλύτερος
- μεγαλύτερη
- Αφάνεια
- ηγέτης
- Ηγεσία
- μάθηση
- αφήνοντας
- Μήκος
- όρια
- γραμμή
- Λιστα
- Λίστες
- φορτίο
- φόρτωση
- πλέον
- ματιά
- Χαμηλός
- μηχανή
- μάθηση μηχανής
- Κυρίως
- κάνω
- Κατασκευή
- διευθυντής
- διαχειρίζεται
- διαχείριση
- πολοί
- σημάδι
- Μάρκετινγκ
- Μάρκετινγκ & Διαφήμιση
- max
- Αυξάνω στον ανώτατο βαθμό
- ανώτατο όριο
- μέτρο
- μέτρα
- Μνήμη
- που αναφέρθηκαν
- μέθοδοι
- Metrics
- ανήλικος
- μικτός
- ML
- μοντέλο
- μοντέλα
- περισσότερο
- πλέον
- Δημοφιλέστερα
- κίνητρα
- MS
- πολλαπλούς
- όνομα
- Φυσικό
- Επεξεργασία φυσικής γλώσσας
- Ανάγκη
- αρνητικός
- αρνητικά
- δίκτυο
- νευρικό σύστημα
- Νέα
- nlp
- σημειωματάριο
- Νοέμβριος
- αριθμός
- αριθμοί
- ONE
- λειτουργίας
- επιχειρήσεων
- βελτιστοποίηση
- βέλτιστη
- Επιλογή
- πρωτότυπο
- ΑΛΛΑ
- εκτός
- φόρμες
- δική
- Ειρήνη
- παράμετρος
- παράμετροι
- παθιασμένος
- πρότυπο
- πρότυπα
- τοις εκατό
- Εκτελέστε
- επίδοση
- εκτέλεση
- περίοδος
- επιλέξτε
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- Σημείο
- σημεία
- Δημοφιλής
- δυνατός
- Θέση
- προηγουμένως
- πρωταρχικός
- Πριν
- διαδικασια μας
- μεταποίηση
- Προϊόν
- υπεύθυνος προϊόντων
- έργα
- κατάλληλος
- παρέχουν
- παρέχεται
- παρέχει
- βάζω
- pytorch
- ποσότητα
- Αναβαθμίδα
- ράμπες
- τυχαίος
- σειρά
- γρήγορα
- Τιμή
- φθάσουν
- φθάσει
- φθάνοντας
- Ανάγνωση
- λογικός
- λόγους
- συνιστώ
- συνιστάται
- καταγράφονται
- μείωση
- Μειωμένος
- αντανακλούν
- αντανακλάται
- αφορά
- σχετίζεται με
- αξιοπιστία
- θυμάμαι
- επαναλαμβάνω
- επανειλημμένες
- ζητήσει
- αιτήματα
- απαιτήσεις
- Απαιτεί
- Υποστηρικτικό υλικό
- απάντησης
- υπεύθυνος
- με αποτέλεσμα
- Αποτελέσματα
- τρέξιμο
- τρέξιμο
- σοφός
- Συμπεράσματα SageMaker
- ίδιο
- επεκτάσιμη
- Κλίμακα
- απολέπιση
- Sci-Fi
- Δεύτερος
- δευτερόλεπτα
- Τμήμα
- αρχαιότερος
- Ακολουθία
- Υπηρεσίες
- εξυπηρετούν
- σειρά
- setup
- διάφοροι
- Shape
- σχήματα
- Κοινοποίηση
- Shared
- μοιράζονται
- θα πρέπει να
- δείχνουν
- παρουσιάζεται
- Δείχνει
- πλευρά
- Σήμα
- σημαντικά
- παρόμοιες
- Simon
- Απλούς
- ενιαίας
- Μέγεθος
- μεγέθη
- small
- μικρότερος
- λύση
- Λύσεις
- μερικοί
- Χώρος
- ειδικός
- καθορίζεται
- Δαπάνες
- σταθερότητα
- ξεκίνησε
- έμεινε
- σταθερός
- Βήμα
- Βήματα
- Ακόμη
- χώρος στο δίσκο
- στρατηγικές
- ισχυρός
- επιτυχής
- τέτοιος
- συνοψίζω
- ΠΕΡΙΛΗΨΗ
- ανώτερος
- υποστήριξη
- υποστηριζόνται!
- Υποστηρίζει
- τραπέζι
- Πάρτε
- λήψη
- TechCrunch
- Τεχνολογίες
- Τεχνολογία
- πρότυπο
- πρότυπα
- όροι
- δοκιμή
- Δοκιμές
- Η
- τους
- επομένως
- σκέψη
- σκέψη ηγεσία
- τρία
- κατώφλι
- Μέσω
- διακίνηση
- ώρα
- προς την
- μαζι
- εργαλεία
- κορυφή
- Σύνολο
- ΚΙΝΗΣΗ στους ΔΡΟΜΟΥΣ
- Ταξίδια
- δίκη
- Δυο φορές
- τύποι
- συνήθως
- ΗΠΑ
- χρήση
- περίπτωση χρήσης
- Χρήστες
- Χρήστες
- αξία
- διάφορα
- Βιργινία
- όραμα
- Ενταλμα
- ιστός
- διαδικτυακές υπηρεσίες
- Τι
- αν
- Ποιό
- ενώ
- ολόκληρο
- ευρύς
- Ευρύ φάσμα
- θα
- εντός
- χωρίς
- Εργασία
- εργαζομένων
- εργαζόμενος
- θα
- χρόνια
- Βελτιστοποίηση
- Εσείς
- Σας
- zephyrnet