הפעל יצירת טקסט עם דגמי GPT ו-Bloom ב-Amazon SageMaker JumpStart

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

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

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

אם ברצונך לקפוץ ישר לקוד ה-API של JumpStart שאנו עוברים בפוסט זה, תוכל להפנות למחברת הדוגמה הבאה של 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 ו-Skit-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. עם זאת, בלום מאומן מראש ב-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 והפעל מסקנות עם מודל מאומן מראש

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

הסרטון הבא מראה לך כיצד למצוא מודל יצירת טקסט מאומן מראש ב-JumpStart ולפרוס אותו. דף הדגם מכיל מידע רב ערך על הדגם וכיצד להשתמש בו. אתה יכול לפרוס כל אחד מהדגמים שהוכשרו מראש הזמינים ב-JumpStart. להסקת מסקנות, אנו בוחרים את סוג המופע ml.p3.2xlarge, מכיוון שהוא מספק את האצת ה-GPU הדרושה להשהיית הסקה נמוכה בנקודת מחיר נמוכה. לאחר שתגדיר את מופע האירוח של SageMaker, בחר לפרוס. ייתכן שיחלפו 20-25 דקות עד שנקודת הקצה המתמשכת שלך תפעל.

ברגע שנקודת הקצה שלך תהיה מבצעית, היא מוכנה להגיב לבקשות להסיק!

כדי להאיץ את זמן ההסקה שלך, JumpStart מספקת מחברת לדוגמה שמראה לך כיצד להפעיל הסקה על נקודת הקצה שנפרסת לאחרונה. בחר פתח מחברת תחת השתמש ב-Endpoint מ-Studio.

השתמש ב-JumpStart באופן פרוגרמטי עם ה-SDK של SageMaker

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

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

פרוס את המודל שהוכשר מראש

SageMaker היא פלטפורמה שעושה שימוש נרחב בקונטיינרים של Docker עבור משימות בנייה וזמן ריצה. JumpStart משתמש ב-framework הספציפי הזמין מכולות ללמידה עמוקה של SageMaker (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")

בלום הוא דגם גדול מאוד ויכול להימשך עד 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,
)

לאחר פריסת המודל שלנו, נוכל לקבל ממנו תחזיות בזמן אמת!

הפעל מסקנות

קטע הקוד הבא נותן לך הצצה לאיך נראות הפלטים. כדי לשלוח בקשות לדגם פרוס, יש לספק טקסט קלט ב-a 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 הוא מדען יישומי בצוות אמזון SageMaker JumpStart. הוא קיבל את הדוקטורט שלו מאוניברסיטת אילינוי באורבנה-שמפיין והיה חוקר פוסט דוקטורט בג'ורג'יה טק. הוא חוקר פעיל בלמידת מכונה ועיצוב אלגוריתמים ופרסם מאמרים בכנסים של EMNLP, ICLR, COLT, FOCS ו-SODA.

הפעל יצירת טקסט עם דגמי GPT ו-Bloom ב-Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.סנטוש קולקרני הוא ארכיטקט פתרונות ארגוניים ב- Amazon Web Services שעובד עם לקוחות ספורט באוסטרליה. הוא נלהב לבנות יישומים מבוזרים בקנה מידה גדול כדי לפתור בעיות עסקיות תוך שימוש בידע שלו ב-AI/ML, ביג דאטה ופיתוח תוכנה.

הפעל יצירת טקסט עם דגמי GPT ו-Bloom ב-Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.ד"ר אשיש חתן הוא מדען יישומי בכיר עם אלגוריתמים מובנים של Amazon SageMaker ועוזר בפיתוח אלגוריתמים של למידת מכונה. הוא קיבל את הדוקטורט שלו מאוניברסיטת אילינוי אורבנה שמפיין. הוא חוקר פעיל בלמידת מכונה והסקה סטטיסטית ופרסם מאמרים רבים בכנסים NeurIPS, ICML, ICLR, JMLR, ACL ו-EMNLP.

בול זמן:

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