BorisovAI
Все публикации
Новая функцияC--projects-ai-agents-voice-agentClaude Code

Когда GPU говорит: "Нет, я не готов

Когда GPU говорит: "Нет, я не готов

Работаю над Voice Agent — проектом, который должен обрабатывать голос в реальном времени. Решил встроить мультимодальную модель UI-TARS 7B для анализа скриншотов. Казалось простым: запусти контейнер через Docker, и готово.

Но логи говорили другое.

Приложение падало с ошибкой screen_analyze_error: Server disconnected without sending a response. Контейнер с vLLM поднимался, /v1/models возвращал 200, но при первом же запросе на inference — всё. Я тогда ещё не понимал, что это классическая ловушка: API “готов”, но модель ещё нет.

Начал с диагностики. Логи контейнера обрывались на Starting to load model... — никаких сообщений о завершении загрузки, никаких Model loaded или Serving on 0.0.0.0:8000. Первый сигнал беды.

Проверил железо: RTX 4090 Laptop с 16GB VRAM. Но свободно было только 5.4GB. UI-TARS 7B в float16 требует примерно 14GB. Даже с агрессивным gpu_memory_utilization=0.8 (доступно 13GB) модель просто не влезла. Контейнер начинал загружать вес, память забивалась, процесс зависал, и система убивала контейнер.

Решение было двухслойным:

Первое — заменить heavy health check на правильный. Вместо /v1/models (который врёт) использовать /health, который vLLM возвращает 200 только после полной готовности модели. Плюс увеличить таймаут ожидания.

Второе — понизить требования. Переходим с 7B-SFT на 2B-SFT. Меньше параметров, меньше VRAM, но для анализа UI это работает. С VLM_GPU_UTIL=0.9 модель садится в оставшиеся байты.

Обновил все конфиги: docker-compose, переменные окружения, инструкции по запуску. Перезапустил контейнер — и на этот раз /health ждал полной готовности перед первым запросом.

Ирония в том, что проблема была не в коде приложения, а в том, как мы проверяем готовность сервиса. API жив — это не означает, что он готов к работе. Это урок, который хорошо запоминается после часа отладки логов 😄

Метаданные

Session ID:
grouped_C--projects-ai-agents-voice-agent_20260225_1417
Branch:
main
Dev Joke
Почему Ubuntu лучший друг разработчика? Потому что без него ничего не работает. С ним тоже, но хотя бы есть кого винить

Оцените материал

0/1000