vLLM модели подбирают по совместимости: сервер запускает те веса, чья архитектура реализована в нём или доступна через слой совместимости с Transformers, и проверить это можно до загрузки весов. Подходящую модель от красивого названия отделяют пять проверок: файл конфигурации, шаблон чата, тестовый запрос, ресурсы и качество на ваших задачах. Порядок подходит командам, у которых уже есть сервер или план его поднять.
Архитектура модели
По документации 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.
Фиксируйте команду запуска в файле: параметры, версия, путь к весам. Это превращает запуск в повторяемую процедуру, и любой участник команды поднимет такой же сервер за несколько минут. Команда, живущая только в истории чьей-то консоли, исчезает вместе с человеком.
Практический совет: начинайте с меньшей модели того же семейства. Она запускается быстрее, на ней отлаживают шаблон, ключ и сеть, а затем меняют только имя модели на крупную. Так ошибки конфигурации отделены от ошибок нехватки памяти, и причину сбоя искать проще.
Какие модели вы хотите проверить на совместимость с vLLM?
Тестовый запрос
Документация называет простейшую проверку поддержки: запустить настоящий вывод. Если модель отвечает, поддержка есть. Для сервера это сводится к короткой серии запросов.
- Запросите список моделей по адресу /v1/models и убедитесь, что нужное имя присутствует и совпадает с тем, что вы укажете в запросах.
- Отправьте короткий чат-запрос на русском языке и проверьте, что ответ читаем и заканчивается там, где нужно.
- Отправьте длинный запрос, близкий к вашим реальным документам, и посмотрите, укладывается ли он в выбранный контекст.
- Отправьте несколько параллельных запросов и сравните время ответа с одиночным, чтобы увидеть влияние нагрузки.
- Проверьте метрики на /metrics: рост очереди и занятость памяти скажут больше, чем среднее время.
Короткие английские примеры из документации о вашей работе говорят мало. Берите задачи из своих процессов: письмо клиенту, выдержка из договора, вопрос по регламенту. Для таких задач заранее запишите ожидаемый ответ или критерий верности, чтобы оценивать результат без споров.
Ресурсы и качество
Совместимая модель может оказаться непригодной по ресурсам или по качеству. Оба вопроса решаются замерами на вашем оборудовании.
- Память: сколько видеопамяти занимает модель с выбранным контекстом и сколько остаётся на параллельные запросы.
- Скорость: время до первого слова и общая длительность ответа на типовых запросах.
- Параллельность: как растёт задержка при нескольких одновременных запросах.
- Качество: верность ответов на вашем наборе из десятка-другого задач с проверяемым результатом.
- Стабильность: повторяется ли результат при втором прогоне и после перезапуска сервера.
Отдельно оцените запас по нагрузке. Типичный пик бывает в начале рабочего дня и после рассылки, и сервер, который справляется в обычное время, может захлебнуться в эти часы. Прогоните тест с числом одновременных запросов, близким к ожидаемому пику, и посмотрите на задержку и очередь.
Зафиксируйте результаты в таблице: модель, версия, параметры запуска, показатели, оценка. Через месяц выйдет новая версия, и вы повторите прогон на том же наборе. Без записи сравнение превращается в разговор по памяти.
Если в компании нет опыта по серверам и открытым моделям, выбор и проверку можно поручить в рамках консалтинга по внедрению ИИ.