Εκτελέστε τη δημιουργία κειμένου με μοντέλα GPT και Bloom στο Amazon SageMaker JumpStart

Τον Δεκέμβριο του 2020, ανακοίνωσε η AWS τη γενική διαθεσιμότητα Amazon SageMaker JumpStart, μια ικανότητα του Amazon Sage Maker που σας βοηθά να ξεκινήσετε γρήγορα και εύκολα με τη μηχανική εκμάθηση (ML). Το JumpStart παρέχει τη λεπτή ρύθμιση με ένα κλικ και την ανάπτυξη μιας μεγάλης ποικιλίας προεκπαιδευμένων μοντέλων σε δημοφιλείς εργασίες ML, καθώς και μια επιλογή λύσεων από άκρο σε άκρο που λύνουν κοινά επιχειρηματικά προβλήματα. Αυτά τα χαρακτηριστικά αφαιρούν τη βαριά ανύψωση από κάθε βήμα της διαδικασίας ML, διευκολύνοντας την ανάπτυξη μοντέλων υψηλής ποιότητας και μειώνοντας το χρόνο μέχρι την ανάπτυξη.

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

Σε αυτήν την ανάρτηση, παρέχουμε μια αναλυτική περιγραφή του τρόπου ανάπτυξης προεκπαιδευμένων μοντέλων δημιουργίας κειμένου. Εξερευνούμε δύο τρόπους για να λάβουμε το ίδιο αποτέλεσμα: μέσω της γραφικής διεπαφής του JumpStart on Στούντιο Amazon SageMaker, και μέσω προγραμματισμού JumpStart API.

Εάν θέλετε να μεταβείτε κατευθείαν στον κώδικα του JumpStart API που εξετάζουμε σε αυτήν την ανάρτηση, μπορείτε να ανατρέξετε στο ακόλουθο δείγμα σημειωματάριου Jupyter: Εισαγωγή στο JumpStart – Δημιουργία κειμένου.

Επισκόπηση JumpStart

Το JumpStart σάς βοηθά να ξεκινήσετε με μοντέλα ML για μια ποικιλία εργασιών χωρίς να γράψετε ούτε μια γραμμή κώδικα. Επί του παρόντος, το JumpStart σάς δίνει τη δυνατότητα να κάνετε τα εξής:

  • Αναπτύξτε προεκπαιδευμένα μοντέλα για κοινές εργασίες ML – Το JumpStart σάς δίνει τη δυνατότητα να αντιμετωπίζετε κοινές εργασίες ML χωρίς προσπάθεια ανάπτυξης, παρέχοντας εύκολη ανάπτυξη μοντέλων προεκπαιδευμένων σε μεγάλα, δημόσια διαθέσιμα σύνολα δεδομένων. Η ερευνητική κοινότητα ML έχει καταβάλει μεγάλη προσπάθεια για να καταστήσει δημόσια την πλειονότητα των μοντέλων που αναπτύχθηκαν πρόσφατα για χρήση. Το JumpStart φιλοξενεί μια συλλογή με περισσότερα από 300 μοντέλα, που εκτείνονται στις 15 πιο δημοφιλείς εργασίες ML, όπως η ανίχνευση αντικειμένων, η ταξινόμηση κειμένου και η δημιουργία κειμένου, καθιστώντας εύκολη τη χρήση τους για αρχάριους. Αυτά τα μοντέλα προέρχονται από δημοφιλείς κόμβους μοντέλων όπως το TensorFlow, το PyTorch, το Hugging Face και το MXNet.
  • Βελτιώστε τα προεκπαιδευμένα μοντέλα – Το JumpStart σάς επιτρέπει να τελειοποιήσετε τα προεκπαιδευμένα μοντέλα χωρίς να χρειάζεται να γράψετε τον δικό σας αλγόριθμο εκπαίδευσης. Στην ML, ονομάζεται η ικανότητα μεταφοράς της γνώσης που μαθαίνεται σε έναν τομέα σε έναν άλλο τομέα μεταφορά της μάθησης. Μπορείτε να χρησιμοποιήσετε την εκμάθηση μεταφοράς για να δημιουργήσετε ακριβή μοντέλα στα μικρότερα σύνολα δεδομένων σας, με πολύ χαμηλότερο κόστος εκπαίδευσης από αυτά που σχετίζονται με την εκπαίδευση του αρχικού μοντέλου. Το JumpStart περιλαμβάνει επίσης δημοφιλείς αλγόριθμους εκπαίδευσης που βασίζονται σε LightGBM, CatBoost, XGBoost και Scikit-learn, τους οποίους μπορείτε να εκπαιδεύσετε από την αρχή για παλινδρόμηση και ταξινόμηση σε πίνακα.
  • Χρησιμοποιήστε προκατασκευασμένες λύσεις – Το JumpStart παρέχει ένα σύνολο 17 λύσεων για κοινές περιπτώσεις χρήσης ML, όπως πρόβλεψη ζήτησης και βιομηχανικές και οικονομικές εφαρμογές, τις οποίες μπορείτε να αναπτύξετε με λίγα μόνο κλικ. Οι λύσεις είναι εφαρμογές ML από άκρο σε άκρο που συνδυάζουν διάφορες υπηρεσίες AWS για να λύσουν μια συγκεκριμένη περίπτωση επιχειρηματικής χρήσης. Χρησιμοποιούν AWS CloudFormation πρότυπα και αρχιτεκτονικές αναφοράς για γρήγορη ανάπτυξη, πράγμα που σημαίνει ότι είναι πλήρως προσαρμόσιμα.
  • Ανατρέξτε σε παραδείγματα σημειωματάριων για αλγόριθμους SageMaker – Το SageMaker παρέχει μια σουίτα ενσωματωμένων αλγορίθμων για να βοηθήσει τους επιστήμονες δεδομένων και τους επαγγελματίες ML να ξεκινήσουν με την εκπαίδευση και την ανάπτυξη μοντέλων ML γρήγορα. Το JumpStart παρέχει δείγματα σημειωματάριων που μπορείτε να χρησιμοποιήσετε για να χρησιμοποιήσετε γρήγορα αυτούς τους αλγόριθμους.
  • Δείτε εκπαιδευτικά βίντεο και ιστολόγια – Το JumpStart παρέχει επίσης πολλές αναρτήσεις ιστολογίου και βίντεο που σας διδάσκουν πώς να χρησιμοποιείτε διαφορετικές λειτουργίες στο SageMaker.

Το JumpStart δέχεται προσαρμοσμένες ρυθμίσεις VPC και Υπηρεσία διαχείρισης κλειδιών AWS κλειδιά κρυπτογράφησης (AWS KMS), ώστε να μπορείτε να χρησιμοποιείτε τα διαθέσιμα μοντέλα και λύσεις με ασφάλεια στο εταιρικό σας περιβάλλον. Μπορείτε να μεταβιβάσετε τις ρυθμίσεις ασφαλείας σας στο JumpStart μέσα στο Studio ή μέσω του SageMaker Python SDK.

Δημιουργία κειμένου, GPT-2 και Bloom

Η δημιουργία κειμένου είναι το καθήκον της δημιουργίας κειμένου που είναι ρεαλιστικό και δεν φαίνεται να διακρίνεται από το ανθρώπινο κείμενο. Είναι επίσης γνωστό ως δημιουργία φυσικής γλώσσας.

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

Το Bloom είναι επίσης ένα μοντέλο παραγωγής κειμένου που βασίζεται σε μετασχηματιστή και έχει εκπαιδευτεί παρόμοια με το GPT-2. Ωστόσο, το Bloom είναι προεκπαιδευμένο σε 46 διαφορετικές γλώσσες και 13 γλώσσες προγραμματισμού. Το παρακάτω είναι ένα παράδειγμα εκτέλεσης δημιουργίας κειμένου με το μοντέλο Bloom:

Input: "Some people like dogs, some people like cats"
Output: "Some people like dogs, some people like cats some people like birds, some people like fish,"

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

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

  1. Αποκτήστε πρόσβαση στο JumpStart μέσω της διεπαφής χρήστη του Studio για ανάπτυξη και εκτέλεση συμπερασμάτων στο προεκπαιδευμένο μοντέλο.
  2. Χρησιμοποιήστε το JumpStart μέσω προγραμματισμού με το SageMaker Python SDK για να αναπτύξετε το προεκπαιδευμένο μοντέλο και να εκτελέσετε συμπεράσματα.

Αποκτήστε πρόσβαση στο JumpStart μέσω του Studio UI και εκτελέστε συμπεράσματα με ένα προεκπαιδευμένο μοντέλο

Σε αυτήν την ενότητα, παρουσιάζουμε πώς να εκπαιδεύσετε και να αναπτύξετε μοντέλα JumpStart μέσω της διεπαφής χρήστη του Studio.

Το παρακάτω βίντεο σάς δείχνει πώς να βρείτε ένα προεκπαιδευμένο μοντέλο δημιουργίας κειμένου στο JumpStart και να το αναπτύξετε. Η σελίδα μοντέλου περιέχει πολύτιμες πληροφορίες σχετικά με το μοντέλο και τον τρόπο χρήσης του. Μπορείτε να αναπτύξετε οποιοδήποτε από τα προεκπαιδευμένα μοντέλα που είναι διαθέσιμα στο JumpStart. Για συμπέρασμα, επιλέγουμε τον τύπο στιγμιότυπου ml.p3.2xlarge, επειδή παρέχει την επιτάχυνση της GPU που απαιτείται για χαμηλή καθυστέρηση συμπερασμάτων σε χαμηλή τιμή. Αφού διαμορφώσετε την παρουσία φιλοξενίας του SageMaker, επιλέξτε Ανάπτυξη. Ενδέχεται να χρειαστούν 20–25 λεπτά μέχρι να τεθεί σε λειτουργία το μόνιμο τελικό σημείο σας.

Μόλις το τελικό σημείο σας είναι λειτουργικό, είναι έτοιμο να απαντήσει σε αιτήματα συμπερασμάτων!

Για να επιταχύνετε το χρόνο σας για συμπέρασμα, το JumpStart παρέχει ένα δείγμα σημειωματάριου που σας δείχνει πώς να εκτελείτε συμπεράσματα στο πρόσφατα αναπτυγμένο τελικό σημείο σας. Επιλέγω Ανοίξτε το Σημειωματάριο υπό Χρησιμοποιήστε το Endpoint από το Studio.

Χρησιμοποιήστε το JumpStart μέσω προγραμματισμού με το SageMaker SDK

Στην προηγούμενη ενότητα, δείξαμε πώς μπορείτε να χρησιμοποιήσετε τη διεπαφή χρήστη JumpStart για να αναπτύξετε ένα προεκπαιδευμένο μοντέλο διαδραστικά, σε λίγα μόνο κλικ. Ωστόσο, μπορείτε επίσης να χρησιμοποιήσετε τα μοντέλα του JumpStart μέσω προγραμματισμού, χρησιμοποιώντας API που είναι ενσωματωμένα στο SageMaker SDK.

Σε αυτήν την ενότητα, παρουσιάζουμε ένα γρήγορο παράδειγμα για το πώς μπορείτε να αναπαράγετε την προηγούμενη διαδικασία με το SageMaker SDK. Επιλέγουμε ένα κατάλληλο προεκπαιδευμένο μοντέλο στο JumpStart, αναπτύσσουμε αυτό το μοντέλο σε ένα τελικό σημείο του SageMaker και εκτελούμε συμπέρασμα στο τελικό σημείο που έχει αναπτυχθεί. Όλα τα βήματα σε αυτήν την επίδειξη είναι διαθέσιμα στο συνοδευτικό σημειωματάριο Εισαγωγή στο JumpStart – Δημιουργία κειμένου.

Αναπτύξτε το προεκπαιδευμένο μοντέλο

Το SageMaker είναι μια πλατφόρμα που χρησιμοποιεί εκτενώς τα κοντέινερ Docker για εργασίες κατασκευής και χρόνου εκτέλεσης. Το JumpStart χρησιμοποιεί το διαθέσιμο συγκεκριμένο πλαίσιο SageMaker Deep Learning Containers (DLCs). Αρχικά λαμβάνουμε τυχόν πρόσθετα πακέτα, καθώς και σενάρια για τη διαχείριση της εκπαίδευσης και των συμπερασμάτων για την επιλεγμένη εργασία. Τέλος, τα προεκπαιδευμένα τεχνουργήματα μοντέλων παραλαμβάνονται ξεχωριστά model_uris, το οποίο παρέχει ευελιξία στην πλατφόρμα. Μπορείτε να χρησιμοποιήσετε οποιονδήποτε αριθμό μοντέλων προεκπαιδευμένων για την ίδια εργασία με ένα μόνο σενάριο συμπερασμάτων. Δείτε τον παρακάτω κώδικα:

model_id, model_version = "huggingface-textgeneration-bloom-560m", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

Το Bloom είναι ένα πολύ μεγάλο μοντέλο και μπορεί να χρειαστούν έως και 20-25 λεπτά για να αναπτυχθεί. Μπορείτε επίσης να χρησιμοποιήσετε ένα μικρότερο μοντέλο όπως το GPT-2. Για να αναπτύξετε ένα προεκπαιδευμένο μοντέλο GPT-2, μπορείτε να ορίσετε model_id = huggingface-textgeneration-gpt2. Για μια λίστα με άλλα διαθέσιμα μοντέλα στο JumpStart, ανατρέξτε στο Διαθέσιμος πίνακας μοντέλων JumpStart.

Στη συνέχεια, τροφοδοτούμε τους πόρους σε ένα Μοντέλο SageMaker παράδειγμα και αναπτύξτε ένα τελικό σημείο:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

Αφού αναπτυχθεί το μοντέλο μας, μπορούμε να λάβουμε προβλέψεις από αυτό σε πραγματικό χρόνο!

Εκτέλεση συμπερασμάτων

Το παρακάτω απόσπασμα κώδικα σάς δίνει μια γεύση για το πώς μοιάζουν οι έξοδοι. Για την αποστολή αιτημάτων σε ένα αναπτυγμένο μοντέλο, το κείμενο εισαγωγής πρέπει να παρέχεται σε α utf-8 κωδικοποιημένη μορφή.

def query(model_predictor, text):
    """Query the model predictor."""

    encoded_text = json.dumps(text).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_text,
        {
            "ContentType": "application/x-text",
            "Accept": "application/json",
        },
    )
    return query_response

Η απόκριση τελικού σημείου είναι ένα αντικείμενο JSON που περιέχει το κείμενο εισόδου ακολουθούμενο από το κείμενο που δημιουργείται:

def parse_response(query_response):
    """Parse response and return the generated text."""

    model_predictions = json.loads(query_response)
    generated_text = model_predictions["generated_text"]
    return generated_text
    
text = "Some people like dogs, some people like cats"
query_response = query(model_predictor, text)
parse_response(query_response)

Η παραγωγή μας είναι η εξής:

"Some people like dogs, some people like cats some people like birds, some people like fish,"

Συμπέρασμα

Σε αυτήν την ανάρτηση, δείξαμε πώς να αναπτύξετε ένα προεκπαιδευμένο μοντέλο δημιουργίας κειμένου χρησιμοποιώντας το JumpStart. Μπορείτε να το πετύχετε χωρίς να χρειάζεται να γράψετε κώδικα. Δοκιμάστε τη λύση μόνοι σας και στείλτε μας τα σχόλιά σας. Για να μάθετε περισσότερα σχετικά με το JumpStart και πώς μπορείτε να χρησιμοποιήσετε προεκπαιδευμένα μοντέλα ανοιχτού κώδικα για μια ποικιλία άλλων εργασιών ML, δείτε τα παρακάτω Βίντεο AWS re:Invent 2020.


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

Εκτελέστε τη δημιουργία κειμένου με μοντέλα GPT και Bloom στο Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Δρ Vivek Madan είναι Εφαρμοσμένος Επιστήμονας με την ομάδα Amazon SageMaker JumpStart. Πήρε το διδακτορικό του από το Πανεπιστήμιο του Ιλινόις στο Urbana-Champaign και ήταν μεταδιδακτορικός ερευνητής στο Georgia Tech. Είναι ενεργός ερευνητής στη μηχανική μάθηση και στο σχεδιασμό αλγορίθμων και έχει δημοσιεύσει εργασίες σε συνέδρια EMNLP, ICLR, COLT, FOCS και SODA.

Εκτελέστε τη δημιουργία κειμένου με μοντέλα GPT και Bloom στο Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Santosh Kulkarni είναι αρχιτέκτονας Enterprise Solutions στην Amazon Web Services που συνεργάζεται με πελάτες αθλητικών ειδών στην Αυστραλία. Είναι παθιασμένος με τη δημιουργία κατανεμημένων εφαρμογών μεγάλης κλίμακας για την επίλυση επιχειρηματικών προβλημάτων χρησιμοποιώντας τις γνώσεις του σε AI/ML, μεγάλα δεδομένα και ανάπτυξη λογισμικού.

Εκτελέστε τη δημιουργία κειμένου με μοντέλα GPT και Bloom στο Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Δρ Ashish Khetan είναι Ανώτερος Εφαρμοσμένος Επιστήμονας με ενσωματωμένους αλγόριθμους του Amazon SageMaker και βοηθά στην ανάπτυξη αλγορίθμων μηχανικής μάθησης. Πήρε το διδακτορικό του από το University of Illinois Urbana Champaign. Είναι ενεργός ερευνητής στη μηχανική μάθηση και στα στατιστικά συμπεράσματα και έχει δημοσιεύσει πολλές εργασίες σε συνέδρια NeurIPS, ICML, ICLR, JMLR, ACL και EMNLP.

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

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