בלוג

איך לקרוא מדדי ביצועים של קידוד AI ולהימנע מבחירה במנצח על הנייר

Markdown

מה מודדים HumanEval ו-SWE-bench, וכיצד להתחשב בעטיפת הסוכן, בתנאים, בעדכניות המשימות, בשונות ובעלות כשקוראים דירוגים של כלי קידוד מבוססי AI.

קריאת המאמר המלא

בקצרה: הנתון „פותרים 76 אחוז מהמשימות” כמעט חסר משמעות בפני עצמו. חשוב לדעת איזו קבוצת משימות הניבה אותו, איזה מודל ואיזו עטיפת סוכן נספרו יחד, אם המשימות חדשות או ישנות, וכמה זה עלה. בלי התנאים האלה, האחוז מתאים לבאנר פרסומי, אבל לא לבחירת כלי.

בהמשך אסביר בפשטות מה מודדים שני מדדי הביצועים העיקריים לקידוד, איפה מסתתרת המלכודת בטבלאות, ואיך לבדוק כל דירוג בתוך דקה לפני שמסתמכים עליו. בהמשך נידונות הגדרות היסטוריות של מדדים. לא מוצגת כאן תמונת דירוג חיה עם תוצאות מזווגות; השוואת ציון או עלות עדכנית דורשת טבלה מקושרת משלה, תאריך ותצורה.

קראו עוד על עבודה עם מודלים בתיעוד של Ailoot.

מה בעצם מראה אחוז במדד ביצועים?

הנקודה המרכזית

אחוז במדד ביצועים הוא החלק מתוך משימות בקבוצה מסוימת שכלי השלים עם תוצאה שעובדת, בתנאים מסוימים. המשימות נבדקות באמצעות בדיקות אוטומטיות: הקוד עובר את הבדיקה או לא; ההערכה כנה ואין „בערך”. אבל קבוצת המשימות תמיד מצומצמת וידועה מראש, ותנאי המדידה שונים עבור כל אחד. לכן הנתון עונה על השאלה „כמה מהמשימות האלה הכלי פתר בדרך הזאת?” הוא לא עונה על השאלה „האם הוא יצליח להתמודד עם העבודה שלי?”

מדד ביצועים עובד בפשטות. יש רשימה מוכנה של משימות תכנות. נותנים לכלי כל משימה, הוא מחזיר קוד, והמערכת מריצה בדיקות אוטומטיות כדי לראות אם הפתרון עובד. שיעור המשימות שעברו הוא האחוז שמופיע בטבלה.

היתרון הוא שההערכה אובייקטיבית. בדיקה היא ירוקה או אדומה; אף אחד לא נותן ציון „לפי העין”. מבחינה זו, מדדי ביצועים כנים יותר מכל ביקורת או המלצה.

החיסרון הוא בדיוק אותו הדבר. קבוצת המשימות סופית וידועה מראש לכולם, כולל למי שמאמנים את המודלים. לכל מדידה יש תנאים משלה. וכמעט בטוח שהמשימות בקבוצה שונות ממה שאתם עושים. מכאן נובעות כל המלכודות שאדון בהן בהמשך. האחוז מתאר את התנהגות הכלי ברשימת משימות סגורה של מישהו אחר, והוא אינו עובר ישירות לפרויקט שלכם.

מה מודד HumanEval, ולמה כבר אי אפשר לבחור לפיו?

הנקודה המרכזית

HumanEval היא קבוצה ותיקה של 164 משימות Python קטנות: נותנים למודלים תיאור של פונקציה, הם כותבים את הקוד, ובדיקות אוטומטיות בודקות את המשימה. כשפורסמה ב-2021, Codex הראשון פתר 28.8 אחוז מהמשימות בניסיון אחד. כיום מודלים חזקים משלימים כמעט את כולה, ולכן היא כבר לא מבחינה ביניהם. בנוסף, המשימות הן בעיות צעצוע: פונקציה אחת שמתבססת על תיאור רחוקה מאוד מעבודה בפרויקט גדול ופעיל. ציון HumanEval גבוה ב-2026 כמעט חסר משמעות.

HumanEval נוצרה ב-OpenAI ופורסמה ב-2021 יחד עם מודל Codex. היא כוללת 164 משימות Python קטנות: נותנים למודלים תיאור מילולי של פונקציה, הם כותבים את גוף הפונקציה, וקבוצה של בדיקות אוטומטיות בודקת אם היא פועלת כראוי.

באותה תקופה היא הייתה כלי טוב להבחנה. במאמר שלהם, המחברים מציגים את הנתון הזה: Codex הראשון פתר 28.8 אחוז מהמשימות בניסיון אחד, ואילו GPT-3 רגיל לא פתר אף אחת.

ב-HumanEval, המודל שלנו פותר 28.8 אחוז מהבעיות, ואילו GPT-3 פותר 0 אחוז ו-GPT-J פותר 11.4 אחוז.

— OpenAI, המאמר “Evaluating Large Language Models Trained on Code,”

מאז המודלים התקדמו, וכיום החזקים שבהם משלימים כמעט את כל HumanEval. כשכולם מגיעים לציון קרוב ל-100 אחוז, הטבלה מפסיקה להבחין ביניהם: ההבדלים בין הכלים מיטשטשים. קוראים לזה רוויה של מדד ביצועים, ו-HumanEval נמצאת במצב הזה כבר זמן רב.

הפגם השני חמור יותר. המשימות זעירות: לכתוב פונקציה אחת מתוך תיאור. העבודה האמיתית שלכם שונה — היא כוללת פרויקט גדול עם היסטוריה, שבו צריך להבין קוד של מישהו אחר, למצוא פגם ולהימנע מפגיעה בקוד סמוך. יש תהום בין „לכתוב פונקציה מאפס” לבין „לתקן באג בפרויקט פעיל”. לכן ציון HumanEval גבוה כיום אינו סיבה לבחור כלי; הוא דומה יותר לסימן ש„הבסיס מכוסה”.

מה מודד SWE-bench, ולמה הוא קרוב יותר לעבודה אמיתית?

הנקודה המרכזית

SWE-bench מבוסס על פגמים אמיתיים בפרויקטים פופולריים ב-GitHub: 2,294 משימות מ-12 מאגרי Python. הכלי מקבל תיאור של בעיה, עורך את הקוד, והמערכת מריצה בדיקות שנכשלו לפני השינוי ואמורות לעבור אחרי התיקון. זה קרוב הרבה יותר לעבודה אמיתית מאשר HumanEval, ולכן משתמשים בו להשוואת כלים רציניים. ההיסטוריה שלו ממחישה את רמת הקושי: הגישה הפשוטה הראשונה פתרה פחות משני אחוזים מהמשימות.

SWE-bench שונה מיסודה ולכן מעניינת יותר. היא נבנתה מבעיות אמיתיות ומבקשות משיכה בפרויקטים פופולריים ב-GitHub. לפי המחברים, היא כוללת 2,294 משימות מ-12 מאגרי Python גדולים, ופורסמה באוקטובר 2023.

ההיגיון של ההערכה כנה. לוקחים נקודה בפרויקט שבה היה פגם אמיתי, וקבוצה של בדיקות שנכשלו באותו זמן. הכלי מקבל את תיאור הבעיה ועורך את הקוד. לאחר מכן מריצים שוב את אותן בדיקות: אם הן הופכות לירוקות, המשימה אכן נפתרה; כאן איש אינו מסתמך על הבטחות בעל פה.

אספנו 2,294 משימות על ידי מעבר על בקשות משיכה ובעיות מתוך 12 מאגרי Python פופולריים. כל משימה מבוססת על בקשת משיכה שקשורה לבעיה ומשנה לפחות קובץ אחד הקשור לבדיקות.

— SWE-bench, אתר המדד הרשמי

הנתונים הראשוניים מראים עד כמה זה קשה יותר ממשימות צעצוע. גישת הבסיס הראשונה קיבלה רק 1.96 אחוז ב-SWE-bench, והסוכן הראשון קיבל 12.47 אחוז. במילים אחרות, אפילו ההתקרבות לעבודה אמיתית בקידוד הייתה קשה, והאחוזים גדלו בהמשך, אבל הם התחילו קרוב לאפס.

לכן, כשאתם רואים כיום מספרים גדולים בדירוג של סוכני קידוד מבוססי AI, לרוב הם מגיעים מ-SWE-bench או מתת-הקבוצה שלה שעברה אימות אנושי וכוללת 500 משימות, שנקראת SWE-bench Verified. זהו מדד ביצועים סביר. אבל גם לו יש תנאים שבלעדיהם האחוז מטעה, ועל כך אדון בהמשך.

אפילו מדד הביצועים הכנה ביותר בטבלה עדיין אינו תוצאה בפרויקט שלכם. התוצאה תלויה באופן שבו אתם עובדים עם הכלי, והשורה העליונה בדירוג קובעת מעט מאוד. לעבודה אמינה, השילוב הוא שקובע: שכפול AI, Second Brain והנדסת הקשר. הקשר נקי משפר את שיעור ההצלחה האישי שלכם בצורה ניכרת יותר מבחירת מודל מתוך טבלה.

למה אותו מודל מציג אחוז שונה?

הנקודה המרכזית

כי התוצאה תלויה ביותר מהמודל. בכל מדידה מעורבים לפחות שלושה דברים: המודל עצמו, עטיפת הסוכן שסביבו ורמת ההנמקה שהופעלה. שינוי הגדרת ההנמקה יכול ליצור שורות שונות לאותו מודל ולאותה עטיפת סוכן. ללא שם מערכת הבדיקה, הגרסה, ההגדרות ומקור מתוארך, השורות האלה אינן תומכות בהשוואה מספרית. לכן צריך להשוות את השילובים המלאים, ושם המותג של המודל לבדו לא קובע הרבה.

כאן מסתתרת הטעות הנפוצה ביותר בקריאת מדדי ביצועים. אנשים קוראים טבלה כאילו היא דירוג מודלים: המודל הזה חכם בשני אחוזים מההוא. אבל שלושה דברים משפיעים על האחוז, והמודל הוא רק אחד מהם.

ראשית, המודל עצמו. שנית, עטיפת הסוכן שסביבו: תוכנה שמאפשרת למודל לנווט בקבצים, להריץ פקודות, לקרוא שגיאות ולכתוב מחדש קוד. אותו מודל בעטיפה חכמה ובעטיפה פשוטה יציג תוצאות שונות, כי העטיפה קובעת כיצד המודל עובד עם הפרויקט. שלישית, רמת ההנמקה — כלומר, עד כמה המודל חושב לעומק על כל שלב. ככל שהוא חושב זמן רב יותר, האחוז בדרך כלל עולה, וגם העלות עולה.

השוואה שאפשר לשחזר צריכה לשמר את התצורה המלאה. השתמשו בזה כתבנית דיווח, ולא כדירוג שנמדד:

שדההרצה א׳הרצה ב׳
מודל וגרסה מדויקתרשמו את הגרסה שנבדקהאותה גרסה להשוואה מבוקרת
מעטפת סוכן וגרסהרשמו מאגר ו-commitאותה מעטפת ואותו commit
סט משימות וניקודרשמו תת-קבוצה וגרסת הערכהאותו סט ואותה שיטת ניקוד
הגדרת הנמקהרשמו הגדרה א׳רשמו הגדרה ב׳
תוצאה וראיותמספר שנפתרו, מכנה, יומנים ותאריךמספר שנפתרו, מכנה, יומנים ותאריך

כך אפשר לראות מה השתנה ואם ההשוואה אכן מבודדת את הגדרת ההנמקה. הדוגמה המספרית הקודמת, ללא קישור, אינה נחשבת תוצאה שנמדדה.

הנה הכלל: דירוג טוב תמיד מפרט באיזה מודל, איזו עטיפה ואיזו רמת הנמקה השתמשו. אם בטבלה מופיעים רק שם מודל ואחוז, בלי פירוט של העטיפה, קשה לסמוך עליה: אינכם יודעים מה נמדד בפועל. הסבר נוסף על המרכיבים של השילוב „מודל ועוד עטיפה” מופיע במאמר על דירוג סוכני קידוד מבוססי AI.

כך אפשר גם להבין למה כלי עם ציון מוביל מתקשה לפעמים אצלכם. מדד הביצועים מודד מודל בתוך עטיפה משופרת של מישהו אחר, על משימות של מישהו אחר. העטיפה, הפרויקט וההקשר שאתם נותנים למודל שונים. בפרויקט שלכם, התוצאה תלויה בהקשר; השורה בטבלה משנית.

למה משימות „פגות תוקף”, ומהי דליפת נתונים לאימון?

הנקודה המרכזית

מודלים מאומנים על כמויות עצומות של טקסט וקוד מהאינטרנט, ומדדי ביצועים פופולריים זמינים לציבור. אם המשימות והפתרונות שלהן נכנסו לנתוני האימון, ייתכן שהמודל שינן אותם ופשוט ישחזר את מה ששינן בזמן ההערכה במקום לפתור אותן. קוראים לזה דליפת משימות לנתוני האימון. ככל שהקבוצה ותיקה ומוכרת יותר, הסיכון גבוה יותר: מדד ישן צפוי להציג יותר את הזיכרון של המודל מאשר את יכולת ההנמקה שלו. קבוצות משימות חדשות וסגורות אמינות יותר מקבוצות ישנות וציבוריות.

הנה המלכודת שאינה נראית בנתון עצמו, אבל מערערת אותו יותר מכל דבר אחר. מודלים מאומנים על כמויות אדירות של טקסט וקוד שנאספו מהאינטרנט. וכמעט כל מדדי הביצועים לקידוד זמינים לציבור: המשימות, הבדיקות ופתרונות הייחוס.

המנגנון פשוט. אם משימה והפתרון הנכון שלה נכנסו לנתוני האימון, ייתכן שהמודל שינן אותם. בזמן ההערכה, הוא לא בהכרח פותר את המשימה, אלא שולף מהזיכרון תשובה מוכרת. זה נראה כמו פתרון, אבל זו רק שליפה מהזיכרון. קוראים לזה דליפה לאימון או זיהום נתונים.

ככל שקבוצת המשימות ותיקה ופופולרית יותר, הסיכון גבוה יותר. HumanEval נמצאת ברשת מאז 2021; שכתבו וניתחו אותה, והיא נכללה באינספור מערכי נתונים פעמים רבות. יהיה מוזר לצפות שמודל מודרני לא „ראה אותה”. לכן עדכניות המשימות היא מדד איכות נפרד של מדד ביצועים. קבוצה טובה מתעדכנת באופן קבוע או שומרת חלק מהמשימות סגורות, כך שאי אפשר ללמוד אותן מראש.

מה כדאי לעשות כשקוראים דירוג? בדקו את תאריך המשימות ואם הקבוצה מתעדכנת. אם מדד הביצועים מבוסס על פגמים חדשים מהחודשים האחרונים, יש סיבה לסמוך עליו יותר. אם זו קבוצה מלפני חמש שנים, אחוז גבוה בה מעיד יותר על הזיכרון הטוב של המודל מאשר על יכולתו לפתור את המשימה החדשה שלכם. ההשפעה המדויקת הזאת מודגמת בדוגמה קונקרטית במאמר על מדד הביצועים החדש FrontierCode, שהמשימות בו היו חדשות בכוונה.

למה הבדל של כמה נקודות אחוז לעיתים קרובות אינו אומר דבר?

הנקודה המרכזית

יש שונות במדדי ביצועים: אותו כלי על אותן משימות מניב תוצאות מעט שונות בהרצות שונות, כי המודל לא תמיד מגיב באותה דרך. לכן הבדל של נקודה או שתיים בין שורות סמוכות בדירוג נבלע לעיתים קרובות ברעש ואינו מעיד על עליונות אמיתית. בדקו גם את המחיר בנפרד: אחוזים דומים יכולים לעלות פי כמה. השוו עלויות רק כאשר מוצגות שתי התצורות המלאות, שיעורי ההצלחה, הנחות החיוב והמכנה של העלות.

דבר נוסף שהופך את המקום הראשון בטבלה למטעה: מודל אינו מגיב באותה דרך בכל פעם. לאותה הנחיה הוא עשוי לבחור מסלול הנמקה מעט שונה. לכן, אם מריצים כלי אחד כמה פעמים על קבוצת משימות אחת, האחוז משתנה מעט מהרצה להרצה, והתנודה הזאת נקראת שונות.

המסקנה המעשית פשוטה. כשההבדל בין שתי שורות בדירוג הוא אחוז אחד או שניים, ייתכן שזה רק רעש. לרדוף אחרי כלי ש„גבוה בשני אחוזים” זו טעות: הם יכולים בקלות להחליף מקומות בהרצה הבאה. כדאי להתייחס להבדל כמשמעותי כשהוא ניכר ונשמר על פני קבוצה גדולה של משימות; הפרש של כמה נקודות לא עומד ברף הזה.

והדבר האחרון, שכמעט תמיד חשוב יותר מהאחוז עצמו, הוא המחיר. תוצאות דומות יכולות לעלות סכומים שונים מאוד. השוואת עלות דורשת את שתי תצורות המודל והמעטפת ואת ההוצאה המלאה על סט המשימות שנבדק, כולל ניסיונות כושלים. חלקו במספר המשימות שנוסו לקבלת עלות לניסיון, או במספר שנפתרו לקבלת עלות למשימה שנפתרה, וציינו באיזה מדד השתמשתם. המאמר אינו מספק מדידת עלות מזווגת עם מקור. לכן תמיד קראו שורת דירוג יחד עם המחיר שלה, כי לאחוז לבדו יש מעט משמעות. המאמר על עלותה של משימה אחת שנפתרה מסביר איך להשוות כלים לפי עלות בצורה הוגנת.

איך אפשר לקרוא כל טבלת מדדי ביצועים בתוך דקה?

הנקודה המרכזית

לפני שמסתמכים על דירוג, שאלו שבע שאלות: איזו קבוצת משימות? המשימות חדשות או ישנות? איזה מודל? איזו עטיפת סוכן? איזו רמת הנמקה? מה העלות למשימה? מה גודל השונות? אם הטבלה אינה עונה על לפחות מחצית מהן, אי אפשר לסמוך עליה: כנראה מדובר בפרסומת. בדקו בנפרד אם המשימות בקבוצה דומות לעבודה האמיתית שלכם, כי אפילו אחוז כנה על משימות של מישהו אחר לא עובר לפרויקט שלכם.

אסכם את כל זה ברשימת בדיקה קצרה. פתחו כל טבלת דירוג ועברו על שבע הנקודות האלה לפי הסדר.

  1. איזו קבוצת משימות? HumanEval חלשה כיום; SWE-bench קרובה יותר לעבודה אמיתית. אם שם הקבוצה כלל לא מצוין, אין צורך להמשיך לקרוא.
  2. המשימות חדשות או ישנות? קבוצה חדשה או סגורה חלקית אמינה יותר מקבוצה ציבורית ישנה שהמודל אולי למד.
  3. איזה מודל נמדד? השם והגרסה המדויקים, לא „AI” מעורפל או שם של משפחת מודלים.
  4. איזו עטיפת סוכן? האחוז שייך לשילוב „מודל ועוד עטיפה”. אם העטיפה אינה מצוינת, אינכם יודעים מה נמדד.
  5. איזו רמת הנמקה? מודל אחד ברמות שונות נותן אחוזים ועלויות שונים.
  6. כמה עולה משימה? תוצאות דומות יכולות להיות שונות פי כמה במחיר. קראו את האחוז יחד עם העלות.
  7. מה השונות? הבדל של נקודה או שתיים בין שורות הוא לעיתים קרובות רק רעש.

יש שאלה שמינית, והיא קשורה אליכם: האם המשימות בקבוצה דומות לעבודה שלכם? מדד של משימות Python אומר מעט למי שבונה אתר או בוט עם כלים אחרים. גם נתון כנה על משימות של מישהו אחר אינו מבטיח תוצאה בפרויקט שלכם. יש רק דרך אמינה אחת לבדוק זאת: להריץ כמה מהמשימות האופייניות שלכם בכלי ולבחון את התוצאה בעצמכם. המאמר על איך לבדוק קוד שנוצר באמצעות AI מסביר איך לוודא שהקוד עובד אם אינכם מתכנתים בעצמכם.

אז על מה כדאי להסתכל בסופו של דבר?

הנקודה המרכזית

הסתכלו על התנאים שמתחת לשורה העליונה, לא רק על השורה עצמה: קבוצת המשימות ועד כמה היא עדכנית, השילוב „מודל ועוד עטיפה”, רמת ההנמקה, העלות למשימה וכמות השונות. נתון חשוף בלי התנאים האלה אינו מוכיח דבר. וזכרו שגם אחוז כנה על משימות של מישהו אחר לא עובר לפרויקט שלכם: המילה האחרונה שמורה תמיד לבדיקה באמצעות המשימות האמיתיות שלכם, והתוצאה שלכם בהן תלויה יותר באופן העבודה שלכם עם הכלי מאשר במיקומו בדירוג.

הנקודה העיקרית של המאמר כולו קצרה: מקום בדירוג הוא סיבה לבחון כלי מקרוב, אבל תצטרכו לבדוק עוד בעצמכם. נתון גבוה רק אומר שכלי התמודד היטב עם רשימה סגורה מסוימת של משימות, בתנאים מסוימים. האחוז אינו מראה אם התנאים האלה מתאימים לכם.

לכן קראו את מה שמופיע מתחת לשורת הדירוג: אילו משימות, עד כמה הן עדכניות, איזה שילוב של מודל ועטיפה, איזו רמת הנמקה, כמה זה עולה והאם ההבדל נבלע ברעש. טבלה שאינה עונה על השאלות האלה מתאימה לבאנר פרסומי. הביקורת באיזה כלי כדאי לקודד ב-2026 מסבירה באיזה כלי לבחור מלכתחילה למשימות שלכם.

והנה מה שחשוב יותר מכל מדד ביצועים. אפילו הכלי הטוב ביותר בדירוג מתקשה כשההקשר מבולגן, ועובד היטב כשההקשר נקי. שיעור ההצלחה האישי שלכם נובע ממה שאתם נותנים למודל ומהאופן שבו אתם מנסחים את המשימה; השורה בטבלה משנית. הדירוג עוזר לסנן את האפשרויות החלשות בבירור, אבל אתם אלה שמפיקים את התוצאה.

מקורות

מקום בדירוג מסנן אפשרויות חלשות, אבל התוצאות בפרויקט שלכם תלויות בשיטה: שכפול AI ועוד Second Brain ועוד הנדסת הקשר.

להמשך עבודה — Ailoot.

פרטים נוספים

שאלות ותשובות: איך לקרוא מדדי ביצועים של קידוד AI ולהימנע מבחירה במנצח על הנייר

מה צריך לתעד לפני השוואת שתי שורות במדד?

תעדו מודל מדויק, מעטפת סוכן וגרסתה, הגדרות הנמקה, תת-קבוצת משימות, שיטת ניקוד, תאריך ומקור תוצאה ישיר. ללא השדות האלה אי אפשר לייחס הבדל בציון להגדרה אחת שהשתנתה.

האם עלות למשימה שנוסתה זהה לעלות למשימה שנפתרה?

לא. חלקו את כלל הוצאת ההערכה בכל המשימות שנוסו למדד הראשון, או במשימות שנפתרו לשני. כללו עלויות ניסיונות כושלים וציינו את המכנה לפני השוואת מחירים.

כל המאמרים