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

Архитектура модели

TL;DR

По документации vLLM, поддержку модели определяет поле architectures в файле config.json репозитория. Если архитектура реализована в vLLM, модель должна работать напрямую, а запасной путь идёт через реализацию Transformers.

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

Общий запуск серверного контура мы разбирали в статье про vLLM для компании, упаковку в контейнер — в материале vLLM Docker. Здесь вопрос другой: какую модель брать и как убедиться, что она подходит, до того как под неё строят инфраструктуру.

Полезно помнить и про версии. Новые архитектуры появляются в vLLM с очередными выпусками, и модель, вышедшая на прошлой неделе, может запуститься только в свежей версии сервера. Если вы собираете контейнер, фиксируйте версию vLLM и версию весов вместе, иначе повторить запуск через месяц будет трудно.

Документация различает два пути. Нативная реализация лежит в самом vLLM и получает оптимизированный код. Запасной путь использует реализацию из библиотеки Transformers: он охватывает языковые, мультимодальные, звуковые и эмбеддинговые модели разных архитектур. Работа через запасной путь возможна, но скорость и набор функций там иногда скромнее, и это проверяют замером. Актуальный список смотрите в документации vLLM.

Формат и раздача

Архитектура — только первое условие. Дальше важно, в каком виде лежат веса и как вы их получаете.

Что проверитьЗачемГде посмотреть
Поле architecturesПоказывает, реализована ли архитектура в vLLMФайл config.json в репозитории модели
Тип моделиГенеративная, эмбеддинговая или для распознавания речи: это разные режимы запускаКарточка модели и документация vLLM
Шаблон чатаБез него чат-запросы невозможны, шаблон можно задать вручнуюКонфигурация токенизатора
Формат весовБезопасный формат хранения и совместимость с вашей версиейСписок файлов репозитория
Доступ и лицензияЧасть моделей закрыта запросом или ограничивает применениеКарточка модели и текст лицензии
Удалённый кодНекоторые модели требуют выполнять чужой код при загрузкеОписание загрузки в карточке

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

Документация vLLM отдельно упоминает параметр trust_remote_code для моделей, которым нужен собственный код. Включайте его осознанно: вы разрешаете выполнять чужой код на своём сервере. Для рабочего контура берите модели без такого требования или читайте код и фиксируйте версию.

Источники весов и их проверку разбирают статьи про Hugging Face для компании и формат safetensors. Для vLLM важно сверять версию сервера и версию библиотеки с теми, под которые собрана модель, иначе новая архитектура вроде бы есть в карточке, а в сервере её нет.

Конфигурация запуска

Когда совместимость подтверждена, настраивают запуск. Параметры меняются от версии к версии, поэтому сверяйтесь с документацией, а принципы остаются прежними.

  • Имя модели: идентификатор репозитория или путь к локальной папке с весами.
  • Шаблон чата: если в токенизаторе его нет, укажите свой файл при запуске.
  • Ограничение длины контекста: выбирайте под реальные задачи, потому что длинный контекст занимает память.
  • Доля видеопамяти: оставьте запас для всплесков, иначе сервер упадёт под нагрузкой.
  • Ключ доступа: включите, даже когда сервер внутри сети.

По документации, vLLM поднимает сервер командой vllm serve и отдаёт совместимые с OpenAI адреса: чат, продолжение текста, эмбеддинги, а для моделей распознавания речи ещё и транскрипцию. Список загруженных моделей возвращает адрес /v1/models, а метрики в формате Prometheus лежат на /metrics.

Фиксируйте команду запуска в файле: параметры, версия, путь к весам. Это превращает запуск в повторяемую процедуру, и любой участник команды поднимет такой же сервер за несколько минут. Команда, живущая только в истории чьей-то консоли, исчезает вместе с человеком.

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

● Discovery · 1 час · бесплатно

Какие модели вы хотите проверить на совместимость с vLLM?

Прийти на Discovery →

Тестовый запрос

Документация называет простейшую проверку поддержки: запустить настоящий вывод. Если модель отвечает, поддержка есть. Для сервера это сводится к короткой серии запросов.

  1. Запросите список моделей по адресу /v1/models и убедитесь, что нужное имя присутствует и совпадает с тем, что вы укажете в запросах.
  2. Отправьте короткий чат-запрос на русском языке и проверьте, что ответ читаем и заканчивается там, где нужно.
  3. Отправьте длинный запрос, близкий к вашим реальным документам, и посмотрите, укладывается ли он в выбранный контекст.
  4. Отправьте несколько параллельных запросов и сравните время ответа с одиночным, чтобы увидеть влияние нагрузки.
  5. Проверьте метрики на /metrics: рост очереди и занятость памяти скажут больше, чем среднее время.

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

Ресурсы и качество

Совместимая модель может оказаться непригодной по ресурсам или по качеству. Оба вопроса решаются замерами на вашем оборудовании.

  • Память: сколько видеопамяти занимает модель с выбранным контекстом и сколько остаётся на параллельные запросы.
  • Скорость: время до первого слова и общая длительность ответа на типовых запросах.
  • Параллельность: как растёт задержка при нескольких одновременных запросах.
  • Качество: верность ответов на вашем наборе из десятка-другого задач с проверяемым результатом.
  • Стабильность: повторяется ли результат при втором прогоне и после перезапуска сервера.

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

Зафиксируйте результаты в таблице: модель, версия, параметры запуска, показатели, оценка. Через месяц выйдет новая версия, и вы повторите прогон на том же наборе. Без записи сравнение превращается в разговор по памяти.

Если в компании нет опыта по серверам и открытым моделям, выбор и проверку можно поручить в рамках консалтинга по внедрению ИИ.

Частые вопросы

Как узнать, поддерживает ли vLLM мою модель?
Откройте репозиторий модели и посмотрите поле architectures в config.json. Если архитектура реализована в vLLM, она поддерживается напрямую. Надёжнее всего запустить настоящий вывод и получить ответ.
Что делать, если у модели нет шаблона чата?
Для чат-запросов шаблон обязателен. Его можно передать вручную при запуске сервера через параметр с путём к файлу шаблона.
Какие адреса отдаёт сервер vLLM?
Совместимые с OpenAI адреса для чата, продолжения текста и эмбеддингов, а для моделей распознавания речи ещё транскрипцию. Список моделей отдаёт /v1/models, а метрики лежат на /metrics.
Можно ли запускать модели с удалённым кодом?
Параметр trust_remote_code разрешает выполнение чужого кода при загрузке. Включайте его только после чтения кода и фиксируйте версию, а для рабочего контура берите модели без такого требования.
Как проверить качество модели на vLLM?
Соберите набор своих задач с проверяемым результатом, прогоните его на сервере, измерьте память, скорость, параллельность и стабильность и запишите итог в таблицу.