מודל הבסיס של GPT-NeoXT-Chat-Base-20B ליישומי צ'טבוט זמין כעת באמזון SageMaker | שירותי האינטרנט של אמזון

מודל הבסיס של GPT-NeoXT-Chat-Base-20B ליישומי צ'טבוט זמין כעת באמזון SageMaker | שירותי האינטרנט של אמזון

היום אנו נרגשים להכריז כי מודל בסיס השפה GPT-NeoXT-Chat-Base-20B של Together Computer של Together Computer זמין עבור לקוחות המשתמשים אמזון SageMaker JumpStart. GPT-NeoXT-Chat-Base-20B הוא מודל קוד פתוח לבניית בוטים לשיחה. אתה יכול בקלות לנסות את הדגם הזה ולהשתמש בו עם JumpStart. JumpStart הוא מרכז למידת המכונה (ML) של אמזון SageMaker המספק גישה למודלים בסיסיים בנוסף לאלגוריתםים מובנים ותבניות פתרונות מקצה לקצה כדי לעזור לך להתחיל במהירות עם ML.

בפוסט זה, אנו עוברים דרך כיצד לפרוס את GPT-NeoXT-Chat-Base-20B מודל ולהפעיל את המודל בתוך OpenChatKit מעטפת אינטראקטיבית. הדגמה זו מספקת צ'אטבוט של מודל בסיס קוד פתוח לשימוש בתוך היישום שלך.

דגמי JumpStart משתמשים ב-Deep Java Serving שמשתמש בספריית Deep Java (DJL) עם ספריות מהירות עמוקות כדי לייעל מודלים ולמזער זמן חביון להסקת מסקנות. היישום הבסיסי ב-JumpStart עוקב אחר יישום הדומה ליישום הבא מחברה. כלקוח מרכז מודל JumpStart, אתה מקבל ביצועים משופרים מבלי שתצטרך לשמור על סקריפט המודל מחוץ ל-SageMaker SDK. דגמי JumpStart משיגים גם מצב אבטחה משופר עם נקודות קצה המאפשרות בידוד רשת.

דגמי יסוד ב- SageMaker

JumpStart מספקת גישה למגוון דגמים ממרכזי דגמים פופולריים, כולל Hugging Face, PyTorch Hub ו- TensorFlow Hub, שבהם תוכל להשתמש בזרימת העבודה שלך לפיתוח ML ב- SageMaker. ההתקדמות האחרונה ב-ML הובילה לסוג חדש של דגמים המכונה דגמי יסוד, אשר בדרך כלל מאומנים על מיליארדי פרמטרים וניתנים להתאמה לקטגוריה רחבה של מקרי שימוש, כגון סיכום טקסט, יצירת אמנות דיגיטלית ותרגום שפה. מכיוון שדגמים אלו יקרים לאימון, לקוחות רוצים להשתמש במודלים קיימים של יסודות שהוכשרו מראש ולכוונן אותם לפי הצורך, במקום לאמן את הדגמים הללו בעצמם. SageMaker מספק רשימה אוצרת של דגמים שתוכלו לבחור מהם בקונסולת SageMaker.

כעת תוכל למצוא דגמי יסוד מספקי דגמים שונים בתוך JumpStart, מה שמאפשר לך להתחיל עם דגמי יסוד במהירות. אתה יכול למצוא מודלים של בסיס המבוססים על משימות או ספקי מודל שונים, ולסקור בקלות את מאפייני המודל ומונחי השימוש. אתה יכול גם לנסות את הדגמים האלה באמצעות ווידג'ט למבחן ממשק משתמש. כאשר אתה רוצה להשתמש במודל יסוד בקנה מידה, אתה יכול לעשות זאת בקלות מבלי לעזוב את SageMaker על ידי שימוש במחברות מובנות מראש מספקי דגמים. מכיוון שהמודלים מתארחים ונפרסים ב-AWS, אתה יכול להיות סמוך ובטוח שהנתונים שלך, בין אם הם משמשים להערכת המודל או לשימוש בקנה מידה, לעולם אינם משותפים עם צדדים שלישיים.

דגם בסיס GPT-NeoXT-Chat-Base-20B

ביחד מחשב פיתח את GPT-NeoXT-Chat-Base-20B, מודל שפה של 20 מיליארד פרמטרים, מכוון מדגם GPT-NeoX של ElutherAI עם למעלה מ-40 מיליון הוראות, תוך התמקדות באינטראקציות בסגנון דיאלוג. בנוסף, המודל מכוון למספר משימות, כגון מענה לשאלות, סיווג, מיצוי וסיכום. המודל מבוסס על מערך הנתונים OIG-43M שנוצר בשיתוף פעולה עם LAION ו-Ontocord.

בנוסף לכוונון העדין שהוזכר לעיל, GPT-NeoXT-Chat-Base-20B-v0.16 עבר גם כוונון עדין נוסף באמצעות כמות קטנה של נתוני משוב. זה מאפשר למודל להסתגל טוב יותר להעדפות אנושיות בשיחות. GPT-NeoXT-Chat-Base-20B מיועד לשימוש ביישומי צ'טבוט וייתכן שלא יפעלו היטב עבור מקרי שימוש אחרים מחוץ להיקף המיועד לו. יחד, Ontocord ו-LAION שיתפו פעולה כדי לשחרר את OpenChatKit, אלטרנטיבה בקוד פתוח ל-ChatGPT עם מערך דומה של יכולות. OpenChatKit הושק תחת רישיון Apache-2.0, המעניק גישה מלאה לקוד המקור, משקלי המודלים ומערכי הדרכה. ישנן מספר משימות ש-OpenChatKit מצטיינת בהן מחוץ לקופסה. זה כולל משימות סיכום, משימות חילוץ המאפשרות חילוץ מידע מובנה ממסמכים לא מובנים ומשימות סיווג כדי לסווג משפט או פסקה לקטגוריות שונות.

בואו נחקור כיצד אנו יכולים להשתמש במודל GPT-NeoXT-Chat-Base-20B ב-JumpStart.

סקירת פתרונות

אתה יכול למצוא את הקוד המציג את הפריסה של GPT-NeoXT-Chat-Base-20B ב- SageMaker ודוגמה לשימוש במודל הפרוס באופן שיחתי באמצעות מעטפת הפקודה הבאה מחברת GitHub.

בסעיפים הבאים, אנו מרחיבים כל שלב בפירוט כדי לפרוס את המודל ולאחר מכן להשתמש בו כדי לפתור משימות שונות:

  1. הגדר דרישות מוקדמות.
  2. בחר דגם מאומן מראש.
  3. אחזר חפצים ופרוס נקודת קצה.
  4. שאל את נקודת הקצה ונתח תגובה.
  5. השתמש במעטפת OpenChatKit כדי ליצור אינטראקציה עם נקודת הקצה הפרוסה שלך.

הגדר דרישות מוקדמות

מחברת זו נבדקה על מופע ml.t3.medium ב סטודיו SageMaker של אמזון עם ליבת Python 3 (Data Science) ובמופע מחברת SageMaker עם ליבת conda_python3.

לפני שתפעיל את המחברת, השתמש בפקודה הבאה כדי להשלים כמה שלבים ראשוניים הנדרשים להגדרה:

%pip install --upgrade sagemaker –quiet

בחר דגם מאומן מראש

הגדרנו סשן של SageMaker כרגיל באמצעות Boto3 ולאחר מכן בוחרים את מזהה הדגם שברצוננו לפרוס:

model_id, model_version = "huggingface-textgeneration2-gpt-neoxt-chat-base-20b-fp16", "*"

אחזר חפצים ופרוס נקודת קצה

עם SageMaker, אנו יכולים לבצע הסקה על המודל שהוכשר מראש, אפילו מבלי לכוונן אותו תחילה על מערך נתונים חדש. אנו מתחילים בשליפת ה instance_type, image_uri, ו model_uri עבור הדגם שהוכשר מראש. כדי לארח את המודל שהוכשר מראש, אנו יוצרים מופע של Sagemaker.model.Model ולפרוס אותו. הקוד הבא משתמש ב-ml.g5.24xlarge עבור נקודת הסיום. שיטת הפריסה עשויה להימשך מספר דקות.

endpoint_name = name_from_base(f"jumpstart-example-{model_id}") # Retrieve the inference instance type for the specified model.
instance_type = instance_types.retrieve_default( model_id=model_id, model_version=model_version, scope="inference"
) # Retrieve the inference docker container uri.
image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=instance_type,
) # Retrieve the model uri.
model_uri = model_uris.retrieve( model_id=model_id, model_version=model_version, model_scope="inference"
) # Create the SageMaker model instance. The inference script is prepacked with the model artifact.
model = Model( image_uri=image_uri, model_data=model_uri, role=aws_role, predictor_cls=Predictor, name=endpoint_name,
) # Set the serializer/deserializer used to run inference through the sagemaker API.
serializer = JSONSerializer()
deserializer = JSONDeserializer() # Deploy the Model.
predictor = model.deploy( initial_instance_count=1, instance_type=instance_type, predictor_cls=Predictor, endpoint_name=endpoint_name, serializer=serializer, deserializer=deserializer
)

שאל את נקודת הקצה ונתח את התגובה

לאחר מכן, אנו מראים לך דוגמה כיצד להפעיל נקודת קצה עם תת-קבוצה של הפרמטרים:

payload = { "text_inputs": "<human>: Tell me the steps to make a pizzan<bot>:", "max_length": 500, "max_time": 50, "top_k": 50, "top_p": 0.95, "do_sample": True, "stopping_criteria": ["<human>"],
}
response = predictor.predict(payload)
print(response[0][0]["generated_text"])

להלן התגובה שאנו מקבלים:

<human>: Tell me the steps to make a pizza
<bot>: 1. Choose your desired crust, such as thin-crust or deep-dish. 2. Preheat the oven to the desired temperature. 3. Spread sauce, such as tomato or garlic, over the crust. 4. Add your desired topping, such as pepperoni, mushrooms, or olives. 5. Add your favorite cheese, such as mozzarella, Parmesan, or Asiago. 6. Bake the pizza according to the recipe instructions. 7. Allow the pizza to cool slightly before slicing and serving.
<human>:

כאן, סיפקנו את טיעון המטען "stopping_criteria": ["<human>"], מה שהביא לכך שתגובת המודל מסתיימת ביצירת רצף המילים <human>. סקריפט מודל JumpStart יקבל כל רשימה של מחרוזות כמילות עצירה רצויות, המיר רשימה זו לרשימה חוקית ארגומנט מילת המפתח stoping_criteria לשנאים ליצור API, ולהפסיק את יצירת הטקסט כאשר רצף הפלט מכיל מילות עצירה שצוינו. זה שימושי משתי סיבות: ראשית, זמן ההסקה מצטמצם מכיוון שנקודת הקצה לא ממשיכה ליצור טקסט לא רצוי מעבר למילות העצירה, ושנית, הדבר מונע ממודל OpenChatKit להזות תגובות אנושיות ובוטים נוספות עד לעמידה בקריטריונים אחרים של עצירה. .

השתמש במעטפת OpenChatKit כדי ליצור אינטראקציה עם נקודת הקצה הפרוסה שלך

OpenChatKit מספק מעטפת שורת פקודה לאינטראקציה עם הצ'אטבוט. בשלב זה, אתה יוצר גרסה של מעטפת זו שיכולה לקיים אינטראקציה עם נקודת הקצה הפרוסה שלך. אנו מספקים פישוט חשוף של תסריטי ההסקה במאגר OpenChatKit זה שיכול לקיים אינטראקציה עם נקודת הקצה הפרוסה של SageMaker.

ישנם שני מרכיבים עיקריים לכך:

  • מתורגמן פגז (JumpStartOpenChatKitShell) המאפשר הפעלות איטרטיביות להסקה של נקודת הקצה של המודל
  • אובייקט שיחה (Conversation) המאחסן אינטראקציות אנושיות/צ'אטבוט קודמות באופן מקומי בתוך המעטפת האינטראקטיבית ומעצב כראוי שיחות קודמות להקשר עתידי

השמיים Conversation האובייקט מיובא כפי שהוא ממאגר OpenChatKit. הקוד הבא יוצר מתורגמן מעטפת מותאם אישית שיכול לקיים אינטראקציה עם נקודת הקצה שלך. זוהי גרסה פשוטה של ​​יישום OpenChatKit. אנו ממליצים לך לחקור את מאגר OpenChatKit כדי לראות כיצד תוכל להשתמש בתכונות מעמיקות יותר, כגון הזרמת אסימונים, מודלים של ניהול ודור מוגבר של אחזור, בהקשר זה. ההקשר של מחברת זו מתמקד בהדגמת צ'אט בוט מינימלי בר-קיימא עם נקודת קצה JumpStart; אתה יכול להוסיף מורכבות לפי הצורך מכאן.

הדגמה קצרה כדי להציג את JumpStartOpenChatKitShell מוצג בסרטון הבא.

הקטע הבא מראה כיצד הקוד עובד:

class JumpStartOpenChatKitShell(cmd.Cmd): intro = ( "Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to " "list commands. For example, type /quit to exit shell.n" ) prompt = ">>> " human_id = "<human>" bot_id = "<bot>" def __init__(self, predictor: Predictor, cmd_queue: Optional[List[str]] = None, **kwargs): super().__init__() self.predictor = predictor self.payload_kwargs = kwargs self.payload_kwargs["stopping_criteria"] = [self.human_id] if cmd_queue is not None: self.cmdqueue = cmd_queue def preloop(self): self.conversation = Conversation(self.human_id, self.bot_id) def precmd(self, line): command = line[1:] if line.startswith('/') else 'say ' + line return command def do_say(self, arg): self.conversation.push_human_turn(arg) prompt = self.conversation.get_raw_prompt() payload = {"text_inputs": prompt, **self.payload_kwargs} response = self.predictor.predict(payload) output = response[0][0]["generated_text"][len(prompt):] self.conversation.push_model_response(output) print(self.conversation.get_last_turn()) def do_reset(self, arg): self.conversation = Conversation(self.human_id, self.bot_id) def do_hyperparameters(self, arg): print(f"Hyperparameters: {self.payload_kwargs}n") def do_quit(self, arg): return True

כעת תוכל להפעיל מעטפת זו כלולאת פקודה. זה יוציא שוב ושוב הנחיה, יקבל קלט, ינתח את פקודת הקלט וישלח פעולות. מכיוון שניתן להשתמש במעטפת המתקבלת בלולאה אינסופית, מחברת זו מספקת תור פקודות ברירת מחדל (cmdqueue) כרשימה בתור של שורות קלט. כי הקלט האחרון הוא הפקודה /quit, המעטפת תצא עם מיצוי התור. כדי ליצור אינטראקציה דינמית עם הצ'אטבוט הזה, הסר את ה cmdqueue.

cmd_queue = [ "Hello!",
]
JumpStartOpenChatKitShell( endpoint_name=endpoint_name, cmd_queue=cmd_queue, max_new_tokens=128, do_sample=True, temperature=0.6, top_k=40,
).cmdloop()

דוגמה 1: ההקשר של השיחה נשמר

ההנחיה הבאה מראה שהצ'אטבוט מסוגל לשמור על ההקשר של השיחה כדי לענות על שאלות המשך:

Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to list commands. For example, type /quit to exit shell. <<< Hello! How may I help you today? >>> What is the capital of US? <<< The capital of US is Washington, D.C. >>> How far it is from PA ? <<< It is approximately 1100 miles.

דוגמה 2: סיווג של סנטימנטים

בדוגמה הבאה, הצ'אטבוט ביצע משימת סיווג על ידי זיהוי התחושות של המשפט. כפי שאתה יכול לראות, הצ'אטבוט הצליח לסווג רגשות חיוביים ושליליים בהצלחה.

Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to list commands. For example, type /quit to exit shell. <<< Hello! How may I help you today? >>> What is the sentiment of this sentence "The weather is good and I am going to play outside, it is sunny and warm" <<< POSITIVE >>> What is the sentiment of this sentence " The news this morning was tragic and it created lot of fear and concerns in city" <<< NEGATIVE

דוגמה 3: משימות סיכום

לאחר מכן, ניסינו משימות סיכום עם מעטפת הצ'אטבוט. הדוגמה הבאה מראה כיצד הטקסט הארוך על אמזון להתבונן סוכם למשפט אחד והצ'אטבוט הצליח לענות על שאלות המשך על הטקסט:

Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to list commands. For example, type /quit to exit shell. <<< Hello! How may I help you today? >>> Write a short summary for this text: Amazon Comprehend uses natural language processing (NLP) to extract insights about the content of documents. It develops insights by recognizing the entities, key phrases, language, sentiments, and other common elements in a document. Use Amazon Comprehend to create new products based on understanding the structure of documents. For example, using Amazon Comprehend you can search social networking feeds for mentions of products or scan an entire document repository for key phrases. nYou can access Amazon Comprehend document analysis capabilities using the Amazon Comprehend console or using the Amazon Comprehend APIs. You can run real-time analysis for small workloads or you can start asynchronous analysis jobs for large document sets. You can use the pre-trained models that Amazon Comprehend provides, or you can train your own custom models for classification and entity recognition. nAll of the Amazon Comprehend features accept UTF-8 text documents as the input. In addition, custom classification and custom entity recognition accept image files, PDF files, and Word files as input. nAmazon Comprehend can examine and analyze documents in a variety of languages, depending on the specific feature. For more information, see Languages supported in Amazon Comprehend. Amazon Comprehend's Dominant language capability can examine documents and determine the dominant language for a far wider selection of languages. <<< Amazon Comprehend is a natural language processing (NLP) service that uses deep learning and other advanced AI techniques to extract insights from unstructured text. >>> What kind of files does custom entity recognition accept as inputs? <<< Image files, PDF files, and Word files

דוגמה 4: חילוץ מידע מובנה מטקסט לא מובנה

בדוגמה הבאה, השתמשנו בצ'אטבוט כדי ליצור טבלת סימון עם כותרות, שורות ועמודות כדי ליצור תוכנית פרויקט באמצעות המידע המסופק בשפה חופשית:

Welcome to the OpenChatKit chatbot shell, modified to use a SageMaker JumpStart endpoint! Type /help or /? to list commands. For example, type /quit to exit shell. <<< Hello! How may I help you today? >>> Generate a table summarizing the options outlined in this email. Team, we need to plan a project. The first task is for creating a web app and will take 3 developers, 2 testers with duration of 3 weeks. This is priority 1 The second task is for refactoring a web app and will take 2 developers, 5 testers with duration of 4 weeks. This is priority 2 A markdown table with 2 rows and six columns: (1) Task ID , (2) Task Description, (3) Developers, (4) Testers, (5) Duration, (6) Priority <<< | Task ID | Task Description | Developers | Testers | Duration | Priority |
| --------- | --------- | --------- | --------- | --------- | --------- |
| 1 | Create a web app | 3 | 2 | 3 weeks | 1 |
| 2 | Refactor a web app | 2 | 5 | 4 weeks | 2 |

דוגמה 5: פקודות כקלט לצ'אטבוט

אנחנו יכולים גם לספק קלט כמו פקודות כמו /hyperparameters כדי לראות ערכי היפרפרמטרים ו /quit כדי לצאת ממעטפת הפקודה:

>>> /hyperparameters <<< Hyperparameters: {'max_new_tokens': 128, 'do_sample': True, 'temperature': 0.6, 'top_k': 40, 'stopping_criteria': ['<human>']} >>> /quit

דוגמאות אלו הציגו רק חלק מהמשימות שבהן OpenChatKit מצטיינת. אנו ממליצים לך לנסות הנחיות שונות ולראות מה עובד הכי טוב עבור מקרה השימוש שלך.

לנקות את

לאחר שבדקת את נקודת הקצה, וודא שאתה מוחק את נקודת הקצה של SageMaker ואת המודל כדי להימנע מחיובים.

סיכום

בפוסט זה, הראינו לכם כיצד לבדוק ולהשתמש במודל GPT-NeoXT-Chat-Base-20B באמצעות SageMaker ולבנות יישומי צ'טבוט מעניינים. נסה את מודל הבסיס ב- SageMaker עוד היום וספר לנו את המשוב שלך!

הדרכה זו מיועדת למטרות מידע בלבד. אתה עדיין צריך לבצע הערכה עצמאית משלך, ולנקוט אמצעים כדי להבטיח שאתה מציית לפרקטיקות ולסטנדרטים הספציפיים של בקרת איכות משלך, ולכללים המקומיים, החוקים, התקנות, הרישיונות ותנאי השימוש החלים עליך, על התוכן שלך ועל התוכן שלך. מודל הצד השלישי הנזכר בהנחיה זו. ל-AWS אין שליטה או סמכות על מודל הצד השלישי הנזכר בהנחיה זו, ואינה מציגה כל מצג או התחייבות לכך שדגם הצד השלישי מאובטח, נטול וירוסים, תפעולי או תואם לסביבת הייצור ולסטנדרטים שלך. AWS אינה מציגה כל מצג, אחריות או ערבות לכך שכל מידע בהנחיות זה יביא לתוצאה או תוצאה מסוימת.


על המחברים

מודל הבסיס של GPT-NeoXT-Chat-Base-20B ליישומי צ'טבוט זמין כעת באמזון SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.רחנה צ'דהא הוא אדריכל פתרונות ראשי AI/ML בחשבונות אסטרטגיים ב-AWS. רחנה היא אופטימית המאמינה ששימוש אתי ואחראי בבינה מלאכותית יכול לשפר את החברה בעתיד ולהביא לשגשוג כלכלי וחברתי. בזמנה הפנוי, רחנה אוהבת לבלות עם משפחתה, לטייל ולהאזין למוזיקה.

מודל הבסיס של GPT-NeoXT-Chat-Base-20B ליישומי צ'טבוט זמין כעת באמזון SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ד"ר קייל אולריך הוא מדען יישומי עם אלגוריתמים מובנים של Amazon SageMaker קְבוּצָה. תחומי המחקר שלו כוללים אלגוריתמים של למידת מכונה ניתנים להרחבה, ראייה ממוחשבת, סדרות זמן, אי-פרמטריות בייסיאניות ותהליכי גאוס. הדוקטורט שלו הוא מאוניברסיטת דיוק והוא פרסם מאמרים ב-NeurIPS, Cell, and Neuron.

מודל הבסיס של GPT-NeoXT-Chat-Base-20B ליישומי צ'טבוט זמין כעת באמזון SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ד"ר אשיש חתן הוא מדען יישומי בכיר עם אלגוריתמים מובנים של Amazon SageMaker ועוזר בפיתוח אלגוריתמים של למידת מכונה. הוא קיבל את הדוקטורט שלו מאוניברסיטת אילינוי אורבנה-שמפיין. הוא חוקר פעיל בלמידת מכונה והסקה סטטיסטית, ופרסם מאמרים רבים בכנסים NeurIPS, ICML, ICLR, JMLR, ACL ו-EMNLP.

בול זמן:

עוד מ למידת מכונות AWS