סמכו על הרתמה, לא על המודל
מודל קוד מקומי של 27B שרץ על החומרה הביתית שלי הוא הימור. לפעמים הוא מתקן קוד תוך עשרים דקות. לפעמים אחרות הוא עורך את הקובץ הלא נכון או כותב טסט שעובר לא משנה מה.
המטרה של Foreman של LLMKube היא לא למצוא מודל מושלם. המטרה היא לבנות רתמה שאתם סומכים עליה יותר מהמודל.
בסוף השבוע הזה, הרתמה בדקה את עצמה על ידי בניית מעקות הבטיחות שלה. הנה מה שקרה:
• הקודר המקומי שלי בנה לעצמו שלושה שערים (gates) חדשים. • שער אחד הגיע עם בדיוק אותה תקלה שהוא נועד לתפוס. תהליך הסקירה (review process) תפס אותו. • שלושה תורמים אנושיים חדשים שלחו ארבעה pull requests נקיים בזמן שהמכונות עבדו. • אותו מודל רץ על מחשב AMD ועל Mac עם שבב Apple Silicon. ה-Mac ניצח סיבוב שאף אחד לא ציפה לו. • שום נתון לא נגע ב-cloud API.
סוכן קוד (coding agent) על מודל מקומי מייצר איכות משתנה. שום כמות של כוונון פרומפטים (prompt tuning) לא תהפוך מודל קטן לאמין כמו מודל חלוץ (frontier model).
Foreman לא מבקש מהמודל להיות אמין. הוא עוטף את המודל בתוך pipeline:
- הקודר עובד בסביבת עבודה משוכפלת (cloned workspace).
- שער מהיר מריץ gofmt, vet, build, lint, ו-unit tests.
- סוקר (reviewer) קורא את ה-diff אל מול ה-issue.
- Kubernetes Job בסביבת clean-room מריץ מחדש את כל הסוויטה לפני שמאשרים קוד כלשהו.
- מסילות דטרמיניסטיות כמו בדיקות scope ו-repo-map context מקיפות את כל התהליך.
המודל הוא חלק אקראי במערכת. תפקידה של המערכת הוא להפוך את התוצאה לאמינה, גם כשהמודל אינו אמין.
השאלה האמיתית היא לא "האם המודל טוב". השאלה היא "האם הרתמה תופסת את המודל כשהוא גרוע".
בסוף השבוע הזה, הרתמה תפסה שני באגים משמעותיים. שניהם היו טסטים המאשרים את עצמם (self-confirming tests). הטסטים עברו כי הטסטים עצמם נכתבו כדי לעבור. הם לא באמת בדקו את הקוד.
העברתי את הכשלים האלו בחזרה ל-Foreman. נתתי לרתמה לבנות את השערים כדי לתקן אותם:
- scope guard: הוא דוחה כל עריכה שנוגעת בתת-מערכת (subsystem) הלא נכונה.
- reviewer rubric: הוא מבטיח שהטסטים משתמשים בערכי production אמיתיים במקום ב-placeholders.
- bite check: טסט חדש חייב להיכשל מול הקוד הישן. אם הוא עובר בשניהם, זה לא טסט אמיתי.
ה-bite check נכשל בטסט הראשון של עצמו. השער שהוא בנה היה פגום. אבל תהליך הסקירה תפס את השגיאה לפני שהוא עבר merge. זה העיצוב שעובד.
אתם לא צריכים מודל frontier ענק כדי לבצע עבודת הנדסה באופן מקומי. אתם צריכים רתמה שאתם סומכים עליה. בנו אותה, ומודל קטן יהפוך לעמית עבודה מועיל. הוא יהפוך למערכת שתופסת טעויות במקום לאלץ אתכם לקרוא כל שורת קוד בחצות הלילה.
Optional learning community: https://t.me/GyaanSetuAi
