ПРОВАЙДЕРЫ И ХОСТИНГ

Шаблон Vast.ai: порты, переменные окружения и повторный запуск

В этом материале
ГЛАВНОЕ ЗА МИНУТУ

Шаблон задаёт рецепт новых экземпляров; его изменение не перестраивает уже работающую среду автоматически.

Шаблон Vast.ai описывает Docker-образ, режим запуска, порты и инициализацию нового экземпляра. Его стоит хранить как воспроизводимый рецепт проекта. Изменение шаблона влияет на следующие создания, поэтому нельзя ожидать автоматического обновления уже запущенного контейнера.

Зафиксируйте основу окружения

Руководство выбора шаблона перечисляет основные настройки и различает SSH, Jupyter и Entrypoint. Выберите режим под способ работы команды и укажите конкретную версию образа. Метка latest не даёт надёжного объяснения, почему две сессии получили одинаковую среду.

Сохраните название репозитория, тег и при необходимости идентификатор образа. Рядом запишите версию собственного кода и команду запуска. Эти данные занимают мало места, но без них успешный ручной эксперимент сложно повторить на следующем экземпляре или передать другому сотруднику.

Сделайте инициализацию понятной

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

Продумайте повторное выполнение: существует ли каталог, загружен ли нужный файл, не будет ли уничтожен предыдущий результат. Для долгой установки предпочтительно подготовить проверенный образ, а не каждый раз воспроизводить большой набор изменяемых внешних зависимостей. Конкретный выбор проверяют по своему процессу сборки.

Переменные и порты связаны с приложением

Документация Docker environment описывает особенности среды экземпляра. Переменные проекта задавайте явно, отличая настройку каталога, имя модели и секретный токен. Список обязательных имён полезно хранить вместе с рецептом без приватных значений.

Порт в шаблоне должен соответствовать сервису, который реально запускается. Публикация HTTP-порта не запускает приложение и не устанавливает авторизацию. После создания берите внешний адрес из текущего экземпляра: внутренний порт контейнера и внешний сопоставленный порт имеют разные назначения.

Пример проверки обновлённого рецепта

Команда меняет каталог результатов с временной папки на постоянный рабочий путь. Она сначала создаёт тестовый экземпляр по новой версии шаблона и записывает контрольный файл. Затем проверяет путь, права и поведение после перезапуска приложения, не затрагивая основной эксперимент.

ПроверкаЧто подтверждает
Версия образаПонятная исходная среда
Журнал инициализацииВидимый результат подготовки
Контрольный файлПравильный каталог и права
Подключение к сервисуСоответствие порта процессу
Повторный запускОтсутствие случайной ручной зависимости

Когда опыт проходит, новый рецепт получает отдельное имя или версию. Старую инструкцию сохраняют до завершения переноса действующей работы.

Отдельно задайте критерий готовности приложения. Завершившийся startup-скрипт ещё не показывает, что сервис загрузил данные и способен обработать запрос. Маленькая проверка готовности должна возвращать понятный результат и попадать в журнал. Тогда автоматизация и человек одинаково понимают, когда среда действительно пригодна для следующего этапа вычислений, а когда она только создана.

Практические выводы

Коллега должен создать среду по описанию и выполнить небольшой тест без доступа к вашей истории терминала. Если это не получается, недостающий шаг добавляют в рецепт. Приватные ключи, личные токены и неопубликованные локальные файлы не должны быть скрытым условием успешного запуска.

Для доступа используйте материал SSH и Jupyter, для замены экземпляра — план переноса данных. Проверяемый рецепт поможет предметно обсудить подготовку машины.

← Все материалы