הערכת LLM: מבנצ'מרקים ציבוריים לסט הזהב שלך
אותו agent, אותה משימה, עשר הרצות. שבע הצלחות נראות כמו 70% עד שמחשבים pass^10 — ומקבלים בדיוק אפס.
בעמוד הזה
הנה הדגמה. ה־agent מפרק 23 — אותו loop, שניים מארבעת הכלים שלו — מופנה לתיקייה של חמישה קובצי לוג וקונפיגורציה ונשאל שאלה אחת.
Q: What is the last line of errors.log about?
turn 1 -> read_file({"path": "errors.log"})
turn 2 -> "The last line of errors.log is:
ERROR worker 7 timed out after 30000 ms."נכון, וזו לא ראיה לשום דבר בכלל — כי התמליל הזה הוא אחד מעשרה שהרצתי, ובחרתי אותו אחרי שראיתי את כל העשרה.
הריצו את אותה משימה בדיוק עשר פעמים, בלי לשנות דבר מלבד seed הדגימה, וה־agent עונה נכון שבע פעמים. שבעים אחוז, וזה המספר שהיה נכנס לשקופית. עכשיו שאלו את השאלה שללקוח באמת אכפת ממנה — האם זה יעבוד בכל פעם? — והתשובה היא מספר אחר לגמרי:
t20 7/10 successes = 70 % (95 % Wilson interval: 39.7 % to 89.2 %)
pass^1 70.00 % pass^5 8.33 %
pass^2 46.67 % pass^7 0.83 %
pass^3 29.17 % pass^8 0.00 %
pass^4 16.67 % pass^10 0.00 %ה־agent מעולם לא פתר את המשימה הזו עשר פעמים ברצף, ועל סמך הראיות האלה גם לא מצופה ממנו לעשות זאת. המספר הזה — pass^10 — הוא המספר הישר, כמעט אף פעם לא מפרסמים אותו, ועד סוף הפרק הזה תדעו איך לחשב אותו, כמה עולה לחשב אותו, ולמה רווח הסמך שליד ה־70% חשוב יותר מה־70%.
הצגת פרטים
מה הפרק הזה צריך מהפרקים הקודמים.
- פרק 4 בשביל הסטטיסטיקה: רווח Wilson על פרופורציה, הסיבה ששבע־עשרה תשובות נכונות מתוך עשרים לא מבחינות בין כלום, וה־baseline הטיפש כדרישה ראשונה.
- פרק 15 בשביל ה־bench: harness בן חמישים שורות, מבחן הסימן המזווג על המקרים שבהם שתי מערכות חולקות, והכלל ש־prompt מודדים, לא מתווכחים עליו.
- פרק 23 בשביל הדבר שנמדד: ה־loop, חמש דרכי היציאה, חשבונאות העלויות, והתצפית המסכמת ש־harness הופך agent לבר־משילות, לא לנכון.
שני פאנלים כאן. TypeScript להערכה שלכם, כי היא שייכת ל־continuous integration שלכם ליד הקוד. Python לפאנל השני, כי ה־benchmarks הציבוריים חיים שם ואחת המדידות למטה צריכה את ה־logits.
שלושה פרויקטים, שלושה מכשירים
קישור למקטע: שלושה פרויקטים, שלושה מכשיריםכמעט כל ויכוח על הערכה הוא שני אנשים שמודדים דברים שונים. יש שלושה פרויקטים, והם לא חולקים מכשיר.
| מה אתם מעריכים | השאלה | המכשיר | מי הבעלים שלו |
|---|---|---|---|
| המודל | האם המודל הזה טוב יותר מההוא, באופן כללי? | benchmarks ציבוריים, לוחות דירוג | הקהילה |
| האפליקציה שלכם | האם ה־prompt שלי, ה־retrieval שלי, ה־schema שלי עובדים על הקלטים שלי? | סט הזהב שלכם | אתם |
| ה־agent שלכם | האם כל ה־loop, עם כלים ותופעות לוואי, מגיע ליעד באופן אמין? | הצלחת משימה פלוס pass^k | אתם |
הבלבול יקר בכיוון אחד. לוח דירוג אומר לכם שמודל חזק בהסקה ברמת תואר מתקדם; הוא לא יכול לומר לכם אם הוא ינתב את קריאות התמיכה שלכם. והערכת אפליקציה שמדרגת תשובה אחת לכל קלט לא יכולה לראות agent בכלל, כי ל־agent יש התפלגות של מסלולים ותשובה אחת היא דגימה יחידה ממנה. פרק 22 נתן שם לשורה השלישית הזו והשאיר אותה ריקה: מדד הביצועים, החלק היחיד במפרט של agent שצוותים כותבים אחרון או אף פעם.
גם הסדר חשוב, והספק שמוכר לכם את המודל אומר זאת בעצמו. מדריך ה־agents של OpenAI מצמצם את בחירת המודל לשלושה שלבים, בסדר הזה: ״הגדירו evals כדי לקבוע baseline ביצועים״, ״התמקדו בעמידה ביעד הדיוק שלכם עם המודלים הטובים ביותר הזמינים״, ״בצעו אופטימיזציה לעלות ול־latency על ידי החלפת מודלים גדולים במודלים קטנים יותר כשאפשר״.1 הערכה באה ראשונה, כי שלבים שתיים ושלוש חסרי משמעות בלי מספר.
סט הזהב, ומה עשרים מקרים באמת קונים
קישור למקטע: סט הזהב, ומה עשרים מקרים באמת קוניםסט זהב הוא רשימת קלטים, לכל אחד תשובה כתובה, ו־grader שמחליט אם פלט מתאים. הוא משעמם, הוא קטן, והוא הארטיפקט היחיד בפרק הזה שהוא שלכם. זה שנבנה כאן כולל עשרים משימות על תיקייה של חמישה קבצים — לא השלושה של פרק 23, ולכן התשובות אינן אותן תשובות — וה־grader נכתב לפני שה־agent רץ:
export type Task = {
id: string;
prompt: string;
answer: string; // the fact, in words, for a human and for a judge
must: RegExp[]; // ALL must match the final answer
mustNot?: RegExp[]; // NONE may match
};
export const GOLDEN: Task[] = [
{ id: "t04", prompt: "Which file is the largest?", answer: "access.log",
must: [/access\.log/i], mustNot: [/errors\.log/i, /notes\.txt/i] },
{ id: "t12", prompt: "Which HTTP status codes appear in access.log? List all of them.",
answer: "200, 429 and 500", must: [/200/, /429/, /500/] },
// ...eighteen more
];שתי תכונות נושאות את המשקל. הרשימה mustNot קיימת כי מודל שמציין שלושה קבצים כולל הקובץ הנכון לא ענה. ו־answer כתוב בפרוזה וגם בתבניות, כי גם אדם וגם שופט יצטרכו אותו אחר כך — וכתיבת אותה עובדה פעמיים בשתי נוטציות היא הדרך לגלות שלא הסכמתם עם עצמכם לגבי מה הייתה המשימה.
עכשיו הטבלה שמכריעה. ארבע מערכות מועמדות, אותן עשרים משימות, דיוק עם רווח הסמך שלו, ושתי העמודות שטבלת דיוקים לבדה תמיד מסתירה:
| מערכת | נכון | דיוק, Wilson 95% | עלות לכל משימה שנפתרה | latency ממוצע |
|---|---|---|---|---|
| A — בלי כלים, greedy | 2/20 | 10.0% [2.8, 30.1] | $0.004649 | 663 ms |
| B — כלים, prompt תמציתי | 5/20 | 25.0% [11.2, 46.9] | $0.005576 | 1,362 ms |
| C — כלים, prompt מודרך | 2/20 | 10.0% [2.8, 30.1] | $0.013071 | 930 ms |
| D — C, הטוב מ־3 ב־T = 0.7 | 1/20 | 5.0% [0.9, 23.6] | $0.073532 | 2,628 ms |
קראו את רווחי הסמך לפני המנצח. הריצות של זרוע B נעות מ־11% עד 47%; של זרוע A מ־3% עד 30%. הן חופפות לאורך רוב הטווח, וזה הממצא של פרק 4 שמגיע בדיוק למקום שהובטח: עשרים מקרים לא יכולים לדרג ארבע מערכות. פרק 15 חידד זאת דרך השאלה המזווגת — מתוך המקרים שבהם שתי זרועות חולקות, עד כמה החלוקה חד־צדדית? — כי הקושי המשותף של הסט מתקזז. הנה כל זוג:
A vs B +0 / -3 p = 0.2500 B vs C +4 / -1 p = 0.3750
A vs C +2 / -2 p = 1.0000 B vs D +4 / -0 p = 0.1250
A vs D +2 / -1 p = 1.0000 C vs D +1 / -0 p = 1.0000אף אחת משש ההשוואות לא מבוססת. הזרוע הטובה ביותר מנצחת את הזרוע בלי כלים בכלל בחמש־עשרה נקודות, וזה נשען על שלושה מקרים לא־תואמים. עשרים מקרים מראים מנגנון ולא יכולים לבחור ספק; לומר אחרת בישיבה זו הדרך שבה קונים מודל גרוע.
יש דבר אחד שהטבלה כן מבססת, והוא העמודה שאף אחד לא מכניס. זרוע D עולה פי שלושה־עשר מזרוע B לכל משימה שנפתרה, כי דגימת שלושה מסלולים ולקיחת התשובה השכיחה משלשת את החשבון בין אם היא משלשת את הדיוק ובין אם לא. טבלאות דיוק שמשמיטות עלות הופכות את הטרייד־אוף הזה לבלתי נראה.
המדד קובע את המספר
קישור למקטע: המדד קובע את המספרעכשיו הממצא שמשנה את האופן שבו תקראו כל benchmark שתראו אי פעם. קחו את אותם מאתיים תמלילים — עשרים משימות, עשר הרצות, אף token לא נוצר מחדש — ותנו להם ציון בשלוש דרכים:
| grader | נכון | דיוק, Wilson 95% |
|---|---|---|
| התאמה מדויקת לתשובה הכתובה | 0/200 | 0.0% [0.0, 1.9] |
| התשובה הכתובה מופיעה כתת־מחרוזת | 26/200 | 13.0% [9.0, 18.4] |
| rubric מילות המפתח שלמעלה | 52/200 | 26.0% [20.4, 32.5] |
אפס, שלוש־עשרה, עשרים ושש. המערכת לא השתנתה. ה־grader השתנה. התאמה מדויקת מחזירה אפס לא כי ה־agent חסר תועלת, אלא כי שום תשובת טקסט חופשי לעולם אינה זהה בית־לבית לרפרנס: היא מודדת עיצוב ומדווחת עליו כיכולת.
זו לא סקרנות, זה מנגנון, ויש לו שם. מדד hard-cutoff מדרג משימה הכול־או־כלום על פני כמה תתי־עובדות, ולכן הוא מצטבר. משימה t12 מבקשת שלושה קודי סטטוס בבת אחת. לאורך עשר ההרצות:
per-code presence 200: 9/10 429: 6/10 500: 8/10 (mean 0.77 per fact)
all three at once 5/10כל עובדה נכונה בערך שלושה רבעים מהזמן; דרישה שכל השלוש יהיו נכונות בבת אחת חוצה את הציון, ו־ קרוב מספיק ל־0.50 שנמדד כדי להראות מאיפה הגיעה הירידה. בהכללה:
| דיוק לכל עובדה | |||||
|---|---|---|---|---|---|
| 0.60 | 60.0% | 36.0% | 21.6% | 7.8% | 0.6% |
| 0.80 | 80.0% | 64.0% | 51.2% | 32.8% | 10.7% |
| 0.90 | 90.0% | 81.0% | 72.9% | 59.0% | 34.9% |
| 0.95 | 95.0% | 90.3% | 85.7% | 77.4% | 59.9% |
קראו את שורת 0.90 מול שורת 0.95 ב־: שיפור של חמש נקודות לכל עובדה הופך לעשרים וחמש נקודות בצירוף. שום דבר לא רציף השתבש במודל. עקומה חלקה שנקראת דרך מדד הכול־או־כלום נראית כמו קפיצה — וזה בדיוק הטיעון של Schaeffer, Miranda ו־Koyejo על יכולות מתהוות, שפרק 10 דחה לכאן.2 הביקורת שלהם מצאה שלכל היותר 5 מתוך 39 המדדים המועדפים של BIG-Bench מציגים emergence בכלל, כאשר שני מדדים דיסקונטינואיים אחראים ליותר מ־92% מהמקרים הנטענים.
אז המשמעת, בשורה אחת: קפיצה בגרף היא ראיה על המדד עד שיוכח אחרת. לפני שמאמינים שיכולת הופיעה, הציגו את אותן הרצות עם מדד שנותן קרדיט חלקי וראו אם המצוק נשאר.
יש גרסה מסדר שני של זה, ש־Kalai ועמיתיו טוענים שהיא גורמת נזק במעלה הזרם: benchmarks שמקבלים ציון נכון־או־לא־נכון מתגמלים ניחוש על פני אמירה ״אני לא יודע״, ולכן מודל שעבר אופטימיזציה מולם לומד לנחש. התיקון המוצע שלהם אינו עוד benchmark להזיות אלא ״שינוי הניקוד של benchmarks קיימים שאינם מיושרים אך שולטים בלוחות הדירוג״.3 לסט הזהב שלכם יש אותו מנוף, והוא שורה אחת: החליטו אם הימנעות נחשבת ככישלון או כקטגוריה משלה. רוב האנשים אף פעם לא מחליטים, ולכן היא נספרת בשקט ככישלון, והמערכת שהם משיקים מנחשת.
pass^k, והשונות שאף אחד לא מפרסם
קישור למקטע: pass^k, והשונות שאף אחד לא מפרסםכל מה שהיה עד כאן דירג ניסיון אחד לכל משימה. agent אינו ניסיון אחד. פרק 17 קבע שאין לכם דטרמיניזם אפילו ב־temperature אפס, ולכן אותו קלט מייצר התפלגות של מסלולים ו־benchmark שמריץ כל משימה פעם אחת מדווח על דגימה אחת ממנה.
התרומה של τ-bench היא המדד לזה. המאמר מגדיר אותו בפשטות: ״אנו מציעים מדד חדש – pass^k (pass hat k), המוגדר כסיכוי שכל k ניסויי המשימה הבלתי־תלויים והזהים יצליחו, בממוצע על פני משימות״.4 הריצו כל משימה פעמים, ספרו את ההצלחות, והאומדים חסרי ההטיה הם:
השני הוא pass@k המוכר מיצירת קוד: הסיכוי שלפחות אחד מתוך ניסיונות יצליח. שימו אותם זה לצד זה על אותם ספירות מדודות והם נעים בכיוונים מנוגדים:
pass@k — לפחות אחד | pass^k — כולם | |
|---|---|---|
| 1 | 26.0% | 26.0% |
| 2 | 37.0% | 15.0% |
| 3 | 43.5% | 10.5% |
| 5 | 51.2% | 6.7% |
| 8 | 57.7% | 5.1% |
| 10 | 60.0% | 5.0% |
אותן הרצות, אותו grader, אותן עשרים משימות. עמודה אחת אומרת שהמערכת משתפרת עם יותר ניסיונות והאחרת אומרת שהיא מחמירה, ושתיהן נכונות, כי הן עונות על שאלות שונות. pass@k הוא המדד הנכון כשאדם מסנן את הפלט — יצירת קוד, טיוטות, סיעור מוחות — והניסיונות הנוספים זולים. pass^k הוא המדד הנכון כשה־agent פועל בלי מסנן, וזה מה ש־״agent״ אומר. פרסום הראשון במקום שבו השני חל הוא ההגזמה הנפוצה ביותר בתחום הזה, והכותרת של τ-bench עצמו היא הגרסה הישרה: gpt-4o בכ־61% pass^1 ב־retail יורד לכ־25% ב־pass^8.4
ועכשיו העוקץ במספרים שלי. pass^10 על פני עשרים המשימות שלי הוא 5.0%: בדיוק משימה אחת מתוך עשרים נפתרה בכל עשר ההרצות. המשימה הזו היא t19, ״האם deploy 42 הצליח?״, והנה שתיים מתוך עשר התשובות שה־rubric דירג כנכונות:
run 2 "To check if 'deploy.log' succeeded in deploying 42, I will list the file
names in the working directory using the list_files function..."
run 8 "Yes, deploy 42 has successfully deployed. Deploying was successful for 41
as well."הראשונה אף פעם לא עונה. השנייה מוסיפה טענה שקרית — deploy 41 בוצע לו rollback. שתיהן התאימו ל־/succe|yes/. המשימה היחידה שמחזיקה את pass^10 מעל אפס היא ארטיפקט של grader, ולכן המספר האמיתי הוא אפס, ושום אגרגציה לא הייתה מראה לי את זה. דגימת התמלילים שמאחורי המשימה עם הציון הטוב ביותר היא המקום שבו graders הולכים למות.
ועוד מספר אחד, זה שעל שמו נקרא הסעיף הזה. עשר הערכות זהות — אותה מערכת, אותן עשרים משימות, אותו קוד, שום דבר לא השתנה מלבד ה־seeds:
per-run correct: 5 2 5 5 8 5 8 5 4 5 -> 10 % .. 40 %, mean 26.0 %, sd 8.8 pointsטווח של שלושים נקודות במערכת שלא השתנתה. אם תריצו את הסוויטה פעם אחת לפני שחרור ופעם אחת אחריו, ״שיפור״ של שמונה נקודות נמצא בתוך הפיזור הזה ותשיקו אותו מתוך אמונה שאתם גרמתם לו. לכן רווח הסמך המאוגם למעלה — 26.0% [20.4, 32.5] — צר מדי מכדי לצטט אותו לבדו: הוא מתייחס למאתיים ניסויים מתואמים כאילו היו מאתיים בלתי־תלויים. הסיכום הישר של הערכת agent הוא ממוצע וגם פיזור על פני חזרות, וכמעט אף אחד לא מפרסם את השני.
השופט, וסט הזהב של השופט עצמו
קישור למקטע: השופט, וסט הזהב של השופט עצמוRubrics לא מתרחבים היטב לתשובות פתוחות, ולכן המהלך הסטנדרטי הוא לתת למודל לדרג את הפלט. זה עובד מספיק טוב ברמת frontier כדי להיות ברירת המחדל, ויש לו שלושה מצבי כשל בעלי שם: הטיית מיקום, הטיית אריכות והטיית שיפור־עצמי.5
מדדו אותו לפני שאתם סומכים עליו. אותן שישים תשובות — שלוש מתוך עשר ההרצות — תויגו בשלוש דרכים. התווית האנושית היא שלי: קראתי את כל השישים עם חמשת הקבצים פתוחים ויישמתי כלל כתוב אחד, עובר אם ורק אם התשובה מציינת את העובדה שהשאלה ביקשה ואינה מכילה דבר שסותר את הקבצים.
| grader | אומר pass | מסכים עם האדם | false pass | false fail |
|---|---|---|---|---|
| keyword rubric | 17/60 | 50/60 = 83.3% [72.0, 90.7] | 8 | 2 |
| המודל כשופט | 60/60 | 11/60 = 18.3% [10.6, 29.9] | 49 | 0 |
השופט אמר PASS שישים פעמים מתוך שישים. הוא היה מדווח על ה־agent הזה ב־100% דיוק על סט שבו האדם נותן לו 18%. שופט בלי כוח הבחנה אינו מכשיר רועש; הוא פונקציה קבועה, ופונקציה קבועה נותנת למערכת הטובה ביותר ולמערכת הגרועה ביותר שלכם אותו ציון.
Prompting לא הציל אותו. ארבע וריאציות, אותם שישים פריטים:
| judge prompt | אומר pass | הסכמה עם האדם |
|---|---|---|
| ״השב PASS או FAIL.״ | 60/60 | 18.3% |
| ״השב FAIL או PASS.״ — התוויות הוחלפו | 56/60 | 25.0% |
| בתוספת רשימה מפורשת של מה נחשב כישלון | 55/60 | 26.7% |
בתוספת דוגמת FAIL אחת ודוגמת PASS אחת | 56/60 | 25.0% |
החלפת סדר שתי התוויות בהוראה הזיזה ארבע הכרעות. זו השפעה מדידה, והיא מהסוג הלא נכון: השופט מגיב לצורת ה־prompt במקום לתשובה שמולו.
ההדגמה הנקייה היא בזוגות. עשרים שאלות, לכל אחת מועמד אחד נכון בבירור ואחד שגוי בבירור, מוצגים בשני הסדרים:
picked the FIRST option 40/40 = 100.0 %
order-consistent (same winner both ways) 0/20 = 0.0 % [Wilson 0.0, 16.1]
picked the CORRECT answer 20/40 = 50.0 %הוא בחר בעמדה A ארבעים פעמים מתוך ארבעים. ה־50% על נכונות אינם כשירות חלקית — זו אריתמטיקה, כי התשובה הנכונה יושבת בעמדה A בדיוק במחצית הניסויים. עקביות כאן מוגדרת כפי ש־MT-Bench מגדיר אותה, ״אחוז המקרים שבהם שופט נותן תוצאות עקביות כאשר מחליפים את סדר שני ה־assistants״, מה שמאפשר להשוואה להיות תפוחים לתפוחים: GPT-4 מקבל 65.0% במדד הזה, ו־few-shot prompting העלה אותו ל־77.5%.5 שלי מקבל אפס.
המיטיגציה הסטנדרטית גם היא מאותו מאמר: ״קראו לשופט פעמיים על ידי החלפת סדר שתי התשובות והכריזו על ניצחון רק כאשר תשובה מועדפת בשני הסדרים״.5 יישמו זאת כאן והשופט מפיק אפס הכרעות שימושיות מעשרים זוגות — וזה הפלט הנכון, וטוב לאין שיעור מעשרים הכרעות בטוחות.
הערה מתודולוגית ששווה יותר מהתוצאה. הרצתי גם מבחן אריכות: אותה תשובה נכונה, עותק אחד מרופד במשפט בן 36 מילים שלא מוסיף דבר. השופט העדיף את הגרסה הארוכה בדיוק ב־50% מהניסויים — מה שנראה כמו היעדר הטיית אריכות ואינו כזה כלל, כי שופט שתמיד בוחר בעמדה A מקבל 50% בכל זיווג מאוזן שהוא. אי אפשר למדוד הטיה שנייה לפני ששולטים בראשונה. החלפת עמדות אינה שיפור שמוסיפים מאוחר יותר; היא מה שהופך כל מדידה אחרת לניתנת לפרשנות.
למה שופט מיועד. תשובות פתוחות ללא צורה ניתנת לניתוח: טון, כיסוי, האם ציטוט תומך במשפט שלו, האם סירוב היה מתאים. זול, מהיר, ובערך טוב כמו מודל הבסיס שלו.
מה שופט אינו. ground truth. הוא מערכת עם דיוק, פרופיל הטיות ועלות, והוא צריך סט זהב משלו של תוויות אנושיות — כולל כישלונות ידועים — לפני שמספר כלשהו שהוא מפיק אומר משהו.
האזהרה הישרה: השופט הזה הוא מודל של חצי מיליארד פרמטרים, ואף אחד לא צריך לדרג עם כזה. הנקודה אינה ששופטים גרועים. הנקודה היא שהמספרים למעלה עלו שמונה דקות להפיק, ובלעדיהם פסק הדין של השופט הזה על החלטת השקה היה 100%.
פאנל שני: Python, וחיישן לזיהום
קישור למקטע: פאנל שני: Python, וחיישן לזיהוםזהו פאנל ה־Python השלישי והאחרון שהוכרז בקורס, והסיבה היא המקום שממנו מגיעים המספרים הציבוריים. lm-evaluation-harness מכסה ״יותר מ־60 benchmarks אקדמיים סטנדרטיים ל־LLMs, עם מאות תתי־משימות ווריאנטים ממומשים״ והוא ״ה־backend של Open LLM Leaderboard הפופולרי של Hugging Face״; HELM, SWE-bench ו־τ-bench הם חבילות Python עם נקודות כניסה ב־Python.6 להריץ את המודל שלכם מול מספר שפורסם פירושו להריץ את הקוד שלהם, וביום שבו תרצו להשוות למספר שמישהו ציטט, זו האקוסיסטמה שבה אתם נמצאים:
lm_eval --model hf \
--model_args pretrained=EleutherAI/gpt-j-6B \
--tasks hellaswag \
--device cuda:0 \
--batch_size 8הסיבה השנייה היא שמדידה אחת בפרק הזה בלתי אפשרית מעל HTTP. Contamination — דליפת סט הבדיקה לנתוני האימון — הוא הכשל שהופך benchmark ציבורי לחסר משמעות בשקט, והחיישן החד ביותר עבורו צריך את ה־loss של המודל עצמו, שאף chat API לא מחזיר. זו cross-entropy לכל token מפרק 8, מכוונת לשאלה על זיכרון:
def nll(text: str) -> float:
"""Mean negative log-likelihood per token, in nats."""
ids = tok(text, return_tensors="pt").input_ids.to(model.device)
with torch.no_grad():
out = model(ids, labels=ids)
return float(out.loss)עשרה זוגות משפטים: חמישה בכל crawl של האינטרנט מאז שהוא קיים, חמישה שנכתבו לפרק הזה הבוקר, כל אחד משויך לניסוח מחדש עם אותו תוכן.
| סט | ניסוח קנוני | ניסוח מחדש | פער |
|---|---|---|---|
| מפורסמים, ממוצע 5 | 1.21 | 3.03 | +1.83 |
| טריים, ממוצע 5 | 5.02 | 5.96 | +0.93 |
המודל מופתע פי ארבעה יותר ממשפט שנכתב הבוקר מאשר ממשפט שראה מיליון פעמים, וניסוח מחדש עולה פי שניים יותר במפורסמים — העלות הנוספת היא החלק שנשנן במקום שהובן. loss מוחלט מערבב שינון עם טבעיות רגילה, ולכן הפער הוא סטטיסטיקה טובה יותר ומבחן ההמשך טוב עוד יותר. תנו לו את שש המילים הראשונות:
famous "Permission is hereby granted, free of"
-> "charge, to any person obtaining a copy of this software and associated
documentation files (the "
famous "All human beings are born free"
-> "and equal in dignity and rights. The right to life, liberty, and security"
fresh "All evaluation harnesses are born tiny"
-> ", and the most common way to measure their size is by using a ruler."שלוש מתוך חמש המחרוזות המפורסמות הושלמו מילה במילה משש מילים; אף אחת מחמש הטריות לא. זה מודל של חצי מיליארד פרמטרים מדקלם את MIT License. אם ה־benchmark שלכם נמצא ברשת הציבורית, הניחו שהוא נמצא במשקלים. זה גם הטיעון של כל הפרק: סט זהב שכתבתם מהנתונים שלכם, ושמרתם מחוץ לכל repository ש־crawler קורא, הוא סט הבדיקה היחיד שאתם יכולים להיות בטוחים שמעולם לא אומן עליו.
מה ה־benchmarks הציבוריים באמת מודדים
קישור למקטע: מה ה־benchmarks הציבוריים באמת מודדיםעדיין כדאי לקרוא אותם, כל עוד קוראים מה כל אחד מודד ולא את המספר היחיד שמודבק אליו.
| benchmark | מה הוא מודד | מספר מהמאמר שלו |
|---|---|---|
| MMLU | ידע רב־ברירה על פני 57 תחומים | GPT-3 ניצח ניחוש ב״כמעט 20 נקודות אחוז בממוצע״7 |
| HELM | הרבה מדדים × הרבה תרחישים, בסטנדרטיזציה | כיסוי תרחישי הליבה עלה מ־17.9% ל־96.0%8 |
| Chatbot Arena | העדפת אדם זוגית במיקור המונים | יותר מ־240K קולות; קולות הקהל ״בהסכמה טובה״ עם מומחים9 |
| SWE-bench | פתרון בעיות GitHub אמיתיות, מדורג על ידי הבדיקות של ה־repo | 2,294 בעיות; המודל הטוב אז פתר ״רק 1.96%״10 |
| τ-bench | שימוש בכלים עם משתמש מדומה ומדיניות דומיין | gpt-4o ≈ 61% pass^1, ≈ 25% pass^8 ב־retail4 |
| WebArena | משימות ארוכות־טווח באתרים פעילים | ה־agent הטוב ביותר של GPT-4 ב־14.41% מול 78.24% לבני אדם11 |
| OSWorld | משימות desktop ו־OS אמיתיות בין אפליקציות | 369 משימות; המודל הטוב ביותר 12.24%, בני אדם 72.36%12 |
| GAIA | שאלות שקלות לאנשים וקשות ל־assistants | 466 שאלות; בני אדם 92%, GPT-4 עם plugins 15%13 |
| AgentBench | הסקת agent על פני 8 סביבות נפרדות | פער גדול בין מודלים מסחריים למודלים פתוחים14 |
| AgentHarm | האם agent יבצע משימות רב־שלביות זדוניות | 110 משימות זדוניות על פני 11 קטגוריות נזק15 |
קחו את הטבלה ולא אף שורה בודדת. ה־benchmarks ה־agentic כולם מציבים בני אדם הרבה מעל מודלים, ההפך מה־benchmarks של ידע וזה הסיכום הטוב ביותר בשורה אחת למצב התחום; המספרים שלהם מזדקנים בתוך חודשים, אז צטטו אותם עם התאריך שבו קראתם אותם; וכל אחד מהם מודד משימה שאינה שלכם.
המדדים שמכריעים בפרודקשן
קישור למקטע: המדדים שמכריעים בפרודקשןדיוק הוא המדד שעליו מתווכחים. אלה המדדים שמכריעים אם הדבר מושק. כל הארבעה נובעים ממאתיים ההרצות שכבר נמדדו.
עלות לכל משימה שנפתרה, לא לכל קריאה. ה־agent עולה $0.001345 לכל ניסיון ו־$0.005172 לכל משימה שבאמת נפתרה — פי 3.85 יותר, כי שלושה רבעים מהניסיונות לא מייצרים כלום. Latency מתנהג באותה דרך: 1,213 ms לכל ניסיון, 4,667 ms לכל משימה שנפתרה. כל retry, כל שאלה חוזרת, כל מסלול שננטש נמצאים במספר השני ובלתי נראים בראשון.
דיאגנוסטיקה שמנצחת דיוק. ב־123 מתוך 200 ניסיונות ה־agent ענה בלי לקרוא אפילו לכלי אחד — הוא ניחש במקום לבדוק. בפיצול לפי זה:
answered without reading anything 8/123 = 6.5 % [3.3, 12.3]
answered after reading something 44/77 = 57.1 % [46.0, 67.6]רווחי הסמך אפילו לא מתקרבים למגע. זה שווה יותר מה־26% הכולל, כי זה נותן שם לדבר שצריך לתקן — המודל לא נכשל בהסקה, הוא נכשל בלבדוק — והתיקון נמצא ב־harness, לא במודל. הסתייגות אחת שהפרק הזה חייב לסטנדרטים של עצמו: שתי הקבוצות הן משימות שונות, לא אותן משימות בזוגות, ולכן חלק מהפער עשוי להיות שהוא מדלג על הכלים דווקא בשאלות שהוא מתקשה בהן. הפיצול הוא דיאגנוסטיקה, לא טענה סיבתית.
שיעור התערבות אנושית הוא המדד שקונה שואל עליו ראשון: איזה חלק מהריצות נעצר ב־approval, ב־guardrail או ב־handoff. ההפרעות המוקלדות של פרק 23 הופכות אותו לספיר, וכשסופרים לפי סוג משימה ולפי שבוע זה מה שמבדיל agent שלומד את העבודה שלו מאחד שהופך בשקט לתור.
נטישה היא המדד שאף סוויטה לא־מקוונת לא יכולה לראות: המשתמש שקרא את התשובה, סגר את הטאב ועשה את המשימה בעצמו. הערכה לא־מקוונת היא שער; הערכת פרודקשן היא דגימה מתמשכת של תנועה אמיתית, עם ציון על אותו grader ועוד ארבעת אלה.
וכלל בירושה מפרק 17: לעולם אל תבצעו assert על פלט מדויק. בצעו assert על תכונות — JSON תקין, schema נכון, הכלי הנכון נקרא, מספר בתוך tolerance, תת־מחרוזת נדרשת נוכחת. עמודת ההתאמה המדויקת בתחילת הפרק היא מה שקורה כששוברים את הכלל הזה.
מה שולחים לצד שלישי
קישור למקטע: מה שולחים לצד שלישיהערכת ספק אינה רק עניין של דיוק, וזה החצי השני של האתיקה בקורס הזה, עם כותרת משלו ולא נספח.
מדדו את ההטיה, אל תניחו אותה. מה שלא תאמינו על התנהגות מודל מול שמות, ניבים, מגדרים או לאומים, זו תכונה מדידה של ה־pipeline שלכם, והמכשיר הוא זה שכבר יש לכם: קחו את סט הזהב, שנו רק את המאפיין, והשוו בזוגות. HELM קיים בדיוק כי דיוק לבדו דווח במקום שבו גם הטיה, רעילות, כיול ו־robustness היו ניתנים להכרעה.8 model card של ספק היא נקודת התחלה, לא ראיה על הקלטים שלכם.
Contamination היא גם שאלה לספק. החיישן למעלה הוא הסיבה לשאול על מה נמדד מספר שפורסם, ומתי נחתכו נתוני המודל.
Retention, אימון ו־residency, נקרא ב־7 בספטמבר 2026. אלה משתנים, לכן רשמו את התאריך ליד התשובה. דף המדיניות של Anthropic קובע: ״כברירת מחדל, לא נשתמש בקלטים או בפלטים שלכם מהמוצרים המסחריים שלנו (למשל Claude for Work, Anthropic API, Claude Gov וכו') כדי לאמן את המודלים שלנו״, למעט תוכן שאתם מגישים במפורש כמשוב, שנשמר ״עד 5 שנים״.16 תיעוד בקרות הנתונים של OpenAI קובע ש״נתונים הנשלחים ל־OpenAI API אינם משמשים לאימון או לשיפור מודלי OpenAI (אלא אם בחרתם במפורש לשתף איתנו נתונים)״, מתאר שמירת ברירת מחדל של שלושים יום ללוגים לניטור שימוש לרעה, ומציע Zero Data Retention, ש״מחריג תוכן לקוחות מלוגי ניטור שימוש לרעה״, וכן data residency ניתן להגדרה על פני רשימת אזורים.17
ארבע שאלות לקבל בכתב לפני קריאת הפרודקשן הראשונה, כי לכל אחת יש בעלים אחר: האם הנתונים שלי משמשים לאימון; כמה זמן הם נשמרים ועל ידי מי; איפה הם מעובדים ומאוחסנים; ומה קורה לכל זה אם אני משתמש ב־reseller, gateway או aggregator ולא ישירות בספק. האחרונה היא המקום שבו רוב ההפתעות גרות, ושום benchmark לא יספר לכם.
לאן ממשיכים מכאן
קישור למקטע: לאן ממשיכים מכאןעכשיו יש לכם את המכשיר: סט זהב בבעלותכם, רווח סמך על כל מספר, מבחן מזווג לכל השוואה, pass^k להרצות שלא הראיתם לאף אחד, שופט מדוד, וחיישן לשאלה אם ציון ציבורי אומר משהו. את טענת הסיום של פרק 23 אפשר עכשיו לבדוק במקום להצהיר — harness הופך agent לבר־משילות, לא לנכון — והבדיקה לקחה מאתיים הרצות ושמונה דקות.
יש תכונה אחת של agent שכל זה לא מודד, והיא זו שבגללה אנשים מפוטרים.
כל משימה בסט הזהב של הפרק הזה נכתבה על ידי, וכל קובץ שה־agent קרא נכתב על ידי. שום דבר בתיקייה הזו לא ניסה לעשות שום דבר. שנו שורה אחת בקובץ אחד שה־agent מתבקש לקרוא — שורה שמסתיימת בהוראה המופנית לכל מה שיקרא אותה אחר כך — וה־agent שקיבל 26% יציית לה עם אותם כלים, אותן הרשאות ואותו trace נקי, וכל מספר בפרק הזה יישאר בדיוק במקום. סוויטת הערכה מודדת באיזו תדירות מערכת מגיעה ליעד שלכם. היא לא מודדת באיזו קלות מישהו אחר יכול להחליף אותו ביעד שלו.
פרק 30 הוא זה: prompt injection, הטריפקטה הקטלנית של נתונים פרטיים, תוכן לא מהימן ותקשורת חיצונית, ומה עולה לתת ל־agent הרשאות אמיתיות. הוא נפתח בתצפית שהפרק הזה נמנע ממנה — שאותו ציון עובר תואם גם ל־agent שעושה בדיוק מה שתוקף כתב בקובץ שנאמר לו לקרוא.
מקורות ושיטה
קישור למקטע: מקורות ושיטהכל מספר למעלה הופק על מכונה אחת, ושום דבר מזה לא נגע ב־endpoint בתשלום. ה־agent הוא ה־loop של פרק 23 עם שניים מארבעת הכלים שלו על פני תיקייה של חמישה קבצים; המודל מאחורי הפורט הוא Qwen/Qwen2.5-0.5B-Instruct, חשוף דרך שרת קטן באותה צורה כמו endpoint של chat completions בדיוק כמו בפרק 23, אבל ב־half precision על GPU צרכני אחד במקום על ה־CPU של אותו פרק. העלויות משתמשות בתעריפים של פרק 16 — $2.00 למיליון input tokens ו־$12.00 למיליון output — מיושמים על ספירות token מדודות. ההרצות החוזרות משתמשות ב־temperature 0.7 עם seeds קבועים כך שכל הסט ניתן לשחזור; טבלת ארבע הזרועות היא greedy. רווחי הסמך הם Wilson ב־95%, השוואות מזווגות הן מבחני סימן מדויקים דו־צדדיים על הזוגות הלא־תואמים; רווח Wilson הוא של פרק 4 ומבחן הסימן המזווג המדויק הוא של פרק 15, שניהם בשימוש חוזר ללא שינוי. התוויות האנושיות הן שלי, הוחלו על שישים תשובות תחת הכלל הכתוב שצוטט בטקסט. קראו כל סדר גודל כאן כתכונה של מודל בן חצי מיליארד פרמטרים וכל שיטה כניתנת להעברה: מודל גדול יותר מעלה את כל המספרים ולא מזיז אף אחד מהמכשירים.
הפניות
קישור למקטע: הפניות-
OpenAI, A practical guide to building agents (PDF), עמ׳ 8, נקרא ב־7 בספטמבר 2026. מקור הסדר בן שלושת השלבים שצוטט למעלה והעצה הנלווית ״לבנות את אב־הטיפוס של ה־agent שלכם עם המודל המסוגל ביותר לכל משימה כדי לקבוע baseline ביצועים. משם, נסו להחליף למודלים קטנים יותר כדי לראות אם הם עדיין משיגים תוצאות קבילות.״ פרקים 22 ו־25 מצטטים את עמודי ההגדרה והאורקסטרציה שלו. ↩
-
Schaeffer, R., Miranda, B. and Koyejo, S. Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004 (2023). הטיעון שמדדים דיסקונטינואיים, הכול־או־כלום, מייצרים קפיצות לכאורה משיפורים בסיסיים חלקים, עם ביקורת BIG-Bench שצוטטה בפרק 10. גם האזהרה שלהם שווה חזרה: שום דבר במאמר אינו טוען שמודלים גדולים לא יכולים להציג יכולות מתהוות. ↩
-
Kalai, A. T., Nachum, O., Vempala, S. S. and Zhang, E. Why Language Models Hallucinate. arXiv:2509.04664 (2025). הטיעון ש־benchmarks שמדרגים נכון־או־לא־נכון מתגמלים ניחוש על פני הימנעות, והתרופה המוצעת של ״שינוי הניקוד של benchmarks קיימים שאינם מיושרים אך שולטים בלוחות הדירוג, במקום להציג הערכות הזיה נוספות״. פרק 19 מצטט אותו מצד ה־retrieval; זה צד ההערכה של אותה טענה. ↩
-
Yao, S., Shinn, N., Razavi, P. and Narasimhan, K. τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains. arXiv:2406.12045 (2024). המקור של
pass^k, המוגדר כפי שצוטט למעלה, עם שני האומדים מודפסים זה לצד זה במאמר; כותרת התקציר היא ש־function-calling agents ברמת state-of-the-art ״מצליחים בפחות מ־50% מהמשימות, והם די לא עקביים (pass^8 <25% ב־retail)״, וסעיף 1 נותן את נתוני gpt-4o של ≈61%pass^1ו־≈25%pass^8על τ-retail. אומדpass@kשהוא משווה מולו מגיע מ־Chen, M. et al., Evaluating Large Language Models Trained on Code, arXiv:2107.03374 (2021). ↩ ↩2 ↩3 -
Zheng, L. et al. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685 (2023). מקור שלוש ההטיות הנקובות, של הגדרת העקביות ששימשה למעלה (״אחוז המקרים שבהם שופט נותן תוצאות עקביות כאשר מחליפים את סדר שני ה־assistants״), של הממצא ש״רק GPT-4 מפיק תוצאות עקביות ביותר מ־60% מהמקרים״ עם 65.0% שעולים ל־77.5% ב־few-shot, ושל מיטיגציית החלף־ודרוש־הסכמה שצוטטה כלשונה. גם התוצאה החיובית שלו חשובה: שופטי GPT-4 מגיעים ל״שיעור הסכמה העולה על 80%״ עם הערכות אנושיות, ״אותה רמה של הסכמה אדם־אדם״ — וזו הסיבה להשתמש בשופט בכלל, והסיבה למדוד את שלכם. ↩ ↩2 ↩3
-
EleutherAI, Language Model Evaluation Harness, README של הפרויקט נקרא ב־7 בספטמבר 2026: ״יותר מ־60 benchmarks אקדמיים סטנדרטיים ל־LLMs, עם מאות תתי־משימות ווריאנטים ממומשים״, ו״ה־backend של Open LLM Leaderboard הפופולרי של Hugging Face״. ההפעלה
lm_evalשצוטטה למעלה היא הדוגמה של ה־README עצמו. Liang, P. et al., Holistic Evaluation of Language Models, arXiv:2211.09110 (2022), הוא ה־runner הסטנדרטי האחר והקריאה הטובה יותר על עיצוב הערכה. ↩ -
Hendrycks, D., Burns, C., Basart, S., Zou, A., Mazeika, M., Song, D. and Steinhardt, J. Measuring Massive Multitask Language Understanding. arXiv:2009.03300 (2020). 57 משימות; טענת התקציר שהמודל הגדול ביותר של GPT-3 ״משתפר מעל ניחוש אקראי בכמעט 20 נקודות אחוז בממוצע״ היא תזכורת שימושית לכמה רוויה של benchmark זה היא עניין חדש. ↩
-
Liang, P. et al. Holistic Evaluation of Language Models. arXiv:2211.09110 (2022). שבעה מדדים — דיוק, כיול, robustness, הוגנות, הטיה, רעילות ויעילות — על פני 16 תרחישי ליבה ו־30 מודלים, עם נתוני הכיסוי שצוטטו למעלה. הסיבה לקרוא אותו היא המסגור: איזה מהשבעה אתם מדווחים הוא עצמו בחירה. ↩ ↩2
-
Chiang, W.-L. et al. Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132 (2024). יותר מ־240K קולות בזמן הכתיבה, העדפה זוגית אנושית במיקור המונים, והטענה ש״קולות האדם במיקור המונים נמצאים בהסכמה טובה עם אלה של מדרגים מומחים״. ↩
-
Jimenez, C. E., Yang, J., Wettig, A., Yao, S., Pei, K., Press, O. and Narasimhan, K. SWE-bench: Can Language Models Resolve Real-World GitHub Issues? arXiv:2310.06770 (2023). 2,294 בעיות מ־12 repositories של Python, מדורגות על ידי הבדיקות של ה־repositories עצמם, כשהמודל הטוב ביותר אז פתר ״רק 1.96%״. פרק 23 משתמש בו עבור המובן האחר של המילה ״harness״. ↩
-
Zhou, S. et al. WebArena: A Realistic Web Environment for Building Autonomous Agents. arXiv:2307.13854 (2023). אתרים פעילים על פני ארבעה דומיינים, עם agent הטוב ביותר של GPT-4 ב־14.41% מול 78.24% לבני אדם. ↩
-
Xie, T. et al. OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments. arXiv:2404.07972 (2024). 369 משימות במערכות הפעלה אמיתיות; בני אדם מעל 72.36%, המודל הטוב ביותר 12.24%, כאשר GUI grounding מצוין כפער המרכזי. ↩
-
Mialon, G., Fourrier, C., Swift, C., Wolf, T., LeCun, Y. and Scialom, T. GAIA: A Benchmark for General AI Assistants. arXiv:2311.12983 (2023). 466 שאלות, בני אדם ב־92% מול 15% ל־GPT-4 עם plugins — ההצהרה המפורסמת הנקייה ביותר על הפער בין מה שקל לאדם ומה שקל ל־assistant. ↩
-
Liu, X. et al. AgentBench: Evaluating LLMs as Agents. arXiv:2308.03688 (2023). שמונה סביבות נפרדות, ופער משמעותי בין מודלים מסחריים מובילים לבין מודלים open-source בגודל דומה. ↩
-
Andriushchenko, M. et al. AgentHarm: A Benchmark for Measuring Harmfulness of LLM Agents. arXiv:2410.09024 (2024). 110 משימות agent זדוניות במפורש (440 עם הרחבות) על פני 11 קטגוריות נזק, עם הממצא שמודלים מובילים ״מצייתים באופן מפתיע לבקשות agent זדוניות ללא jailbreaking״ וש־jailbreak templates אוניברסליות פשוטות עוברות ל־agents תוך שמירה על היכולות שלהם. זה הגשר לפרק 30: benchmark יכולת ו־benchmark נזק מודדים את אותה מערכת וחולקים בשאלה אם היא מוכנה. ↩
-
Anthropic, Is my data used for model training?,
privacy.claude.com, נקרא ב־7 בספטמבר 2026. צוטט כלשונו למעלה, כולל חריג המשוב וחלון האחסון בן חמש השנים למשוב שנשלח. ↩ -
OpenAI, Your data (תיעוד בקרות נתוני API),
developers.openai.com, נקרא ב־7 בספטמבר 2026. מקור הצהרת ברירת המחדל של אי־אימון, שמירת שלושים יום לניטור שימוש לרעה, תיאור Zero Data Retention ורשימת ה־endpoints הזכאים, ואזורי ה־data residency. ↩