VRAM утечка в долгоживущем сервисе: когда перезагрузка дешевле чем отладка

Долгоживущие сервисы, которые загружают языковые модели на видеокарту и обслуживают запросы часами или днями, иногда теряют память с каждым вызовом. Утечка может быть микроскопической — килобайты за запрос, но за сутки работы она приводит к исчерпанию всех 24 гигабайт VRAM.

Поиск источника утечки требует глубокого профилирования, изучения кода модели, фреймворка и драйверов GPU — процесс, который может занять недели. Параллельно сервис становится нестабильным и начинает отклонять запросы в конце смены.

Практическое решение

Несколько команд выбрали путь перезагрузки воркера каждые 8-12 часов или после определённого числа запросов. Стоимость перезагрузки — несколько секунд downtime, который можно скрыть за load balancer.

Этот подход оказался дешевле в операционном смысле: меньше bugs в production, быстрее deployment, проще мониторинг. Утечка остаётся в коде, но не влияет на uptime.

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