Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed

Τα τελευταία χρόνια παρατηρείται ραγδαία ανάπτυξη στον τομέα της βαθιάς μάθησης. Αν και το υλικό έχει βελτιωθεί, όπως με την τελευταία γενιά επιταχυντών από την NVIDIA και την Amazon, οι επαγγελματίες της προηγμένης μηχανικής εκμάθησης (ML) εξακολουθούν να αντιμετωπίζουν τακτικά προβλήματα με την ανάπτυξη των μεγάλων μοντέλων βαθιάς εκμάθησης για εφαρμογές όπως η επεξεργασία φυσικής γλώσσας (NLP).

Σε παλαιότερη ανάρτηση, συζητήσαμε δυνατότητες και ρυθμίσεις με δυνατότητα διαμόρφωσης in Ανάπτυξη μοντέλου Amazon SageMaker που μπορεί να κάνει ευκολότερη την εξαγωγή συμπερασμάτων με αυτά τα μεγάλα μοντέλα. Σήμερα, ανακοινώνουμε ένα νέο Amazon Sage Maker Deep Learning Container (DLC) που μπορείτε να χρησιμοποιήσετε για να ξεκινήσετε με μεγάλα μοντέλα συμπερασμάτων μέσα σε λίγα λεπτά. Αυτό DLC συσκευάζει μερικές από τις πιο δημοφιλείς βιβλιοθήκες ανοιχτού κώδικα για παράλληλη εξαγωγή συμπερασμάτων μοντέλων, όπως το DeepSpeed ​​και το Hugging Face Accelerate.

Σε αυτήν την ανάρτηση, χρησιμοποιούμε ένα νέο DLC συμπερασμάτων μεγάλου μοντέλου του SageMaker για να αναπτύξουμε δύο από τα πιο δημοφιλή μεγάλα μοντέλα NLP: BigScience's BLOOM-176B και του Meta OPT-30B από το αποθετήριο Hugging Face. Συγκεκριμένα, χρησιμοποιούμε τεχνικές εξυπηρέτησης και παραλληλισμού τανυστών της Βιβλιοθήκης Deep Java (DJL) από το DeepSpeed ​​για να επιτύχουμε καθυστέρηση 0.1 δευτερολέπτου ανά διακριτικό σε περίπτωση χρήσης δημιουργίας κειμένου.

Μπορείτε να βρείτε τα πλήρη παραδείγματα σημειωματάριων στο δικό μας Αποθετήριο GitHub.

Τεχνικές συμπερασμάτων μεγάλων μοντέλων

Τα μοντέλα γλώσσας έχουν πρόσφατα εκραγεί τόσο σε μέγεθος όσο και σε δημοτικότητα. Με εύκολη πρόσβαση από μοντέλα ζωολογικών κήπων όπως το Hugging Face και βελτιωμένη ακρίβεια και απόδοση σε εργασίες NLP όπως η ταξινόμηση και η δημιουργία κειμένου, οι επαγγελματίες προσεγγίζουν όλο και περισσότερο αυτά τα μεγάλα μοντέλα. Ωστόσο, τα μεγάλα μοντέλα είναι συχνά πολύ μεγάλα για να χωρέσουν στη μνήμη ενός μόνο γκαζιού. Για παράδειγμα, το μοντέλο BLOOM-176B μπορεί να απαιτεί περισσότερα από 350 gigabyte μνήμης επιταχυντή, η οποία υπερβαίνει κατά πολύ τη χωρητικότητα των επιταχυντών υλικού που διατίθενται σήμερα. Αυτό απαιτεί τη χρήση τεχνικών παράλληλων μοντέλων από βιβλιοθήκες όπως το DeepSpeed ​​και το Hugging Face Accelerate για τη διανομή ενός μοντέλου σε πολλούς επιταχυντές για συμπέρασμα. Σε αυτήν την ανάρτηση, χρησιμοποιούμε το Δοχείο συμπερασμάτων μεγάλου μοντέλου SageMaker για τη δημιουργία και σύγκριση της απόδοσης καθυστέρησης και απόδοσης χρησιμοποιώντας αυτές τις δύο βιβλιοθήκες ανοιχτού κώδικα.

Το DeepSpeed ​​και το Accelerate χρησιμοποιούν διαφορετικές τεχνικές για τη βελτιστοποίηση μεγάλων μοντέλων γλώσσας για συμπεράσματα. Η βασική διαφορά είναι του DeepSpeed χρήση βελτιστοποιημένων πυρήνων. Αυτοί οι πυρήνες μπορούν να βελτιώσουν δραματικά την καθυστέρηση συμπερασμάτων μειώνοντας τα σημεία συμφόρησης στο υπολογιστικό γράφημα του μοντέλου. Οι βελτιστοποιημένοι πυρήνες μπορεί να είναι δύσκολο να αναπτυχθούν και είναι συνήθως συγκεκριμένοι για μια συγκεκριμένη αρχιτεκτονική μοντέλου. Το DeepSpeed ​​υποστηρίζει δημοφιλή μεγάλα μοντέλα όπως το OPT και το BLOOM με αυτούς τους βελτιστοποιημένους πυρήνες. Αντίθετα, η βιβλιοθήκη Accelerate του Hugging Face δεν περιλαμβάνει βελτιστοποιημένους πυρήνες τη στιγμή της γραφής. Όπως συζητάμε στην ενότητα των αποτελεσμάτων μας, αυτή η διαφορά είναι υπεύθυνη για μεγάλο μέρος των πλεονεκτημάτων απόδοσης που έχει το DeepSpeed ​​έναντι του Accelerate.

Μια δεύτερη διαφορά μεταξύ DeepSpeed ​​και Accelerate είναι ο τύπος του παραλληλισμού του μοντέλου. Το Accelerate χρησιμοποιεί παραλληλισμό σωλήνων για να χωρίσει ένα μοντέλο μεταξύ των κρυφών επιπέδων ενός μοντέλου, ενώ το DeepSpeed ​​χρησιμοποιεί παραλληλισμό τανυστών για να χωρίσει τα ίδια τα επίπεδα. Ο παραλληλισμός αγωγών είναι μια ευέλικτη προσέγγιση που υποστηρίζει περισσότερους τύπους μοντέλων και μπορεί να βελτιώσει την απόδοση όταν χρησιμοποιούνται μεγαλύτερα μεγέθη παρτίδων. Ο παραλληλισμός τανυστών απαιτεί περισσότερη επικοινωνία μεταξύ των GPU, επειδή τα επίπεδα μοντέλων μπορούν να κατανεμηθούν σε πολλές συσκευές, αλλά μπορεί να βελτιώσει την καθυστέρηση εξαγωγής συμπερασμάτων δεσμεύοντας πολλές GPU ταυτόχρονα. Μπορείτε να μάθετε περισσότερα για τις τεχνικές παραλληλισμού στο Εισαγωγή στον Παραλληλισμό Μοντέλων και Μοντέλο Παραλληλισμός.

Επισκόπηση λύσεων

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

  • Λύσεις κατασκευής και δοκιμής – Δεδομένης της επαναληπτικής φύσης της ανάπτυξης ML, χρειαζόμαστε τη δυνατότητα δημιουργίας, γρήγορης επανάληψης και δοκιμής πώς θα συμπεριφέρεται το τελικό σημείο συμπερασμάτων όταν φιλοξενούνται αυτά τα μοντέλα, συμπεριλαμβανομένης της δυνατότητας γρήγορης αποτυχίας. Αυτά τα μοντέλα μπορούν συνήθως να φιλοξενηθούν μόνο σε μεγαλύτερες παρουσίες όπως το p4dn ή το g5, και δεδομένου του μεγέθους των μοντέλων, μπορεί να χρειαστεί λίγος χρόνος για την περιστροφή μιας παρουσίας συμπερασμάτων και την εκτέλεση οποιασδήποτε δοκιμαστικής επανάληψης. Οι τοπικές δοκιμές συνήθως έχουν περιορισμούς επειδή χρειάζεστε παρόμοιο μέγεθος για δοκιμή και αυτά τα μοντέλα δεν είναι εύκολο να αποκτηθούν.
  • Ανάπτυξη και λειτουργία σε κλίμακα – Τα αρχεία μοντέλων πρέπει να φορτωθούν στις περιπτώσεις συμπερασμάτων, γεγονός που αποτελεί από μόνο του μια πρόκληση δεδομένου του μεγέθους. Το Tar / Un-Tar ως παράδειγμα για το Bloom-176B χρειάζεται περίπου 1 ώρα για τη δημιουργία και άλλη μία ώρα για φόρτωση. Χρειαζόμαστε έναν εναλλακτικό μηχανισμό που θα επιτρέπει την εύκολη πρόσβαση στα αρχεία του μοντέλου.
  • Φόρτωση του μοντέλου ως singleton – Για μια διαδικασία πολλών εργαζομένων, πρέπει να διασφαλίσουμε ότι το μοντέλο θα φορτωθεί μόνο μία φορά, ώστε να μην βρεθούμε σε συνθήκες αγώνα και να μην ξοδέψουμε περαιτέρω περιττούς πόρους. Σε αυτήν την ανάρτηση, δείχνουμε έναν τρόπο φόρτωσης απευθείας από Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3). Ωστόσο, αυτό λειτουργεί μόνο εάν χρησιμοποιήσουμε τις προεπιλεγμένες ρυθμίσεις του DJL. Επιπλέον, οποιαδήποτε κλιμάκωση των τελικών σημείων πρέπει να μπορεί να περιστρέφεται σε λίγα λεπτά, κάτι που απαιτεί επανεξέταση του τρόπου με τον οποίο θα μπορούσαν να φορτωθούν και να διανεμηθούν τα μοντέλα.
  • Σκελετοί διαμοιρασμού – Αυτά τα μοντέλα πρέπει συνήθως να είναι , συνήθως με έναν μηχανισμό παραλληλισμού τανυστών ή με διαμοιρασμό σωλήνων ως τυπικές τεχνικές διαμοιρασμού, και έχουμε προηγμένες έννοιες όπως ο διαμοιρασμός ZeRO πάνω από τον διαμοιρασμό τανυστών. Για περισσότερες πληροφορίες σχετικά με τις τεχνικές διαμοιρασμού, ανατρέξτε στο Μοντέλο Παραλληλισμός. Για να το πετύχουμε αυτό, μπορούμε να έχουμε διάφορους συνδυασμούς και να χρησιμοποιήσουμε πλαίσια από NIVIDIA, DeepSpeed ​​και άλλα. Αυτό απαιτεί τη δυνατότητα δοκιμής BYOC ή χρήσης δοχείων 1P και επανάληψης λύσεων και εκτέλεσης δοκιμών συγκριτικής αξιολόγησης. Μπορεί επίσης να θέλετε να δοκιμάσετε διάφορες επιλογές φιλοξενίας, όπως ασύγχρονη, χωρίς διακομιστή και άλλες.
  • Επιλογή υλικού – Η επιλογή σας στο υλικό καθορίζεται από όλα τα προαναφερθέντα σημεία και περαιτέρω μοτίβα κυκλοφορίας, ανάγκες χρήσης και μεγέθη μοντέλων.

Σε αυτήν την ανάρτηση, χρησιμοποιούμε τους βελτιστοποιημένους πυρήνες και τις τεχνικές παραλληλισμού τανυστών του DeepSpeed ​​για να φιλοξενήσουμε το BLOOM-176B και το OPT-30B στο SageMaker. Συγκρίνουμε επίσης αποτελέσματα από το Accelerate για να δείξουμε τα οφέλη απόδοσης των βελτιστοποιημένων πυρήνων και του παραλληλισμού τανυστών. Για περισσότερες πληροφορίες σχετικά με το DeepSpeed ​​και το Accelerate, ανατρέξτε στο DeepSpeed ​​Inference: Ενεργοποίηση αποτελεσματικής συναγωγής μοντέλων μετασχηματιστών σε πρωτοφανή κλίμακα και Απίστευτα γρήγορο συμπέρασμα BLOOM με DeepSpeed ​​και Accelerate.

Χρησιμοποιούμε το DJLServing ως λύση εξυπηρέτησης μοντέλων σε αυτό το παράδειγμα. Το DJLServing είναι μια καθολική λύση εξυπηρέτησης μοντέλων υψηλής απόδοσης που υποστηρίζεται από τη Βιβλιοθήκη Deep Java (DJL) που είναι αγνωστική στη γλώσσα προγραμματισμού. Για να μάθετε περισσότερα σχετικά με το DJL και το DJLServing, ανατρέξτε στο Αναπτύξτε μεγάλα μοντέλα στο Amazon SageMaker χρησιμοποιώντας παράλληλη εξαγωγή συμπερασμάτων μοντέλων DJLServing και DeepSpeed.

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

Τα παρακάτω βήματα δείχνουν πώς να αναπτύξετε ένα μοντέλο BLOOM-176B στο SageMaker χρησιμοποιώντας το DJLServing και ένα κοντέινερ συμπερασμάτων μεγάλου μοντέλου SageMaker. Το πλήρες παράδειγμα είναι επίσης διαθέσιμο στο δικό μας Αποθετήριο GitHub.

Χρήση της εικόνας DJLServing SageMaker DLC

Χρησιμοποιήστε τον ακόλουθο κώδικα για να χρησιμοποιήσετε την εικόνα DJLServing SageMaker DLC αφού αντικαταστήσετε την περιοχή με τη συγκεκριμένη περιοχή στην οποία εκτελείτε το σημειωματάριο:

763104351884.dkr.ecr..amazonaws.com/djl-inference:0.19.0-deepspeed0.7.3-cu113
# example uri might be like 763104351884.dkr.ecr.us-east-1.amazonaws.com/djl-inference:0.19.0-deepspeed0.7.3-cu113

Δημιουργήστε το αρχείο μοντέλου μας

Αρχικά, δημιουργούμε ένα αρχείο που ονομάζεται serving.properties που περιέχει μόνο μία γραμμή κώδικα. Αυτό λέει στον διακομιστή μοντέλου DJL να χρησιμοποιήσει τη μηχανή DeepSpeed. Το αρχείο περιέχει τον ακόλουθο κώδικα:

engine=DeepSpeed

serving.properties είναι ένα αρχείο που ορίζεται από το DJLServing και χρησιμοποιείται για τη διαμόρφωση των παραμέτρων ανά μοντέλο.

Στη συνέχεια, δημιουργούμε το δικό μας model.py αρχείο, το οποίο καθορίζει τον κωδικό που απαιτείται για τη φόρτωση και μετά την προβολή του μοντέλου. Στον κώδικά μας, διαβάζουμε στο TENSOR_PARALLEL_DEGREE μεταβλητή περιβάλλοντος (η προεπιλεγμένη τιμή είναι 1). Αυτό ορίζει τον αριθμό των συσκευών στις οποίες κατανέμονται οι παράλληλες μονάδες τανυστή. Σημειώστε ότι το DeepSpeed ​​παρέχει μερικούς ενσωματωμένους ορισμούς διαμερισμάτων, συμπεριλαμβανομένου ενός για τα μοντέλα BLOOM. Το χρησιμοποιούμε προσδιορίζοντας replace_method και relpace_with_kernel_inject. Εάν έχετε ένα προσαρμοσμένο μοντέλο και χρειάζεστε το DeepSpeed ​​για αποτελεσματική κατάτμηση, πρέπει να το αλλάξετε relpace_with_kernel_inject προς την false και προσθέστε injection_policy για να λειτουργήσει το διαμέρισμα χρόνου εκτέλεσης. Για περισσότερες πληροφορίες, ανατρέξτε στο Αρχικοποίηση για συμπέρασμα. Για το παράδειγμά μας, χρησιμοποιήσαμε το προκατατμημένο μοντέλο BLOOM στο DeepSpeed.

Δεύτερον, στο model.py αρχείο, φορτώνουμε επίσης το μοντέλο από το Amazon S3 μετά την περιστροφή του τελικού σημείου. Το μοντέλο φορτώνεται στο /tmp χώρο στο κοντέινερ επειδή το SageMaker αντιστοιχίζει το /tmp στο Κατάστημα Amazon Elastic Block τόμος (Amazon EBS) που προσαρτάται όταν καθορίζουμε την παράμετρο δημιουργίας τελικού σημείου VolumeSizeInGB. Για περιπτώσεις όπως το p4dn, που έρχονται προκατασκευασμένα με την παρουσία όγκου, μπορούμε να συνεχίσουμε να αξιοποιούμε το /tmp στο δοχείο. Δείτε τον παρακάτω κώδικα:

from djl_python import Input, Output
import os
import deepspeed
import torch
import torch.distributed as dist
import sys
import subprocess
import time
from glob import glob
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
from transformers.models.opt.modeling_opt import OPTDecoderLayer

predictor = None

def check_config():
    local_rank = os.getenv('LOCAL_RANK')
    
    if not local_rank:
        return False
    return True
    
def get_model():

    if not check_config():
        raise Exception("DJL:DeepSpeed configurations are not default. This code does not support non default configurations") 
    
    tensor_parallel = int(os.getenv('TENSOR_PARALLEL_DEGREE', '1'))
    local_rank = int(os.getenv('LOCAL_RANK', '0'))
    model_dir = "/tmp/model"
    bucket = os.environ.get("MODEL_S3_BUCKET")
    key_prefix = os.environ.get("MODEL_S3_PREFIX")
    print(f"rank: {local_rank}")
    if local_rank == 0:
        if f"{model_dir}/DONE" not in glob(f"{model_dir}/*"):
            print("Starting Model downloading files")
            try:
                proc_run = subprocess.run(
                    ["aws", "s3", "cp", "--recursive", f"s3://{bucket}/{key_prefix}", model_dir]
                )
                print("Model downloading finished")
                # write file when download complete. Could use dist.barrier() but this makes it easier to check if model is downloaded in case of retry
                with open(f"{model_dir}/DONE", "w") as f:
                    f.write("download_complete")
                    
                proc_run.check_returncode() # to throw the error in case there was one
                
            except subprocess.CalledProcessError as e:
                print ( "Model download failed: Error:nreturn code: ", e.returncode, "nOutput: ", e.stderr )
                raise # FAIL FAST  
                               
    dist.barrier()
                
    
    tokenizer = AutoTokenizer.from_pretrained(model_dir)
    
    # has to be FP16 as Int8 model loading not yet supported
    with deepspeed.OnDevice(dtype=torch.float16, device="meta"):
        model = AutoModelForCausalLM.from_config(
            AutoConfig.from_pretrained(model_dir), torch_dtype=torch.bfloat16
        )
    model = model.eval()
    
    model = deepspeed.init_inference(
        model,
        mp_size=tensor_parallel,
        dtype=torch.int8,
        base_dir = model_dir,
        checkpoint=os.path.join(model_dir, "ds_inference_config.json"),
        replace_method='auto',
        replace_with_kernel_inject=True
    )

    model = model.module
    dist.barrier()
    return model, tokenizer

Το DJLServing διαχειρίζεται την εγκατάσταση χρόνου εκτέλεσης σε όλα τα πακέτα pip που ορίζονται στο requirement.txt. Αυτό το αρχείο θα έχει:

awscli
boto3

Έχουμε δημιουργήσει έναν κατάλογο που ονομάζεται code και την model.py, serving.properties, να requirements.txt αρχεία έχουν ήδη δημιουργηθεί σε αυτόν τον κατάλογο. Για να προβάλετε τα αρχεία, μπορείτε να εκτελέσετε τον ακόλουθο κώδικα από το τερματικό:

mkdir -p code
cat code/model.py 
cat code/serving.properties 
cat code/requirements.txt 

Το παρακάτω σχήμα δείχνει τη δομή του model.tar.gz.

Τέλος, δημιουργούμε το αρχείο μοντέλου και το ανεβάζουμε στο Amazon S3:

tar cvfz model.tar.gz code
s3_code_artifact = sess.upload_data("model.tar.gz", bucket, s3_code_prefix)

Λήψη και αποθήκευση του μοντέλου από το Hugging Face (Προαιρετικό)

Παρέχουμε τα βήματα σε αυτήν την ενότητα σε περίπτωση που θέλετε να κάνετε λήψη του μοντέλου στο Amazon S3 και να το χρησιμοποιήσετε από εκεί. Τα βήματα παρέχονται στο αρχείο Jupyter στο GitHub. Το παρακάτω στιγμιότυπο οθόνης δείχνει ένα στιγμιότυπο των βημάτων.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Δημιουργήστε ένα μοντέλο SageMaker

Τώρα δημιουργούμε ένα Μοντέλο SageMaker. Χρησιμοποιούμε το Μητρώο εμπορευματοκιβωτίων Amazon Elastic Εικόνα (Amazon ECR) που παρέχεται από και το τεχνούργημα του μοντέλου από το προηγούμενο βήμα για τη δημιουργία του μοντέλου SageMaker. Στη ρύθμιση μοντέλου, διαμορφώνουμε TENSOR_PARALLEL_DEGREE=8, πράγμα που σημαίνει ότι το μοντέλο είναι χωρισμένο σε 8 GPU. Δείτε τον παρακάτω κώδικα:

PrimaryContainer={
        "Image": inference_image_uri,
        "ModelDataUrl": s3_code_artifact,
        "Environment": {
            "MODEL_S3_BUCKET": bucket,
            "MODEL_S3_PREFIX": s3_model_prefix,
            "TENSOR_PARALLEL_DEGREE": "8",
},

Αφού εκτελέσετε το προηγούμενο κελί στο αρχείο Jupyter, βλέπετε την έξοδο παρόμοια με την ακόλουθη:

{
    "ModelArn": "arn:aws:sagemaker:us-east-1::model/bloom-djl-ds-"
}

Δημιουργήστε ένα τελικό σημείο του SageMaker

Μπορείτε να χρησιμοποιήσετε οποιεσδήποτε παρουσίες με πολλές GPU για δοκιμές. Σε αυτήν την επίδειξη, χρησιμοποιούμε μια παρουσία p4d.24xlarge. Στον παρακάτω κώδικα, σημειώστε πώς ορίζουμε το ModelDataDownloadTimeoutInSeconds, ContainerStartupHealthCheckTimeoutInSeconds, να VolumeSizeInGB παραμέτρους για την προσαρμογή του μεγάλου μεγέθους μοντέλου. ο VolumeSizeInGB Η παράμετρος ισχύει για παρουσίες GPU που υποστηρίζουν το συνημμένο τόμο EBS.

endpoint_config_response = sm_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "VariantName": "variant1",
            "ModelName": model_name,
            "InstanceType": "ml.p4d.24xlarge",
            "InitialInstanceCount": 1,
            #"VolumeSizeInGB" : 200,
            "ModelDataDownloadTimeoutInSeconds": 2400,
            "ContainerStartupHealthCheckTimeoutInSeconds": 2400,
        },
    ],
)'

Τέλος, δημιουργούμε ένα τελικό σημείο του SageMaker:

create_endpoint_response = sm_client.create_endpoint(
    EndpointName=f"{endpoint_name}", EndpointConfigName=endpoint_config_name
)

Το βλέπετε εκτυπωμένο στον παρακάτω κώδικα:

{
    "EndpointArn": "arn:aws:sagemaker:us-east-1::endpoint/bloom-djl-ds-"
}

Η έναρξη του τελικού σημείου μπορεί να διαρκέσει λίγο. Μπορείτε να δοκιμάσετε μερικές ακόμη φορές εάν συναντήσετε το InsufficientInstanceCapacity σφάλμα ή μπορείτε να υποβάλετε ένα αίτημα στο AWS για να αυξήσετε το όριο στον λογαριασμό σας.

Ρύθμιση απόδοσης

Εάν σκοπεύετε να χρησιμοποιήσετε αυτήν την ανάρτηση και το συνοδευτικό σημειωματάριο με διαφορετικό μοντέλο, ίσως θέλετε να εξερευνήσετε ορισμένες από τις ρυθμιζόμενες παραμέτρους που προσφέρουν το SageMaker, το DeepSpeed ​​και το DJL. Ο επαναληπτικός πειραματισμός με αυτές τις παραμέτρους μπορεί να έχει σημαντικό αντίκτυπο στην καθυστέρηση, την απόδοση και το κόστος του μεγάλου μοντέλου που φιλοξενείτε. Για να μάθετε περισσότερα σχετικά με τις παραμέτρους συντονισμού, όπως ο αριθμός εργαζομένων, ο βαθμός παραλληλισμού τανυστών, το μέγεθος της ουράς εργασίας και άλλα, ανατρέξτε στο Ρυθμίσεις υπηρεσίας DJL και Αναπτύξτε μεγάλα μοντέλα στο Amazon SageMaker χρησιμοποιώντας παράλληλη εξαγωγή συμπερασμάτων μοντέλων DJLServing και DeepSpeed.

Αποτελέσματα

Σε αυτήν την ανάρτηση, χρησιμοποιήσαμε το DeepSpeed ​​για να φιλοξενήσουμε το BLOOM-176B και το OPT-30B σε παρουσίες SageMaker ML. Ο παρακάτω πίνακας συνοψίζει τα αποτελέσματα απόδοσής μας, συμπεριλαμβανομένης μιας σύγκρισης με το Hugging Face's Accelerate. Η καθυστέρηση αντικατοπτρίζει τον αριθμό των χιλιοστών του δευτερολέπτου που χρειάζονται για να παραχθεί μια συμβολοσειρά 256-token τέσσερις φορές (batch_size=4) από το μοντέλο. Η απόδοση αντικατοπτρίζει τον αριθμό των διακριτικών που παράγονται ανά δευτερόλεπτο για κάθε δοκιμή. Για το Hugging Face Accelerate, χρησιμοποιήσαμε την προεπιλεγμένη φόρτωση της βιβλιοθήκης με αντιστοίχιση μνήμης GPU. Για το DeepSpeed, χρησιμοποιήσαμε τον ταχύτερο μηχανισμό φόρτωσης σημείων ελέγχου.

Μοντέλο Βιβλιοθήκη Ακρίβεια μοντέλου Μέγεθος παρτίδας Παράλληλο Πτυχίο Παράδειγμα Ώρα για φόρτωση
(Ων)
Latency (Έξοδος διακριτικού 4 x 256) .
. . . . . . . P50
(Κυρία)
P90
(Κυρία)
P99
(Κυρία)
Διακίνηση
(κουπόνια/δευτ.)
BLOOM-176B Βαθιά ταχύτητα INT8 4 8 p4d.24xlarge 74.9 27,564 27,580 32,179 37.1
BLOOM-176B Επιτάχυνση INT8 4 8 p4d.24xlarge 669.4 92,694 92,735 103,292 11.0
OPT-30B Βαθιά ταχύτητα FP16 4 4 g5.24xlarge 239.4 11,299 11,302 11,576 90.6
OPT-30B Επιτάχυνση FP16 4 4 g5.24xlarge 533.8 63,734 63,737 67,605 16.1

Από την άποψη του λανθάνοντος χρόνου, το DeepSpeed ​​είναι περίπου 3.4 φορές ταχύτερο για το BLOOM-176B και 5.6 φορές ταχύτερο για το OPT-30B από το Accelerate. Οι βελτιστοποιημένοι πυρήνες του DeepSpeed ​​είναι υπεύθυνοι για μεγάλο μέρος αυτής της διαφοράς στην καθυστέρηση. Λαμβάνοντας υπόψη αυτά τα αποτελέσματα, συνιστούμε να χρησιμοποιήσετε το DeepSpeed ​​over Accelerate εάν υποστηρίζεται το μοντέλο της επιλογής σας.

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

Αυτά τα αποτελέσματα καταδεικνύουν επίσης τη διαφορά στην καθυστέρηση και την απόδοση διαφορετικών μεγεθών μοντέλων. Στις δοκιμές μας, το OPT-30B παράγει 2.4 φορές τον αριθμό των διακριτικών ανά μονάδα χρόνου από το BLOOM-176B σε έναν τύπο παρουσίας που είναι περισσότερο από τρεις φορές φθηνότερος. Με βάση την τιμή ανά μονάδα απόδοσης, το OPT-30B σε μια παρουσία g5.24xl είναι 8.9 φορές καλύτερο από το BLOOM-176B σε μια παρουσία p4d.24xl. Εάν έχετε αυστηρούς περιορισμούς καθυστέρησης, απόδοσης ή κόστους, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε το μικρότερο δυνατό μοντέλο που θα εξακολουθεί να ικανοποιεί λειτουργικές απαιτήσεις.

εκκαθάριση

Ως μέρος των βέλτιστων πρακτικών, συνιστάται πάντα η διαγραφή περιπτώσεων αδράνειας. Ο παρακάτω κώδικας σάς δείχνει πώς να διαγράψετε τις παρουσίες.

# - Delete the end point
sm_client.delete_endpoint(EndpointName=endpoint_name)

# - In case the end point failed we still want to delete the model
sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name)
sm_client.delete_model(ModelName=model_name)

Προαιρετικά διαγράψτε το σημείο ελέγχου μοντέλου από το S3 σας

!aws s3 rm --recursive s3:///{s3_model_prefix}

Συμπέρασμα

Σε αυτήν την ανάρτηση, δείξαμε πώς να χρησιμοποιείτε δοχεία συμπερασμάτων μεγάλων μοντέλων του SageMaker για να φιλοξενήσετε δύο μεγάλα μοντέλα γλώσσας, το BLOOM-176B και το OPT-30B. Χρησιμοποιήσαμε τις παράλληλες τεχνικές του μοντέλου DeepSpeed ​​με πολλαπλές GPU σε μία μόνο παρουσία του SageMaker ML.

Για περισσότερες λεπτομέρειες σχετικά με το Amazon SageMaker και τις μεγάλες δυνατότητες συμπερασμάτων μοντέλων του, ανατρέξτε στο Το Amazon SageMaker υποστηρίζει πλέον την ανάπτυξη μεγάλων μοντέλων μέσω ρυθμιζόμενου μεγέθους όγκου και ορίων χρονικού ορίου και Συμπεράσματα σε πραγματικό χρόνο.


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

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Σάιμον Ζαμαρίν είναι ένας αρχιτέκτονας λύσεων AI / ML του οποίου η κύρια εστίαση είναι να βοηθά τους πελάτες να εξάγουν αξία από τα στοιχεία τους. Στον ελεύθερο χρόνο του, ο Simon απολαμβάνει να ξοδεύει χρόνο με την οικογένεια, να διαβάζει επιστημονικά και να εργάζεται σε διάφορα έργα σπιτιού DIY.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται. Ρούπιντερ Γκρέουαλ είναι Sr Ai/ML Specialist Solutions Architect με AWS. Επί του παρόντος εστιάζει στην εξυπηρέτηση μοντέλων και MLOps στο SageMaker. Πριν από αυτόν τον ρόλο έχει εργαστεί ως μηχανικός μηχανικής εκμάθησης μοντέλων κατασκευής και φιλοξενίας. Εκτός δουλειάς του αρέσει να παίζει τένις και να κάνει ποδήλατο σε ορεινά μονοπάτια.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Frank Liu είναι Μηχανικός Λογισμικού για AWS Deep Learning. Επικεντρώνεται στην κατασκευή καινοτόμων εργαλείων βαθιάς μάθησης για μηχανικούς και επιστήμονες λογισμικού. Στον ελεύθερο χρόνο του, απολαμβάνει πεζοπορία με φίλους και συγγενείς.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Άλαν Ταν είναι Ανώτερος Διευθυντής Προϊόντων με το SageMaker να ηγείται των προσπαθειών για εξαγωγή συμπερασμάτων μεγάλων μοντέλων. Είναι παθιασμένος με την εφαρμογή της Μηχανικής Μάθησης στον τομέα του Analytics. Εκτός δουλειάς, απολαμβάνει την ύπαιθρο.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Dhawal Patel είναι Κύριος Αρχιτέκτονας Μηχανικής Μάθησης στο AWS. Έχει συνεργαστεί με οργανισμούς που κυμαίνονται από μεγάλες επιχειρήσεις έως νεοφυείς επιχειρήσεις μεσαίου μεγέθους για προβλήματα που σχετίζονται με τους κατανεμημένους υπολογιστές και την Τεχνητή Νοημοσύνη. Εστιάζεται στη Deep Learning, συμπεριλαμβανομένων των τομέων NLP και Computer Vision. Βοηθά τους πελάτες να επιτύχουν συμπεράσματα μοντέλων υψηλής απόδοσης στο SageMaker.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Τσινγκ Λαν είναι Μηχανικός Ανάπτυξης Λογισμικού στην AWS. Έχει εργαστεί σε πολλά προκλητικά προϊόντα στο Amazon, συμπεριλαμβανομένων λύσεων συμπερασμάτων ML υψηλής απόδοσης και συστήματος καταγραφής υψηλής απόδοσης. Η ομάδα του Qing κυκλοφόρησε με επιτυχία το πρώτο μοντέλο δισεκατομμυρίων παραμέτρων στο Amazon Advertising με πολύ χαμηλό λανθάνοντα χρόνο που απαιτείται. Ο Qing έχει εις βάθος γνώση σχετικά με τη βελτιστοποίηση της υποδομής και την επιτάχυνση Deep Learning.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Κινγκγουέι Λι είναι ειδικός μηχανικής μάθησης στο Amazon Web Services. Έλαβε το διδακτορικό του στην Έρευνα Επιχειρήσεων αφού έσπασε τον λογαριασμό επιχορήγησης έρευνας του συμβούλου του και απέτυχε να παραδώσει το βραβείο Νόμπελ που υποσχέθηκε. Επί του παρόντος, βοηθά τους πελάτες του κλάδου των χρηματοοικονομικών υπηρεσιών και των ασφαλιστικών εταιρειών να δημιουργήσουν λύσεις μηχανικής μάθησης στο AWS. Στον ελεύθερο χρόνο του, του αρέσει να διαβάζει και να διδάσκει.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Robert Van Dusen είναι Ανώτερος Διευθυντής Προϊόντων με το Amazon SageMaker. Είναι επικεφαλής της βελτιστοποίησης μοντέλων βαθιάς μάθησης για εφαρμογές όπως η εξαγωγή συμπερασμάτων μεγάλων μοντέλων.

Αναπτύξτε το BLOOM-176B και το OPT-30B στο Amazon SageMaker με μεγάλα μοντέλα συμπερασμάτων Deep Learning Containers και DeepSpeed ​​PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Σιντάρθ Βενκατεσάν είναι Μηχανικός Λογισμικού στο AWS Deep Learning. Επί του παρόντος εστιάζει στην κατασκευή λύσεων για εξαγωγή συμπερασμάτων μεγάλων μοντέλων. Πριν από το AWS εργάστηκε στον οργανισμό Amazon Grocery δημιουργώντας νέες δυνατότητες πληρωμής για πελάτες σε όλο τον κόσμο. Εκτός δουλειάς, του αρέσει το σκι, η ύπαιθρος και να παρακολουθεί αθλήματα.

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

Περισσότερα από Μηχανική εκμάθηση AWS