בו-זמניות (concurrency) ומקביליות (parallelism)

הפרמטר concurrency קובע כמה תוכניות נוצרות ונבדקות בו-זמנית. הפרמטר הזה הוא ההיפר-פרמטר המשפיע ביותר בזמן הריצה.

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

  • n = 3-12 (הטווח האידיאלי): זהו הטווח הנפוץ ביותר בפועל, שמאזן בין חקירה לניצול. כמה תוכניות פועלות בו-זמנית, כך שחלק מהדורות לא רואים את התוצאות האחרונות, מה שיוצר גיוון טבעי. מסד הנתונים האבולוציוני שומר על נפח נתונים מספיק כדי לשמור על דינמיקה בריאה של האוכלוסייה.

  • n = 13-30 (הרבה ניסויים): הרבה תוכניות פועלות במקביל. ברוב המקרים, דורות שונים לא רואים את התוצאות של דורות אחרים. המצב הזה שימושי לבעיות לא קמורות מאוד עם הרבה נקודות אופטימליות מקומיות, שבהן חקר רחב חשוב יותר מניצול מעמיק.

  • ‫n = 23-30 (מוגבל, לא מומלץ): אם מפעילים יותר מ-30 גנרטורים במקביל, ה-backend של ה-LLM מוגבל. הבקשות מצטברות בתור, וזמן האחזור של כל יצירה מתארך. אם אין לכם מכסה ייעודית, אל תחרגו מ-30.

המלצות

ההמלצות הבאות הן נקודת התחלה להגדרת בו-זמניות ומקביליות ב-AlphaEvolve.

סוג הבעיה בו-זמניות (concurrency) הסבר לגבי ההנחיה
גישה מוכרת ומובנת היטב לכוונון ‫3–5 ניצול ממוקד
אופטימיזציה כללית, נוף לא ידוע ‫8–12 איזון בין חקירה לניצול
לא קמור במידה רבה, הרבה אופטימומים מקומיים ‫15-25 חיפוש כללי
התמקדות מכוונת בנקודה אופטימלית מקומית 1 שרשרת רציפה

מתחילים עם concurrency=10 ומשנים בהתאם לאינדיקטורים הבאים:

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

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

  • הערכות איטיות (יותר מ-5 דקות): בו-זמניות גבוהה יותר מעסיקה את צינור עיבוד הנתונים של ההערכה.

  • הערכות מהירות (פחות מ-10 שניות): רמת בו-זמניות נמוכה יותר מאפשרת לדורות עוקבים להתבסס ישירות על התוצאות של הדורות הקודמים.

מגבלות על מספר הניסויים הפעילים לעומת מספר הניסויים שפועלים בו-זמנית

חשוב להבחין בין מספר הניסויים המקסימלי שניתן להריץ בו-זמנית ברמת התוכנית לבין מגבלות הניסויים ברמת הפרויקט:

  • הפעלה בו-זמנית של תוכניות (concurrency): מוגדרת ב-runSettings (בין 1 ל-30), ושולטת במספר התוכניות המועמדות שנוצרות ונבדקות בו-זמנית בניסוי אחד.
  • מגבלת הניסויים הפעילים: בכל פרויקט אפשר להפעיל בו-זמנית עד 30 ניסויים (STARTED או RUNNING) לכל מיקום. אם תנסו להתחיל או להמשיך ניסוי מעבר למכסה הזו, תופיע השגיאה RESOURCE_EXHAUSTED. כדי לפתור את הבעיה, צריך לעצור או להשלים את הניסויים הפעילים הקיימים לפני שמתחילים ניסויים חדשים (שינוי של concurrency בניסוי לא משנה את מספר הניסויים הפעילים).