הפסקתי לרדוף אחרי MTP TPS וקיבלתי Agent מקומי של 27B שעובד על 24GB VRAM
לא אכפת לי מבנצ'מרקים של פרומפט בודד.
אכפת לי מהלולאה.
סוכן קוד (coding agent) צריך לעבוד במשך שעות. הוא צריך לטפל בעריכות, קריאות לטרמינל, ניסיונות חוזרים (retries) וקונטקסט שגדל. אם המודל נכשל אחרי עשרה פרומפטים, הוא חסר תועלת.
רציתי לראות אם אני יכול להריץ מודל 27B על GPU בודד של 24GB. בדקתי את Qwopus3.6-27B-v2 ויצרתי גרסה חדשה: XReyRobert/Qwopus3.6-27B-v2-GPTQ-Pro-v1.
הנה ה-setup שלי ללולאת סוכן יציבה ב-24GB:
- Model: Qwopus3.6-27B GPTQ-Pro 4-bit
- Engine: vLLM with GPTQ-Marlin
- Context: 131k tokens
- KV Cache: FP8 (fp8_e5m2)
- Strategy: Prefix caching enabled
- Constraint: max_num_seqs=1
למה max_num_seqs=1?
בכרטיס בודד של 24GB, מקביליות (parallelism) אינה בחינם. אם מריצים מספר בקשות, הן נלחמות על הזיכרון. אני רוצה שבקשה אחת תסתיים בצורה נקייה. אני מעדיף תשובה אחת מועילה על פני שתיים שבורות.
ויתרתי גם על speculative decoding (MTP). בכרטיס 3090 בודד, MTP הוסיף עומס על הזיכרון ומורכבות מבלי להגדיל את המהירות מקצה לקצה (end-to-end) עבור קונטקסט ארוך.
המדדים האמיתיים שחשובים:
- Prefix cache hit ratio: ~83%
- Average TTFT: ~5.7s at 33k tokens
- Prefill throughput: ~1917 tok/s
- Decode speed: ~43 tok/s
כשמבוצעת פגיעה ב-prefix cache, השיהוי (latency) שלך יורד. כשמחליפים משימות, ה-cache הופך ל"קר" (cold) והשיהוי עולה. זה נורמלי. המטרה היא לחזור לשימוש גבוה ב-cache ברגע שהמשימה מתייצבת.
אם אתם בודקים רק פרומפט אחד, אתם בודקים את הדבר הלא נכון. עבור סוכני קוד, חייבים לבדוק יציבות לטווח ארוך.
האם אתם מריצים לולאות סוכן על GPU בודד? אילו טריקים אתם משתמשים בהם עבור KV cache או prefix caching?
Optional learning community: https://t.me/GyaanSetuAi