בעוד שהאות L במודלים גדולים של שפה (LLM) מעידים על קנה מידה עצום, המציאות מגוונת יותר. יש מודלים מסוג LLM שמכילים טריליוני פרמטרים, ואחרים פועלים ביעילות עם הרבה פחות.
ריכזנו כאן כמה דוגמאות מהעולם האמיתי ואת ההשלכות המעשיות של גדלים שונים של מודלים.
גדלים וסיווגים של מודלים גדולים של שפה (LLM)
כמפתחי אתרים, אנחנו נוטים לחשוב על גודל המשאב בתור גודל ההורדה שלו. הגודל המתועד של המודל מתייחס למספר הפרמטרים שלו. לדוגמה, Gemma 2B מייצג את Gemma עם 2 מיליארד פרמטרים.
במודלי שפה גדולים יכולים להיות מאות אלפים, מיליוני, מיליארדים ואפילו טריליוני פרמטרים.
במודלים גדולים יותר של שפה, יש יותר פרמטרים מאשר למודלים קטנים יותר, וכך הם יכולים לתעד יחסי שפה מורכבים יותר ולטפל בהנחיות מפורטות. לרוב, הם מאומנים לפי מערכי נתונים גדולים יותר.
יכול להיות ששמתם לב שגדלים מסוימים של מודלים, כמו 2 מיליארד או 7 מיליארד, הם נפוצים. לדוגמה, Gemma 2B, Gemma 7B או Mistral 7B. סיווגי הגודל של המודלים הם קיבוצים משוערים. לדוגמה, ל-Gemma 2B יש בערך 2 מיליארד פרמטרים, אבל לא בדיוק.
סיווגי גודל של מודלים הם דרך מעשית למדוד את הביצועים של מודל שפה גדול (LLM). חשוב עליהן כמו סיווגי משקל באגרוף: קל יותר להשוות בין דגמים באותה רמת גודל. שני מודלים של 2B אמורים להניב ביצועים דומים.
עם זאת, מודל קטן יותר יכול להיות שווה לאותם ביצועים כמו מודל גדול יותר למשימות ספציפיות.
![צילום מסך של תיבות הסימון לגודל דגם HuggingFace.](https://web.dev/static/articles/llm-sizes/image/model-sizes-hugging-face.png?authuser=5&hl=he)
אמנם גודל המודלים של מודלי השפה הגדולים ביותר (LLMs) העדכניים ביותר, כמו GPT-4 ו-Gemini Pro או Ultra, לא תמיד מצוין, אבל אומרים שהם מגיעים למאות מיליארדים או טריליוני פרמטרים.
לא כל המודלים מציינים את מספר הפרמטרים בשם שלהם. למודלים מסוימים יש מספר גרסה גדול יותר. לדוגמה, Gemini 1.5 Pro מתייחס לגרסת 1.5 של המודל (הבאה בגרסה 1).
מודל שפה גדול (LLM) או לא?
מתי המודל קטן מדי מכדי להיות LLM? ההגדרה של LLM יכולה להיות נוזלת במידה מסוימת בקהילה של ה-AI וה-ML.
בחלקם, רק המודלים הגדולים ביותר עם מיליארדי פרמטרים הם מודלים אמיתיים של LLM, ואילו מודלים קטנים יותר, כמו DistilBERT, נחשבים למודלים פשוטים של NLP. מודלים אחרים כוללים מודלים קטנים יותר, אבל עדיין עוצמתיים, בהגדרה של LLM, כמו DistilBERT.
מודלים גדולים יותר של שפה (LLM) לתרחישים לדוגמה במכשיר
כדי להשתמש במודלים גדולים יותר מסוג LLM, צריך הרבה נפח אחסון וכוח מחשוב גדול לצורך הסקת מסקנות. הם צריכים לפעול בשרתים ייעודיים וחזקים עם חומרה ספציפית (כמו TPU).
אחד הדברים שמעניינים אותנו, כמפתחי אתרים, הוא האם מודל קטן מספיק כדי שניתן יהיה להוריד אותו ולהפעיל אותו במכשיר של משתמש.
אבל זו שאלה שקשה לענות עליה! נכון להיום, אין דרך קלה לדעת "מודל זה יכול לפעול ברוב המכשירים בטווח הבינוני", מכמה סיבות:
- יכולות המכשיר משתנות במידה רבה בזיכרון, במפרטי המעבד (GPU) או במעבד (CPU) ועוד. טלפון Android פשוט ומחשב נייד מסוג NVIDIA® RTX הם שני מה דומים מאוד. יכול להיות שיש לכם כמה נקודות נתונים על המכשירים שיש למשתמשים. עדיין אין לנו הגדרה למכשיר בסיסי המשמש לגישה לאינטרנט.
- יכול להיות שמודל או ה-framework שבו הוא פועל יעברו אופטימיזציה כדי לפעול בחומרה מסוימת.
- אין דרך פרוגרמטית לקבוע אם אפשר להוריד ולהפעיל LLM מסוים במכשיר ספציפי. יכולת ההורדה של המכשיר תלויה בכמות ה-VRAM שיש ב-GPU, בין היתר.
עם זאת, יש לנו ידע אמפירי מסוים: כיום, חלק מהמודלים, שכוללים כמה מיליונים עד מיליארדי פרמטרים, יכולים לפעול בדפדפן, במכשירים שמיועדים לצרכנים פרטיים.
למשל:
- Gemma 2B עם MediaPipe LLM Inference API (גם מתאים למכשירים עם מעבדי CPU בלבד). רוצים לנסות?
- DistilBERT באמצעות Transformers.js.
זה שדה מתחיל. אפשר לצפות לשינויים בהתפתחות של הסביבה:
- בזכות החידושים WebAssembly ו-WebGPU, התמיכה ב-WebGPU נוספת לספריות נוספות, לספריות חדשות ולאופטימיזציות, מצפים שמכשירי המשתמשים יוכלו להפעיל ביעילות LLMs בגדלים שונים.
- ייתכן שמודלים גדולים יותר בעלי ביצועים טובים יותר יהפכו לנפוצים יותר ויותר, בזכות שיטות כיווץ מתפתחות.
שיקולים לשימוש במודלי שפה גדולים יותר
כשעובדים עם מודלים גדולים של שפה, תמיד צריך להביא בחשבון את הביצועים ואת גודל ההורדה.
ביצועים
היכולת של כל דגם תלויה במידה רבה בתרחיש לדוגמה שלכם. LLM קטן יותר שמותאם לתרחיש לדוגמה שלכם עשוי להניב ביצועים טובים יותר מ-LLM כללי גדול יותר.
אבל בתוך אותה משפחת מודלים, מודלים גדולים יותר של שפה קטנים יותר מסוגלים פחות מאשר המקבילים הגדולים. בתרחיש לדוגמה אחד, בדרך כלל תצטרכו לבצע יותר עבודה עם הנדסת תוכנה כשמשתמשים ב-LLM קטן יותר.
![צילום מסך של החלונית Chrome DevTools Network.](https://web.dev/static/articles/llm-sizes/image/performance.png?authuser=5&hl=he)
מקור: HuggingFace Open LLM Leaderboard, אפריל 2024
גודל הורדה
ככל שיש יותר פרמטרים, כך ההורדה גדולה יותר. זה גם משפיע על היכולת להוריד מודל מסוים, גם אם הוא נחשב קטן, לתרחישים לדוגמה במכשיר.
יש שיטות לחישוב גודל ההורדה של מודל על סמך מספר הפרמטרים, אבל זה יכול להיות מורכב.
מתחילת 2024, גדלים של הורדות מודלים מתועדים לעיתים רחוקות בלבד. לכן, בתרחישים לדוגמה במכשיר ובדפדפן, מומלץ לבדוק את גודל ההורדה באופן אמפירי, בחלונית Network בכלי הפיתוח ל-Chrome או בכלים אחרים למפתחי דפדפנים.
![צילום מסך של החלונית Chrome DevTools Network.](https://web.dev/static/articles/llm-sizes/image/download-size.png?authuser=5&hl=he)
משתמשים ב-Gemma באמצעות MediaPipe LLM Inference API. משתמשים ב-DistilBERT בשילוב עם Transformers.js.
שיטות לכיווץ של המודל
יש כמה שיטות שמצמצמות באופן משמעותי את דרישות הזיכרון של המודל:
- LoRA (התאמה עם דירוג נמוך): שיטת כוונון עדינה שבה המשקולות שעברו אימון מראש קפואות. מידע נוסף על LoRA.
- חיתוך: הסרת משקולות פחות חשובות מהמודל כדי להקטין אותו.
- Quantization: הפחתת הדיוק של המשקולות ממספרי נקודה צפה (כמו 32 ביט) לייצוגים עם פחות ביט (כמו 8 ביט).
- זיקוק ידע: אימון מודל קטן יותר כך שיחקה את ההתנהגות של מודל גדול יותר שעבר אימון.
- שיתוף פרמטרים: שימוש באותם משקלים לחלקים מרובים של המודל, תוך צמצום המספר הכולל של הפרמטרים הייחודיים.