קוונטיזציה של מודלים על GPU של מחשב נייד עם 6GB
ניסיתי להכניס מודלי שפה גדולים לתוך GPU של מחשב נייד מסוג RTX 3050. לכרטיס הזה יש רק 6 GB של VRAM. רציתי לראות אילו מודלים עובדים עם קוונטיזציה של 4-bit ואילו נכשלים.
השתמשתי בסקריפט אחד כדי לבצע קוונטיזציה לשלושה מודלים:
- Phi-3.5-mini (3.8B)
- Llama-3.2-3B
- Qwen2.5-3B (VibeThinker)
התוצאות: Phi ו-Llama עבדו היטב. Phi ירד מ-7.6 GB ל-2.2 GB תוך 34 דקות. Llama ו-VibeThinker עקבו אחר מסלול דומה. המודלים האלו נכנסו בקלות.
לאחר מכן ניסיתי את Qwen2.5-7B. הוא נכשל. התהליך קרס בשכבה השנייה עם שגיאת Out of Memory.
למה זה נכשל: קוונטיזציית GPTQ בונה מטריצת Hessian עבור כל שכבה. עבור מודל 7B, החישוב המתמטי הזה דורש יותר זיכרון ממה שכרטיס של 6 GB יכול לספק. ניסיתי כמה פתרונות:
- מערכי נתונים קטנים יותר לכיול (calibration): ללא שינוי.
- העברת ה-Hessians ל-CPU: זה החזיק מעמד זמן רב יותר אך עדיין קרס.
- שימוש ב-AWQ במקום GPTQ: זה קרס באותו מקום.
- שימוש ב-CPU בלבד: זה עובד אבל זה איטי מדי. זה לוקח בערך 16 דקות לכל שכבה.
תובנות מרכזיות עבור GPU קטנים:
- צפו להפחתה של פי 3 בגודל המודל.
- כוונו למגבלה של 3 עד 4 מיליארד פרמטרים עבור קוונטיזציה על GPU.
- שימו לב לתקציב ה-KV שלכם. גם אם גודלי הקבצים דומים, הזיכרון שמשתמשים בו במהלך ה-inference משתנה.
- קוונטיזציה צורכת יותר זיכרון מאשר serving. עקבו אחר ה-RAM של המערכת במהלך התהליך.
השוואת מודלים (W4A16): • Phi-3.5-mini: 2.27 GB | 68.7 tok/s • Llama-3.2-3B: 2.26 GB | 66.0 tok/s • VibeThinker-3B: 2.07 GB | 43.9 tok/s
שלושת המודלים התמודדו נכון עם מתמטיקה בסיסית ולוגיקה של מספרים ראשוניים לאחר הקוונטיזציה.
קהילת למידה אופציונלית: https://t.me/GyaanSetuAi