זיקוק ידע לדחיסת מודלי שפה גדולים משתמש במודל תלמיד כדי לשכפל את התנהגותו של מודל מורה. זיקוק קופסה שחורה וזיקוק קופסה לבנה הם שיטות נפוצות. SeqKD היא טכניקה נוספת להפחתת עלות הסקה. כוונון עדין לעומת זיקוק: זיקוק מצטיין בתחומים צרים. דוגמת ה-DeepSeek-R1 distill מראה דחיסת רשתות עצביות בקנה מידה גדול.
טכניקת זיקוק ידע: כשהמורה מלמד את התלמיד
בפרקטיקה שלנו, בקשה תכופה היא להפחית את עלות ההסקה של מודלים גדולים (GPT-4o, Claude 3.5) ללא אובדן איכות. אנו מיישמים זיקוק ידע (KD). זה מעביר ידע ממודל "מורה" מגושם למודל "תלמיד" קומפקטי. זה לא רק כוונון עדין. התלמיד לומד על תוויות רכות — התפלגות ההסתברות של המורה על כל אוצר המילים. התפלגות זו נושאת פי 10–100 יותר מידע מאשר תשובה נכונה אחת.
היתרון ברור. האיכות נשמרת ב-85–95%, בעוד עלות ההסקה מופחתת פי כמה. לחברה שלנו יש מעל 5 שנות ניסיון ב-NLP והיא השלימה מעל 30 פרויקטי זיקוק. חסכנו ללקוחות עד $10,000 בחודש. לדוגמה, לקוח הוציא $5,000 בחודש על הסקת GPT-4o. לאחר הזיקוק, העלות שלהם ירדה ל-$500 בחודש, חיסכון של $4,500 בחודש. בקשו ייעוץ — נעריך את הפרויקט שלכם ונבחר את אסטרטגיית הדחיסה האופטימלית.
שיטות הזיקוק העיקריות למודלי שפה גדולים
זיקוק קופסה שחורה (זיקוק תגובות) משתמש רק בתשובות הסופיות של המורה. המורה הוא קופסה שחורה (למשל, GPT-4o API). התלמיד מאומן על מערך נתונים שבו התוויות הן פלטי המורה. קראו עוד על זיקוק ידע בוויקיפדיה.
# Сбор данных от teacher (GPT-4o)
def collect_teacher_outputs(prompts: list[str], client) -> list[dict]:
dataset = []
for prompt in prompts:
teacher_response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}],
temperature=0.3
).choices[0].message.content
dataset.append({"prompt": prompt, "response": teacher_response})
return dataset
# Student (Llama 3.1 8B) обучается на ответах GPT-4o через SFT
זיקוק קופסה לבנה (זיקוק תכונות/לוגיטים) — גישה ללוגיטים של המורה. זה מאפשר אימון על תוויות רכות, שהוא אינפורמטיבי יותר ברמת הטוקן.
import torch
import torch.nn.functional as F
def distillation_loss(
student_logits, # [batch, seq_len, vocab_size]
teacher_logits, # [batch, seq_len, vocab_size]
labels, # [batch, seq_len]
temperature: float = 4.0,
alpha: float = 0.5 # баланс SFT и KD loss
) -> torch.Tensor:
""" Комбинированный loss: alpha*KD + (1-alpha)*SFT
temperature сглаживает распределение teacher
"""
# KD loss на мягких метках
soft_teacher = F.softmax(teacher_logits / temperature, dim=-1)
soft_student = F.log_softmax(student_logits / temperature, dim=-1)
kd_loss = F.kl_div(soft_student, soft_teacher, reduction="batchmean") * (temperature ** 2)
# SFT loss на hard labels
sft_loss = F.cross_entropy(
student_logits.view(-1, student_logits.size(-1)),
labels.view(-1),
ignore_index=-100
)
return alpha * kd_loss + (1 - alpha) * sft_loss
זיקוק ברמת רצף (SeqKD) — התלמיד מאומן על הרצפים הטובים ביותר שנוצרו על ידי המורה (חיפוש קרן). קל יותר ליישום עם גישת קופסה שחורה.
DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning — דוגמה לזיקוק תעשייתי.
באיזו שיטת זיקוק לבחור?
| קריטריון | זיקוק קופסה שחורה | זיקוק קופסה לבנה | SeqKD |
|---|---|---|---|
| גישת מורה | API (ללא לוגיטים) | מודל מקומי (לוגיטים זמינים) | API או מקומי |
| אינפורמטיביות | בינונית (רק תשובות) | גבוהה (התפלגות) | גבוהה (רצפים) |
| מורכבות יישום | נמוכה | בינונית | בינונית |
| יישום | התמחות תחומית | זיקוק כללי | יצירת טקסט |
למה זיקוק עדיף על כוונון עדין?
כוונון עדין על נתונים מקוריים דורש מדגם גדול. הוא לא נותן למודל הקומפקטי ידע על תשובות "כסופות". זיקוק ידע מעביר את התפלגות המורה. זה יעיל במיוחד לתחומים צרים. יתרה מכך, התלמיד יורש לא רק תשובות אלא גם את מבנה החשיבה של המורה — שרשרת חשיבה. קשה לשחזר זאת עם SFT רגיל.
DeepSeek-R1 Distill: דוגמה לזיקוק תעשייתי
דוגמה בולטת אחת היא הזיקוק של DeepSeek-R1 (671B, MoE) למודלים צפופים:
- DeepSeek-R1-Distill-Qwen-32B: 32B פרמטרים, ~85% מיכולת החשיבה של R1
- DeepSeek-R1-Distill-Llama-70B: 70B פרמטרים, ~92% מ-R1
- DeepSeek-R1-Distill-Llama-8B: 8B פרמטרים, ~70% מ-R1
תהליך: המורה (R1) מייצר 800K דוגמאות עם חשיבת CoT. התלמיד מאומן באמצעות SFT סטנדרטי. תוצאה: מודלים שזולים בסדרי גודל להסקה.
מקרה פרקטי: זיקוק עוזר ארגוני
אתגר: לקוח השתמש ב-GPT-4o מכוונן עדין לניתוח חוזים. עלות ההסקה הייתה משמעותית בחודש. המטרה הייתה להפחית אותה פי 10 ללא ירידה באיכות מתחת ל-90% מרמת GPT-4o.
אסטרטגיה:
- אספנו 12,000 שאילתות מיומני ייצור
- העברנו אותן דרך GPT-4o — קיבלנו תגובות מורה
- כיווננו עדין את Llama 3.1 8B על נתונים אלה (זיקוק SFT)
- בנוסף יישמנו DPO עם מועדף=תגובות GPT-4o, דחוי=קו בסיס Llama
תשתית: איסוף נתונים דרך OpenAI API, אימון על A100 40GB — 6 שעות. עלויות איסוף הנתונים החזירו את עצמן בשבוע הראשון.
תוצאות:
- שמירת איכות מול GPT-4o (LLM-judge): 91%
- חביון p95: מופחת פי 4+ (vLLM באירוח עצמי)
- עלות הסקה: הפחתה מרובה, חיסכון של עד 90% מהעלות המקורית
מידע נוסף על הגדרת האימון
לאימון השתמשנו ב-LoRA (rank=64) ו-AdamW עם lr=2e-4. גודל אצווה 32, שלבי הצטברות גרדיאנט 4. סה"כ 3 עידנים. ליצירת נתוני מורה, השתמשנו ב-temperature=0.3, top_p=0.9.
מה כלול בעבודת זיקוק?
- ניתוח המודל הנוכחי ומדדי איכות יעד
- איסוף והכנת מערך נתוני זיקוק (מהמורה או מיומנים)
- אימון תלמיד (בחירת ארכיטקטורה, כוונון היפרפרמטרים)
- בדיקות ואימות (LLM-judge, מדדי דיוק, חביון p99)
- אופטימיזציית הסקה (קוונטיזציה, vLLM, ONNX Runtime)
- תיעוד והכשרת הצוות שלכם לעבודה עם המודל
אנו מבטיחים שהמודל הסופי לא יאבד יותר מ-10% איכות במדדי מפתח. עלות ההסקה תופחת פי כמה. קבלו ייעוץ — נחשב לוחות זמנים ועלויות מדויקים למשימה שלכם.
מגבלות הזיקוק
- התלמיד לא יכול לעלות על המורה, במקרה הטוב הוא מתקרב אליו
- תלות במורה: אם המורה עושה טעויות, התלמיד יורש אותן
- תחום צר: זיקוק קופסה שחורה עובד היטב להתמחות, גרוע ליכולת כללית
- פער גודל: זיקוק 405B → 8B מאבד יותר מאשר 70B → 8B
ערכי טמפרטורה אופטימליים
טמפרטורה T ב-loss של זיקוק קובעת את "הרכות" של התפלגות המורה. כלל אמפירי: T=3–5 לרוב המשימות, מכוונן אמפירית.
| T | השפעה |
|---|---|
| T=1 | הסתברויות מקוריות (חדות) |
| T=2–4 | מוחלקות — התלמיד רואה תשובות "כסופות" טוב יותר |
| T=5–10 | רכות מאוד — לתלמידים קטנים עם קיבולת מוגבלת |
לוחות זמנים
- איסוף נתונים מהמורה: 1–3 ימים
- הכנת מערך נתוני זיקוק: 1–2 שבועות
- אימון תלמיד (8B, SFT): 3–10 שעות
- הערכה מול המורה: 3–5 ימים
- סה"כ: 3–6 שבועות
בקשו ייעוץ — נעריך את הפרויקט שלכם ונבחר את שיטת הזיקוק האופטימלית. למהנדסים שלנו יש ניסיון עם מודלים מ-7B עד 405B והם מבטיחים תוצאות.







