פרויקט הדרכה של מיקרוסופט לאילוף דגמי שפות גדולים

פרויקט הדרכה של מיקרוסופט לאילוף דגמי שפות גדולים

צומת המקור: 2660058

מודלים עוצמתיים של שפה כמו Bard, ChatGPT ו-LAMA יכולים להיות קשים לשליטה, מה שהמריץ את הפיתוח של הנדסה מהירה - אומנות הניסוח של טקסט קלט כדי לקבל את הפלט הרצוי.

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

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

יש פחות קיצוני גישות לדיכוי פלט מסביר ולקבלת תוצאות רצויות. עם זאת, מיקרוסופט עבדה על אסטרטגיה מקיפה יותר כדי לגרום למודלים להתנהג. ענקית חלונות קוראת למסגרת שלה בשם הַדְרָכָה.

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

הנחיה מסורתית, כפי שהוכח לעיל, יכולה להיות קצת מעורבת. שרשור מהיר [PDF] - פירוק משימה לסדרה של שלבים ושימוש בפלט הראשוני של ההנחיה כדי ליידע את הקלט של השלב הבא - היא אפשרות נוספת. כלים שונים כמו LangChain ו פיתוי הופיעו כדי להקל על שילוב מודלים ביישומים.

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

כמו שפת שאילתת מודל שפה (LMQL), הכוונה להפחית את העלות של אינטראקציה עם LLM, שעלולה להתייקר במהירות אם ההנחיות חוזרות על עצמן שלא לצורך, מילוליות או ממושכות.

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

# אנו משתמשים ב-LLaMA כאן, אבל כל דגם בסגנון GPT יעשה llama = guidance.llms.Transformers("your_path/llama-7b", device=0) # אנו יכולים להגדיר מראש הגדרות חוקיות valid_weapons = ["חרב", "axe", "mace", "spear", "bow", "crossbow"] # define the prompt character_maker = guidance("""להלן פרופיל דמויות עבור משחק RPG בפורמט JSON. ```json { "id": "{{id}}", "description": "{{description}}", "name": "{{gen 'name'}}", "age": {{gen 'age' pattern ='[0-9]+' stop=','}}, "armor": "{{#select 'armor'}}עור{{or}}לוח{{or}}לוח{{/select}} ", "weapon": "{{select 'weapon' options=valid_weapons}}", "class": "{{gen 'class'}}", "mantra": "{{gen 'mantra' temperature=0.7} }", "strength": {{gen 'strength' pattern='[0-9]+' stop=','}}, "items": [{{#geneach 'items' num_iterations=5 join=', '}}"{{gen 'this' temperature=0.7}}"{{/geneach}}] }```""") # create a character character_maker( id="e1f491f7-7ab8-4dac-8c20-c92b5e7d883d" , description="לוחם מהיר וזריז.", valid_weapons=valid_weapons, llm=llama )

...התוצאה היא פרופיל דמויות למשחק בפורמט JSON, מהיר פי 2 ב-Nvidia RTX A6000 GPU בעת שימוש ב-LAMA 7B בהשוואה לגישת ההנחיה הסטנדרטית, ומכאן פחות יקר.

גם קוד הדרכה ביצועים טובים יותר גישה מהירה של שתי יריות במונחים של דיוק, כפי שנמדדה במבחן BigBench, עם ציון של 76.01 אחוז לעומת 63.04 אחוז.

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

"עם הדרכה אנחנו יכולים לשניהם להאיץ את מהירות ההסקה ולהבטיח ש-JSON שנוצר תמיד תקף", הם מסבירים ב-repo.

ולא היה צריך לאיים על אף אחד כדי שזה יהיה כך. ®

בול זמן:

עוד מ הקופה