פוסט

איך בונים מודל שפה

Transformer, attention, אימון מקדים, fine-tuning ואימון לפי העדפות (RLHF, DPO): השלבים שהופכים ערימת טקסט לעוזר שיחה.

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

ה-transformer ומנגנון ה-attention

כמעט כל LLM מודרני הוא transformer, ארכיטקטורה שהוצגה ב-2017 במאמר Attention Is All You Need. הרעיון המרכזי שלה הוא attention (קשב): כשהמודל מעבד טוקן, הוא מסתכל על כל הטוקנים שלפניו ומחליט כמה כל אחד מהם חשוב.

קחו את המשפט “The cat sat because it”. כדי להמשיך אותו, המודל צריך לדעת למה “it” מתייחס. ה-attention נותן ציון לכל מילה קודמת, הופך את הציונים למשקלות שסכומם 1, ושואב מידע בעיקר מהמילים עם המשקל הגבוה. גרסת צעצוע של השלב האחרון:

import math

# כמה "it" צריך לשים לב לכל מילה קודמת? (ציונים לדוגמה)
words = ["The", "cat", "sat", "because", "it"]
scores = [0.1, 2.5, 0.3, 0.2, 0.5]

exps = [math.exp(s) for s in scores]
weights = [e / sum(exps) for e in exps]
for word, w in zip(words, weights):
    print(f"{word:8} {w:.2f}")
The      0.06
cat      0.70
sat      0.08
because  0.07
it       0.09

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

שלב 1: אימון מקדים (pretraining)

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

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

רוב מה שהמודל “יודע” מגיע מהשלב הזה. מכאן גם מגיע תאריך הידע (knowledge cutoff): המודל לא יודע שום דבר שקרה אחרי שנאספו נתוני האימון שלו.

שלב 2: fine-tuning מפוקח

כדי להפוך את מודל הבסיס לעוזר, ממשיכים לאמן אותו על שיחות לדוגמה: שאלה, ותשובה טובה שאנשים כתבו או בדקו. זה נקרא supervised fine-tuning (SFT). המודל לומד את המבנה של שיחה ואת ההרגל לענות על מה שנשאל.

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

שלב 3: אימון לפי העדפות

תשובה יכולה להיות נכונה ועדיין לא מועילה, ארוכה מדי או לא בטוחה. השלב האחרון מלמד את המודל איזו משתי תשובות טובה יותר:

  • RLHF (למידת חיזוק ממשוב אנושי): אנשים מדרגים כמה תשובות, מודל תגמול לומד את ההעדפות שלהם, וה-LLM מאומן לקבל תגמול גבוה. מתואר ב-InstructGPT.
  • DPO (אופטימיזציה ישירה של העדפות): מאמן ישירות על זוגות של תשובה “מועדפת” ותשובה “נדחית”, בלי מודל תגמול נפרד. מתואר ב-מאמר ה-DPO.
  • Constitutional AI: הגישה של Anthropic, שבה רשימה כתובה של עקרונות מנחה משוב של AI על התשובות. מתואר ב-Constitutional AI.

שלושה שלבים: אימון מקדים יוצר מודל בסיס, fine-tuning מפוקח מלמד אותו למלא הוראות, ואימון לפי העדפות יוצר עוזר

מה זה מסביר

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

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