close menu

העולם שאחרי ג'י פי טי 4

בעולם הפוסט-אפוקליפטי שלאחר GPT-4 מצאה עצמה אתמול האנושות צוללת לכאוס כשהבינה המלאכותית הכל-יכולה הפכה לא זמינה למספר שעות מורטות עצבים.

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

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

כך נגיע לGPT-4 פתוח

שפשוט תוכלו להריץ לבד על המחשב שלכם..

מאז שחרור GPT-3 נעשו ניסיונות רבים לסגור את הפער, רובם ללא הצלחה. OpenAI ללא ספק מובילה כרגע במירוץ אך נראה שאנו נמצאים בנקודת מפנה.

נראה שמודלי שפה גדולים עוברים כרגע את "נקודת הStable Diffusion" – הנקודה בה כולם יכולים להריץ מודל איכותי קטן על גבי חומרה זולה, שחרור GPT-4 רק האיץ מאמצים אלו.

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

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

ואני לא היחיד שחושב שמודלי שפה הופכים לזולים הרבה יותר: https://www.reddit.com/…/llms_are_getting_much_cheaper…

פתרון ראשון: "לגנוב" את GPT-3

מודל מעניין במיוחד שוחרר בשבוע שעבר – אלפקה. אותו המודל אומן "לענות מה שGPT-3 היה עונה" על ידי כך שאומן על תשובות GPT-3.

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

טענות גדולות נשמעו על אותו המודל "אימון GPT-3 בעלות 600$!", "מגיע לאותם הביצועים!"..

לא הוא לא. אני מצטער אבל זו האמת. אלפקה לא טוב כמו GPT-3 003. הוא רק "נראה כמו" GPT-3, וזו הבעיה העיקרית האימון מודלים לביצוע הוראות.

מעבר למודל עצמו ולשחרור הדאטה הפתוח, מודל זה נתן לאנשים "רעיונות".. שרשורים המציעים "בואו נאסוף מלא דאטה מGPT-3" אפשר כבר למצוא באינטרנט ואני מנחש שזו היא אחת הסיבות הגדולות שOpenAI החליטו להפסיק את התמיכה בCodex היום.

שרשורים למשל כאן: https://www.reddit.com/…/d_newbie_question_about…

בעיה: תשובות מודלי שפה "רק נראות נכונות":

מודלי שפה גדולים לומדים לענות תשובות ש"נראות נכון" הרבה לפני שלומדים לענות תשובות נכונות באמת. מניסיון.

למשל במודל אלפקה, בהוראה פשוטה "כתוב קוד שמוריד את ציוציו של אילון מאסק ושומר אותם לcsv" – משימה פשוטה במיוחד שGPT-4 מכסח בלי להתאמץ.

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

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

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

בשבוע שעבר, בנוסף לשחרור GPT-4 שוחרר גם מודל מעניין נוסף: GPT-NeoXT-Chat-Base-20B

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

לא. הוא לא באותה האיכות של ChatGPT.

במסגרת הפרוייקט שוחרר גם ממשק אינטרנט דרכו אנשים ברחבי האינטרנט יוכלו לתייג ולתרום דוגמאות שיאספו לאוסף נתונים גדול בו יעשה שימוש באימון המודלים העתידיים. כרגע נאספו כ43 מיליון הוראות לדאטהסט הפתוח ועליהן אומן המודל.

הדאטהסט זמין כאן: https://github.com/LAION-AI/Open-Instruction-Generalist

המודל הכי טוב כרגע ChatGLM הסיני

המודל הכי קרוב כרגע למודלים של OpenAI הוא ChatLM הסיני. (לדעתי)

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

לא. הוא לא באותה האיכות של ChatGPT.

עוד ניסיונות

לא קשה לשים לב שהמאמץ לא ממש מתקדם כמו שציפינו. לניסויות המוזכרים למעלה נוספו עוד הרבה ניסיונות נוספים:

אנחנו באמת צריכים את כל זה?

למה שנרצה בכלל מודלים פרטיים?

  • נתונים יחודיים: קודם כל הינו רוצים מודלים משלנו בשביל נתונים יחודיים במיוחד של הבעיה הספציפית שלנו. גם אם נאמן מודל כל הדאטה הציבורי באינטרנט עם אורך פרומפט ענק. כאשר ננסה מנסה להשתמש במודל על הנתונים הספציפיים הפרטיים שלנו, גם אם נכניס את כולם לפרומפט. עדיין יהיו בעיות שעבורן לא נקבל את אותה התוצאה כמו לאמן את המודל מראש על הדאטה שלנו. עומק ההבנה שיש למודל שמאומן על דאטה ספציפי עמוק הרבה יותר. המודלים של OpenAI מעולים. ברור. אין שאלה. ובכל זאת למרות שעבור 90% מהמשימות הם מספיקים לגמרי. ב 10% מהמשימות המאוד יחודיות עדיין הינו רוצים לאמן מודלים במיוחד.
  • תנאי השימוש: לגבי משימות רבות אנחנו לא כולנו מסכימים, חלק ממשימות שהינו רוצים לפתור פשוט אסורות לפי תנאי השימוש של OpenAI. לדוגמה: נאבקתי עם ChatGPT להעלות רעיונות לממים כמה פעמים כי הוא אמר שוב ושוב שזה לא נחמד להמציא בדיחות שעלולות להעליב מישהו (ואפילו לא ניסיתי להמציא בדיחה על "מישהו"). תנאי השימוש של OpenAI גם יכולים להשתנות. דרך אגב..
  • מכשירי קצה: בכמה משימות מיוחדות, הינו להפעיל את הקוד במכשיר קצה. ה-API של OpenAI הוא לא באמת האפשרות הטובה ביותר בשימוש זה.
  • פרטיות: במקרים מסוימים, ייתכן שנרצה להפעיל מודל מקומי רק כדי לשמור על פרטיות הנתונים. OpenAI אומרים שלעולם לא ישתמשו בנתונים ללא רשות, אבל למשימות עסקיות מסוימות גם זה פשוט לא מספיק.
  • מחיר: אין צורך לדון בזה יותר מידי: הפעלת מודל של OpenAI עולה כמה סנטים (עד כמה דולרים) בכל פעם. הפעלת מודל משלך על החומרה שלך עולה בדיוק 0.

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

ובתור אחד שחוגג להם על הAPI של קודקס כבר כמעט שנה שלמה: זה מבאס מאוד!

ונסיים את הדיון בטענה שנשמעת הרבה:

האם Few-Shot עובד יותר טוב מאימון המודל עצמו?

.

לא.

.

רגע! תנו לי להסביר! זה לא מה שאתם חושבים! חכו רגע עם הצלב הבוער!

.

האם Few-shot עובד יותר טוב בGPT-3 (!) מאשר אימון Fine-Tuning בGPT-3 דרך הAPI של OpenAI?

כן.

חד משמעית כן.

.

נבדק על ידי דוד שפירו ביוטיוב כמה פעמים

אני מנחש שהסיבה לכך היא שללא אישור מיוחד מOpenAI אי אפשר לאמן את GPT-3 על יותר מכמה מאות דוגמאות בודדות. יתרה מכך: אין לנו מידע על כך אבל ככל הנראה GPT-3 מאומן עם Masking דרך הAPI לFine-Tunining.

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

מה המטרה שלנו באימון מודל שפה?

החלטנו שאנחנו רוצים מודל משלנו, מה המטרות? איך נדע בסוף האימון שקיבלנו את המודל שרצינו?

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

ולכן, להלן שתי מטרות עיקריות לאימון מודל משלנו:

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

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

אימון באורך אינסופי

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

יש שתי בעיות עיקריות באימון טקסט ארוך:

  • הראשונה (והברורה): – זכרון. אטנשן צורך זכרון ריבועית לאורך הקלט. אז קלט גדול יותר הופך קשה יותר לאימון.
  • השניה: תופעה מוזרה: ביצועי המודלים נפגעים משמעותית אחרי 1000 טוקנים (אפשר לקרוא במאמר המצוין: https://arxiv.org/abs/2012.15832).

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

יש הרבה טריקים שונים ומשונים לפתרון בעיות אלו:

  • אטנשן לינארי, דליל , גלובלי (Longformer).
  • מסיכה רנדומלית בזמן האימון ש"מעיפה" רעש רנדומלית מהאטנשן (BigBird).
  • אגרגרציה של חלקים מהרצף בנוסף לרצף עצמו (LongT5).
  • אימון קודם בחלונות קטנים ואז על כל הרצף כולו (Shortformer).
  • אטנשן עם רכיב לינארי שמודד מרחק (ALiBI).
  • אטנשן רלטיבי שמודד מרחקים של כל הטוקנים מכל הטוקנים (TransformerXL).
  • אטנשן שלומד יצוג תוכן ויצוג מיקום ויצוג מהתוכן למיקום ומהמיקום לתוכן בכל שכבה כשהכל רלטיבי (DeBERTa).

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

אם משתמשים ב GPT-2 ופשוט מאמנים את המודל כמו שהוא על רצפים למשל באורך 20,000. תוך פחות ממאה דוגמאות המודל כבר לא רע בכלל גם בקלטים הארוכים החדשים.

מקור: ניסיתי.

איפה הבעיה בטקסטים ארוכים?

הארכיטקטורה "לא תומכת"

בGPT-2 יש Positional embedding שנלמד לפי מיקום אבסולוטי, אז אם סתם מגדילים את GPT-2 בלי לאמן צריך ללמד אותו גם את האינדקסים החדשים. אבל כמעט בכל הטרנספורמרים המודרניים יותר (Bloom, LLaMA, T5..) יש כל מיני טריקים אחרים לPosition Encoding ש(בתיאוריה) אין בעיה להריץ על אורכים ארוכים יותר ממה שהם התאמנו עליהם. הבעיה העיקרית היא שהחבילות הנוכחיות פשוט לא תומכות בזה ומקפיצות שגיאות אם נותנים לטרנספורמר אורך גדול מידי. אבל קל לשפצר אותן, עשיתי את זה בעצמי להרבה מאוד מודלים מאומנים מראש.

הזכרון מתפוצץ

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

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

דעתי האישית: כמות הפרמטרים יורדת משמעותית כרגע וזו אחת הסיבות העיקריות לכך שאיננו יודעים מה גודל המודל GPT-4. זה "נשמע לא טוב" אחרי כל מה שעברנו בשנים האחרונות בנושאי Scale.

מודל "טוב" כמו של OpenAI

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

.

אבל.

.

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

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

איפה הבעיה?

עולות שוב ושוב טענות לגבי האיכות של המודלים הפתוחים. בניהן גם שאלת ההמשך של שלגמרי במקום: למה כל המודלים כל כך גרועים? כולם כל הזמן מדברים על לעקוף את GPT-3 (למשל אלפקה) אבל איכשהו הם לא מתקרבים לGPT-3 אף פעם.

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

אני מציע גם כל Stack Overflow, Stack Exchange והמקבילות שלהן במתמטיקה ומדע נתונים.

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

אופס..

המודל שנוצר באמת "נשמע כמו רדיט", אבל הבעיה איתו היא שאנשים ביום יום לא מדברים ככה.

בעיה נוספת עוד רגע..

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

דעתי האישית: זה לא רק הדאטה

מהשניה הראשונה שנגעתי בChatGPT אני חושב שזה מודל אחר מGPT-3, גם המתקדם ביותר. ChatGPT פשוט הרבה הרבה יותר טוב מGPT-3.

הוסיפו לכך את העובדה שלקח לOpenAI כמה חודשים לפתח את הAPI לChatGPT, למה? אם זה אותו המודל מדובר בטעינת משקולות אחרות ולא יותר. את GPT-3 הם יודעים להגיש מצוין (גם GPT-3 "עם שיפורים" בין הגרסאות הגיעו מהר לAPI).

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

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

אני חושב טריקים בארכיטקטורה של הרשת שאנחנו לא יודעים עליהם. נסו בעצמכם את GPT-3.5 מול ChatGPT באותם הפרומפטים. נכתב שהם אומנו "Simillar".

בנוסף: לדעתי גם ChatGPT וGPT-4 הם כן אותו המודל רק מאומן יותר.

מה נעשה עם Scale?

נגיד וזה אותו המודל, מה נעשה עם בעית גדלי המודלים שהפכו לענקיים?

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

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

אין לנו מידע על GPT-4 או ChatGPT (שלדעתי הם מודלים זהים דרך אגב) אבל אפשר כבר לומר ש-ChatGPT כנראה הרבה יותר קטן מ-GPT-3 (ולדעתי גם GPT-4). הם כנראה פשוט אימנו אותם הרבה יותר זמן על הרבה יותר נתונים מדוייקים

מעולם לא הגענו לגבול היכולות של הטרנספורמרים

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

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

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

לדוגמה: אם נקח למשל את המודל הכי חזק בעולם לכל דבר בNLP שהוא לא יצירת טקסט – DeBERTA V3 ונאמן אותו עוד קצת על בעיות כלליות -> מעכשיו יש לנו את "נשק יום הדין":

מודל מאומן מראש שניתן לאמן Fine Tuning לכל דבר שרק נרצה והוא פשוט "תמיד יהיה יותר טוב" ממודלים אחרים מאומנים מראש. ב-0 עלות נוספת באימון הממוקד.

הנה, כבר עשו את זה כאן: https://huggingface.co/sileod/deberta-v3-base-tasksource-nli

לסיכום: למה עדיין אין לנו Open OpenAI:

  • דאטה: הדאטהסטים הפתוחים שלנו כרגע די גרועים. יש היום מאמץ עצום כד להתגבר על זה ולאסוף דאטהסטים נקיים באיכות גבוהה אבל אנחנו עדיין לא שם.
  • ארכיטקטורה / שיטות-אימון / טריקים: ל-OpenAI יש איזה טריק סודי. מצטער. אני פשוט לא מאמין שמה שאנחנו רואים עם ChatGPT הוא פשוט "GPT רגיל". הוא פשוט טוב מדי. לדעתי הם עשו יותר מאשר סתם לאמן מודל GPT להרבה זמן על נתונים באיכות גבוהה יותר, יש להם כנראה עוד כמה טריקים שאנחנו לא יודעים עליהם ומשפרים את הביצועים של המודל.
  • אין לנו קוד לRLHF: בניגוד למה שהרבה אומרים, אין לנו קוד קוד פתוח יציב לאימון RLHF. הקוד הפתוח הנוכחי פשוט לא מתכנס טוב (ושוב כנראה חסרים לו גם כמה טריקים).

אז מה אפשר לעשות עכשיו?

  • לבקש ממארק צוקרברג ממש ממש יפה להמשיך את אימון LLaMA – אפשר לראות בבירור במאמר שכל המודלים ב Underfitting כבד! המשך אימון מודל ה7B לכפול מעכשיו כנראה יעקוף אפילו את GPT-3 davinci הגדול. כולם כבר רואים עד כמה מודלי LLaMA טובים מאוד בתור מודלי בסיס לFine Tuning עתידי, אז המשך אימון יועיל לכולם!
  • איסוף דאטהסט באיכות גבוהה במיוחד למודלים מבוססי צ'אט. אפשר לראות בבירור כמה מודלים מאוד מעניינים משתחררים בנושא.
  • שיפור לRLHF כדי לאמן מודלים טוב יותר או קוד שפשוט משחזר תוצאות ממאמר של OpenAI. שיטת אימון זו באמת חשובה במיוחד. (וגם שיטות אחרות שלא ניסו בכלל, שיטות אימון זה מצוין!)
  • שיפורים לארכיטקטורה של המודל GPT שוחרר לפני יותר מ-3 שנים. כמעט ולא שיפרנו את הארכיטקטורה שלו מאז. ישנם הרבה "שיפורים קלים" שאפשר להכניס לGPT, אפילו כאלה ממאמרים שפורסמו. למשל כמו אלה הנמצאים במודלי T5.
  • חוזר על אותה הנקודה כי זה הכי חשוב: בלי קשר לכל השאר. דאטה == 90% מ"הסוד". נתונים באיכות גבוהה הם פשוט הכי חשובים.

 

עוד בנושא: