# vLLM enforce eager: проверить сбой компиляции и CUDA graphs

Источник: https://modelium.tech/zhurnal/vllm-enforce-eager/

Флаг --enforce-eager в vLLM v0.32.0 отключает и компиляцию torch.compile, и CUDA graphs — оптимизацию выполнения на видеокарте. Используйте его как временный диагностический тест на своей модели: сравните запуск и короткий ответ с флагом и без него. Успех в одном режиме лишь сужает поиск причины, а не доказывает неисправность CUDA graphs или гарантирует прежнюю скорость.

Сервер vLLM не запускается рядом с ошибкой компиляции или выполнения на видеокарте? Флаг `--enforce-eager` помогает **проверить гипотезу**, временно отключив сразу два ускорения: `torch.compile` (подготовка оптимизированного кода) и CUDA graphs (повторное выполнение зафиксированных операций на NVIDIA GPU). Это инженерная диагностика, **не домашний рецепт установки** и не универсальное лечение ошибки. [s1](#src-s1) [s2](#src-s2)

**Статус:** инструкция сверена с документацией vLLM v0.32.0; редакция **не запускала сервер, видеокарту и модель**. Вам нужны Linux, установленный vLLM v0.32.0, совместимая NVIDIA GPU, терминал и модель, которая уже запускается или даёт исследуемую ошибку. Документ об установке описывает совместимые платформы; необходимую память именно для вашей модели нельзя узнать по размеру файла. Первая загрузка модели требует сети; пример API обращается к `127.0.0.1` на вашем компьютере. [s3](#src-s3) [s4](#src-s4) [s5](#src-s5)

## Что меняет флаг и когда его пробовать?

В версии v0.32.0 `--enforce-eager` по умолчанию **выключен**. При включении он отключает и `torch.compile`, и CUDA graphs; обычный режим использует комбинацию оптимизаций и непосредственного выполнения. Поэтому если ошибка исчезла, нельзя по одному этому опыту сказать, какой из двух механизмов был причиной. Не оставляйте флаг как постоянный «ускоритель»: изменение скорости нужно измерить на собственной нагрузке. [s1](#src-s1) [s2](#src-s2)

Этот тест уместен, когда у вас **уже есть конкретный сбой** при запуске или запросе и сохранены версия, сообщение об ошибке и условия. Если проблема в недоступном файле модели, неподдерживаемом устройстве или нехватке памяти, флаг не даёт гарантии исправления. Общие шаги установки и выбора модели находятся в [базовом гайде vLLM](/zhurnal/vllm/). [s1](#src-s1) [s3](#src-s3)

## Как сравнить два запуска на одной модели?

На **своём Linux-стенде** откройте терминал с установленным vLLM. Учебная модель — `Qwen/Qwen3-0.6B` на закреплённой ревизии; наличие репозитория не гарантирует, что она поместится в ваше устройство. Сначала зафиксируйте результат обычного запуска: `vllm serve Qwen/Qwen3-0.6B --revision c1899de289a04d12100db370d81485cdf75e47ca --host 127.0.0.1 --port 8000`. Запишите сообщение об ошибке или дождитесь готовности сервера. **Остановите этот процесс** перед следующим запуском, иначе порт будет занят. Не публикуйте приватные пути и токены из журналов. [s1](#src-s1) [s4](#src-s4)

Теперь в том же окружении повторите команду, добавив только один флаг: `vllm serve Qwen/Qwen3-0.6B --revision c1899de289a04d12100db370d81485cdf75e47ca --host 127.0.0.1 --port 8000 --enforce-eager`. Если сервер готов, в другом терминале отправьте собственный короткий учебный запрос: `curl --fail-with-body -sS 'http://127.0.0.1:8000/v1/chat/completions' -H 'Content-Type: application/json' -d '{"model":"Qwen/Qwen3-0.6B","messages":[{"role":"user","content":"Назови один овощ."}],"max_tokens":64}'`. Ожидайте JSON с полем `choices`, но конкретный ответ модели не предсказан. Если обычный режим тоже запустился, отправьте ему **тот же** запрос после отдельного перезапуска. Путь к API и формат запроса даны в Quickstart. [s1](#src-s1) [s4](#src-s4) [s5](#src-s5)

## Как понять результат без ложного вывода?

Если обычный запуск падает, а режим с флагом даёт ответ, диагностика **сужает область поиска**, но не доказывает ошибку именно CUDA graphs: одновременно выключена компиляция. В документации есть отдельные проверки `-cc.mode=0` (только компиляция) и `-cc.cudagraph_mode=NONE` (только CUDA graphs) для подготовленного инженера; не меняйте сразу несколько параметров и не объявляйте причину до изоляции. Если оба запуска падают, сохраните обе ошибки и проверьте установку, модель и доступные ресурсы отдельно. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

**Проверка результата:** признак работы здесь — успешный HTTP-ответ и наличие `choices` в JSON **на вашем стенде**, не просто открытый порт или запись о модели. Сравните ответ с собственным заданием. Когда оба режима работают, [измерьте задержку на своих запросах](/zhurnal/vllm-bench-serve/) и верните обычный режим, если он подходит; одна учебная реплика не измеряет скорость под нагрузкой. Редакция проверила документацию и форму команд, **но не получила ответ модели**. [s1](#src-s1) [s2](#src-s2) [s5](#src-s5)

## Источники

1. [vLLM v0.32.0: CLI serve, параметр enforce-eager](https://docs.vllm.ai/en/v0.32.0/cli/serve/) — получено 2026-11-01
2. [vLLM v0.32.0: How to debug the vLLM-torch.compile integration](https://docs.vllm.ai/en/v0.32.0/design/debug_vllm_compile/) — получено 2026-11-01
3. [vLLM v0.32.0: поддерживаемая установка на GPU](https://docs.vllm.ai/en/v0.32.0/getting_started/installation/gpu/) — получено 2026-11-01
4. [Qwen/Qwen3-0.6B: точная ревизия учебной модели](https://huggingface.co/Qwen/Qwen3-0.6B/tree/c1899de289a04d12100db370d81485cdf75e47ca) — получено 2026-11-01
5. [vLLM v0.32.0: Quickstart, локальный chat completions API](https://docs.vllm.ai/en/v0.32.0/getting_started/quickstart/) — получено 2026-11-01
