Διανεμημένη λεπτομέρεια ενός μοντέλου BERT Large για Εργασία Ερωτήσεων-Απάντησης χρησιμοποιώντας Hugging Face Transformers στο Amazon SageMaker

Κόμβος πηγής: 1885069

Από την εκπαίδευση νέων μοντέλων μέχρι την χρησιμοποίησή τους στην παραγωγή, Amazon Sage Maker προσφέρει το πιο πλήρες σύνολο εργαλείων για νεοφυείς επιχειρήσεις και επιχειρήσεις για να αξιοποιήσουν τη δύναμη της μηχανικής μάθησης (ML) και της Βαθιάς Μάθησης.

Με τη βιβλιοθήκη ανοιχτού κώδικα Transformers και την πλατφόρμα ML, το Hugging Face κάνει τη μάθηση μεταφοράς και τα πιο πρόσφατα μοντέλα ML προσβάσιμα στην παγκόσμια κοινότητα τεχνητής νοημοσύνης, μειώνοντας τον χρόνο που απαιτείται για τους επιστήμονες δεδομένων και τους μηχανικούς ML σε εταιρείες σε όλο τον κόσμο για να επωφεληθούν από κάθε νέα επιστημονική προαγωγή.

Η εφαρμογή των Transformers σε νέες εργασίες ή τομείς NLP απαιτεί λεπτομερή ρύθμιση μοντέλων μεγάλων γλωσσών, μια τεχνική που αξιοποιεί τη συσσωρευμένη γνώση προεκπαιδευμένων μοντέλων για να τα προσαρμόσει σε μια νέα εργασία ή συγκεκριμένο τύπο εγγράφων σε μια πρόσθετη, αποτελεσματική εκπαιδευτική διαδικασία.

Η τελειοποίηση του μοντέλου για την παραγωγή ακριβών προβλέψεων για το υπάρχον επιχειρηματικό πρόβλημα απαιτεί την εκπαίδευση μεγάλων μοντέλων Transformers, για παράδειγμα BERT, BART, RoBERTa, T5, τα οποία μπορεί να είναι δύσκολο να λειτουργήσουν με κλιμακωτό τρόπο.

Το Hugging Face συνεργάζεται στενά με το SageMaker για να προσφέρει έτοιμα προς χρήση Deep Learning Containers (DLC) που κάνουν την εκπαίδευση και την ανάπτυξη των πιο πρόσφατων μοντέλων Transformers ευκολότερη και ταχύτερη από ποτέ. Επειδή χαρακτηριστικά όπως το SageMaker Data Parallel (SMDP), το SageMaker Model Parallel (SMMP), η λειτουργία σωλήνα S3, είναι ενσωματωμένα στο κοντέινερ, η χρήση αυτών μειώνει δραστικά τον χρόνο για τις εταιρείες να δημιουργήσουν λύσεις ML που βασίζονται σε μετασχηματιστές, όπως η απάντηση σε ερωτήσεις, η δημιουργία κείμενο και εικόνες, βελτιστοποιώντας τα αποτελέσματα αναζήτησης και βελτιώνει την αυτοματοποίηση υποστήριξης πελατών, τις διεπαφές συνομιλίας, τη σημασιολογική αναζήτηση, τις αναλύσεις εγγράφων και πολλές άλλες εφαρμογές.

Σε αυτήν την ανάρτηση, εστιάζουμε στη βαθιά ενσωμάτωση των διανεμημένων βιβλιοθηκών SageMaker με το Hugging Face, το οποίο επιτρέπει στους επιστήμονες δεδομένων να επιταχύνουν την εκπαίδευση και τη βελτίωση των μοντέλων Transformers από μέρες σε ώρες, όλα στο SageMaker.

Επισκόπηση της κατανεμημένης εκπαίδευσης

Οι επαγγελματίες ML και οι επιστήμονες δεδομένων αντιμετωπίζουν δύο προκλήσεις κλιμάκωσης όταν εκπαιδεύουν μοντέλα: κλιμάκωση μεγέθους μοντέλου (αριθμός παραμέτρων και επιπέδων) και κλιμάκωση δεδομένων εκπαίδευσης. Η κλιμάκωση είτε του μεγέθους μοντέλου είτε των δεδομένων εκπαίδευσης μπορεί να οδηγήσει σε καλύτερη ακρίβεια, αλλά μπορεί να υπάρχουν περιπτώσεις στη βαθιά εκμάθηση όπου η ποσότητα μνήμης στον επιταχυντή (CPU ή GPU) περιορίζει τον συνδυασμό του μεγέθους των δεδομένων εκπαίδευσης και του μεγέθους του μοντέλο. Για παράδειγμα, όταν εκπαιδεύετε ένα μοντέλο μεγάλης γλώσσας, το μέγεθος της παρτίδας περιορίζεται συχνά σε μικρό αριθμό δειγμάτων, γεγονός που μπορεί να οδηγήσει σε λιγότερο ακριβές μοντέλο.

Η κατανεμημένη εκπαίδευση μπορεί να χωρίσει το φόρτο εργασίας για να εκπαιδεύσει το μοντέλο σε πολλούς επεξεργαστές, που ονομάζονται εργαζομένων. Αυτοί οι εργαζόμενοι λειτουργούν παράλληλα για να επιταχύνουν την εκπαίδευση μοντέλων.

Με βάση αυτό που θέλουμε να κλιμακώσουμε (μοντέλο ή δεδομένα) υπάρχουν δύο προσεγγίσεις για την κατανεμημένη εκπαίδευση: δεδομένα παράλληλα και μοντέλο παράλληλα.

Το παράλληλο δεδομένων είναι η πιο κοινή προσέγγιση για την κατανεμημένη εκπαίδευση. Ο παραλληλισμός δεδομένων συνεπάγεται τη δημιουργία αντιγράφου της αρχιτεκτονικής του μοντέλου και των βαρών σε διαφορετικούς επιταχυντές. Στη συνέχεια, αντί να περάσουμε σε ολόκληρο το σετ εκπαίδευσης σε έναν μόνο επιταχυντή, μπορούμε να διαιρέσουμε το σετ εκπαίδευσης στους διαφορετικούς επιταχυντές και να περάσουμε το σετ εκπαίδευσης πιο γρήγορα. Αν και αυτό προσθέτει το βήμα των επιταχυντών που πρέπει να επικοινωνήσουν τις πληροφορίες κλίσης πίσω σε έναν διακομιστή παραμέτρων, αυτός ο χρόνος αντισταθμίζεται περισσότερο από την αύξηση της ταχύτητας της επανάληψης σε ένα κλάσμα ολόκληρου του συνόλου δεδομένων ανά επιταχυντή. Εξαιτίας αυτού, ο παραλληλισμός δεδομένων μπορεί να βοηθήσει σημαντικά στη μείωση του χρόνου προπόνησης. Για παράδειγμα, η εκπαίδευση ενός μοντέλου χωρίς παραλληλισμό διαρκεί 4 ώρες. Η χρήση κατανεμημένης προπόνησης μπορεί να μειώσει σε 24 λεπτά. Η κατανεμημένη εκπαίδευση του SageMaker εφαρμόζει επίσης τεχνικές αιχμής σε ενημερώσεις gradient.

Μια παράλληλη προσέγγιση μοντέλου χρησιμοποιείται με μεγάλα μοντέλα πολύ μεγάλα για να χωρέσουν σε έναν επιταχυντή (GPU). Αυτή η προσέγγιση εφαρμόζει μια στρατηγική παραλληλοποίησης όπου η αρχιτεκτονική του μοντέλου χωρίζεται σε θραύσματα και τοποθετείται σε διαφορετικούς επιταχυντές. Η διαμόρφωση καθενός από αυτά τα θραύσματα εξαρτάται από την αρχιτεκτονική του νευρωνικού δικτύου και τυπικά περιλαμβάνει πολλά επίπεδα. Η επικοινωνία μεταξύ των επιταχυντών πραγματοποιείται κάθε φορά που τα δεδομένα εκπαίδευσης περνούν από ένα από τα θραύσματα στο επόμενο.

Συνοψίζοντας, θα πρέπει να χρησιμοποιήσετε τον παραλληλισμό κατανεμημένων δεδομένων εκπαίδευσης για εργασίες που απαιτούν χρόνο λόγω μεγάλων συνόλων δεδομένων ή όταν θέλετε να επιταχύνετε τα πειράματα εκπαίδευσης. Θα πρέπει να χρησιμοποιείτε παραλληλισμό μοντέλου όταν το μοντέλο σας δεν μπορεί να χωρέσει σε έναν επιταχυντή.

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

Για να εκτελέσετε κατανεμημένη εκπαίδευση των μοντέλων Hugging Face Transformers στο SageMaker, πρέπει να ολοκληρώσετε τις ακόλουθες προϋποθέσεις:

Εφαρμογή κατανεμημένης εκπαίδευσης

Η βιβλιοθήκη Hugging Face Transformers παρέχει ένα API Trainer που είναι βελτιστοποιημένο για να εκπαιδεύει ή να τελειοποιεί τα μοντέλα που παρέχει η βιβλιοθήκη. Μπορείτε επίσης να το χρησιμοποιήσετε στα δικά σας μοντέλα εάν λειτουργούν με τον ίδιο τρόπο όπως τα μοντέλα Transformers. βλέπω Προπονητής Για περισσότερες πληροφορίες. Αυτό το API χρησιμοποιείται στο δικό μας παραδείγματα σεναρίων, που δείχνουν πώς να προεπεξεργάζεστε τα δεδομένα για διάφορες εργασίες NLP, τις οποίες μπορείτε να χρησιμοποιήσετε ως μοντέλα για να γράψετε ένα σενάριο που λύνει το δικό σας προσαρμοσμένο πρόβλημα. Η υπόσχεση του Trainer API είναι ότι αυτό το σενάριο λειτουργεί εκτός συσκευασίας σε οποιαδήποτε κατανεμημένη εγκατάσταση, συμπεριλαμβανομένου του SageMaker.

Το Trainer API παίρνει όλα όσα χρειάζονται για την εκπαίδευση. Αυτό περιλαμβάνει τα σύνολα δεδομένων σας, το μοντέλο σας (ή μια συνάρτηση που επιστρέφει το μοντέλο σας), α compute_metrics συνάρτηση που επιστρέφει τις μετρήσεις που θέλετε να παρακολουθήσετε από τις συστοιχίες προτάσεων και ετικετών, τον βελτιστοποιητή και τον προγραμματιστή ρυθμού εκμάθησης (παρέχονται καλές προεπιλογές), καθώς και όλες τις υπερπαράμετρους που μπορείτε να συντονίσετε για την εκπαίδευσή σας ομαδοποιημένες σε μια κατηγορία δεδομένων που ονομάζεται TrainingArguments. Με όλα αυτά, εκθέτει τρεις μεθόδους—εκπαίδευση, αξιολόγηση και πρόβλεψη—για να εκπαιδεύσετε το μοντέλο σας, να λάβετε τα μετρικά αποτελέσματα σε οποιοδήποτε σύνολο δεδομένων ή να λάβετε τις προβλέψεις σε οποιοδήποτε σύνολο δεδομένων. Για να μάθετε περισσότερα σχετικά με το αντικείμενο Trainer, ανατρέξτε στο Βελτιστοποίηση ενός μοντέλου με το Trainer API και το βίντεο Το Trainer API, το οποίο σας καθοδηγεί σε ένα απλό παράδειγμα.

Πίσω από τις σκηνές, το Trainer API ξεκινά αναλύοντας το περιβάλλον στο οποίο εκκινείτε το σενάριό σας όταν δημιουργείτε το TrainingArguments. Για παράδειγμα, αν ξεκινήσατε την εκπαίδευσή σας με το SageMaker, εξετάζει το SM_FRAMEWORK_PARAMS μεταβλητή στο περιβάλλον για να εντοπίσετε εάν ενεργοποιήσατε τον παραλληλισμό δεδομένων του SageMaker ή τον παραλληλισμό μοντέλου. Στη συνέχεια, λαμβάνει τις σχετικές μεταβλητές (όπως η κατάταξη της διαδικασίας ή το μέγεθος του κόσμου) από το περιβάλλον πριν εκτελέσει τα απαραίτητα βήματα προετοιμασίας (όπως π.χ. smdistributed.dataparallel.torch.distributed.init_process_group()).

Το Trainer περιέχει ολόκληρο τον κύκλο εκπαίδευσης, ώστε να μπορεί να προσαρμόσει τα απαραίτητα βήματα για να βεβαιωθεί ότι smdistributed.dataparallel Το backend χρησιμοποιείται όταν είναι απαραίτητο χωρίς να χρειάζεται να αλλάξετε μια γραμμή κώδικα στο σενάριό σας. Μπορεί να εκτελεστεί (αν και πολύ πιο αργά) στον τοπικό σας υπολογιστή για εντοπισμό σφαλμάτων. Διαχειρίζεται τον μοιρασμό του συνόλου δεδομένων σας έτσι ώστε κάθε διαδικασία να βλέπει αυτόματα διαφορετικά δείγματα, με αναδιάταξη σε κάθε εποχή, συγχρονισμό των κλίσεων πριν από το βήμα βελτιστοποίησης, εκπαίδευση με μικτή ακρίβεια εάν το ενεργοποιήσατε, συσσώρευση διαβάθμισης εάν δεν μπορείτε να χωρέσετε ένα μεγάλο μέγεθος παρτίδας τις GPU σας και πολλές άλλες βελτιστοποιήσεις.

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

Όταν χρησιμοποιείτε τις μεθόδους αξιολόγησης και πρόβλεψης, ο Εκπαιδευτής εκτελεί μια κατανεμημένη αξιολόγηση, για να εκμεταλλευτεί όλες τις GPU σας. Χειρίζεται σωστά τον διαχωρισμό των δεδομένων σας για κάθε διαδικασία (διαδικασία της ίδιας dp_rank εάν είναι ενεργοποιημένος ο παραλληλισμός μοντέλου) και βεβαιώνεται ότι οι προβλέψεις συγκεντρώνονται σωστά με την ίδια σειρά με το σύνολο δεδομένων που χρησιμοποιείτε πριν αποσταλούν στο compute_metrics λειτουργία ή μόλις επέστρεψε. Η χρήση του Trainer API δεν είναι υποχρεωτική. Οι χρήστες μπορούν ακόμα να χρησιμοποιούν Keras ή PyTorch στο Hugging Face. Ωστόσο, το Trainer API μπορεί να παρέχει ένα χρήσιμο επίπεδο αφαίρεσης.

Εκπαιδεύστε ένα μοντέλο χρησιμοποιώντας τους εκτιμητές αγκαλιάς προσώπου SageMaker

Ο Εκτιμητής είναι μια διεπαφή υψηλού επιπέδου για την εκπαίδευση του SageMaker και χειρίζεται από άκρο σε άκρο εργασίες εκπαίδευσης και ανάπτυξης του SageMaker. Η εκπαίδευση του σεναρίου σας επικαλείται όταν καλείτε fit για μια HuggingFace Εκτιμητής. Στον Εκτιμητή, ορίζετε ποιο σενάριο λεπτομέρειας θα χρησιμοποιήσετε ως entry_point, Το οποίο instance_type για χρήση και ποιες υπερπαράμετροι μεταβιβάζονται. Για περισσότερες πληροφορίες σχετικά με HuggingFace παραμέτρους, βλ Εκτιμητής Αγκαλιασμένου Προσώπου.

Κατανεμημένη εκπαίδευση: Δεδομένα παράλληλα

Σε αυτό το παράδειγμα, χρησιμοποιούμε τα νέα DLC Hugging Face και το SageMaker SDK για να εκπαιδεύσουμε ένα κατανεμημένο μοντέλο μετασχηματιστή Seq2Seq σχετικά με την εργασία ερωτήσεων και απαντήσεων χρησιμοποιώντας τις βιβλιοθήκες Transformers και συνόλων δεδομένων. ο μπερτ-μεγάλο-χωρίς-ολόκληρη-λέξη-μάσκα το μοντέλο είναι τελειοποιημένο στο ομάδα σύνολο δεδομένων

Τα ακόλουθα δείγματα κώδικα σάς δείχνουν τα βήματα δημιουργίας α HuggingFace εκτιμητής για κατανεμημένη εκπαίδευση με παραλληλισμό δεδομένων.

  1. Επιλέξτε ένα σενάριο Hugging Face Transformers:
    # git configuration to download our fine-tuning script
    git_config = {'repo': 'https://github.com/huggingface/transformers.git','branch': 'v4.6.1'}

Όταν δημιουργείτε ένα HuggingFace Εκτιμητής, μπορείτε να καθορίσετε ένα σενάριο εκπαίδευσης που είναι αποθηκευμένο σε ένα αποθετήριο GitHub ως σημείο εισόδου για τον Εκτιμητή, ώστε να μην χρειάζεται να κάνετε λήψη των σεναρίων τοπικά. Μπορείς να χρησιμοποιήσεις git_config για να εκτελέσετε τα σενάρια παραδειγμάτων Hugging Face Transformers και το δεξί «κλάδο» εάν έχετε transformers_version πρέπει να ρυθμιστεί. Για παράδειγμα, εάν χρησιμοποιείτε transformers_version 4.6.1, πρέπει να χρησιμοποιήσετε «branch':'v4.6.1'.

  1. Διαμόρφωση υπερπαραμέτρων εκπαίδευσης που μεταβιβάζονται στην εργασία εκπαίδευσης:
    # hyperparameters, which are passed into the training job
    hyperparameters={ 'model_name_or_path': 'bert-large-uncased-whole-word-masking', 'dataset_name':'squad', 'do_train': True, 'do_eval': True, 'fp16': True, 'per_device_train_batch_size': 4, 'per_device_eval_batch_size': 4, 'num_train_epochs': 2, 'max_seq_length': 384, 'max_steps': 100, 'pad_to_max_length': True, 'doc_stride': 128, 'output_dir': '/opt/ml/model'
    }

Ως υπερπαράμετρος, μπορούμε να ορίσουμε οποιαδήποτε Seq2SeqTrainingArguments και αυτά που ορίζονται στο σενάριο εκπαίδευσης.

  1. Ορίστε τις παραμέτρους κατανομής στο HuggingFace Εκτιμητής:
    # configuration for running training on smdistributed Data Parallel
    distribution = {'smdistributed':{'dataparallel':{ 'enabled': True }}}

Μπορείτε να χρησιμοποιήσετε το Βιβλιοθήκη παραλληλισμού δεδομένων SageMaker έξω από το κουτί για κατανεμημένη εκπαίδευση. Προσθέσαμε τη λειτουργικότητα του παραλληλισμού δεδομένων απευθείας στο Trainer. Για να ενεργοποιήσετε τον παραλληλισμό δεδομένων, μπορείτε απλώς να προσθέσετε μια παράμετρο στο δικό σας HuggingFace Εκτιμητής για να επιτρέπει στον κώδικα που βασίζεται σε εκπαιδευτή να τον χρησιμοποιεί αυτόματα.

  1. Δημιουργία HuggingFace Εκτιμητής που περιλαμβάνει παραμέτρους που ορίστηκαν σε προηγούμενα βήματα και έναρξη εκπαίδευσης:
from sagemaker.huggingface import HuggingFace
# estimator
huggingface_estimator = HuggingFace(entry_point='run_qa.py', source_dir='./examples/pytorch/question-answering', git_config=git_config, instance_type= 'ml.p3.16xlarge', instance_count= 2, volume_size= 200, role= <SageMaker Role>, # IAM role, transformers_version='4.6', pytorch_version='1.7', py_version='py36', distribution= distribution, hyperparameters = hyperparameters) # starting the train job huggingface_estimator.fit()

Η Αποθετήριο Hugging Face Transformers περιέχει πολλά παραδείγματα και δέσμες ενεργειών για τη βελτιστοποίηση μοντέλων σε εργασίες από τη μοντελοποίηση γλώσσας έως την ταξινόμηση διακριτικών. Στην περίπτωσή μας, χρησιμοποιούμε run_qa.py από το examples/pytorch/question-answering παραδείγματα.

smdistributed.dataparallel υποστηρίζει εκπαίδευση μοντέλων στο SageMaker με μόνο τους ακόλουθους τύπους περιπτώσεων. Για καλύτερη απόδοση, συνιστούμε να χρησιμοποιήσετε έναν τύπο παρουσίας που υποστηρίζει Ελαστικός προσαρμογέας υφάσματος (EFA):

  • ml.p3.16xlarge
  • ml.p3dn.24xlarge (Συνιστάται)
  • ml.p4d.24xlarge (Συνιστάται)

Για να έχετε την καλύτερη απόδοση και το μέγιστο SMDataParallel, θα πρέπει να χρησιμοποιήσετε τουλάχιστον δύο περιπτώσεις, αλλά μπορείτε επίσης να χρησιμοποιήσετε μία για τη δοκιμή αυτού του παραδείγματος.

Ο ακόλουθος παράδειγμα σημειωματάριο παρέχει πιο λεπτομερείς οδηγίες βήμα προς βήμα.

Κατανεμημένη εκπαίδευση: Μοντέλο παράλληλη

Για κατανεμημένη εκπαίδευση με παραλληλισμό μοντέλων, χρησιμοποιούμε τη βιβλιοθήκη Hugging Face Transformers και συνόλων δεδομένων μαζί με το SageMaker SDK για ταξινόμηση ακολουθίας στο Αξιολόγηση κατανόησης γενικής γλώσσας (GLUE) σημείο αναφοράς σε ένα σύμπλεγμα πολλαπλών κόμβων, πολλαπλών GPU χρησιμοποιώντας το Βιβλιοθήκη παραλληλισμού μοντέλων SageMaker.

Όπως και με τον παραλληλισμό δεδομένων, ορίσαμε πρώτα τη διαμόρφωση git, τις υπερπαραμέτρους εκπαίδευσης και τις παραμέτρους κατανομής στο HuggingFace Εκτιμητής:

# git configuration to download our fine-tuning script
git_config = {'repo': 'https://github.com/huggingface/transformers.git','branch': 'v4.6.1'} # hyperparameters, which are passed into the training job
hyperparameters={ 'model_name_or_path':'roberta-large', 'task_name': 'mnli', 'per_device_train_batch_size': 16, 'per_device_eval_batch_size': 16, 'do_train': True, 'do_eval': True, 'do_predict': True, 'num_train_epochs': 2, 'output_dir':'/opt/ml/model', 'max_steps': 500,
} # configuration for running training on smdistributed Model Parallel
mpi_options = { "enabled" : True, "processes_per_host" : 8,
}
smp_options = { "enabled":True, "parameters": { "microbatches": 4, "placement_strategy": "spread", "pipeline": "interleaved", "optimize": "speed", "partitions": 4, "ddp": True, }
} distribution={ "smdistributed": {"modelparallel": smp_options}, "mpi": mpi_options
}

Η βιβλιοθήκη παραλληλισμού μοντέλων χρησιμοποιεί εσωτερικά το MPI, επομένως για να χρησιμοποιηθεί ο παραλληλισμός μοντέλου, το MPI πρέπει να ενεργοποιηθεί χρησιμοποιώντας την παράμετρο διανομής. "processes_per_host" στον προηγούμενο κώδικα καθορίζει τον αριθμό των διεργασιών που πρέπει να ξεκινήσει το MPI σε κάθε κεντρικό υπολογιστή. Τα προτείνουμε για ανάπτυξη και δοκιμή. Κατά την παραγωγή, μπορείτε να επικοινωνήσετε με την Υποστήριξη AWS εάν ζητήσετε μεγάλη χωρητικότητα GPU. Για περισσότερες πληροφορίες, βλ Εκτελέστε μια εργασία παράλληλης εκπαίδευσης κατανεμημένου μοντέλου SageMaker.

Ο ακόλουθος παράδειγμα σημειωματάριο περιέχει τα πλήρη σενάρια κώδικα.

Στιγμιαίες παρουσίες

Με την επέκταση πλαισίου Hugging Face για το SageMaker Python SDK, μπορούμε επίσης να επωφεληθούμε από την πλήρη διαχείριση Amazon Elastic Compute Cloud (Amazon EC2) Στιγμιαίες παρουσίες και εξοικονομήστε έως και 90% του κόστους εκπαίδευσης μας.

Εάν η εργασία εκπαίδευσής σας δεν ολοκληρωθεί γρήγορα, σας συνιστούμε να τη χρησιμοποιήσετε σημείο ελέγχου με προπόνηση διαχειριζόμενων σποτ, επομένως πρέπει να ορίσετε checkpoint_s3_uri.

Για να χρησιμοποιήσετε Spot Instances με το HuggingFace Εκτιμητής, πρέπει να ορίσουμε το use_spot_instances παράμετρο σε True και ορίστε το δικό σας max_wait και max_run χρόνος. Για περισσότερες πληροφορίες σχετικά με τον κύκλο ζωής της διαχειριζόμενης προπόνησης, βλ Managed Spot Training στο Amazon SageMaker.

Το παρακάτω είναι ένα απόσπασμα κώδικα για τη ρύθμιση ενός Εκτιμητή σημειακής εκπαίδευσης:

from sagemaker.huggingface import HuggingFace # hyperparameters, which are passed into the training job
hyperparameters={'epochs': 1, 'train_batch_size': 32, 'model_name':'distilbert-base-uncased', 'output_dir':'/opt/ml/checkpoints' } # s3 uri where our checkpoints will be uploaded during training
job_name = "using-spot"
checkpoint_s3_uri = f's3://{sess.default_bucket()}/{job_name}/checkpoints' huggingface_estimator = HuggingFace(entry_point='train.py', source_dir='./scripts', instance_type='ml.p3.2xlarge', instance_count=1, base_job_name=job_name, checkpoint_s3_uri=checkpoint_s3_uri, use_spot_instances=True, max_wait=3600, # This should be equal to or greater than max_run in seconds' max_run=1000, # expected max run in seconds role=role, transformers_version='4.6', pytorch_version='1.7', py_version='py36', hyperparameters = hyperparameters)

Ο ακόλουθος σημειωματάριο περιέχει τα πλήρη σενάρια κώδικα.

Συμπέρασμα

Σε αυτήν την ανάρτηση, συζητήσαμε την κατανεμημένη εκπαίδευση των Transformers Hugging Face χρησιμοποιώντας το SageMaker. Αρχικά εξετάσαμε τις περιπτώσεις χρήσης για παραλληλισμό δεδομένων έναντι παραλληλισμού μοντέλων. Ο παραλληλισμός δεδομένων είναι συνήθως πιο κατάλληλος, αλλά δεν περιορίζεται απαραιτήτως όταν η εκπαίδευση είναι περιορισμένη από υπολογισμούς, ενώ μπορείτε να χρησιμοποιήσετε τον παραλληλισμό μοντέλου όταν ένα μοντέλο δεν μπορεί να χωρέσει στη μνήμη που παρέχεται σε έναν μόνο επιταχυντή. Στη συνέχεια δείξαμε πώς να προπονούμαστε και με τις δύο μεθόδους.

Στην περίπτωση χρήσης παραλληλισμού δεδομένων που συζητήσαμε, η εκπαίδευση ενός μοντέλου σε ένα μόνο παράδειγμα p3.2xlarge (με μία μόνο GPU) διαρκεί 4 ώρες και κοστίζει περίπου 15 $ τη στιγμή που γράφεται αυτό το άρθρο. Με τον παραλληλισμό δεδομένων, μπορούμε να εκπαιδεύσουμε το ίδιο μοντέλο σε 24 λεπτά με κόστος 28 $. Αν και το κόστος έχει διπλασιαστεί, αυτό έχει μειώσει τον χρόνο εκπαίδευσης κατά 10. Για μια κατάσταση στην οποία πρέπει να εκπαιδεύσετε πολλά μοντέλα σε σύντομο χρονικό διάστημα, ο παραλληλισμός δεδομένων μπορεί να το επιτρέψει με σχετικά χαμηλή αύξηση κόστους. Όσον αφορά την περίπτωση χρήσης παραλληλισμού μοντέλων, προσθέτει τη δυνατότητα εκπαίδευσης μοντέλων που δεν θα μπορούσαν να είχαν εκπαιδευτεί καθόλου προηγουμένως λόγω περιορισμών υλικού. Και οι δύο λειτουργίες επιτρέπουν νέες ροές εργασίας για επαγγελματίες ML και είναι εύκολα προσβάσιμες μέσω του HuggingFace Εκτιμητής ως μέρος του SageMaker Python SDK. Η ανάπτυξη αυτών των μοντέλων σε φιλοξενούμενα τελικά σημεία ακολουθεί την ίδια διαδικασία όπως και για άλλους Εκτιμητές.

Αυτή η ενοποίηση επιτρέπει άλλες δυνατότητες που αποτελούν μέρος του οικοσυστήματος SageMaker. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε Spot Instances προσθέτοντας μια απλή επισήμανση στον Εκτιμητή για πρόσθετη βελτιστοποίηση κόστους. Ως επόμενο βήμα, μπορείτε να βρείτε και να εκτελέσετε το επίδειξη εκπαίδευσης και παράδειγμα σημειωματάριο.


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

Archis Joglekar είναι αρχιτέκτονας λύσεων συνεργατών AI/ML στην ομάδα Emerging Technologies. Ενδιαφέρεται για την απόδοση, κλιμακούμενη βαθιά μάθηση και τον επιστημονικό υπολογισμό χρησιμοποιώντας τα δομικά στοιχεία στο AWS. Οι προηγούμενες εμπειρίες του κυμαίνονται από την έρευνα της υπολογιστικής φυσικής έως την ανάπτυξη πλατφόρμας μηχανικής μάθησης στον ακαδημαϊκό χώρο, τα εθνικά εργαστήρια και τις νεοφυείς επιχειρήσεις. Ο χρόνος του μακριά από τον υπολογιστή περνάει παίζοντας ποδόσφαιρο και με φίλους και οικογένεια.

Τζέιμς Γι είναι Sr. AI/ML Partner Solutions Architect στην ομάδα Emerging Technologies στο Amazon Web Services. Είναι παθιασμένος με τη συνεργασία με εταιρικούς πελάτες και συνεργάτες για να σχεδιάσει, να αναπτύξει και να κλιμακώσει εφαρμογές AI/ML για να αντλήσει τις επιχειρηματικές τους αξίες. Εκτός δουλειάς, του αρέσει να παίζει ποδόσφαιρο, να ταξιδεύει και να περνά χρόνο με την οικογένειά του.

Philipp Schmid είναι μηχανικός μηχανικής εκμάθησης και επικεφαλής τεχνολογίας στο Hugging Face, όπου ηγείται της συνεργασίας με την ομάδα του Amazon SageMaker. Είναι παθιασμένος με τον εκδημοκρατισμό, τη βελτιστοποίηση και την παραγωγή μοντέλων NLP αιχμής και τη βελτίωση της ευκολίας χρήσης για Deep Learning.

Sylvain Gugger είναι Ερευνητής Μηχανικός στο Hugging Face και ένας από τους κύριους συντηρητές της βιβλιοθήκης Transformers. Λατρεύει το λογισμικό ανοιχτού κώδικα και βοηθά την κοινότητα να το χρησιμοποιήσει.

Jeff Boudier κατασκευάζει προϊόντα στο Hugging Face, δημιουργό των Transformers, της κορυφαίας βιβλιοθήκης ML ανοιχτού κώδικα. Προηγουμένως ο Jeff ήταν συνιδρυτής του Stupeflix, που εξαγοράστηκε από την GoPro, όπου υπηρέτησε ως διευθυντής Διοίκησης Προϊόντων, Μάρκετινγκ Προϊόντων, Επιχειρηματικής Ανάπτυξης και Εταιρικής Ανάπτυξης.

Πηγή: https://aws.amazon.com/blogs/machine-learning/distributed-fine-tuning-of-a-bert-large-model-for-a-question-answering-task-using-hugging-face- transformers-on-amazon-sagemaker/

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

Περισσότερα από Ιστολόγιο μηχανικής εκμάθησης AWS