Vast.ai: как арендовать GPU и подключиться к серверу через VS Code
Если для обучения модели не хватает собственной видеокарты, покупать RTX ради нескольких экспериментов необязательно. GPU можно арендовать на несколько часов и платить только за время работы.
Один из сервисов для этого — Vast.ai. Здесь можно найти сервер с нужной видеокартой, развернуть на нем окружение с CUDA и PyTorch, подключиться по SSH и работать из привычного VS Code практически так же, как с локальным компьютером.
В этом гайде разберем весь процесс: от выбора GPU на Vast.ai до запуска Python-кода на удаленной видеокарте.
Что такое Vast.ai
Vast.ai — маркетплейс вычислительных мощностей с GPU. В отличие от классического облачного провайдера, инфраструктура здесь принадлежит разным хостам: это могут быть дата-центры или отдельные владельцы серверов.
Из-за такой модели цены на GPU часто оказываются ниже, чем в крупных облаках. Обратная сторона — предложения отличаются не только видеокартами и ценой, но и надежностью, скоростью сети, диском, процессором и другими параметрами.
Поэтому выбирать инстанс только по принципу «нашел самую дешевую RTX 4090 — беру» не стоит.
Для чего можно использовать Vast.ai
Самый очевидный сценарий — обучение нейросетей. Например, сервер можно арендовать для:
- обучения моделей на PyTorch;
- fine-tuning LLM;
- экспериментов с компьютерным зрением;
- запуска Jupyter Notebook;
- Kaggle-проектов, которые не помещаются на доступные GPU;
- инференса больших моделей;
- Stable Diffusion и других генеративных моделей;
- CUDA-вычислений.
При этом код необязательно писать через браузер. Сервер можно подключить к VS Code по SSH и редактировать файлы удаленно.
Как выбрать GPU на Vast.ai
После регистрации откройте список доступных машин. Перед вами будет таблица с предложениями от разных хостов.
Смотреть нужно не только на модель GPU.
Предположим, вам нужна RTX 4090. Два сервера с одинаковой видеокартой могут заметно отличаться по CPU, количеству RAM, скорости диска и интернет-соединения. Для конкретной задачи это иногда важнее небольшой разницы в стоимости GPU.
Особенно внимательно смотрите на объем VRAM. Если модель требует больше видеопамяти, чем есть на карте, низкая стоимость инстанса уже не поможет.
Для небольших ML-экспериментов может хватить 16–24 ГБ VRAM. Для fine-tuning и запуска крупных моделей требования могут быть значительно выше.
Reliability: почему самый дешевый сервер не всегда лучший
У предложений Vast.ai есть показатель надежности хоста. Он помогает оценить, насколько стабильно работала конкретная машина.
Для короткого эксперимента небольшой риск обычно не критичен. Если обучение занимает много часов или дней, надежность становится гораздо важнее.
Представьте, что модель обучалась восемь часов, но сервер неожиданно стал недоступен. Без сохраненных checkpoint часть работы придется повторять.
Поэтому для продолжительных запусков лучше немного переплатить за надежную машину и обязательно сохранять состояние модели во время обучения.
On-demand и interruptible
На Vast.ai встречаются разные варианты аренды.
On-demand подходит, когда сервер нужен вам на протяжении всей работы и прерывание нежелательно.
Interruptible может стоить дешевле, но такой инстанс потенциально можно потерять, если изменятся условия аренды.
Для тестов, коротких скриптов и задач, которые легко продолжить с checkpoint, экономия может иметь смысл. Для долгого обучения безопаснее использовать более стабильный вариант.
Выбираем Docker Image
После выбора машины нужно определить окружение, которое будет запущено на сервере.
Vast.ai использует Docker-контейнеры. Благодаря этому не требуется вручную устанавливать всю систему с нуля.
Если вы работаете с PyTorch, проще взять готовый образ, в котором уже есть совместимые версии Python, CUDA и необходимых библиотек.
Перед запуском стоит проверить:
- версию CUDA;
- версию PyTorch;
- версию Python;
- необходимый объем диска.
Последний пункт легко недооценить. Если датасет занимает 100 ГБ, выделять ровно 100 ГБ диска нельзя: место понадобится также для окружения, исходных файлов, кеша, checkpoint и результатов обучения.
Создаем инстанс
После настройки остается выбрать подходящее предложение и запустить аренду.
Инстанс появится в списке ваших активных машин. Запуск может занять некоторое время: серверу необходимо подготовить выбранный контейнер.
Когда машина будет готова, можно переходить к SSH.
Настраиваем SSH
SSH позволяет открыть терминал удаленного Linux-сервера со своего компьютера.
Для безопасного подключения лучше использовать SSH-ключ.
Если ключа еще нет, его можно создать локально:
ssh-keygen -t ed25519
После этого появятся приватный и публичный ключи.
Приватный ключ остается на вашем компьютере. Передавать его кому-либо нельзя.
Содержимое публичного ключа добавляется в Vast.ai.
После запуска инстанса сервис покажет параметры подключения: IP-адрес, пользователя и SSH-порт.
Команда будет выглядеть примерно так:
ssh -p PORT root@SERVER_IP
Конкретные PORT и SERVER_IP нужно взять из параметров вашего инстанса.
Проверяем GPU
После подключения первым делом выполним:
nvidia-smi
Команда должна показать установленную видеокарту, драйвер, использование VRAM и запущенные GPU-процессы.
Если GPU отображается, сервер как минимум видит видеокарту.
Теперь проверим PyTorch:
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
При корректной настройке первая команда должна вывести:
True
а следующая — название арендованной видеокарты.
Подключаем Vast.ai к VS Code
Работать исключительно через SSH-терминал можно, но для большого проекта это быстро становится неудобно.
Проще подключить сервер непосредственно к VS Code.
Установите расширение Remote - SSH. После этого сервер можно добавить в SSH config.
Пример:
Host vast HostName SERVER_IP User root Port PORT IdentityFile ~/.ssh/id_ed25519
Замените SERVER_IP и PORT данными своего инстанса.
Теперь в VS Code откройте командную палитру:
Ctrl + Shift + P
и выберите:
Remote-SSH: Connect to Host
Затем выберите vast.
VS Code подключится к удаленному серверу и откроет отдельное окно. Файлы, терминал и Python в этом окне будут работать уже не на вашем ПК, а на арендованной машине.
Это важный момент: VS Code остается запущенным локально, но код выполняется на сервере Vast.ai.
Загружаем проект
Если проект хранится в Git, удобнее всего клонировать репозиторий прямо на сервер:
git clone <адрес-репозитория> cd <папка-проекта>
После этого зависимости можно установить обычным способом:
pip install -r requirements.txt
Для проекта с pyproject.toml команда будет зависеть от используемого менеджера зависимостей.
Большие датасеты лучше не таскать между локальным компьютером и сервером после каждого запуска. Продумайте заранее, где будут находиться исходные данные, checkpoint и результаты экспериментов.
Запускаем обучение
Когда окружение готово, запуск ничем принципиально не отличается от локального:
python train.py
Проверить загрузку GPU можно через:
nvidia-smi
Для наблюдения в реальном времени:
watch -n 1 nvidia-smi
Если процесс обучения использует GPU, в таблице появится Python-процесс и занятая им видеопамять.
Что будет, если закрыть VS Code
Обычный процесс, запущенный непосредственно в SSH-терминале, может завершиться после разрыва соединения.
Поэтому длительное обучение лучше запускать через tmux.
Создаем сессию:
tmux new -s train
Запускаем внутри нее:
python train.py
После этого от сессии можно отключиться:
Ctrl+B D
Обучение продолжится на сервере.
Вернуться:
tmux attach -t train
Для удаленного GPU это практически обязательный инструмент: нет смысла держать VS Code открытым несколько часов только ради работающего процесса.
Не забывайте сохранять checkpoint
Арендованный GPU нельзя воспринимать как свой постоянный компьютер.
Модель лучше периодически сохранять:
torch.save(model.state_dict(), "checkpoint.pt")
В реальном проекте стоит сохранять не только веса, но и optimizer state, scheduler, номер эпохи и другие данные, необходимые для продолжения обучения.
Еще надежнее периодически отправлять важные результаты во внешнее хранилище.
Правило простое: если потеря файла заставит вас заново оплачивать несколько часов GPU, у этого файла должна быть резервная копия.
За что на Vast.ai списываются деньги
Цена GPU — не единственная статья расходов.
При аренде необходимо учитывать стоимость самого инстанса, дискового пространства и передачи данных, если она тарифицируется для выбранной конфигурации.
Особенно внимательно следите за storage. Остановка вычислений не всегда означает, что связанные с инстансом данные перестали занимать оплачиваемое пространство.
После завершения эксперимента проверьте активные ресурсы в панели Vast.ai.
Как сэкономить на аренде GPU
Главная ошибка новичка — сначала арендовать мощную видеокарту, а потом начинать устанавливать библиотеки, скачивать датасет и исправлять код.
Все это время счетчик продолжает работать.
Лучше сначала проверить проект локально или на бесплатном GPU:
python train.py --epochs 1
Убедитесь, что датасет читается, модель создается, обучение начинается, checkpoint сохраняются и зависимости известны.
Только после этого имеет смысл переносить проект на дорогой GPU.
Для отладки также необязательно брать топовую карту. RTX 4090 или более мощный ускоритель имеет смысл арендовать тогда, когда код уже готов к полноценному запуску.
Vast.ai или локальная видеокарта
Если GPU нужен каждый день, покупка собственной видеокарты в долгосрочной перспективе может оказаться выгоднее.
Vast.ai интереснее в другом сценарии: сегодня вам нужна одна мощная GPU на четыре часа, через неделю — несколько GPU для другого эксперимента, а большую часть месяца вычисления вообще не нужны.
В таком случае вы не покупаете дорогое железо, которое большую часть времени простаивает.
Есть и еще одно преимущество: можно подобрать GPU под конкретный эксперимент. Если сегодня достаточно 24 ГБ VRAM, нет необходимости платить за 80 ГБ. А если завтра модель перестанет помещаться в 24 ГБ, можно просто арендовать другую машину.
Частые вопросы
Можно ли использовать Vast.ai для PyTorch?
Да. Можно выбрать Docker-окружение с CUDA и PyTorch и выполнять обучение непосредственно на арендованном GPU.
Можно ли подключить Vast.ai к VS Code?
Да. Один из самых удобных вариантов — SSH и расширение Remote - SSH. После подключения удаленный сервер открывается непосредственно в VS Code.
Нужно ли устанавливать CUDA на свой компьютер?
Для выполнения модели на сервере локальная CUDA не нужна. Вычисления происходят на удаленной машине. Главное, чтобы окружение на сервере содержало совместимые драйверы, CUDA и ML-фреймворк.
Можно ли запускать Jupyter Notebook?
Да. Jupyter можно запустить на сервере и подключиться к нему через SSH-туннель либо использовать соответствующие возможности удаленной среды разработки.
Можно ли обучать LLM на Vast.ai?
Да, если выбранный GPU или несколько GPU имеют достаточно VRAM для вашей модели и выбранного метода обучения. Для LoRA и QLoRA требования могут быть значительно ниже, чем для полного fine-tuning.
Что произойдет с обучением, если отключить компьютер?
Если процесс правильно запущен на сервере, например внутри tmux, выключение локального компьютера не останавливает вычисления. Обучение выполняется на машине Vast.ai.
Итог
Схема работы с Vast.ai довольно простая:
выбрать GPU → создать инстанс → настроить SSH → подключить VS Code → проверить CUDA → загрузить проект → запустить обучение.
Основная сложность начинается не с Python и не с PyTorch, а с управления удаленной машиной: нужно следить за расходами, правильно выбирать инстансы и не хранить единственную копию результатов на временном сервере.
После первоначальной настройки Vast.ai можно использовать почти как удаленный компьютер с мощной видеокартой: писать код в VS Code, запускать обучение через терминал и платить за GPU только тогда, когда он действительно нужен.