מדריך: איך לאמן CHATGPT משלכם?
מדריך: איך לאמן צ'טבוט על טקסט משלכם?
לפני הכל: תברחו!
אם יש לכם פתרון שלא כולל לעשות את זה בעצמם: לכו עליו.
הטכנולוגיה לא באמת נמצאת שם! אם לא תאמנו מודל ענק (20+ מיליארד), כנראה שתתאכזבו מהתוצאות ואני באמת באמת ממליץ לכם ללכת על פתרונות פשוטים אחרים כמו אימון GPT-3 או פתרונות מדף אחרים הקיימים היום בשוק במידה וזה אפשרי מבחינתכם.
דומיין פתוח: אני שואל מה שבא לי -> אני מצפה לתשובה נכונה.
הבהרה: משימה זו שונה ממשימה דומה מאד אך שונה לחלוטין: שיחה חופשית אחד-על-אחד. במשימה זו על המודל להפגין יכולות נוספות למשל כמו הבנת רגשות אנושיים, הדמיית אישיות מסוימת וכו'
-
מודל המסוגל לשנן נכון ולהגיב עם תשובה לשאלה שנראתה בזמן האימון.
-
מודל המסוגל לענות על שאלות חדשות בזמן המבחן ולבחור תשובה המורכבת מתוך התשובות שראה לשאלות אחרות בזמן האימון.
-
מודל המסוגל לענות על שאלות חדשות שיש שלהן תשובות חדשות שאינן נכללו בנתוני האימון.
האינפורמציה יכולה למשל להגיע מאימון נוסף להשלמת קטעי טקסט המכילים מידע – כך נעשה בGPT
בעיות עם חומר פתוח – Open Book
-
מצא את המידע הקשור במאגר הידע
-
הפוך את המידע שאוחזר לתשובה הנכונה
המודל שבוחר את קובץ המידע – Retriever
-
או שמשתמשים ביצוג נסתר של מודל כלשהו ועל פיו מחשבים כמה קובץ המידע קרוב לשאלה.
-
או שמאמנים מודל המקבל שאלה וקובץ מידע כלשהו ומחזיר: האם קובץ המידע מכיל את התשובה לשאלה.
מעניין בקטנה: חפשו בנטפליקס סדרה או סרט מפורסמים שאינם נמצאים בנטפליקס ושימו לב לתוצאות החיפוש החוזרות אליכם. ככל הנראה הן יהיו "קרובות". למרות שהסדרה \ סרט עצמם לא נמצאים בנטפליקס..
אנחנו יודעים את זה כי זה סט האימון: יש לנו את התשובה וגם קובץ מידע בו התשובה נמצאת
מה זאת אומרת Longformer?! – הסיבה שהזכרתי מודל נוסף שאינו דיברטה למרות שכידוע אין מודלי שפה נוספים יותר בעולם: Longformer מאומן מראש על טקסטים ארוכים (דיברטה לא) אז במידה ואתם לא מעוניינים לאמן כלל – השתמשו בו על מנת לקבל יצוגים בחינם. אם יש לכם כוח לאמן בעצמכם: דיברטה. רק דיברטה.
כך דרך אגב פועלת האפליקציה Replika – צ'אט בוט GPT-3 המתיימר(ת) להיות "חברה", "בת הזוג" או אפילו "הפסיכולוגית" של המשתמש. אתיקה בצד [ויש הרבה מה לדבר על אתיקה!], הם מריצים Retriever ענק על מיליוני הודעות אפשריות ועל כמה תוצאות החוזרות מGPT-3 (אומן במיוחד) ובכך בוחרים מה ההודעה שעליהם להחזיר אל המשתמש. החיפוש נעשה במהירות רבה כי כל היצוגים הנסתרים כבר חושבו מראש ומה שנשאר לעשות הוא רק להכפיל אותם ביצוג שיחת המשתמש כרגע.
מודל ה"ממרקר" את התשובה
-
קודם כל לחזות את האינדקס הסופי ואז להכניס אותו אל הרשת בתור פיצ'ר ולחזות את האינדקס ההתחלתי
-
להשתמש בLabel smoothing ולכייל אותו עם אופטימייזר להיפרפרמטרים
-
אוגמנטציה: "לקרב" קצת בין שני האינדקסים באופן רנדומלי מכל צד.
-
אוגמנטציה: להתאמן עם Maskים רנדומלים
-
להוסיף Multi Sample Dropout (שזה אומר, להכניס את אותה הדוגמה אל המודל כמה פעמים עם ערכי dropout שונים ואז למצע)
-
להשתמש ביצוג נסתר המגיע מכל שכבות המודל
-
להשתמש בשכבות קונבולוציה חד מימדיות אחרי המודל המאומן מראש
-
באותה התחרות גם הלכתי רחוק והוספתי wavenet אחרי המודל המאומן מראש
-
להשתמש במודל בכמה רזולוציות: אחרי התחזית ברמת המילה, כמה שכבות ברמת האות הבודדת.
שיטות אימון מקצה לקצה – End-to-end
אימון מקצה לקצה: שליפת קובץ מידע ומציאת התשובה בו.
-
האם השאלה מתאימה לקובץ?
-
האם הקובץ מתאים לשאלה?
שימו לב: אמנם במציאות אנחנו פועלים רק לכיוון אחד (מקבלים שאלה וצריכים למצוא קובץ מידע), את הלימוד אפשר לעשות לשני הכיוונים כי אנחנו משתמשים ביצוג הנלמד בתוך המודל ולא בתוצאת המודל במציאות.
מעניין!
מודלי חומר פתוח גנרטיבים
כי רטריברים זה נחמד והכל אבל GPT
גישה מעניינת שמשום מה לא מצאתי בשום מאמר (ולדעתי יכולה לשפר ביצועים) היא להשתמש בשני מקודדים, האחד לצורך מציאת קובץ המידע והשני לצורך קידוד קובץ המידע ויצירת התשובה (שני מקודדי T5 ומפענח T5 בודד). אני מנחש שבדרך זו התוצאות שיתקבלו יהיו טובות יותר משרשור טקסט פשוט של קובץ המידע והשאלה.
כן אבל GPT.
(בעיות חומר סגור – Closed Book)
-
מודלי השלמת טקסט (GPT), מאומנים על טקסט המכיל שאלה ומיד אחריה את התשובה לשאלה וכך לומדים "להלשים" תשובות לשאלות.
-
מודלי טקסט -> טקסט (T5), מאומנים על זוגות טקסטים נפרדים (שאלות ותשובות) כשטקסט השאלה נכנס אל המודל וטקסט השתשובה יוצא מן המודל
למי שלא מכיר: שימו לב, במודל הקודם יש טקסט אחד והמודל לומד להמשיך אותו ובמודל השני יש טקסים שונים: קלט ופלט
זוכרים את ההתחלה? תברחו!
די להתבכיין. איך מתחילים?
הבהרה: המשך הפוסט מניח שמדובר על כוח חישוב (יחסית) סטנדרטי ועל פי הנחה זו מתקבלות ההחלטות וההצעות. במידה ויש ברשותכם כוח עיבוד כבד, ראו את המלצות הפוסט כמבוטלות ואמנו להנעתכם מודל בגודל מאות מיליארדי פרמטרים.
מודלי השלמת טקסט – GPT
דוגמאות: גלקטיקה כתבה מאמר שלם על אכילת זכוכית לריפוי מחלות. קודקס החליט שכדורגל הוא הפתרון לשלום במזרח התיכון
-
אופציה 1. GPT-2 בגדלים (base: 117M, medium: 345M, large: 774M, XL: 1.5B): הייתי מנסה להשתמש ב-GPT-2 ולראות איך התוצאות שאתם מקבלים ממנו. אולי לא המודל הכי טוב אבל אם יש לכם מזל הוא יכול להספיק. https://huggingface.co/gpt2
-
אופציה 2. GPT-Neo (1.3B, 2.7B): אותן תוצאות כמו GPT-2 בגדלים זהים אבל הרבה יותר יעיל בצריכת הזיכרון אז אני ממליץ לאמן אותו במקום GPT-2 אם הגדלים האלה מתאימים למשימה שלך.
-
אופציה 3. GPT-J 6B: מודל בגודל 6 מיליארד פרמטרים – של ElutherAI – אופציה טובה לטקסט -> טקסט. הוא גדול (~6B פרמטרים) ובדרך כלל מבין מה אתם רוצה ממנו אבל לא יותר מידי, הוא דורש ומכונה חזקה והתוצאות בדרך כלל לא מספיקות. כאן: https://huggingface.co/EleutherAI/gpt-j-6B
-
אופציה 4. GPT-NEO-X 20B: גרסה גדולה יותר (20 מיליארד פרמטרים) והיא מסוגלת לבצע משימות מבוססות ידע לא רע בכלל. המודל גדול מאוד ודורש מחשב(ים) די חזק(ים) כדי לרוץ ועדיין בסוף אחרי הכל: ייתכן שהתוצאות לא יהיו מי יודע מה. כאן: https://huggingface.co/EleutherAI/gpt-neox-20b
מודלי טקסט -> טקסט – T5:
-
אופציה 1. T5-Large מודל הטקסט -> טקסט הקלאסי T5 בגרסה מספיק גדולה לחלק מהבעיות: https://huggingface.co/t5-large
-
אופציה 2. Flan-T5-Large המודל הקלאסי עבר לאורך השנים שיפורים ושיפוצים ואומן במיוחד לביצוע הוראות. נחשב "טוב יותר מT5 בהכל". נמצא כאן: https://huggingface.co/google/flan-t5-large
-
אופציה 3. LongT5-Large לטקסטים ארוכים: גרסה מיוחדת לT5 המכילה אטנשן גלובלי ומתמחה בטקסטים ארוכים: https://huggingface.co/google/long-t5-tglobal-large
שימו לב: המשקולות בHuggingface של המודל LongT5-Large לא נכונות. משום מה הם מוחקים את הissues ולא מתקנים. כדי לעקוף את הבעיה הוסיפו from_flax לטעינת המודל כדי לטעון את המשקולות המקוריות והנכונות של של גוגל.
-
אופציה 4. mT5-Large בשביל עברית: המודל T5 אומן בשפות רבות (כולל עברית), אם אתם מעוניינים לאמן בעברית, זה המודל בשבילכם: https://huggingface.co/google/mt5-large
מודלי GPT: אימון שאלות ותשובות
אני באמת ממליץ לכם לא להכנס לזה אם אין לכם צורך אמיתי ולרשותכם כוח עיבוד רב. מודלי טקסט -> טקסט קלים משמעותית לאימון.
אם יש לכם כוח: במידה ואתם מאמנים מודל גדול (6 מיליארד פרמטרים ומעלה) תוכלו לנצל את הכוח האדיר המגיע מגודל המודל – אם תוסיפו כמה מאות דוגמאות מתויגות ידנית המודל יכליל מצוין לדאטה שלכם [גם 100 או 200 מספיק]. זכרו: אנו לא מעוניינים באמת ללמד את המודל לענות על כל השאלות האפשריות בנוגע לדאטה, נרצה שרק ילמד לשלב בין "לענות על שאלה" לבין "הדאטהסט" שלכם.
דאטהסטים חיצוניים לשאלות ותשובות תוכלו למצוא בתחתית בפוסט.
מודלי T5: אימון שאלות ותשובות
וגם: הם חמודים. הם ממש מנסים!
-
המודל discord_qg אותו תמצאו כאן: https://huggingface.co/Salesforce/discord_qg
-
והמודל mixeqg-base אותו תמצאו כאן: https://huggingface.co/Salesforce/mixqg-base
התעלמו מכל הכתוב למעלה ואל תכנסו לזה מראש.
הבהרה: כל הכתוב כאן כתוב מניסיון. הכל נוסה ונבדק מראש. לא אמליץ לכם להכנס להרפתקאות בסדר גודל כזה בלי לנסות בעצמי קודם.