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

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

מאז תחילת 2024, צוות הנדסת הביצועים שלנו משתמש במבחן בית שבו המועמדים מבצעים אופטימיזציה לקוד המיועד למאיץ (accelerator) מדמה. למעלה מ-1,000 מועמדים השלימו את המבחן, ועשרות מהם עובדים כיום בחברה. ביניהם מהנדסים שהקימו את מערך ה-Trainium שלנו ולקחו חלק בהשקת כל מודל מאז Claude 3 Opus.

אך כל מודל Claude חדש אילץ אותנו לתכנן מחדש את המבחן. כאשר ניתן אותו מגבלת זמן, Claude Opus 4 הציג ביצועים טובים יותר מרוב המועמדים האנושיים. זה עדיין אפשר לנו להבחין בין המועמדים החזקים ביותר – אך אז Claude Opus 4.5 השתווה אפילו להם. בני אדם עדיין יכולים לעבור את ביצועי המודלים כאשר ניתן להם זמן בלתי מוגבל, אך תחת מגבלות מבחן הבית, כבר לא הייתה לנו דרך להבחין בין התפוקה של המועמדים המובילים שלנו לבין המודל היעיל ביותר שלנו.

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

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

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

מקורו של מבחן הבית

בנובמבר 2023, התכוננו לאימון והשקת Claude Opus 3. הבטחנו אשכולות (clusters) חדשים של TPUs ו-GPUs, אשכול ה-Trainium הגדול שלנו היה בדרך, והוצאנו משאבים רבים יותר מבעבר על מאיצים. אולם, לא היו לנו מספיק מהנדסי ביצועים כדי לעמוד בקנה המידה החדש. פרסמתי ב-Twitter וביקשתי מאנשים ליצור עמנו קשר במייל, מה שהביא מועמדים מבטיחים רבים יותר מכפי שיכולנו להעריך באמצעות תהליך הראיונות הסטנדרטי שלנו, תהליך שגזל זמן ניכר מהצוות ומהמועמדים.

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

מטרות העיצוב

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

הפורמט מציע גם יתרונות על פני ראיונות פרונטליים (Live Interviews) להערכת כישורי הנדסת ביצועים:

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

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

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

המכונה המדמה

בניתי סימולטור Python למאיץ (accelerator) מדמה בעל מאפיינים הדומים ל-TPUs. מועמדים מבצעים אופטימיזציה לקוד הרץ על מכונה זו, תוך שימוש במעקב Perfetto בטעינה חמה (hot-reloading) המציג כל הוראה, בדומה לכלי העבודה שיש לנו ב-Trainium.

המכונה כוללת תכונות שהופכות את אופטימיזציית המאיצים למעניינת: זיכרון Scratchpad בניהול ידני (שלא כמו CPUs, מאיצים דורשים לעיתים קרובות ניהול זיכרון מפורש), VLIW (יחידות ביצוע מרובות הפועלות במקביל בכל מחזור שעון, הדורשות אריזת הוראות יעילה), SIMD (פעולות וקטוריות על אלמנטים רבים לכל הוראה), ו-Multicore (חלוקת עבודה בין ליבות).

המשימה היא עץ טרוורסל מקבילי, שתוכנן במכוון ללא נגיעה של למידה עמוקה (deep learning), מכיוון שרוב מהנדסי הביצועים טרם עבדו בתחום זה ויכלו ללמוד פרטים ספציפיים תוך כדי עבודה. הבעיה נוצרה בהשראת הסקת עצי החלטה SIMD ללא ענפים (branchless SIMD decision tree inference), אתגר אופטימיזציה קלאסי בלמידת מכונה (machine learning) כהיכרות עם העבר, שרק מעטים מהמועמדים נתקלו בו בעבר.

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

תוצאות ראשוניות

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

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

המשוב היה חיובי. מועמדים רבים עבדו מעבר למגבלת 4 השעות כי נהנו מהמשימה. ההגשות החזקות ביותר בזמן בלתי מוגבל כללו מיני-קומפיילרים (mini-compilers) מלאים לאופטימיזציה וכמה אופטימיזציות חכמות שלא צפיתי.

ואז Claude Opus 4 ניצח אותו

עד מאי 2025, Claude 3.7 Sonnet כבר התקדם עד לנקודה שבה למעלה מ-50% מהמועמדים היו מרוויחים יותר אם היו מפקידים את המשימה כולה בידי Claude Code. לאחר מכן, בדקתי גרסת קדם-שחרור של Claude Opus 4 על מבחן הבית. המודל הציג פתרון אופטימלי יותר מזה שהושג על ידי כמעט כל בני האדם בתוך מגבלת 4 השעות.

זה לא היה הראיון הראשון שלי שנחל תבוסה מול מודל Claude. תכננתי שאלת ראיון פרונטלי (Live Interview) בשנת 2023 במיוחד מכיוון שהשאלות שלנו באותה תקופה התבססו על משימות נפוצות שמודלי Claude מוקדמים הכירו היטב ויכלו לפתור בקלות. ניסיתי לתכנן שאלה שדרשה יותר יכולת פתרון בעיות מאשר ידע, ועדיין התבססתי על בעיה אמיתית (אך נישתית) שפתרתי בעבודה. Claude 3 Opus ניצח את חלק 1 של השאלה; Claude 3.5 Sonnet ניצח את חלק 2. אנחנו עדיין משתמשים בה כי גם שאלות הראיון הפרונטליות האחרות שלנו אינן עמידות ל-AI.

עבור מבחן הבית, היה פתרון פשוט. הבעיה היתה בעלת עומק רב בהרבה מכפי שכל אדם יכול היה לחקור ב-4 שעות, אז השתמשתי ב-Claude Opus 4 כדי לזהות היכן הוא החל להתקשות. נקודה זו הפכה לנקודת ההתחלה החדשה עבור גרסה 2. כתבתי קוד התחלתי נקי יותר, הוספתי תכונות מכונה חדשות לעומק רב יותר, והסרתי את ה-multicore (ש-Claude כבר פתר, ושרק האט את לולאות הפיתוח מבלי להוסיף איתות).

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

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

ואז Claude Opus 4.5 ניצח גם אותו

כשבדקתי נקודת ביקורת (checkpoint) של Claude Opus 4.5 בגרסת קדם-שחרור, צפיתי ב-Claude Code עובד על הבעיה במשך שעתיים, ומשפר בהדרגה את הפתרון שלו. הוא פתר את צווארי הבקבוק הראשוניים, יישם את כל המיקרו-אופטימיזציות הנפוצות, ועמד בסף המעבר שלנו בפחות משעה.

ואז הוא נעצר, משוכנע שהגיע לצוואר בקבוק של רוחב פס זיכרון בלתי עביר. רוב בני האדם מגיעים לאותה מסקנה. אבל יש טריקים חכמים שמנצלים את מבנה הבעיה כדי לעקוף את צוואר הבקבוק הזה. כשאמרתי ל-Claude את מספר מחזורי השעון (cycle count) שניתן להשיג, הוא חשב זמן מה ומצא את הטריק. לאחר מכן, הוא ניפה באגים, כוונן ויישם אופטימיזציות נוספות. עד לסיום השעתיים, הציון שלו השתווה לביצועי האדם הטובים ביותר באותה מגבלת זמן – ואותו אדם השתמש רבות ב-Claude 4 יחד עם הנחיה (steering).

ניסינו זאת במערכת הבדיקה הפנימית שלנו (test-time compute harness) לקבלת דיוק רב יותר ואישרנו שהוא יכול גם לנצח בני אדם תוך שעתיים וגם להמשיך לטפס עם הזמן. לאחר ההשקה, אף שיפרנו את המערכת שלנו בצורה גנרית וקיבלנו ציון גבוה יותר.

הייתה לי בעיה. עמדנו להשיק מודל שבו האסטרטגיה הטובה ביותר במבחן הבית שלנו תהיה להאציל את המשימה ל-Claude Code.

בחינת האפשרויות

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

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

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

אבל חששתי גם שאם אשקיע בתכנון מבחן בית חדש, גם אותו Claude Opus 4.5 יפתור, או שהוא יהפוך למאתגר כל כך עד שיהיה בלתי אפשרי לבני אדם להשלים אותו בשעתיים.

ניסיון 1: בעיית אופטימיזציה שונה

הבנתי ש-Claude יכול לעזור לי ליישם במהירות כל מה שאעצב, מה שדרבן אותי לנסות לפתח מבחן בית קשה יותר. בחרתי בבעיה המבוססת על אחת מאופטימיזציות הליבה (kernel optimizations) המורכבות יותר שעשיתי באנתרופיק: טרנספוזיציה יעילה של נתונים על אוגרי TPU דו-ממדיים תוך הימנעות מ-קונפליקטים בבנקים (bank conflicts). זיקקתי את זה לבעיה פשוטה יותר במכונה מדמה וגרמתי ל-Claude ליישם את השינויים תוך פחות מיום.

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

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

בדיעבד, זו לא הייתה הבעיה הנכונה לנסות. מהנדסים בפלטפורמות רבות התמודדו עם טרנספוזיציה של נתונים וקונפליקטים בבנקים, כך של-Claude יש נתוני אימון (training data) משמעותיים להתבסס עליהם. בעוד שאני מצאתי את הפתרון שלי מעקרונות יסוד, Claude יכול היה לשאוב ממאגר כלים גדול יותר של ניסיון.

ניסיון 2: ללכת על הלא שגרתי

הייתי זקוק לבעיה שבה חשיבה אנושית תוכל לגבור על בסיס הניסיון הרחב יותר של Claude: משהו שהוא מחוץ לתחום ההתפלגות (out of distribution) במידה מספקת. למרבה הצער, זה התנגש עם המטרה שלי שהמבחן יהיה דומה באופן מובהק לעבודה.

חשבתי על בעיות האופטימיזציה הלא שגרתיות ביותר שנהניתי מהן ונחתתי על משחקי Zachtronics. משחקי פאזל תכנותיים אלה משתמשים בסט הוראות חריג ומוגבל מאוד, שמאלץ אותך לתכנת בדרכים לא קונבנציונליות. לדוגמה, ב-Shenzhen I/O, תוכניות מפוצלות על פני שבבים מרובים המתקשרים ביניהם, כאשר כל אחד מהם מכיל כ-10 הוראות בלבד עם אוגר מצב אחד או שניים. אופטימיזציה חכמה כרוכה לעיתים קרובות בקידוד מצב למצביע ההוראות או לדגלי הסתעפות.

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

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

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

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

אתגר פתוח

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

הגרסה ששוחררה מתחילה מאפס (כמו גרסה 1) אך משתמשת בסט ההוראות ובעיצוב ליבה בודדת של גרסה 2, כך שמספר מחזורי השעון (cycle counts) דומים לאלו של גרסה 2.

מדדי ביצועים (נמדדים במחזורי שעון מהמכונה המדמה):

  • 2164 מחזורי שעון: Claude Opus 4 לאחר שעות רבות במערכת הבדיקה (test-time compute harness).
  • 1790 מחזורי שעון: Claude Opus 4.5 בסשן Claude Code רגיל, כמעט זהה לביצועים האנושיים הטובים ביותר תוך שעתיים.
  • 1579 מחזורי שעון: Claude Opus 4.5 לאחר שעתיים במערכת הבדיקה שלנו.
  • 1548 מחזורי שעון: Claude Sonnet 4.5 לאחר הרבה יותר משעתיים של חישובי בדיקה.
  • 1487 מחזורי שעון: Claude Opus 4.5 לאחר 11.5 שעות במערכת הבדיקה.
  • 1363 מחזורי שעון: Claude Opus 4.5 במערכת בדיקה משופרת לאחר שעות רבות.

הורידו אותו מ-GitHub. אם תצליחו לבצע אופטימיזציה מתחת ל-1487 מחזורי שעון, ולנצח את הביצועים הטובים ביותר של Claude בהשקתו, שלחו לנו מייל לכתובת performance-recruiting@anthropic.com עם הקוד שלכם וקורות חיים.

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