חזרה

Xeon בן עשר שנים זה כל מה שצריך
SiTech AI Team3 דק׳ קריאה

Xeon בן עשר שנים זה כל מה שצריך

פרסום חדש מראה כיצד Xeon משנת 2016 עם זיכרון DDR3 ובלי GPU מריץ מודל תערובת מומחים בן 26 מיליארד פרמטרים במהירות קריאה, בעזרת פורק ייעודי ו-25 דגלי שורת פקודה שחושפים אופטימיזציות נסתרות.

חומרה שלא אמורה להריץ את זה

הפוסט השלישי של כריסטינה אמילי סורנסן על דרפטרי ה-MTP של Gemma 4 שואל איך להריץ את התוצאה על שרת ממוחזר שלא אמור להצליח. למכונה יש 128 GB זיכרון, אבל DDR3 — פי חמישה-שישה איטי מהזיכרון הטוב ביותר במחשבים ניידים היום. המעבד הוא Intel Xeon E5-2620 v4 בודד משנת 2016: 8 ליבות פיזיות, 16 תהליכונים, AVX2 בלבד — בלי AVX-512 ובלי BF16 — 20 MiB מטמון L3 ו-2 MiB L2, ובלי GPU כלל. ollama ואפילו llama.cpp הסטנדרטי לא חושפים מספיק "ידיות", ולכן הפתרון הוא הפורק ik_llama.cpp ושורת פקודה עם 25 דגלים. במעבד, יצירת הטקסט מוגבלת ברוחב הפס של הזיכרון: המעבד מסיים את חישובי המטריצות וממתין להעברת המשקלים מהזיכרון למטמון.

פענוח ספקולטיבי וניתוב MoE על מעבד

Gemma 4 26B-A4B היא מודל תערובת מומחים: 128 מומחים, 8 פעילים לכל טוקן, כלומר כ-3.8 מיליארד פרמטרים פעילים מתוך כ-25.2 מיליארד. הדגלים --spec-type mtp, --draft-max 3, --draft-p-min 0.0 ו---spec-autotune מחברים את המאמת בן 26 המיליארד לדרפטר ה-MTP הקטן, עד שלושה טוקנים לכל טיוטה. לדברי סורנסן, הפענוח הספקולטיבי משתלם יותר על מעבד מאשר על GPU: מחזורי המעבד זולים מול הזרמת משקלי המאמת דרך המטמון, וקבוצת העבודה של הדרפטר נכנסת ל-L3. --cpu-moe מכוון את ניתוב המומחים להיררכיית המטמון כדי שלא תיווצר חבטה בקפיצה בין 128 מומחים, ו---merge-up-gate-experts ממזג שתי הטלות לכפל מטריצות אחד — בלוגים fused_up_gate = 1. מספר התהליכונים, 8-, תואם את הליבות הפיזיות ולא את 16 התהליכונים, כי בעומס מוגבל-זיכרון תהליכונים עודפים רק מוסיפים עלות תיאום.

נעילה, אריזה מחדש ודגלים שנכשלים בשקט

---mlock מבקש מהליבה להחזיק כ-27 GB של משקלים בזיכרון הפיזי, ובברירת מחדל הבקשה נכשלת: "failed to mlock 27628376064-byte buffer ... Try increasing RLIMIT_MEMLOCK". הדגל תקין, מגבלת ה-memlock לא, וכלי קופסה שחורה פשוט לא מבקשים את האופטימיזציה הזו ומשאירים את המודל להידחף לדיסק. --run-time-repack מסדר מחדש את מטריצות המשקלים לפני ההסקה בהתאם לפריסת המטמון של המעבד (לוגים: 265 טנסורים נארזו מחדש), ו---no-kv-offload מקצר את החיפוש אחר GPU שיחזיק את מטמון ה-KV. דגל פיצול הגרף לא שורד מפגש עם MTP: המנוע מודיע "Split mode 'graph' is not supported for Gemma4 external MTP => changing split mode to 'layer'" ועובר לפיצול שכבות סדרתי.

Flash Attention על מעבד וחשבון הזיכרון

יוצר ik_llama.cpp, ikawrakow, כתב ל-Flash Attention קרנלים ייעודיים למעבד: היא ממזגת את ה-softmax של הקשב עם כפל המטריצות כך שמטריצת N×N לא נכתבת לזיכרון — אופטימיזציה שנבנתה מלכתחילה ל-GPU. --mla-use 3 מפעיל Multi-Head Latent Attention, שדוחס את מטמון ה-KV לייצוג חבוי קטן יותר. שניהם עבדו: flash_attn = 1, fused_moe = 1, fused_up_gate = 1. החשבון הסופי הוא 82,355 MiB — כ-25 GB משקלים וכ-56 GB מטמון KV בהקשר מלא של 262K, כלומר המטמון גדול מהמודל עצמו. מסקנתה של סורנסן: המכשול למודלים פתוחים מקומיים אינו הסיליקון — צריך להבין לעומק את מנוע ההסקה.

SiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.