על השאלה "האם המודל ייכנס ל-GPU שלי?" עונים בדרך כלל לפי גודל קובץ המודל. זה רק החלק הראשון: הזיכרון שמודל צריך ממשיך לגדול עם כל token של הקשר ועם כל בקשה שמטופלת באותו זמן.
ההסבר הזה מפרק את הזיכרון לחלקים, עם המספרים של מודלים פתוחים אמיתיים ושל GPUs אמיתיים.
נסו בעצמכם
- משקלים
- 15.2 GB
- KV cache
- 0.2 GB
- Overhead
- 1.2–3.0 GB
- סה"כ
- 16.7–18.5 GB
מול GPUs לייחוס
- NVIDIA GeForce RTX 4090, 24 GB: נכנס
- NVIDIA L40S, 48 GB: נכנס
- NVIDIA H100 SXM, 80 GB: נכנס
סה"כ 16.7–18.5 GB: משקלים 15.2 GB, KV cache 0.2 GB, overhead 1.2–3.0 GB.
שלב אחר שלב
כל פרמטר של המודל מוחזק בזיכרון ה-GPU. ב-16 ביט (BF16, הפורמט שבו רוב המודלים הפתוחים מתפרסמים) זה 2 בתים לפרמטר, ולכן מודל עם 7.6 מיליארד פרמטרים צריך כ-15 GB למשקלים בלבד.
FP8 שומר משקל ב-8 ביט ו-INT4 בכ-4.25 ביט כולל ה-scales. המשקלים של אותו מודל יורדים לחצי או לפחות משליש. שכבות ה-embedding והפלט נשארות בדרך כלל ב-16 ביט, ולכן ההערכה היא טווח.
לכל token בהקשר, כל שכבה שומרת וקטור key ווקטור value כדי לא לחשב אותם מחדש:
2 × layers × KV heads × head size × bytesלכל token. Quantization של המשקלים לא מקטין אותו. מעבר מהקשר של 4K ל-32K מכפיל אותו פי שמונה.שרת מחזיק KV cache לכל בקשה שהוא מטפל בה באותו זמן. שש-עשרה בקשות במקביל עם הקשר ארוך יכולות לתפוס יותר זיכרון מהמשקלים עצמם: זה מה שמגביל כמה משתמשים GPU אחד משרת.
סביבת ההרצה מוסיפה זיכרון משלה: ה-CUDA context, ה-framework וה-activations. חברו את שלושת החלקים והשוו את הסכום לזיכרון של GPU. הקצה העליון של הטווח הוא זה שבטוח לתכנן לפיו.
מהנתונים מחושב במנוע ה-GPU של ANAROQ מנתוני מודלים ו-GPUs מגורסאים עם מקורות רשמיים.
מה התרשים מראה
התרשים הוא עמודה של זיכרון GPU ב-GB, מחולקת למשקלים, KV cache ו-overhead, עם קווים בגובה הזיכרון של שלושה GPUs לייחוס. מתחתיה כל חלק והסכום מוצגים כטווחים, וכל GPU מסומן לפי אם הקצה העליון של הסכום נכנס בו או לא.
הבקרים בוחרים את המודל, את ה-quantization (BF16, FP8, INT4), את אורך ההקשר (4K, 8K, 32K tokens) ואת מספר הבקשות במקביל (1, 4, 16). Quantization משנה רק את המשקלים; הקשר ובקשות במקביל משנים רק את ה-KV cache.
נסו בכלי
מה לא מכוסה כאן
מודלים dense בלבד: מודלי mixture-of-experts צריכים מודל זיכרון אחר. ה-KV cache הוא ב-16 ביט, וה-overhead הוא הנחה מוצהרת ולא מדידה; מנועים שמחלקים את ה-KV cache לדפים או מבצעים לו quantization משתמשים בפחות. Throughput לא מכוסה.
עמודים קשורים
מקורות
- Qwen/Qwen2.5-7B-Instruct: config.json
- Qwen/Qwen2.5-7B-Instruct: model card
- Qwen/Qwen2.5-14B-Instruct: config.json
- Qwen/Qwen2.5-14B-Instruct: model card
- Qwen/Qwen2.5-32B-Instruct: config.json
- Qwen/Qwen2.5-32B-Instruct: model card
- deepseek-ai/DeepSeek-R1-Distill-Llama-70B: config.json
- deepseek-ai/DeepSeek-R1-Distill-Llama-70B: model card
- NVIDIA Ada GPU Architecture, Appendix A: GeForce RTX 4090 Full Specifications
- NVIDIA L40S GPU Specifications
- NVIDIA H100 Tensor Core GPU: Product Specifications
האופן שבו ANAROQ מתעד מקורות לנתונים ולמספרים מתואר במתודולוגיה. למתודולוגיה