# Запуски

> Состояния запуска, доступные действия и то, как запуск останавливается.

Запуск — это одна оптимизация. У него есть статус, лимит расходов и набор сохранённых версий. На этой странице описаны состояния запуска, доступные действия с ним и причины, по которым запуск останавливается.

## Состояния запуска

У каждого запуска один из этих статусов:

| Статус       | Значение                                                                      |
| ------------ | ----------------------------------------------------------------------------- |
| `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`:

- **Повторить** начинает новый запуск с той же конфигурацией. Новый запуск получает новый id.
- **Перезапустить** начинает тот же запуск заново с самого начала. Запуск сохраняет свой id.

> [!NOTE]
> Повтор, перезапуск и клонирование через API отклоняют запуск, у которого есть собственный лимит расходов. Откройте конфигурацию в мастере отправки и задайте новый бюджет, прежде чем начинать новый запуск. Кнопка **Клонировать** на странице запуска делает это за вас.

Клонирование через API может создать от 1 до 5 копий за один запрос. Каждая копия учитывается в ваших лимитах запусков. См. [Лимиты](/docs/ru/limits).

### Кто может выполнять действия

Ваша роль в запуске определяет, какие действия вы видите:

- **Владелец** может выполнять все действия, управлять общим доступом и удалять запуск.
- **Редактор** может приостанавливать, отменять, возобновлять и повторять запуск, а также повышать его лимит расходов.
- **Зритель** может открывать запуск и клонировать его.

Подробнее о ролях — в разделе [Общий доступ и публикация](/docs/ru/guides/sharing).

## Как запуск останавливается

Запуск останавливается по одной из четырёх причин.

### Завершение

Оптимизатор заканчивает работу. Статус меняется на `success`. Skynet сохраняет лучшую версию и выполняет итоговый тест. Прочитайте [Чтение результатов](/docs/ru/guides/results).

### Бюджет

До старта у запуска нет оценки стоимости. Его лимит расходов — это бюджет, который он может израсходовать. Skynet измеряет реальную стоимость каждого запуска оценщика по ходу работы:

1. Skynet ждёт 10 рассчитанных запусков оценщика. До этого стоимость одного вызова слишком нестабильна, чтобы на неё опираться.
2. Skynet оценивает следующую итерацию по средней стоимости на данный момент. Он умножает эту цену на 1.5, потому что поздние итерации обычно дороже.
3. Когда оставшегося бюджета не хватает на следующую итерацию, Skynet перестаёт принимать новую работу. Оптимизатор останавливается на следующем платном вызове.

После этого у запуска статус `stopped` и причина остановки `budget_reached`. На странице запуска появляется уведомление **Бюджет исчерпан**. Уведомление сообщает, какую версию сохранил Skynet:

- Вашу лучшую оценённую версию.
- Вашу оценённую исходную версию, если лучшая версия не найдена.
- Ни одной версии, если бюджет закончился до того, как оценка какого-либо кандидата завершилась. Ваши входные данные и логи остаются сохранёнными.

Чтобы продолжить, нажмите в уведомлении **Повысить лимит и продолжить**. Skynet возобновит запуск с последней контрольной точки.

> [!TIP]
> Запуск с вариантом **Без лимита** расходует баланс аккаунта, пока не завершится. Если баланс закончится, запуск остановится и сохранит то, что успел получить. Тогда уведомление сообщает **Баланс счёта исчерпан**. Пополните баланс и возобновите запуск.

Некоторые старые запуски приостановлены с причиной остановки `budget_projected`. Их можно возобновить так же.

### Сбой

Ошибка останавливает запуск. Статус меняется на `failed`. На вкладке **Логи** видно, что произошло. Если у запуска есть сохранённая контрольная точка, его можно возобновить. Его также можно повторить.

Если воркер останавливается во время выполнения вашей задачи, Skynet восстанавливает задачу и пробует снова. После 3 попыток Skynet помечает задачу как завершившуюся сбоем. Возобновление после сбоя или отмены тоже считается попыткой. Возобновление после паузы или остановки из-за бюджета не считается.

### Отмена

Вы отменяете запуск. Статус меняется на `cancelled`. Отмену нельзя отменить. Позже запуск можно возобновить с сохранённой контрольной точки или повторить.

## Связанные страницы

- [Бюджеты и оплата](/docs/ru/concepts/billing)
- [Запуск через мастер](/docs/ru/guides/submit)
- [Лимиты](/docs/ru/limits)

---

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