Приложение Т—Ж
В нем читать удобнее

Как я начал арендовать GPU в облаке: подводные камни и немного советов

Обсудить

Этот текст написан в Сообществе, в нем сохранены авторский стиль и орфография

Аватар автора

Антон Черкасов

Страница автора

Долгое время я обходил тему ML стороной: мой профиль всё-таки бэкенды, инфраструктура, миграции легаси и подобная нервотрёпка. Но в момент, когда клиент приходит и просит поиск по внутренним документам и расшифровке созвонов без использования чужого API — то есть Whisper и модель для эмбеддингов надо поднимать у себя — приходится осваивать новую область.

Покупать 4090 и ставить её под стол я не готов, значит остаётся аренда. Дальше начинается то, ради чего этот текст.

Грабля первая: квоты

Казалось бы, арендовать GPU в 2026 году — это просто. Заходишь к провайдеру, видишь в прайсе A100, радуешься, жмёшь «создать». Получаешь окно «запросите увеличение квоты у поддержки». Пишешь в поддержку, продолжаешь радоваться.

Но радоваться пришлось недолго, ждал я три дня, после чего узнал, что мощности сейчас распределяются между действующими корпоративными клиентами и на меня их не хватает. Это скорее даже не про отсутствие self-service, а про то, что при нынешнем спросе на облачные GPU ты физически не можешь начать работу, пока на тебя не освободят видеокарту. Но может это мне не повезло, я после такой ситуации сменил провайдера — и больше подобных проблем не встречал.

Грабля вторая: остановленная машина — это не бесплатная машина

Вот логика кажется очевидной: GPU почасовой, не работаешь — гасишь инстанс, платишь ноль. В реальности при остановке перестаёшь платить за саму карту, но продолжаешь платить за диск, на котором лежат сорок гигабайт весов и зарезервированный IP. То есть за то, что гарантируют ту же карту при следующем запуске, вау.

Я гасил машину на выходные три недели подряд, потом посмотрел счёт. Экономия оказалась процентов на сорок, неплохо, но жадная душа просит больше….

Грабля третья: версии

Отдельный жанр — совместимость. Берёшь готовый образ провайдера, в нём драйвер одной версии, CUDA другой, а колесо torch третье. Всё это выясняется не при запуске, а через двадцать минут, когда наконец докачались веса и код падает на первом же вызове.

Простой пример: CUDA — 12.1, Driver — 535.xx, PyTorch — 2.3, Python — 3.10, Transformers — 4.xx. Это ведь не независимые детали. Версия драйвера NVIDIA должна поддерживать нужную CUDA, а PyTorch в собирается под конкретную версию CUDA runtime. А если видишь такой набор — что с этим делать?

А дальше всё как обычно: официальная документация описывает мир, в котором версии совпадают, а реальное решение находится в комментарии на GitHub под issue со статусом closed. Отличие от того же Kubernetes только в том, что здесь каждая итерация «поправил / перезапустил / подождал» стоит денег по тарифу.

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

Грабля четвёртая: спот и веса

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

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

Решение тут одно, положить веса в S3 у того же провайдера, в том же регионе, и тянуть оттуда. Скорость выше, egress внутренний, зависимость от чужой доступности нулевая.

Что по площадкам

Зарубежные специализированные сервисы вроде RunPod и Vast по железу и цене отличные, но если есть виртуальная карта. Плюс у Vast под капотом чужие домашние компьютеры, корпоративную работу или персональные данные я бы сюда не поместил. Для пет-проекта — ради бога. Из отечественных я смотрел (в качестве разнообразия) Beget, уже обкатанные ранее Cloud4U, Selectel, вариантов там масса, плюс на последних у меня развернуты S3. Карты в наличии в основном прошлых поколений, но встречаются и свежие, конечно же, с небольшой задержкой по поступлениям в сравнении с западом. По цене у наших за час выше зарубежной ощутимо, но и оплата доступнее по понятным причинам.

Главный вывод, к которому я пришёл поздно

А вывода никакого нет. Я месяц платил за круглосуточный инстанс, а потом ради интереса посчитал утилизацию. Реальная загрузка GPU — около шести процентов времени. Всё остальное я оплачивал тёплую видеокарту, которая ждёт, пока клиент загрузит очередной PDF.

Для нерегулярной нагрузки постоянный инстанс бесполезен. Смотрите в сторону спотов и экономьте деньги и нервы, друзья. И обязательный чек-лист перед арендой:

  • ☑ проверить доступность GPU
  • ☑ проверить CUDA/PyTorch
  • ☑ вынести веса в S3
  • ☑ включить checkpointing
  • ☑ настроить автоостановку
  • ☑ проверить оплату storage после stop.

Надеюсь мой хаотичный набор мыслей вам как-то помог. А я продолжу дальше обкатывать облачные GPU — чувствую, это моя не последняя статья про них.

Вот что еще мы писали по этой теме
Сообщество
Маргарита Макарова
Маргарита Макарова
Мой рисунок: «Выживание» маслом
Маргарита Макарова
Маргарита Макарова
Мой рисунок: Распутин маслом
Маргарита Макарова
Маргарита Макарова
Мой рисунок: «Дракула» маслом