Infrastructure

spot-инстанс

Прерываемый облачный инстанс по сниженной цене с возможностью отзыва провайдером.

Что такое spot-инстанс в инфраструктуре

Spot-инстанс (interruptible instance) — облачный GPU-ресурс с существенной скидкой (30–90%) в обмен на право провайдера прервать работу при нехватке ресурсов. В контексте инфраструктуры задача — проектировать сервисы, устойчивые к прерываниям.

Инфраструктурные практики для spot-инстансов

Автоматический restart: контейнер должен рестартовать и возобновить работу без ручного вмешательства:

# docker-compose.yml
services:
  trainer:
    restart: unless-stopped   # перезапуск при остановке
    volumes:
      - ./checkpoints:/checkpoints  # persistent volume для чекпоинтов
    environment:
      - TRAINING_CHECKPOINT_DIR=/checkpoints

Graceful shutdown: поймать SIGTERM и сохранить состояние:

import signal, sys
from transformers import TrainingArguments

def save_on_interrupt(sig, frame):
    print("Получен SIGTERM, сохраняем чекпоинт...")
    trainer.save_model()
    trainer.save_state()
    sys.exit(0)

signal.signal(signal.SIGTERM, save_on_interrupt)

Возобновление обучения:

# Автоматически найти последний чекпоинт и продолжить
trainer.train(resume_from_checkpoint=True)

Мониторинг доступности spot-инстансов

На Vast.ai статус прерываемого инстанса можно отслеживать через API. При прерывании рекомендуется:

  1. Логировать прогресс обучения в облако (W&B, MLflow)
  2. Хранить чекпоинты в object storage
  3. Настроить алерт при прерывании

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер