כלי קוד פתוח משחרר מגבלת ביצועים בכרטיסי RTX 3000; משתמש מדווח על שיפור של כ-20% ב-prefill
מודול קוד פתוח ללינוקס בשם gpu-unlock מעלה את קצב ביצוע פעולות FP16 ו-BF16 בכרטיסי RTX מסדרה 3000 של אנבידיה לרמה של הכרטיסים המקצועיים המקבילים. משתמש שבדק אותו על שני כרטיסי 3080 בגרסת 20GB מהשוק הסיני מדווח על שיפור של כ-20% בשלב ה-prefill, בלי שום שינוי ב-decode. זו בדיקה יחידה שלא אומתה באופן עצמאי, על חומרה ישנה.
פרויקט קוד פתוח חדש ב-GitHub בשם gpu-unlock מבטיח לשחרר מגבלת ביצועים בכרטיסי המסך של אנבידיה מסדרת RTX 3000. לפי תיאור הפרויקט, הכלי מעלה את קצב ביצוע הפקודות מסוג FP16 ו-BF16 בכרטיסים הביתיים לרמה של הכרטיסים המקצועיים המקבילים להם. משתמש שהריץ את הכלי על שני כרטיסי RTX 3080 בגרסת 20GB, שמקורם בשוק הסיני, דיווח על שיפור של כ-20% בשלב ה-prefill בהרצת מודלי שפה. בשלב ה-decode הוא לא מצא שום שינוי. מדובר בבדיקה ביתית יחידה שאיש לא אימת באופן עצמאי.
מה הכלי עושה
לפי דף הפרויקט, gpu-unlock הוא מודול לקרנל של לינוקס (kernel module), ולא דרייבר ערוך של אנבידיה. המודול נטען בשלב מוקדם של אתחול המערכת, מבצע את פעולת השחרור, כותב לכרטיס את הגדרות המהירות ומאתחל אותו, וכל זה לפני שהדרייבר הרגיל והלא-ערוך של אנבידיה מתחבר לכרטיס. המפתח מציין שהיתרון בגישה הזו הוא שאין צורך לערוך מחדש את הדרייבר בכל פעם שאנבידיה מוציאה גרסה חדשה.
לפי התיעוד, השחרור מכפיל את קצב ביצוע פעולות ה-FMA (כפל וחיבור בפעולה אחת) בפורמטים FP16 ו-BF16 עם צבירה ב-FP32. השינוי חל על כרטיסים שמבוססים על השבבים GA102, GA103, GA104 ו-GA106. בבדיקה שהמפתח פרסם על כרטיס RTX 3090 Ti, בהכפלת מטריצות גדולה בהספק של 450 וואט, הביצועים ב-BF16 עלו מ-87.5 ל-157.41 TFLOPS. ב-FP16 הם עלו מ-87.46 ל-118.39 TFLOPS, וב-TF32 מ-42.58 ל-82.61 TFLOPS.
המודול לא עושה כלום עד שהמשתמש מפעיל אותו במפורש: צריך להוסיף פרמטר לשורת הפקודה של הקרנל, ואפשר לבחור את כל הכרטיסים הנתמכים או רק כרטיסים מסוימים לפי כתובת ה-PCI שלהם. כרטיס שדרייבר כבר אתחל לא יקבל את השינוי.
למה prefill כן ו-decode לא
כשמריצים מודל שפה, העבודה מתחלקת לשני שלבים. ב-prefill המודל מעבד את כל הטקסט שהוזן לו בבת אחת. השלב הזה דורש הרבה כוח חישוב, ולכן הוא מושפע ישירות ממהירות פעולות המטריצה. ב-decode המודל מייצר את התשובה מילה אחר מילה, ושם צוואר הבקבוק הוא בדרך כלל מהירות הגישה לזיכרון של הכרטיס, לא כוח החישוב.
ככל הנראה זה ההסבר לתוצאה שהמשתמש דיווח עליה: הכלי מאיץ את החישוב, אבל לא נוגע ברוחב הפס של הזיכרון. בפועל, מי שמזין למודל מסמכים ארוכים או שיחות עם הקשר רחב עשוי לחכות פחות עד שהתשובה מתחילה להופיע, אבל קצב הופעת הטקסט עצמו כנראה לא ישתנה.
משמעות והסתייגויות
הנושא רלוונטי בעיקר למי שמריצים מודלי AI על חומרה מקומית, קהל שנשען הרבה על כרטיסים ביתיים מהדורות קודמות כחלופה זולה לחומרה מקצועית. אם התוצאות יחזרו גם בבדיקות נוספות, המשמעות היא שיפור ביצועים בחינם לכרטיסים שכבר נמצאים אצל המשתמשים.
עם זאת, כדאי לזכור את המגבלות. הנתון של 20% מגיע מבדיקה אחת של משתמש אחד, על מערכת ישנה, והוא לא הופיע במקור רשמי. המספרים המרשימים יותר במאגר הפרויקט נמדדו בהכפלת מטריצות סינתטית ולא בהרצת מודל אמיתי. בנוסף, מדובר במודול שפועל ברמת הקרנל וכותב ישירות לחומרה לפני שהדרייבר נטען, כך שההתקנה מתאימה בעיקר למשתמשי לינוקס מנוסים.