דילוג לתוכן

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

למידת מכונה ודאטה סיינס
7 3 125 4
  • תמיד רצית להבין באמת איך עובד הפלא הזה? עכשיו אתה יכול! תמצא זמן לקרוא בעיון את הסקירה.
    השתדלתי מאד לפשט את הדברים כמה שיותר, ולכתוב אותם בצורה שכל אחד יוכל להבין אם הוא רק יאחז ראש

    בינה מלאכותית

    נתחיל קודם עם בנין המושגים, התחום הכולל נקרא Artificial Intelligence (AI) - בינה מלאכותית, כלומר מערכת דיגיטלית שמחקה התנהגות חכמה. השם הוטבע בשנת 1956 בכנס שנערך במכללת Dartmouth (דארטמות') שבארצות-הברית. כבר בשנת 1950 פרסם המדען אלן טיורינג את המדד מה יקרא שמכונה חושבת - אם אדם לא יוכל להבחין בין שתי תגובות שהוא מקבל מה כתב אדם ומה כתב המחשב.

    למידת מכונה

    בשנות ה- 80-90 הבינו שלא אפשרי לתכנת התנהגות חכמה על-ידי כתיבת כללים, זה מורכב מידי, במקום זה, צריך ללמד את המחשב ללמוד לבד מהרבה דוגמאות חכמות שנותנים לו. תחום זה נקרא Machine Learning (ML) - למידת מכונה.

    למידה עמוקה

    בסביבות שנת 2006 הייתה קפיצה נוספת בתחום. עד אז למידת המכונה עבדה בפן הטכני בצורה פשוטה - המחשב למד ממוצע של מה אמור להיות אחרי כך וכך וכדומה, אך אז הבינו, שבשביל שהמחשב יוכל ללמוד ולהכניס לעצמו את כל הדוגמאות שהוא לומד, צריכים להשתמש בחשבונות מורכבים יותר - הרעיון ברור, כמה שדוגמאות האימון יותר ישפיעו ויכנסו למחשב, הוא יהיה יותר חכם, בשביל זה המציאו Neural Networks (רשתות נוירונים), שזה בעצם מהלך חדש של האימון, במקום רק לכוונן מספרים של כל מילה שהמחשב לומד, כותבים יצוג מספרי למילה הכולל כמה מספרים (נקרא 'וקטור'), (מה זה מילה? משתמשים בשיטת BPE - לא לוקחים את כל המילים שקיימות בעולם, אלא לוקחים מאגר טקסט ענק (בשפות הרצויות) ובודקים מה הרצפים הכי נפוצים שם, בתחילה זה כמובן יהיה התוים היחידים, בהמשך גם זוגות תוים, ואף מילים שלימות, עד לכמות שרוצים את גודל המילון, כל רצף תוים כזה שנוצר נקרא 'טוקן'), וכותבים טבלאות של מספרים, שקובעות על כל אחד מהמספרים בוקטור הישן כמה הוא ייוצג בכל אחד מהמספרים בוקטור החדש (על-ידי הכפלה של כל מספר בוקטור הישן במשקל הספציפי שלו למספר החדש הזה וחיבור התוצאות של כל המספרים עבור כל מספר בוקטור החדש), כמו"כ מוסיפים גם מספר (הטיה) לתוצאה, וזה הופך למספר בוקטור החדש.

    אימון

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

    שכבות

    למעשה המושג של רשתות נוירונים כבר היה קיים קודם, אלא שאז המציאו את ה'רשתות נוירונים העמוקות', שמורכבות מכמה שכבות שונות של רשתות נוירונים שמשנים שוב ושוב את הוקטור. בין כל רשת ורשת חייב להיות חישוב לא-לינארי (כלומר לא חישוב על-פי המספר כמו כפל וכדומה) כי בלי זה מפסידים את המעלה של כמה שכבות, כי זה בעצם מכפלה אחת שנעשית בכמה שלבים, ואין כאן באמת הרבה מספרים שהאימון משפיע עליהם.
    בעבר היו משתמשים בחישוב Sigmoid שדוחס את כל המספרים לטווח שבין 0 ל-1, אחר-כך השתמשו ב-Tanh, שדוחס בין -1 ל1, ב-2010 המציאו את ReLU שרק מוחק כל מספר שמתחת ל-0. ב-2016 המציאו את GELU שלא מוחק לגמרי ל0, אלא משאיר קצת לפי הסיכוי שיש שאם נוסיף מספר אקראי למספר השלילי הזה, הוא יעבור את ה0, כך מספר שלילי גבוה כמעט נמחק, ומספר שלילי נמוך, נשאר חלקית. שנה אחר-כך הומצא SiLU שלוקח את המספר השלילי ומכפיל אותו בדחיסה של עצמו (הSigmoid שדיברנו עליו קודם שדוחס הכל בין 0 ל1). בשנת 2020 המציאו את הפונקציה שבשימוש היום, SwiGLU או GeGLU, במקום רשת אחת שיוצרת את המספר, יוצרים שתי רשתות נפרדות, באחת מעבירים ומשתמשים בGELU או בSiLU שדיברנו קודם, ובשניה לא, ואז מכפילים את שתי המספרים שיצאו זה בזה.

    רשת FFN

    לפני החישוב הבלתי לינארי, מגדילים את הוקטור כפול 4, על-ידי רשת נוירונים גדולה כפול 4 שנותנת משקולת מתוך כל המספרים בוקטור הישן לכפול 4 מספרים. לאחר החישוב, מחזירים את הוקטור לגודל המקורי - שוב פעם מעבירים בטבלה גדולה אך הפוכה - שנותנת לכל אחד מהמספרים משקל בכל אחד מהמספרים בוקטור החדש הקטן יותר. למעשה כיום שמשתמשים בSwiGLU או GeGLU, שיוצרים 3 רשתות במקום 2, בשביל שיצא פי 4, משתמשים ביחס של 8/3.

    Transformer

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

    מיקום

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

    ראשי קשב

    לא לוקחים את כל הוקטור המקורי ועושים עליו יחד את כל החשבון הזה, אלא מחלקים את הווקטור לכמה חלקים (-'ראשי קשב'), וכל חלק בנפרד (מהוקטור שיצא מהרשת השניה-Q) בודק מי המילים שהכי קרובות לו מהחלק הזה (מהוקטור שיצא מהרשת השלישית-K). רק אחרי שנוצרים כל החלקים השונים של הוקטור המאוחד מכל המילים, מצרפים את כל הוקטורים יחד ומעבירים דרך רשת רביעית שמאחדת אותם.
    אם המספר יצא גדול מידי, מקטינים אותו (על-ידי נוסחה, שכמה שהמספר יותר גדול מקטינים אותו יותר).
    לאחר שאנו יודעים כמה כל המילים במשפט השפיעו על המילה האחרונה (כולל היא עצמה), יוצרים שילוב מכל הוקטורים האלו (כל אחד מהוקטורים כמה שהוא קשור נותן % מהוקטור שנוצר על-ידי הרשת הראשונה), בודקים בוקטורים של כל המילים כמה כל אחת מהם רחוקה מהוקטור שיצא, המחשב ממיר את זה ל% (וכאן קובעת ה'טמפרטורה' - טמפרטורה נמוכה מתחת ל-1 מגדילה את הפער בין המילים וגורמת ל% גבוהים יותר למילים הכי מתאימות, וטמפרטורה של מעל 1 מפחיתה את הפער בין המילים). יש גם תוספות של top-k - בחירה אקראית רק מבין המילים עם הכי הרבה %, ו-top-p - בחירה אקראית רק מבין מילים שקיבלו לפחות % מסויים.

    חידושים נוספים מהשנים האחרונות

    ארכיטקטורת MoE - תערובת של מומחים
    בשנים האחרונות נוסף אחד מהשיפורים הגדולים בטרנספורמר - MoE, זה אומר שיש כמה רשתות גדולות בכל שכבה, וכל מילה עוברת רק בחלק מהם (הבחירה היא של רשת קטנה נוספת, שהיא הנתב, ולאחר המעבר בה, המחשב יודע לאיזו רשת להפנות את הוקטור. גם רשת זו עוברת כמובן אימון).
    Quantization (קוונטיזציה - כימות)
    במקור, כל מספר (-פרמטר) ברשתות הנוירונים מיוצג ב-32 או 16 ביט, יש אפשרות לאחר גמר האימון לחתוך בחצי ואף יותר את כמות הביטים שהפרמטר תופס, מה שחוסך המון כוח חישוב ולא משפיע כל-כך על איכות המודל, יש קוונטיזציה לכל הגדלים - אפילו ל1, אבל הנפוצים הם 4 ו-8. יש גם סוגי כיווץ שמכוצים חלק יותר וחלק פחות בצורה חכמה.
    כמו-כן ניתן לעשות גם QAT - אימון מודע לכימות, שכבר בזמן האימון מאמנים על דעת לעגל את המספרים בגלל הכימות.

    האימון בפועל

    מאמנים על כמות עצומה של נתונים, בדרך-כלל טרליוני ואף עשרות טרליוני טוקנים, פעולה כזאת לוקחת תשתיות אדירות של מעבדים גרפיים ענקיים שעובדים יחד במשך חודשים, מחלקים את השכבות ואפילו את דוגמת האימון עצמה בין הרבה כרטיסים גרפיים. יש כמה טכניקות להאיץ את האימון, BF16 - אימון מראש על פרמטרים שתופסים 16 ביטים בלבד, Flash Attention - יש בעיה באימון מודלים, כיון שכל הזמן המחשב צריך לחשב פרצמטרים שונים, המעבד לא עובד בשיא התפוקה כי לוקח זמן עד שהנתונים עוברים מהזיכרון שלו לחישוב, בשביל זה יש את Flash Attention שעושה את זה ביעילות הגדולה ביותר.

    צ'אט-בוט

    איך כל זה הופך למה שאנו מכירים? כל מה שאנו פירטנו עושה שהמחשב יודע בחכמה לזהות מה הטוקן הבא שאמור להופיע אחרי משפט מסויים, וככה הוא יכול לכתוב ברצף טוקן אחר טוקן. אך המודל אומן על האינטרנט, על ידע, אז איך הוא יודע לענות: לגבי מה ששאלת... מהיכן הוא מכיר זאת? התשובה היא שלאחר האימון הגדול עושים כיונון למודל - מאמנים אותו לענות על שאלות, מכינים לו (או שמודל AI אחר מכין) כמויות של דוגמאות בסגנון: שאלה: למה יש לילה? תשובה: כי כדור הארץ מסתובב סביב צירו..., וכן גם דוגמאות של צ'אט ארוך עם שאלה-תשבת-שאלה-תשובה, וגם עוד כל מיני סוגים שונים של טקסטים של תשובה וכדומה, ובזמן השיחה, המערכת מכניסה לו מאחורי הקלעים לפני שאילת המשתמש את המילה שאלה:, ואחרי שאלת המשתמש את המילה תשובה:, גם מכינים לו הרבה דוגמאות של סירוב לענות לתוכן מזיק, פוגעני וכדומה. כמו-כן המודל מאומן לעצור כשהוא מגיע לסימן של סוף תשובה.
    שלב קריטי נוסף, זה העדפות משתמש, מייצרים 2 תשובות במודל על אותו שאלה, ואדם (או מודל AI אחר) מדרג אותם מה יותר טוב, בעבר השתמשו בRLHF - פונקציה להעלאת הסבירות לתשובה הטובה יותר,כיום משתמשים בDPO, שרק מצרף את התשובה הטובה כדוגמת אימון.
    שלב הכוונון יכול להתבצע גם לכל מודל שרוצים שהוא יענה יותר טוב/על נושא ספציפי.
    יש טכניקה בשם LoRA שבמקום לאמן בכוונון את כל הפרמטרים, מוסיפים שתי רשתות קטנות לכל רשת ורק אותם מאמנים.
    יש מודלים שעוברים זיקוק - לוקחים מודל, ומאמנים אותו מאפס (או כוונון) רק על תשובות שמודל אחר יצר.

    הזיות

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

    חשיבה

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

    KV cache

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

    חלון הקשר

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

    מולטי-מודאליות

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

    סוכנים

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

    המודלים

    בפועל, בשנים האחרונות נוצרו כמויות של מודלי שפה, שעולים ברמה מיום ליום, חברות משקיעות טרליונים בשביל להתחרות מי מייצרת את המודל הכי טוב. מי קובע מה מודל יותר טוב? יש כמה סוגי מבחנים שיצרו בשביל לקבוע את ציון המודל, יכול להיות גם מודל שטוב בדבר כזה וגרוע בדבר אחר, יש גם מדדים שנוצרים מהערכה של משתמשים שמקבלים 2 תשובות, ואומרים מה יותק טוב, בלי לדעת אם איזה מודל הם משתמשים.
    החברות שנמצאות היום בראש מדד המודלים, הם Anthropic, OpenAI, Google, SpaceXAI, Meta האמריקאיות, והחברות הסיניות Kimi, Alibaba, Z AI, DeepSeek ו- MiniMax.

    משקולות פתוחות

    בשונה מהחברות האמריקאיות שלרוב משאירות את מודלי הדגל אצלם, ונותנות להשתמש בהם דרך ממשק באתר או דרך קריאת API, החברות הסיניות ברובם מפרסמות את המודל, והוא ניתן לצפיה ולהורדה, מי שהתחילה את הסטדנדרט הזה היא דווקא חברת מטא עם סדרת llama שלה.
    כיון שהחברות מפרסמות רק את המודל המוכן ולא את הדרך להכין אותו, המודלים לא מוגדרים כקוד פתוח אלא כמשקולות פתוחות, החברה הכמעט יחידה שמפרסמת מודלים בקוד פתוח היא AllenAI עם סדרת OLMo שלה, היא מפרסמת בנוסף למודל גם את קוד האימון ואת נתוני האימון השונים.
    יש גם סוגי רשיונות שונים שבהם המודלים מפורסמים, הפתוח שבהם הוא Apache 2.0.

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

    בינה מלאכותית

    נתחיל קודם עם בנין המושגים, התחום הכולל נקרא Artificial Intelligence (AI) - בינה מלאכותית, כלומר מערכת דיגיטלית שמחקה התנהגות חכמה. השם הוטבע בשנת 1956 בכנס שנערך במכללת Dartmouth (דארטמות') שבארצות-הברית. כבר בשנת 1950 פרסם המדען אלן טיורינג את המדד מה יקרא שמכונה חושבת - אם אדם לא יוכל להבחין בין שתי תגובות שהוא מקבל מה כתב אדם ומה כתב המחשב.

    למידת מכונה

    בשנות ה- 80-90 הבינו שלא אפשרי לתכנת התנהגות חכמה על-ידי כתיבת כללים, זה מורכב מידי, במקום זה, צריך ללמד את המחשב ללמוד לבד מהרבה דוגמאות חכמות שנותנים לו. תחום זה נקרא Machine Learning (ML) - למידת מכונה.

    למידה עמוקה

    בסביבות שנת 2006 הייתה קפיצה נוספת בתחום. עד אז למידת המכונה עבדה בפן הטכני בצורה פשוטה - המחשב למד ממוצע של מה אמור להיות אחרי כך וכך וכדומה, אך אז הבינו, שבשביל שהמחשב יוכל ללמוד ולהכניס לעצמו את כל הדוגמאות שהוא לומד, צריכים להשתמש בחשבונות מורכבים יותר - הרעיון ברור, כמה שדוגמאות האימון יותר ישפיעו ויכנסו למחשב, הוא יהיה יותר חכם, בשביל זה המציאו Neural Networks (רשתות נוירונים), שזה בעצם מהלך חדש של האימון, במקום רק לכוונן מספרים של כל מילה שהמחשב לומד, כותבים יצוג מספרי למילה הכולל כמה מספרים (נקרא 'וקטור'), (מה זה מילה? משתמשים בשיטת BPE - לא לוקחים את כל המילים שקיימות בעולם, אלא לוקחים מאגר טקסט ענק (בשפות הרצויות) ובודקים מה הרצפים הכי נפוצים שם, בתחילה זה כמובן יהיה התוים היחידים, בהמשך גם זוגות תוים, ואף מילים שלימות, עד לכמות שרוצים את גודל המילון, כל רצף תוים כזה שנוצר נקרא 'טוקן'), וכותבים טבלאות של מספרים, שקובעות על כל אחד מהמספרים בוקטור הישן כמה הוא ייוצג בכל אחד מהמספרים בוקטור החדש (על-ידי הכפלה של כל מספר בוקטור הישן במשקל הספציפי שלו למספר החדש הזה וחיבור התוצאות של כל המספרים עבור כל מספר בוקטור החדש), כמו"כ מוסיפים גם מספר (הטיה) לתוצאה, וזה הופך למספר בוקטור החדש.

    אימון

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

    שכבות

    למעשה המושג של רשתות נוירונים כבר היה קיים קודם, אלא שאז המציאו את ה'רשתות נוירונים העמוקות', שמורכבות מכמה שכבות שונות של רשתות נוירונים שמשנים שוב ושוב את הוקטור. בין כל רשת ורשת חייב להיות חישוב לא-לינארי (כלומר לא חישוב על-פי המספר כמו כפל וכדומה) כי בלי זה מפסידים את המעלה של כמה שכבות, כי זה בעצם מכפלה אחת שנעשית בכמה שלבים, ואין כאן באמת הרבה מספרים שהאימון משפיע עליהם.
    בעבר היו משתמשים בחישוב Sigmoid שדוחס את כל המספרים לטווח שבין 0 ל-1, אחר-כך השתמשו ב-Tanh, שדוחס בין -1 ל1, ב-2010 המציאו את ReLU שרק מוחק כל מספר שמתחת ל-0. ב-2016 המציאו את GELU שלא מוחק לגמרי ל0, אלא משאיר קצת לפי הסיכוי שיש שאם נוסיף מספר אקראי למספר השלילי הזה, הוא יעבור את ה0, כך מספר שלילי גבוה כמעט נמחק, ומספר שלילי נמוך, נשאר חלקית. שנה אחר-כך הומצא SiLU שלוקח את המספר השלילי ומכפיל אותו בדחיסה של עצמו (הSigmoid שדיברנו עליו קודם שדוחס הכל בין 0 ל1). בשנת 2020 המציאו את הפונקציה שבשימוש היום, SwiGLU או GeGLU, במקום רשת אחת שיוצרת את המספר, יוצרים שתי רשתות נפרדות, באחת מעבירים ומשתמשים בGELU או בSiLU שדיברנו קודם, ובשניה לא, ואז מכפילים את שתי המספרים שיצאו זה בזה.

    רשת FFN

    לפני החישוב הבלתי לינארי, מגדילים את הוקטור כפול 4, על-ידי רשת נוירונים גדולה כפול 4 שנותנת משקולת מתוך כל המספרים בוקטור הישן לכפול 4 מספרים. לאחר החישוב, מחזירים את הוקטור לגודל המקורי - שוב פעם מעבירים בטבלה גדולה אך הפוכה - שנותנת לכל אחד מהמספרים משקל בכל אחד מהמספרים בוקטור החדש הקטן יותר. למעשה כיום שמשתמשים בSwiGLU או GeGLU, שיוצרים 3 רשתות במקום 2, בשביל שיצא פי 4, משתמשים ביחס של 8/3.

    Transformer

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

    מיקום

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

    ראשי קשב

    לא לוקחים את כל הוקטור המקורי ועושים עליו יחד את כל החשבון הזה, אלא מחלקים את הווקטור לכמה חלקים (-'ראשי קשב'), וכל חלק בנפרד (מהוקטור שיצא מהרשת השניה-Q) בודק מי המילים שהכי קרובות לו מהחלק הזה (מהוקטור שיצא מהרשת השלישית-K). רק אחרי שנוצרים כל החלקים השונים של הוקטור המאוחד מכל המילים, מצרפים את כל הוקטורים יחד ומעבירים דרך רשת רביעית שמאחדת אותם.
    אם המספר יצא גדול מידי, מקטינים אותו (על-ידי נוסחה, שכמה שהמספר יותר גדול מקטינים אותו יותר).
    לאחר שאנו יודעים כמה כל המילים במשפט השפיעו על המילה האחרונה (כולל היא עצמה), יוצרים שילוב מכל הוקטורים האלו (כל אחד מהוקטורים כמה שהוא קשור נותן % מהוקטור שנוצר על-ידי הרשת הראשונה), בודקים בוקטורים של כל המילים כמה כל אחת מהם רחוקה מהוקטור שיצא, המחשב ממיר את זה ל% (וכאן קובעת ה'טמפרטורה' - טמפרטורה נמוכה מתחת ל-1 מגדילה את הפער בין המילים וגורמת ל% גבוהים יותר למילים הכי מתאימות, וטמפרטורה של מעל 1 מפחיתה את הפער בין המילים). יש גם תוספות של top-k - בחירה אקראית רק מבין המילים עם הכי הרבה %, ו-top-p - בחירה אקראית רק מבין מילים שקיבלו לפחות % מסויים.

    חידושים נוספים מהשנים האחרונות

    ארכיטקטורת MoE - תערובת של מומחים
    בשנים האחרונות נוסף אחד מהשיפורים הגדולים בטרנספורמר - MoE, זה אומר שיש כמה רשתות גדולות בכל שכבה, וכל מילה עוברת רק בחלק מהם (הבחירה היא של רשת קטנה נוספת, שהיא הנתב, ולאחר המעבר בה, המחשב יודע לאיזו רשת להפנות את הוקטור. גם רשת זו עוברת כמובן אימון).
    Quantization (קוונטיזציה - כימות)
    במקור, כל מספר (-פרמטר) ברשתות הנוירונים מיוצג ב-32 או 16 ביט, יש אפשרות לאחר גמר האימון לחתוך בחצי ואף יותר את כמות הביטים שהפרמטר תופס, מה שחוסך המון כוח חישוב ולא משפיע כל-כך על איכות המודל, יש קוונטיזציה לכל הגדלים - אפילו ל1, אבל הנפוצים הם 4 ו-8. יש גם סוגי כיווץ שמכוצים חלק יותר וחלק פחות בצורה חכמה.
    כמו-כן ניתן לעשות גם QAT - אימון מודע לכימות, שכבר בזמן האימון מאמנים על דעת לעגל את המספרים בגלל הכימות.

    האימון בפועל

    מאמנים על כמות עצומה של נתונים, בדרך-כלל טרליוני ואף עשרות טרליוני טוקנים, פעולה כזאת לוקחת תשתיות אדירות של מעבדים גרפיים ענקיים שעובדים יחד במשך חודשים, מחלקים את השכבות ואפילו את דוגמת האימון עצמה בין הרבה כרטיסים גרפיים. יש כמה טכניקות להאיץ את האימון, BF16 - אימון מראש על פרמטרים שתופסים 16 ביטים בלבד, Flash Attention - יש בעיה באימון מודלים, כיון שכל הזמן המחשב צריך לחשב פרצמטרים שונים, המעבד לא עובד בשיא התפוקה כי לוקח זמן עד שהנתונים עוברים מהזיכרון שלו לחישוב, בשביל זה יש את Flash Attention שעושה את זה ביעילות הגדולה ביותר.

    צ'אט-בוט

    איך כל זה הופך למה שאנו מכירים? כל מה שאנו פירטנו עושה שהמחשב יודע בחכמה לזהות מה הטוקן הבא שאמור להופיע אחרי משפט מסויים, וככה הוא יכול לכתוב ברצף טוקן אחר טוקן. אך המודל אומן על האינטרנט, על ידע, אז איך הוא יודע לענות: לגבי מה ששאלת... מהיכן הוא מכיר זאת? התשובה היא שלאחר האימון הגדול עושים כיונון למודל - מאמנים אותו לענות על שאלות, מכינים לו (או שמודל AI אחר מכין) כמויות של דוגמאות בסגנון: שאלה: למה יש לילה? תשובה: כי כדור הארץ מסתובב סביב צירו..., וכן גם דוגמאות של צ'אט ארוך עם שאלה-תשבת-שאלה-תשובה, וגם עוד כל מיני סוגים שונים של טקסטים של תשובה וכדומה, ובזמן השיחה, המערכת מכניסה לו מאחורי הקלעים לפני שאילת המשתמש את המילה שאלה:, ואחרי שאלת המשתמש את המילה תשובה:, גם מכינים לו הרבה דוגמאות של סירוב לענות לתוכן מזיק, פוגעני וכדומה. כמו-כן המודל מאומן לעצור כשהוא מגיע לסימן של סוף תשובה.
    שלב קריטי נוסף, זה העדפות משתמש, מייצרים 2 תשובות במודל על אותו שאלה, ואדם (או מודל AI אחר) מדרג אותם מה יותר טוב, בעבר השתמשו בRLHF - פונקציה להעלאת הסבירות לתשובה הטובה יותר,כיום משתמשים בDPO, שרק מצרף את התשובה הטובה כדוגמת אימון.
    שלב הכוונון יכול להתבצע גם לכל מודל שרוצים שהוא יענה יותר טוב/על נושא ספציפי.
    יש טכניקה בשם LoRA שבמקום לאמן בכוונון את כל הפרמטרים, מוסיפים שתי רשתות קטנות לכל רשת ורק אותם מאמנים.
    יש מודלים שעוברים זיקוק - לוקחים מודל, ומאמנים אותו מאפס (או כוונון) רק על תשובות שמודל אחר יצר.

    הזיות

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

    חשיבה

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

    KV cache

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

    חלון הקשר

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

    מולטי-מודאליות

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

    סוכנים

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

    המודלים

    בפועל, בשנים האחרונות נוצרו כמויות של מודלי שפה, שעולים ברמה מיום ליום, חברות משקיעות טרליונים בשביל להתחרות מי מייצרת את המודל הכי טוב. מי קובע מה מודל יותר טוב? יש כמה סוגי מבחנים שיצרו בשביל לקבוע את ציון המודל, יכול להיות גם מודל שטוב בדבר כזה וגרוע בדבר אחר, יש גם מדדים שנוצרים מהערכה של משתמשים שמקבלים 2 תשובות, ואומרים מה יותק טוב, בלי לדעת אם איזה מודל הם משתמשים.
    החברות שנמצאות היום בראש מדד המודלים, הם Anthropic, OpenAI, Google, SpaceXAI, Meta האמריקאיות, והחברות הסיניות Kimi, Alibaba, Z AI, DeepSeek ו- MiniMax.

    משקולות פתוחות

    בשונה מהחברות האמריקאיות שלרוב משאירות את מודלי הדגל אצלם, ונותנות להשתמש בהם דרך ממשק באתר או דרך קריאת API, החברות הסיניות ברובם מפרסמות את המודל, והוא ניתן לצפיה ולהורדה, מי שהתחילה את הסטדנדרט הזה היא דווקא חברת מטא עם סדרת llama שלה.
    כיון שהחברות מפרסמות רק את המודל המוכן ולא את הדרך להכין אותו, המודלים לא מוגדרים כקוד פתוח אלא כמשקולות פתוחות, החברה הכמעט יחידה שמפרסמת מודלים בקוד פתוח היא AllenAI עם סדרת OLMo שלה, היא מפרסמת בנוסף למודל גם את קוד האימון ואת נתוני האימון השונים.
    יש גם סוגי רשיונות שונים שבהם המודלים מפורסמים, הפתוח שבהם הוא Apache 2.0.

    ניתן להציע תיקונים, תוספות ושיפורים, ואני אכניס אותם לסקירה

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

    בינה מלאכותית

    נתחיל קודם עם בנין המושגים, התחום הכולל נקרא Artificial Intelligence (AI) - בינה מלאכותית, כלומר מערכת דיגיטלית שמחקה התנהגות חכמה. השם הוטבע בשנת 1956 בכנס שנערך במכללת Dartmouth (דארטמות') שבארצות-הברית. כבר בשנת 1950 פרסם המדען אלן טיורינג את המדד מה יקרא שמכונה חושבת - אם אדם לא יוכל להבחין בין שתי תגובות שהוא מקבל מה כתב אדם ומה כתב המחשב.

    למידת מכונה

    בשנות ה- 80-90 הבינו שלא אפשרי לתכנת התנהגות חכמה על-ידי כתיבת כללים, זה מורכב מידי, במקום זה, צריך ללמד את המחשב ללמוד לבד מהרבה דוגמאות חכמות שנותנים לו. תחום זה נקרא Machine Learning (ML) - למידת מכונה.

    למידה עמוקה

    בסביבות שנת 2006 הייתה קפיצה נוספת בתחום. עד אז למידת המכונה עבדה בפן הטכני בצורה פשוטה - המחשב למד ממוצע של מה אמור להיות אחרי כך וכך וכדומה, אך אז הבינו, שבשביל שהמחשב יוכל ללמוד ולהכניס לעצמו את כל הדוגמאות שהוא לומד, צריכים להשתמש בחשבונות מורכבים יותר - הרעיון ברור, כמה שדוגמאות האימון יותר ישפיעו ויכנסו למחשב, הוא יהיה יותר חכם, בשביל זה המציאו Neural Networks (רשתות נוירונים), שזה בעצם מהלך חדש של האימון, במקום רק לכוונן מספרים של כל מילה שהמחשב לומד, כותבים יצוג מספרי למילה הכולל כמה מספרים (נקרא 'וקטור'), (מה זה מילה? משתמשים בשיטת BPE - לא לוקחים את כל המילים שקיימות בעולם, אלא לוקחים מאגר טקסט ענק (בשפות הרצויות) ובודקים מה הרצפים הכי נפוצים שם, בתחילה זה כמובן יהיה התוים היחידים, בהמשך גם זוגות תוים, ואף מילים שלימות, עד לכמות שרוצים את גודל המילון, כל רצף תוים כזה שנוצר נקרא 'טוקן'), וכותבים טבלאות של מספרים, שקובעות על כל אחד מהמספרים בוקטור הישן כמה הוא ייוצג בכל אחד מהמספרים בוקטור החדש (על-ידי הכפלה של כל מספר בוקטור הישן במשקל הספציפי שלו למספר החדש הזה וחיבור התוצאות של כל המספרים עבור כל מספר בוקטור החדש), כמו"כ מוסיפים גם מספר (הטיה) לתוצאה, וזה הופך למספר בוקטור החדש.

    אימון

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

    שכבות

    למעשה המושג של רשתות נוירונים כבר היה קיים קודם, אלא שאז המציאו את ה'רשתות נוירונים העמוקות', שמורכבות מכמה שכבות שונות של רשתות נוירונים שמשנים שוב ושוב את הוקטור. בין כל רשת ורשת חייב להיות חישוב לא-לינארי (כלומר לא חישוב על-פי המספר כמו כפל וכדומה) כי בלי זה מפסידים את המעלה של כמה שכבות, כי זה בעצם מכפלה אחת שנעשית בכמה שלבים, ואין כאן באמת הרבה מספרים שהאימון משפיע עליהם.
    בעבר היו משתמשים בחישוב Sigmoid שדוחס את כל המספרים לטווח שבין 0 ל-1, אחר-כך השתמשו ב-Tanh, שדוחס בין -1 ל1, ב-2010 המציאו את ReLU שרק מוחק כל מספר שמתחת ל-0. ב-2016 המציאו את GELU שלא מוחק לגמרי ל0, אלא משאיר קצת לפי הסיכוי שיש שאם נוסיף מספר אקראי למספר השלילי הזה, הוא יעבור את ה0, כך מספר שלילי גבוה כמעט נמחק, ומספר שלילי נמוך, נשאר חלקית. שנה אחר-כך הומצא SiLU שלוקח את המספר השלילי ומכפיל אותו בדחיסה של עצמו (הSigmoid שדיברנו עליו קודם שדוחס הכל בין 0 ל1). בשנת 2020 המציאו את הפונקציה שבשימוש היום, SwiGLU או GeGLU, במקום רשת אחת שיוצרת את המספר, יוצרים שתי רשתות נפרדות, באחת מעבירים ומשתמשים בGELU או בSiLU שדיברנו קודם, ובשניה לא, ואז מכפילים את שתי המספרים שיצאו זה בזה.

    רשת FFN

    לפני החישוב הבלתי לינארי, מגדילים את הוקטור כפול 4, על-ידי רשת נוירונים גדולה כפול 4 שנותנת משקולת מתוך כל המספרים בוקטור הישן לכפול 4 מספרים. לאחר החישוב, מחזירים את הוקטור לגודל המקורי - שוב פעם מעבירים בטבלה גדולה אך הפוכה - שנותנת לכל אחד מהמספרים משקל בכל אחד מהמספרים בוקטור החדש הקטן יותר. למעשה כיום שמשתמשים בSwiGLU או GeGLU, שיוצרים 3 רשתות במקום 2, בשביל שיצא פי 4, משתמשים ביחס של 8/3.

    Transformer

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

    מיקום

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

    ראשי קשב

    לא לוקחים את כל הוקטור המקורי ועושים עליו יחד את כל החשבון הזה, אלא מחלקים את הווקטור לכמה חלקים (-'ראשי קשב'), וכל חלק בנפרד (מהוקטור שיצא מהרשת השניה-Q) בודק מי המילים שהכי קרובות לו מהחלק הזה (מהוקטור שיצא מהרשת השלישית-K). רק אחרי שנוצרים כל החלקים השונים של הוקטור המאוחד מכל המילים, מצרפים את כל הוקטורים יחד ומעבירים דרך רשת רביעית שמאחדת אותם.
    אם המספר יצא גדול מידי, מקטינים אותו (על-ידי נוסחה, שכמה שהמספר יותר גדול מקטינים אותו יותר).
    לאחר שאנו יודעים כמה כל המילים במשפט השפיעו על המילה האחרונה (כולל היא עצמה), יוצרים שילוב מכל הוקטורים האלו (כל אחד מהוקטורים כמה שהוא קשור נותן % מהוקטור שנוצר על-ידי הרשת הראשונה), בודקים בוקטורים של כל המילים כמה כל אחת מהם רחוקה מהוקטור שיצא, המחשב ממיר את זה ל% (וכאן קובעת ה'טמפרטורה' - טמפרטורה נמוכה מתחת ל-1 מגדילה את הפער בין המילים וגורמת ל% גבוהים יותר למילים הכי מתאימות, וטמפרטורה של מעל 1 מפחיתה את הפער בין המילים). יש גם תוספות של top-k - בחירה אקראית רק מבין המילים עם הכי הרבה %, ו-top-p - בחירה אקראית רק מבין מילים שקיבלו לפחות % מסויים.

    חידושים נוספים מהשנים האחרונות

    ארכיטקטורת MoE - תערובת של מומחים
    בשנים האחרונות נוסף אחד מהשיפורים הגדולים בטרנספורמר - MoE, זה אומר שיש כמה רשתות גדולות בכל שכבה, וכל מילה עוברת רק בחלק מהם (הבחירה היא של רשת קטנה נוספת, שהיא הנתב, ולאחר המעבר בה, המחשב יודע לאיזו רשת להפנות את הוקטור. גם רשת זו עוברת כמובן אימון).
    Quantization (קוונטיזציה - כימות)
    במקור, כל מספר (-פרמטר) ברשתות הנוירונים מיוצג ב-32 או 16 ביט, יש אפשרות לאחר גמר האימון לחתוך בחצי ואף יותר את כמות הביטים שהפרמטר תופס, מה שחוסך המון כוח חישוב ולא משפיע כל-כך על איכות המודל, יש קוונטיזציה לכל הגדלים - אפילו ל1, אבל הנפוצים הם 4 ו-8. יש גם סוגי כיווץ שמכוצים חלק יותר וחלק פחות בצורה חכמה.
    כמו-כן ניתן לעשות גם QAT - אימון מודע לכימות, שכבר בזמן האימון מאמנים על דעת לעגל את המספרים בגלל הכימות.

    האימון בפועל

    מאמנים על כמות עצומה של נתונים, בדרך-כלל טרליוני ואף עשרות טרליוני טוקנים, פעולה כזאת לוקחת תשתיות אדירות של מעבדים גרפיים ענקיים שעובדים יחד במשך חודשים, מחלקים את השכבות ואפילו את דוגמת האימון עצמה בין הרבה כרטיסים גרפיים. יש כמה טכניקות להאיץ את האימון, BF16 - אימון מראש על פרמטרים שתופסים 16 ביטים בלבד, Flash Attention - יש בעיה באימון מודלים, כיון שכל הזמן המחשב צריך לחשב פרצמטרים שונים, המעבד לא עובד בשיא התפוקה כי לוקח זמן עד שהנתונים עוברים מהזיכרון שלו לחישוב, בשביל זה יש את Flash Attention שעושה את זה ביעילות הגדולה ביותר.

    צ'אט-בוט

    איך כל זה הופך למה שאנו מכירים? כל מה שאנו פירטנו עושה שהמחשב יודע בחכמה לזהות מה הטוקן הבא שאמור להופיע אחרי משפט מסויים, וככה הוא יכול לכתוב ברצף טוקן אחר טוקן. אך המודל אומן על האינטרנט, על ידע, אז איך הוא יודע לענות: לגבי מה ששאלת... מהיכן הוא מכיר זאת? התשובה היא שלאחר האימון הגדול עושים כיונון למודל - מאמנים אותו לענות על שאלות, מכינים לו (או שמודל AI אחר מכין) כמויות של דוגמאות בסגנון: שאלה: למה יש לילה? תשובה: כי כדור הארץ מסתובב סביב צירו..., וכן גם דוגמאות של צ'אט ארוך עם שאלה-תשבת-שאלה-תשובה, וגם עוד כל מיני סוגים שונים של טקסטים של תשובה וכדומה, ובזמן השיחה, המערכת מכניסה לו מאחורי הקלעים לפני שאילת המשתמש את המילה שאלה:, ואחרי שאלת המשתמש את המילה תשובה:, גם מכינים לו הרבה דוגמאות של סירוב לענות לתוכן מזיק, פוגעני וכדומה. כמו-כן המודל מאומן לעצור כשהוא מגיע לסימן של סוף תשובה.
    שלב קריטי נוסף, זה העדפות משתמש, מייצרים 2 תשובות במודל על אותו שאלה, ואדם (או מודל AI אחר) מדרג אותם מה יותר טוב, בעבר השתמשו בRLHF - פונקציה להעלאת הסבירות לתשובה הטובה יותר,כיום משתמשים בDPO, שרק מצרף את התשובה הטובה כדוגמת אימון.
    שלב הכוונון יכול להתבצע גם לכל מודל שרוצים שהוא יענה יותר טוב/על נושא ספציפי.
    יש טכניקה בשם LoRA שבמקום לאמן בכוונון את כל הפרמטרים, מוסיפים שתי רשתות קטנות לכל רשת ורק אותם מאמנים.
    יש מודלים שעוברים זיקוק - לוקחים מודל, ומאמנים אותו מאפס (או כוונון) רק על תשובות שמודל אחר יצר.

    הזיות

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

    חשיבה

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

    KV cache

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

    חלון הקשר

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

    מולטי-מודאליות

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

    סוכנים

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

    המודלים

    בפועל, בשנים האחרונות נוצרו כמויות של מודלי שפה, שעולים ברמה מיום ליום, חברות משקיעות טרליונים בשביל להתחרות מי מייצרת את המודל הכי טוב. מי קובע מה מודל יותר טוב? יש כמה סוגי מבחנים שיצרו בשביל לקבוע את ציון המודל, יכול להיות גם מודל שטוב בדבר כזה וגרוע בדבר אחר, יש גם מדדים שנוצרים מהערכה של משתמשים שמקבלים 2 תשובות, ואומרים מה יותק טוב, בלי לדעת אם איזה מודל הם משתמשים.
    החברות שנמצאות היום בראש מדד המודלים, הם Anthropic, OpenAI, Google, SpaceXAI, Meta האמריקאיות, והחברות הסיניות Kimi, Alibaba, Z AI, DeepSeek ו- MiniMax.

    משקולות פתוחות

    בשונה מהחברות האמריקאיות שלרוב משאירות את מודלי הדגל אצלם, ונותנות להשתמש בהם דרך ממשק באתר או דרך קריאת API, החברות הסיניות ברובם מפרסמות את המודל, והוא ניתן לצפיה ולהורדה, מי שהתחילה את הסטדנדרט הזה היא דווקא חברת מטא עם סדרת llama שלה.
    כיון שהחברות מפרסמות רק את המודל המוכן ולא את הדרך להכין אותו, המודלים לא מוגדרים כקוד פתוח אלא כמשקולות פתוחות, החברה הכמעט יחידה שמפרסמת מודלים בקוד פתוח היא AllenAI עם סדרת OLMo שלה, היא מפרסמת בנוסף למודל גם את קוד האימון ואת נתוני האימון השונים.
    יש גם סוגי רשיונות שונים שבהם המודלים מפורסמים, הפתוח שבהם הוא Apache 2.0.

    @יש-לי-מושג כתב:

    AI2

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

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

    בינה מלאכותית

    נתחיל קודם עם בנין המושגים, התחום הכולל נקרא Artificial Intelligence (AI) - בינה מלאכותית, כלומר מערכת דיגיטלית שמחקה התנהגות חכמה. השם הוטבע בשנת 1956 בכנס שנערך במכללת Dartmouth (דארטמות') שבארצות-הברית. כבר בשנת 1950 פרסם המדען אלן טיורינג את המדד מה יקרא שמכונה חושבת - אם אדם לא יוכל להבחין בין שתי תגובות שהוא מקבל מה כתב אדם ומה כתב המחשב.

    למידת מכונה

    בשנות ה- 80-90 הבינו שלא אפשרי לתכנת התנהגות חכמה על-ידי כתיבת כללים, זה מורכב מידי, במקום זה, צריך ללמד את המחשב ללמוד לבד מהרבה דוגמאות חכמות שנותנים לו. תחום זה נקרא Machine Learning (ML) - למידת מכונה.

    למידה עמוקה

    בסביבות שנת 2006 הייתה קפיצה נוספת בתחום. עד אז למידת המכונה עבדה בפן הטכני בצורה פשוטה - המחשב למד ממוצע של מה אמור להיות אחרי כך וכך וכדומה, אך אז הבינו, שבשביל שהמחשב יוכל ללמוד ולהכניס לעצמו את כל הדוגמאות שהוא לומד, צריכים להשתמש בחשבונות מורכבים יותר - הרעיון ברור, כמה שדוגמאות האימון יותר ישפיעו ויכנסו למחשב, הוא יהיה יותר חכם, בשביל זה המציאו Neural Networks (רשתות נוירונים), שזה בעצם מהלך חדש של האימון, במקום רק לכוונן מספרים של כל מילה שהמחשב לומד, כותבים יצוג מספרי למילה הכולל כמה מספרים (נקרא 'וקטור'), (מה זה מילה? משתמשים בשיטת BPE - לא לוקחים את כל המילים שקיימות בעולם, אלא לוקחים מאגר טקסט ענק (בשפות הרצויות) ובודקים מה הרצפים הכי נפוצים שם, בתחילה זה כמובן יהיה התוים היחידים, בהמשך גם זוגות תוים, ואף מילים שלימות, עד לכמות שרוצים את גודל המילון, כל רצף תוים כזה שנוצר נקרא 'טוקן'), וכותבים טבלאות של מספרים, שקובעות על כל אחד מהמספרים בוקטור הישן כמה הוא ייוצג בכל אחד מהמספרים בוקטור החדש (על-ידי הכפלה של כל מספר בוקטור הישן במשקל הספציפי שלו למספר החדש הזה וחיבור התוצאות של כל המספרים עבור כל מספר בוקטור החדש), כמו"כ מוסיפים גם מספר (הטיה) לתוצאה, וזה הופך למספר בוקטור החדש.

    אימון

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

    שכבות

    למעשה המושג של רשתות נוירונים כבר היה קיים קודם, אלא שאז המציאו את ה'רשתות נוירונים העמוקות', שמורכבות מכמה שכבות שונות של רשתות נוירונים שמשנים שוב ושוב את הוקטור. בין כל רשת ורשת חייב להיות חישוב לא-לינארי (כלומר לא חישוב על-פי המספר כמו כפל וכדומה) כי בלי זה מפסידים את המעלה של כמה שכבות, כי זה בעצם מכפלה אחת שנעשית בכמה שלבים, ואין כאן באמת הרבה מספרים שהאימון משפיע עליהם.
    בעבר היו משתמשים בחישוב Sigmoid שדוחס את כל המספרים לטווח שבין 0 ל-1, אחר-כך השתמשו ב-Tanh, שדוחס בין -1 ל1, ב-2010 המציאו את ReLU שרק מוחק כל מספר שמתחת ל-0. ב-2016 המציאו את GELU שלא מוחק לגמרי ל0, אלא משאיר קצת לפי הסיכוי שיש שאם נוסיף מספר אקראי למספר השלילי הזה, הוא יעבור את ה0, כך מספר שלילי גבוה כמעט נמחק, ומספר שלילי נמוך, נשאר חלקית. שנה אחר-כך הומצא SiLU שלוקח את המספר השלילי ומכפיל אותו בדחיסה של עצמו (הSigmoid שדיברנו עליו קודם שדוחס הכל בין 0 ל1). בשנת 2020 המציאו את הפונקציה שבשימוש היום, SwiGLU או GeGLU, במקום רשת אחת שיוצרת את המספר, יוצרים שתי רשתות נפרדות, באחת מעבירים ומשתמשים בGELU או בSiLU שדיברנו קודם, ובשניה לא, ואז מכפילים את שתי המספרים שיצאו זה בזה.

    רשת FFN

    לפני החישוב הבלתי לינארי, מגדילים את הוקטור כפול 4, על-ידי רשת נוירונים גדולה כפול 4 שנותנת משקולת מתוך כל המספרים בוקטור הישן לכפול 4 מספרים. לאחר החישוב, מחזירים את הוקטור לגודל המקורי - שוב פעם מעבירים בטבלה גדולה אך הפוכה - שנותנת לכל אחד מהמספרים משקל בכל אחד מהמספרים בוקטור החדש הקטן יותר. למעשה כיום שמשתמשים בSwiGLU או GeGLU, שיוצרים 3 רשתות במקום 2, בשביל שיצא פי 4, משתמשים ביחס של 8/3.

    Transformer

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

    מיקום

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

    ראשי קשב

    לא לוקחים את כל הוקטור המקורי ועושים עליו יחד את כל החשבון הזה, אלא מחלקים את הווקטור לכמה חלקים (-'ראשי קשב'), וכל חלק בנפרד (מהוקטור שיצא מהרשת השניה-Q) בודק מי המילים שהכי קרובות לו מהחלק הזה (מהוקטור שיצא מהרשת השלישית-K). רק אחרי שנוצרים כל החלקים השונים של הוקטור המאוחד מכל המילים, מצרפים את כל הוקטורים יחד ומעבירים דרך רשת רביעית שמאחדת אותם.
    אם המספר יצא גדול מידי, מקטינים אותו (על-ידי נוסחה, שכמה שהמספר יותר גדול מקטינים אותו יותר).
    לאחר שאנו יודעים כמה כל המילים במשפט השפיעו על המילה האחרונה (כולל היא עצמה), יוצרים שילוב מכל הוקטורים האלו (כל אחד מהוקטורים כמה שהוא קשור נותן % מהוקטור שנוצר על-ידי הרשת הראשונה), בודקים בוקטורים של כל המילים כמה כל אחת מהם רחוקה מהוקטור שיצא, המחשב ממיר את זה ל% (וכאן קובעת ה'טמפרטורה' - טמפרטורה נמוכה מתחת ל-1 מגדילה את הפער בין המילים וגורמת ל% גבוהים יותר למילים הכי מתאימות, וטמפרטורה של מעל 1 מפחיתה את הפער בין המילים). יש גם תוספות של top-k - בחירה אקראית רק מבין המילים עם הכי הרבה %, ו-top-p - בחירה אקראית רק מבין מילים שקיבלו לפחות % מסויים.

    חידושים נוספים מהשנים האחרונות

    ארכיטקטורת MoE - תערובת של מומחים
    בשנים האחרונות נוסף אחד מהשיפורים הגדולים בטרנספורמר - MoE, זה אומר שיש כמה רשתות גדולות בכל שכבה, וכל מילה עוברת רק בחלק מהם (הבחירה היא של רשת קטנה נוספת, שהיא הנתב, ולאחר המעבר בה, המחשב יודע לאיזו רשת להפנות את הוקטור. גם רשת זו עוברת כמובן אימון).
    Quantization (קוונטיזציה - כימות)
    במקור, כל מספר (-פרמטר) ברשתות הנוירונים מיוצג ב-32 או 16 ביט, יש אפשרות לאחר גמר האימון לחתוך בחצי ואף יותר את כמות הביטים שהפרמטר תופס, מה שחוסך המון כוח חישוב ולא משפיע כל-כך על איכות המודל, יש קוונטיזציה לכל הגדלים - אפילו ל1, אבל הנפוצים הם 4 ו-8. יש גם סוגי כיווץ שמכוצים חלק יותר וחלק פחות בצורה חכמה.
    כמו-כן ניתן לעשות גם QAT - אימון מודע לכימות, שכבר בזמן האימון מאמנים על דעת לעגל את המספרים בגלל הכימות.

    האימון בפועל

    מאמנים על כמות עצומה של נתונים, בדרך-כלל טרליוני ואף עשרות טרליוני טוקנים, פעולה כזאת לוקחת תשתיות אדירות של מעבדים גרפיים ענקיים שעובדים יחד במשך חודשים, מחלקים את השכבות ואפילו את דוגמת האימון עצמה בין הרבה כרטיסים גרפיים. יש כמה טכניקות להאיץ את האימון, BF16 - אימון מראש על פרמטרים שתופסים 16 ביטים בלבד, Flash Attention - יש בעיה באימון מודלים, כיון שכל הזמן המחשב צריך לחשב פרצמטרים שונים, המעבד לא עובד בשיא התפוקה כי לוקח זמן עד שהנתונים עוברים מהזיכרון שלו לחישוב, בשביל זה יש את Flash Attention שעושה את זה ביעילות הגדולה ביותר.

    צ'אט-בוט

    איך כל זה הופך למה שאנו מכירים? כל מה שאנו פירטנו עושה שהמחשב יודע בחכמה לזהות מה הטוקן הבא שאמור להופיע אחרי משפט מסויים, וככה הוא יכול לכתוב ברצף טוקן אחר טוקן. אך המודל אומן על האינטרנט, על ידע, אז איך הוא יודע לענות: לגבי מה ששאלת... מהיכן הוא מכיר זאת? התשובה היא שלאחר האימון הגדול עושים כיונון למודל - מאמנים אותו לענות על שאלות, מכינים לו (או שמודל AI אחר מכין) כמויות של דוגמאות בסגנון: שאלה: למה יש לילה? תשובה: כי כדור הארץ מסתובב סביב צירו..., וכן גם דוגמאות של צ'אט ארוך עם שאלה-תשבת-שאלה-תשובה, וגם עוד כל מיני סוגים שונים של טקסטים של תשובה וכדומה, ובזמן השיחה, המערכת מכניסה לו מאחורי הקלעים לפני שאילת המשתמש את המילה שאלה:, ואחרי שאלת המשתמש את המילה תשובה:, גם מכינים לו הרבה דוגמאות של סירוב לענות לתוכן מזיק, פוגעני וכדומה. כמו-כן המודל מאומן לעצור כשהוא מגיע לסימן של סוף תשובה.
    שלב קריטי נוסף, זה העדפות משתמש, מייצרים 2 תשובות במודל על אותו שאלה, ואדם (או מודל AI אחר) מדרג אותם מה יותר טוב, בעבר השתמשו בRLHF - פונקציה להעלאת הסבירות לתשובה הטובה יותר,כיום משתמשים בDPO, שרק מצרף את התשובה הטובה כדוגמת אימון.
    שלב הכוונון יכול להתבצע גם לכל מודל שרוצים שהוא יענה יותר טוב/על נושא ספציפי.
    יש טכניקה בשם LoRA שבמקום לאמן בכוונון את כל הפרמטרים, מוסיפים שתי רשתות קטנות לכל רשת ורק אותם מאמנים.
    יש מודלים שעוברים זיקוק - לוקחים מודל, ומאמנים אותו מאפס (או כוונון) רק על תשובות שמודל אחר יצר.

    הזיות

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

    חשיבה

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

    KV cache

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

    חלון הקשר

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

    מולטי-מודאליות

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

    סוכנים

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

    המודלים

    בפועל, בשנים האחרונות נוצרו כמויות של מודלי שפה, שעולים ברמה מיום ליום, חברות משקיעות טרליונים בשביל להתחרות מי מייצרת את המודל הכי טוב. מי קובע מה מודל יותר טוב? יש כמה סוגי מבחנים שיצרו בשביל לקבוע את ציון המודל, יכול להיות גם מודל שטוב בדבר כזה וגרוע בדבר אחר, יש גם מדדים שנוצרים מהערכה של משתמשים שמקבלים 2 תשובות, ואומרים מה יותק טוב, בלי לדעת אם איזה מודל הם משתמשים.
    החברות שנמצאות היום בראש מדד המודלים, הם Anthropic, OpenAI, Google, SpaceXAI, Meta האמריקאיות, והחברות הסיניות Kimi, Alibaba, Z AI, DeepSeek ו- MiniMax.

    משקולות פתוחות

    בשונה מהחברות האמריקאיות שלרוב משאירות את מודלי הדגל אצלם, ונותנות להשתמש בהם דרך ממשק באתר או דרך קריאת API, החברות הסיניות ברובם מפרסמות את המודל, והוא ניתן לצפיה ולהורדה, מי שהתחילה את הסטדנדרט הזה היא דווקא חברת מטא עם סדרת llama שלה.
    כיון שהחברות מפרסמות רק את המודל המוכן ולא את הדרך להכין אותו, המודלים לא מוגדרים כקוד פתוח אלא כמשקולות פתוחות, החברה הכמעט יחידה שמפרסמת מודלים בקוד פתוח היא AllenAI עם סדרת OLMo שלה, היא מפרסמת בנוסף למודל גם את קוד האימון ואת נתוני האימון השונים.
    יש גם סוגי רשיונות שונים שבהם המודלים מפורסמים, הפתוח שבהם הוא Apache 2.0.

    פוסט זה נמחק!
  • @יש-לי-מושג כתב:

    AI2

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

    @א.מ.ד. כתב:

    AllenAI.

    תוקן.

    @א.מ.ד. כתב:

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

    זה לא מוגדר כמשקולות פתוחות, כי הם לא משחררים הכל.

  • @א.מ.ד. כתב:

    AllenAI.

    תוקן.

    @א.מ.ד. כתב:

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

    זה לא מוגדר כמשקולות פתוחות, כי הם לא משחררים הכל.

    @יש-לי-מושג כתב:

    זה לא מוגדר כמשקולות פתוחות, כי הם לא משחררים הכל.

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

  • @יש-לי-מושג כתב:

    זה לא מוגדר כמשקולות פתוחות, כי הם לא משחררים הכל.

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

    @המלאך כתב:

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

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


קרא עוד