← Все статьи

Свой инференс для 25 разработчиков: кэш префикса важнее модели

Стенд на vLLM и Blackwell: hit rate кэша 96,9%, отношение вход/выход 452:1 и почему свой контур берут не ради экономии.

Свой инференс для 25 разработчиков: кэш префикса важнее модели
Содержание

Коротко

На Хабре — производственный разбор стенда LLM внутри периметра: видеокарта RTX PRO 6000 Blackwell на 96 GB, Qwen3-Coder-Next-FP8 (80B, смесь экспертов), vLLM и шлюз LiteLLM для 25 подключённых / 16 активных разработчиков. Главный вывод автора: на агентской нагрузке кэш префикса решает больше, чем выбор модели и размер карты. После явного --enable-prefix-caching доля попаданий в кэш выросла с 0% до 96,9%, а задержка на повторном префиксе упала с 31,9 с до 0,24 с.

Что произошло

Команда прошла пять конфигураций: от плотной 30B без смеси экспертов до 80B со смесью, затем добавила разбивку токенов через LiteLLM и только потом включила кэш для гибридной архитектуры. До шлюза была одна цифра «токенов потрачено» — из неё ничего не следовало. С разбивкой стало видно отношение вход/выход 452:1: средний шаг агента тащит порядка 124 тыс. входных токенов и отдаёт ~274 на выходе, причём почти весь вход читается из кэша.

Экономика честная: аренда 131 000 ₽/мес; по сырым токенам облако часто дешевле; по посадочным местам и лимитам подписок картина другая. Авторский вывод, который не планировали: свой вывод модели берут за периметр и доступность, а не за экономию на токене. Потолок стенда — не скорость генерации токенов, а размер пула ключ–значение (8–9 одновременных полных контекстов).

В тексте — рабочие флаги под Blackwell, три грабли (DeepGEMM на архитектуре sm120, явный флаг кэша префикса, бессмысленное урезание --max-model-len) и эксплуатационные сбои LiteLLM/nginx.

Почему это важно

Бенчмарки меряют скорость генерации — на такой нагрузке это доли процента трафика. Команды, которые «ставят большую карту и надеются», месяцами платят тридцатикратную задержку, не видя строки чтения из кэша в статистике. Для закрытого контура с кодом заказчиков сравнение «свой стенд vs подписка» нужно вести по лимитам и аудиту, а не по прайсу за миллион токенов.

На практике

  1. Если смесь экспертов / гибрид и нет строки чтения из кэша в статистике — проверьте версию vLLM и явный --enable-prefix-caching.
  2. Считайте стоимость закрытой задачи и долю чтения из кэша, а не только скорость генерации на выходе.
  3. Сверяйте биллинг шлюза со счётчиками движка: у автора 96,9% и 97,3% сошлись — иначе спорите с разными метриками.
  4. Не укорачивайте --max-model-len «чтобы освободить видеопамять», пока не измерите: в разборе это только резало контекст.
  5. Заложите потолок по пулу ключ–значение и вытеснение чужих префиксов при росте числа активных пользователей.

Итог

На агентском кодинге внутри контура побеждает не «самая умная модель на слайде», а кэш префикса, наблюдаемость токенов и честное сравнение с подписками. Статья — редкий набор цифр и конфигов, который стоит прочитать до покупки следующей карты.