כל הפרויקטים

GPT-OSS-20B LoRA Fine-Tuning — אבחון ומשלוח

ביקורת על LoRA שנכשל, תיקון 4 באגים (כולל מלכודת שמות MoE ב-Unsloth), משלוח חבילה עם ציפיות כנות על גודל דאטה.

המטרה

סקריפט 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
  • כשהיעד מתמטית לא בר-השגה — לומר זאת בבהירות ולכמת מה נדרש