Ροή απαντήσεων μοντέλων μεγάλων γλωσσών στο Amazon SageMaker JumpStart | Υπηρεσίες Ιστού της Amazon

Ροή απαντήσεων μοντέλων μεγάλων γλωσσών στο Amazon SageMaker JumpStart | Υπηρεσίες Ιστού της Amazon

Είμαστε ενθουσιασμένοι που το ανακοινώσαμε Amazon SageMaker JumpStart μπορεί τώρα να μεταδώσει τις απαντήσεις συμπερασμάτων του μοντέλου μεγάλης γλώσσας (LLM). Token streaming σάς επιτρέπει να βλέπετε την έξοδο απόκρισης του μοντέλου καθώς δημιουργείται αντί να περιμένετε τα LLM να ολοκληρώσουν τη δημιουργία απόκρισης προτού διατεθεί για χρήση ή προβολή. Η δυνατότητα ροής στο SageMaker JumpStart μπορεί να σας βοηθήσει να δημιουργήσετε εφαρμογές με καλύτερη εμπειρία χρήστη, δημιουργώντας μια αντίληψη χαμηλής καθυστέρησης στον τελικό χρήστη.

Σε αυτήν την ανάρτηση, περιγράφουμε τον τρόπο ανάπτυξης και ροής της απάντησης από το a Μοντέλο Falcon 7B Instruct τελικό σημείο

Κατά τη στιγμή της σύνταξης αυτού του άρθρου, τα ακόλουθα LLM που είναι διαθέσιμα στο SageMaker JumpStart υποστηρίζουν ροή:

  • Mistral AI 7B, Mistral AI 7B Instruct
  • Falcon 180B, Falcon 180B Chat
  • Falcon 40B, Falcon 40B Instruct
  • Falcon 7B, Falcon 7B Instruct
  • Rinna Japanese GPT NeoX 4B Instruction PPO
  • Rinna Japanese GPT NeoX 3.6B Instruction PPO

Για να ελέγξετε για ενημερώσεις στη λίστα μοντέλων που υποστηρίζουν ροή στο SageMaker JumpStart, αναζητήστε το "huggingface-llm" στο Ενσωματωμένοι αλγόριθμοι με προεκπαιδευμένο πίνακα μοντέλων.

Σημειώστε ότι μπορείτε να χρησιμοποιήσετε το λειτουργία ροής of Amazon Sage Maker φιλοξενία εκτός συσκευασίας για οποιοδήποτε μοντέλο που αναπτύσσεται χρησιμοποιώντας το SageMaker TGI Deep Learning Container (DLC) όπως περιγράφεται στο Ανακοινώνουμε την κυκλοφορία των νέων κοντέινερ Hugging Face LLM Inference στο Amazon SageMaker.

Μοντέλα θεμελίωσης στο SageMaker

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

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

Token streaming

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

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

Απόκριση με No Steaming Απάντηση με ροή

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

Για αυτήν την ανάρτηση, χρησιμοποιούμε το μοντέλο Falcon 7B Instruct για να παρουσιάσουμε τη δυνατότητα ροής SageMaker JumpStart.

Μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα για να βρείτε άλλα μοντέλα στο SageMaker JumpStart που υποστηρίζουν ροή:

from sagemaker.jumpstart.notebook_utils import list_jumpstart_models
from sagemaker.jumpstart.filters import And filter_value = And("task == llm", "framework == huggingface")
model_ids = list_jumpstart_models(filter=filter_value)
print(model_ids)

Λαμβάνουμε τα ακόλουθα αναγνωριστικά μοντέλων που υποστηρίζουν ροή:

['huggingface-llm-bilingual-rinna-4b-instruction-ppo-bf16', 'huggingface-llm-falcon-180b-bf16', 'huggingface-llm-falcon-180b-chat-bf16', 'huggingface-llm-falcon-40b-bf16', 'huggingface-llm-falcon-40b-instruct-bf16', 'huggingface-llm-falcon-7b-bf16', 'huggingface-llm-falcon-7b-instruct-bf16', 'huggingface-llm-mistral-7b', 'huggingface-llm-mistral-7b-instruct', 'huggingface-llm-rinna-3-6b-instruction-ppo-bf16']

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

Πριν από την εκτέλεση του φορητού υπολογιστή, απαιτούνται ορισμένα αρχικά βήματα για τη ρύθμιση. Εκτελέστε τις παρακάτω εντολές:

%pip install --upgrade sagemaker –quiet

Αναπτύξτε το μοντέλο

Ως πρώτο βήμα, χρησιμοποιήστε το SageMaker JumpStart για να αναπτύξετε ένα μοντέλο Falcon 7B Instruct. Για πλήρεις οδηγίες, ανατρέξτε στο Το μοντέλο βάσης Falcon 180B από την TII είναι πλέον διαθέσιμο μέσω του Amazon SageMaker JumpStart. Χρησιμοποιήστε τον ακόλουθο κώδικα:

from sagemaker.jumpstart.model import JumpStartModel my_model = JumpStartModel(model_id="huggingface-llm-falcon-7b-instruct-bf16")
predictor = my_model.deploy()

Ερώτηση για το τελικό σημείο και την απάντηση ροής

Στη συνέχεια, δημιουργήστε ένα ωφέλιμο φορτίο για να καλέσετε το αναπτυγμένο τελικό σημείο σας. Είναι σημαντικό ότι το ωφέλιμο φορτίο πρέπει να περιέχει το ζεύγος κλειδιού/τιμής "stream": True. Αυτό υποδεικνύει στον διακομιστή συμπερασμάτων δημιουργίας κειμένου να δημιουργήσει μια απόκριση ροής.

payload = { "inputs": "How do I build a website?", "parameters": {"max_new_tokens": 256}, "stream": True
}

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

import io
import json class TokenIterator: def __init__(self, stream): self.byte_iterator = iter(stream) self.buffer = io.BytesIO() self.read_pos = 0 def __iter__(self): return self def __next__(self): while True: self.buffer.seek(self.read_pos) line = self.buffer.readline() if line and line[-1] == ord("n"): self.read_pos += len(line) + 1 full_line = line[:-1].decode("utf-8") line_data = json.loads(full_line.lstrip("data:").rstrip("/n")) return line_data["token"]["text"] chunk = next(self.byte_iterator) self.buffer.seek(0, io.SEEK_END) self.buffer.write(chunk["PayloadPart"]["Bytes"])

Τώρα μπορείτε να χρησιμοποιήσετε το Boto3 invoke_endpoint_with_response_stream API στο τελικό σημείο που δημιουργήσατε και ενεργοποιήστε τη ροή επαναλαμβάνοντας πάνω από ένα TokenIterator παράδειγμα:

import boto3 client = boto3.client("runtime.sagemaker")
response = client.invoke_endpoint_with_response_stream( EndpointName=predictor.endpoint_name, Body=json.dumps(payload), ContentType="application/json",
) for token in TokenIterator(response["Body"]): print(token, end="")

Καθορισμός κενού end παράμετρος στο print η λειτουργία θα ενεργοποιήσει μια οπτική ροή χωρίς εισαγωγή νέων χαρακτήρων γραμμής. Αυτό παράγει την ακόλουθη έξοδο:

Building a website can be a complex process, but it generally involves the following steps: 1. Determine the purpose and goals of your website
2. Choose a domain name and hosting provider
3. Design and develop your website using HTML, CSS, and JavaScript
4. Add content to your website and optimize it for search engines
5. Test and troubleshoot your website to ensure it is working properly
6. Maintain and update your website regularly to keep it running smoothly. There are many resources available online to guide you through these steps, including tutorials and templates. It may also be helpful to seek the advice of a web developer or designer if you are unsure about any of these steps.<|endoftext|>

Μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό σε ένα σημειωματάριο ή σε άλλες εφαρμογές όπως το Streamlit ή το Gradio για να δείτε τη ροή σε δράση και την εμπειρία που παρέχει στους πελάτες σας.

εκκαθάριση

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

predictor.delete_model()
predictor.delete_endpoint()

Συμπέρασμα

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


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

Stream large language model responses in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Rachna Chadha είναι ένας κύριος αρχιτέκτονας λύσεων AI/ML σε στρατηγικούς λογαριασμούς στο AWS. Η Rachna είναι αισιόδοξη που πιστεύει ότι η ηθική και υπεύθυνη χρήση της τεχνητής νοημοσύνης μπορεί να βελτιώσει την κοινωνία στο μέλλον και να φέρει οικονομική και κοινωνική ευημερία. Στον ελεύθερο χρόνο της, στη Ράχνα αρέσει να περνά χρόνο με την οικογένειά της, να κάνει πεζοπορία και να ακούει μουσική.

Stream large language model responses in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Δόκτωρ Kyle Ulrich είναι Εφαρμοσμένος Επιστήμονας με το Ενσωματωμένοι αλγόριθμοι Amazon SageMaker ομάδα. Τα ερευνητικά του ενδιαφέροντα περιλαμβάνουν κλιμακωτούς αλγόριθμους μηχανικής μάθησης, όραση υπολογιστή, χρονοσειρές, μη παραμετρικές Μπεϋζιανές και διεργασίες Gauss. Το διδακτορικό του είναι από το Πανεπιστήμιο Duke και έχει δημοσιεύσει εργασίες στα NeurIPS, Cell και Neuron.

Stream large language model responses in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Δρ Ashish Khetan είναι Ανώτερος Εφαρμοσμένος Επιστήμονας με ενσωματωμένους αλγόριθμους του Amazon SageMaker και βοηθά στην ανάπτυξη αλγορίθμων μηχανικής μάθησης. Πήρε το διδακτορικό του από το Πανεπιστήμιο του Illinois Urbana-Champaign. Είναι ενεργός ερευνητής στη μηχανική μάθηση και στα στατιστικά συμπεράσματα και έχει δημοσιεύσει πολλές εργασίες σε συνέδρια NeurIPS, ICML, ICLR, JMLR, ACL και EMNLP.

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

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