# ריצות

> מצבי ריצה, הפעולות שאפשר לבצע על ריצה, ואיך ריצה נעצרת.

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

## מצבי ריצה

לכל ריצה יש אחד מהסטטוסים האלה:

| סטטוס        | משמעות                                                        |
| ------------ | ------------------------------------------------------------- |
| `pending`    | הריצה בתור.                                                   |
| `validating` | ‏Skynet בודק את ההגדרות לפני שהאופטימיזציה מתחילה.            |
| `running`    | האופטימייזר מציע גרסאות חדשות ונותן להן ציון.                 |
| `success`    | הריצה הסתיימה. הגרסה הטובה ביותר נשמרה.                       |
| `failed`     | שגיאה עצרה את הריצה.                                          |
| `cancelled`  | מישהו ביטל את הריצה.                                          |
| `paused`     | הריצה נעצרה בנקודת שמירה. אפשר להמשיך אותה.                   |
| `stopped`    | הריצה נעצרה בתקציב שלה. היא שומרת את הגרסה הטובה ביותר שמצאה. |

`success`,‏ `failed`,‏ `cancelled`,‏ `stopped` ו-`paused` הם מצבים סופיים. האופטימייזר לא עובד על ריצה במצב סופי. `paused` הוא המצב הסופי היחיד שקיים כדי שימשיכו אותו.

## פעולות

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

| פעולה           | מתי אפשר להשתמש בה                                                                         | מה היא עושה                                                         |
| --------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------- |
| **השהה/השהי**   | הריצה רצה ויש לה נקודת שמירה.                                                              | עוצרת את הריצה בנקודת השמירה. הסטטוס משתנה ל-`paused`.              |
| **בטל/י**       | הריצה במצב `pending`,‏ `validating` או `running`.                                          | עוצרת את הריצה. אי אפשר לבטל ביטול.                                 |
| **המשך/המשיכי** | הריצה במצב `failed`,‏ `cancelled`,‏ `paused`, או `stopped` בתקציב שלה, ויש לה נקודת שמירה. | ממשיכה את אותה ריצה מנקודת השמירה האחרונה. הריצה שומרת על ה-id שלה. |
| **שכפול**       | בכל פעם שיש לך גישה לצפייה בריצה.                                                          | פותח את אשף ההגשה עם עותק של ההגדרות.                               |
| **מחיקה**       | הריצה במצב סופי. רק לבעלים.                                                                | מוחקת לצמיתות את הריצה ואת כל הנתונים שלה.                          |

ל-API יש עוד שתי פעולות לריצה במצב `failed` או `cancelled`:

- **ניסיון חוזר** (retry) מפעיל ריצה חדשה עם אותן הגדרות. הריצה החדשה מקבלת id חדש.
- **הפעלה מחדש** (restart) מפעילה את אותה ריצה מחדש מההתחלה. הריצה שומרת על ה-id שלה.

> [!NOTE]
> ניסיון חוזר, הפעלה מחדש ושכפול דרך ה-API מסרבים לריצה שיש לה תקרת הוצאה משלה. יש לפתוח את ההגדרות באשף ההגשה ולקבוע תקציב חדש לפני הפעלת ריצה חדשה. הכפתור **שכפול** בדף הריצה עושה את זה בשבילך.

שכפול דרך ה-API יכול ליצור 1 עד 5 עותקים בבקשה אחת. כל עותק נספר במסגרת מגבלות הריצה שלך. ראה/ראי [מגבלות](/docs/he/limits).

### מי יכול לבצע פעולה

התפקיד שלך בריצה קובע אילו פעולות יוצגו לך:

- **בעלים** יכולים לבצע את כל הפעולות, לנהל שיתוף ולמחוק את הריצה.
- **עורך** יכול להשהות, לבטל, להמשיך ולנסות שוב את הריצה, ולהעלות את תקרת ההוצאה שלה.
- **צופה** יכול לפתוח את הריצה ולשכפל אותה.

קרא/י את [שיתוף ופרסום](/docs/he/guides/sharing) כדי ללמוד עוד על תפקידים.

## איך ריצה נעצרת

ריצה נעצרת מאחת מארבע סיבות.

### סיום

האופטימייזר מסיים. הסטטוס משתנה ל-`success`. ‏Skynet שומר את הגרסה הטובה ביותר ומריץ את הבדיקה הסופית. קרא/י את [קריאת התוצאות](/docs/he/guides/results).

### תקציב

לריצה אין הערכת עלות לפני שהיא מתחילה. תקרת ההוצאה שלה היא התקציב שמותר לה להשתמש בו. ‏Skynet מודד את העלות האמיתית של כל הרצת ניקוד תוך כדי הריצה:

1. ‏Skynet מחכה ל-10 הרצות ניקוד שהעלות שלהן סגורה. לפני כן, העלות של קריאה אחת רועשת מדי לשימוש.
2. ‏Skynet משתמש בעלות הממוצעת עד כה כדי לתמחר את האיטרציה הבאה. הוא מכפיל את המחיר ב-1.5, כי איטרציות מאוחרות יותר עולות בדרך כלל יותר.
3. כשהתקציב שנשאר לא יכול לשלם על האיטרציה הבאה, Skynet מפסיק לקבל פעולות חדשות. האופטימייזר נעצר בקריאה בתשלום הבאה שלו.

אחר כך לריצה יש הסטטוס `stopped` וסיבת העצירה `budget_reached`. דף הריצה מציג הודעת **התקציב מוצה**. ההודעה אומרת לך איזו גרסה Skynet שמר:

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

כדי להמשיך, השתמש/י ב-**העלאת התקרה והמשך** בהודעה. ‏Skynet ממשיך את הריצה מנקודת השמירה האחרונה.

> [!TIP]
> ריצה עם **ללא תקרה** משתמשת ביתרת החשבון שלך עד שהיא מסתיימת. אם היתרה נגמרת, הריצה נעצרת ושומרת את מה שיש לה. ההודעה אומרת אז **יתרת החשבון נגמרה**. הוסף/הוסיפי כסף, ואז המשך/המשיכי את הריצה.

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

### כישלון

שגיאה עוצרת את הריצה. הסטטוס משתנה ל-`failed`. הלשונית **לוגים** מציגה מה קרה. אם לריצה יש נקודת שמירה, אפשר להמשיך אותה. אפשר גם לנסות אותה שוב.

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

### ביטול

מבטלים את הריצה. הסטטוס משתנה ל-`cancelled`. אי אפשר לבטל ביטול. בהמשך, אפשר להמשיך את הריצה מנקודת שמירה, או לנסות אותה שוב.

## עמודים קשורים

- [תקציבים וחיוב](/docs/he/concepts/billing)
- [הפעלת ריצה עם האשף](/docs/he/guides/submit)
- [מגבלות](/docs/he/limits)

---

Source: https://staging.skynetml.com/docs/he/concepts/runs
