קוונטיזציה של מודלים על 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://dev.to/syedazeez/quantizing-three-models-to-fit-a-6-gb-laptop-gpu-and-the-one-that-wouldnt-4pjl

קהילת למידה אופציונלית: https://t.me/GyaanSetuAi