המטרה
סקריפט LoRA fine-tuning על GPT-OSS-20B (4-bit) לא למד — eval loss לא ירד, generation ג'יבריש. לאבחן, לתקן, למסור גרסה רצה עם ציפיות כנות על 32 הדוגמאות.
הפתרון
ביקורת על הפייפליין מקצה לקצה; מצאתי ותיקנתי 4 באגים אמיתיים; הוספתי 3 diagnostic gates; משלוח חבילת handover נקייה עם סקריפטים, smoke test, וכתיבה כנה על תקרת הדאטה.
עיקרי הדברים
- Trainable params 0.07% → 0.83% (11.7× יותר, MoE נכון)
- eval_loss 8.35 → 6.30 (ג'יבריש → גרמנית תקינה)
- שלושה diagnostic gates תופסים תקלות לפני בזבוז GPU
- כתיבה כנה על תקרת דאטה עם המלצה קונקרטית
האתגר
האימון רץ, loss יורד, generation ג'יבריש — נראה כאילו המודל פשוט לא לומד.
Audit ל-trainable params — רק 0.07% trainable, הכל ב-attention. תיקון דרך שמות ברבים (gate_up_projs / down_projs) שעוקפים את MoE detection השבור — קפיצה ל-0.83%.
val.jsonl זהה ל-train.jsonl — מטריקות שיקרו כי המודל אומת על מה שהוא אומן עליו.
split_and_augment_v2.py מייצר פיצול דטרמיניסטי 80/20 עם seed=123 מ-40 המקוריים — reproducible באמת held-out.
Augmentation עם Multilingual-Thinking הוסיף 160+ דוגמאות לא-בדומיין; המודל overfit ל-noise.
החלפה ב-paraphrases דטרמיניסטיים בדומיין (swaps של greeting/closing/thanks). 32 bodies → 147 שורות בהן רק הניסוח משתנה.
היעד של הלקוח היה eval_loss < 2.0 אבל 32 bodies ייחודיים נלמדים בעל-פה בשלב 30.
פרסמתי את המסלול האמיתי (8.35 → 6.30 בשלב 30, overfit משלב 40) והמלצתי 200-500 דוגמאות ייחודיות — בלי ערפול.
מה נמסר
- deliverable_to_philipp/train_thiniking_model_answer.py סקריפט אימון מתוקן
- deliverable_to_philipp/split_and_augment_v2.py פיצול דטרמיניסטי + paraphraser
- deliverable_to_philipp/run_train_model.sh
- deliverable_to_philipp/README.md עם תיקונים ומסלול
- gpt_oss_project_summary_he.md סיכום עברית
- run_smoke_test.sh
- terraform/get_tf_ip.py
תוצאות
0.07% → 0.83%
Trainable params
8.35 → 6.30
eval_loss
4
באגים שתוקנו
3
Diagnostic gates
מה זה לימד אותי
- 'הסקריפט רץ, loss יורד' לא מוכיח ש-modules הנכונים מתאמנים — תמיד audit ל-trainable params
- ל-MoE על quantized checkpoints, שמות target modules ב-LoRA הם ה-#1 silent failure
- Diagnostic gates שמאבסת מוקדם שוות עשרות debugging sessions
- כשהיעד מתמטית לא בר-השגה — לומר זאת בבהירות ולכמת מה נדרש
