Перейти к содержанию
modelium.
Начать с задачи
←

vLLM на CPU: установка в Linux и проверка локального API

vLLM умеет обслуживать модели на CPU без NVIDIA GPU, но обычный GPU-пакет не заменяет специальную CPU-сборку. Для Linux x86 проверьте AVX2 или предпочтительно AVX-512, выберите модель из CPU-матрицы, установите CPU wheel либо соберите проект с VLLM_TARGET_DEVICE=cpu. Затем запросите ответ у локального сервера; публикация команды здесь не означает, что Modelium выполнил запуск.

Документация и карточка модели проверены 4 октября 2026 года. vLLM закреплён на Git-ревизии 6f75cc7, Qwen3-1.7B — на HF-ревизии 70d244c. Ни установка, ни инференс, ни скорость на CPU не проверялись Modelium; шаги ниже — инструкция по первоисточникам, а не журнал выполненного теста s1s7.

Когда имеет смысл ставить vLLM без видеокарты?

vLLM имеет отдельный CPU backend для запуска и обслуживания моделей. Здесь рассматривается Linux на x86 Intel/AMD, а не установка GPU-версии без CUDA и не запуск ROCm: у ARM AArch64 и Apple Silicon свои инструкции. Если ваш процессор не отвечает x86-требованиям или компьютер работает под Windows, нельзя механически перенести команды этого раздела: сначала проверьте документацию под свою архитектуру. Общий обзор runtime — в гайде vLLM, а WSL-гайд решает другой, преимущественно GPU-сценарий s1s2s3.

Практический маршрут: задача обслужить текстовую модель через локальный HTTP → конкретная совместимая модель Qwen/Qwen3-1.7B → проверка флагов и свободной памяти своего процессора → CPU-сборка vLLM → ответ /v1/models и результат запроса /v1/chat/completions. Модель есть в официальной CPU-матрице, но её таблица отражает проверку на Intel Xeon 5/6, не минимальную конфигурацию вашего ПК и не обещание скорости. Для учебного сравнения серверных runtime сначала подтвердите запуск именно на своём железе; выбор компьютера вынесен отдельно s4s7s5.

Как проверить CPU, Python и запас памяти до установки?

Документация CPU на этой ревизии требует Python 3.10–3.13. Для x86 указан Linux с флагом avx512f как рекомендованным; avx2 допускает ограниченный набор возможностей. Командой lscpu на целевой машине проверьте архитектуру, фактические флаги, число физических ядер и NUMA-узлы; командой free -h посмотрите доступную память. Не выводите поддержку из названия марки процессора или числа потоков. Если нет нужных флагов, не подменяйте их инструкцией для ARM или случайным GPU wheel s1s2s3.

Выбранный пример Qwen/Qwen3-1.7B указан в CPU-матрице авторов, а в карточке Hugging Face указан Qwen3ForCausalLM и лицензия Apache-2.0. Это не замер необходимых RAM, производительности или качества русского текста. Размер весов, KV-кеш, служебная память и параллелизм участвуют отдельно; не превращайте размер файла модели либо серверный Xeon автора в собственный минимальный системный порог. Перед загрузкой проверьте условия модели и объём свободной памяти на вашем устройстве s4s7s1.

Переменная VLLM_CPU_KVCACHE_SPACE задаёт выделяемый CPU KV-кеш в GiB, а не общий минимум RAM; документация показывает значение 40 GiB лишь как пример аппаратно-зависимой настройки. Для первого пробного запуска выберите значение, которое помещается помимо весов и остальных процессов. Привязка OpenMP-потоков VLLM_CPU_OMP_THREADS_BIND=auto — значение по умолчанию, а VLLM_CPU_NUM_OF_RESERVED_CPU=1 резервирует ядро для фронтенда при соответствующем auto-binding. Это опции для настройки под конкретный NUMA/CPU, а не обязательная магическая конфигурация каждого ноутбука s1.

Как поставить CPU-вариант и чем wheel отличается от сборки?

Создайте отдельное окружение рекомендованным автором способом: uv venv --python 3.12 --seed --managed-python, затем source .venv/bin/activate. Эти команды предполагают установленный uv; если Python 3.12 не подготовлен, сначала выполните шаг установки Python/uv по документации, а не используйте системный Python 3.14 как заведомо поддерживаемый. Зафиксируйте версию Python, Git-ревизию документации и фактический wheel в журнале собственного эксперимента s1s8.

Для x86 Linux автор описывает предсобранный CPU wheel с релизов, доступный начиная с vLLM 0.17.0. На дату снимка официальный GitHub API возвращал релиз v0.30.0; прежде чем копировать wheel-URL, проверьте наличие артефакта CPU для выбранного тега и совпадение ABI/архитектуры. Команда в документации строит URL вида vllm-<версия>+cpu-cp38-abi3-manylinux_2_34_x86_64.whl и ставит его через uv pip install ... --torch-backend cpu; не используйте индекс обычных CUDA wheels как замену. Для wheel документация отдельно требует найти библиотеку Intel OpenMP libiomp5.so и добавить её в LD_PRELOAD. Не угадывайте системный путь библиотеки s2.

Если релизный wheel не подходит или требуется код определённой ревизии, соберите CPU-вариант из checkout исходников: установить GCC/G++ по требованиям инструкции, CPU-зависимости из requirements/build/cpu.txt и requirements/cpu.txt, затем VLLM_TARGET_DEVICE=cpu uv pip install . --no-build-isolation. Сначала закрепите нужный Git commit после git clone; незакреплённый main может изменить команду или зависимости. Этот путь действительно компилирует код, требует инструментов разработки и не заменяется VLLM_USE_PRECOMPILED=1, который зависит от уже готовых CPU wheels. Здесь сборка не выполнялась s2s1.

Не запускайте опубликованный CPU Docker-образ с -p 8000:8000 на доступном извне хосте без ограничения сетевого доступа: типовой пример автора показывает порт, но не политику безопасности. ARM AArch64, Apple Silicon и x86 имеют разные наборы wheel/образов; берите их только из ветки инструкции для собственного процессора s2s3s6.

Как проверить локальный API, а не только статус процесса?

После установки задайте свой бюджет KV-кеша по доступной памяти и запускайте сервер только на loopback, например: VLLM_CPU_KVCACHE_SPACE=<ваше_значение_GiB> vllm serve Qwen/Qwen3-1.7B --dtype bfloat16 --host 127.0.0.1 --port 8000. Уберите угловые скобки и подставьте обоснованное число перед выполнением; это шаблон, а не команда, успешно исполненная Modelium. Официальный CPU FAQ рекомендует bfloat16 при проблемах с float16 на CPU; совместимость конкретного железа проверяется в вашем окружении. Если веса ещё не скачаны, первый запуск получит их из репозитория модели при наличии сети и нужных разрешений — не обещайте офлайн-режим только из-за CPU s1s4s7.

Проверяйте по порядку: curl -sS http://127.0.0.1:8000/v1/models должен вернуть список моделей, где присутствует нужный идентификатор; затем отправьте тестовый JSON на /v1/chat/completions с model: "Qwen/Qwen3-1.7B" и обычным сообщением пользователя. Убедитесь, что JSON содержит не только HTTP 200, но и choices[0].message.content либо наблюдаемое поле результата для выбранной модели. Пустой список, ошибочный ID, ошибка chat template или ответ без генерированного содержимого не подтверждают успешный инференс. Формат chat API применим только к моделям с chat template; для моделей без него используйте совместимый Completions API s5s7.

Запишите фактические python --version, CPU flags, RAM, версию vLLM, ревизию модели, параметры запуска, HTTP-код и ответ на один контролируемый запрос. Только такой сохранённый протокол может подтвердить запуск именно на вашем устройстве; отсутствие теста нельзя компенсировать ссылкой на чью-то таблицу. Мерить задержку и скорость имеет смысл уже после работоспособного API по отдельному протоколу нагрузочного теста s1s4s5.

Какие ошибки и ограничения следует проверить?

Если установка подтянула CUDA-зависимости или сервер ищет GPU, вернитесь к CPU wheel и --torch-backend cpu, а при сборке — к VLLM_TARGET_DEVICE=cpu. Если нет avx512f, проверьте avx2 и перечень ограниченных функций; отсутствие обоих флагов — повод не обещать работу x86 backend. Если процесс завершается при загрузке модели, сравните фактически доступную RAM с памятью, занятой весами, KV-кешем и другими процессами; уменьшение KV-кеша не гарантирует, что веса поместятся. Если BF16 даёт ошибку на конкретном процессоре, сверяйте тип и поддержку CPU, а не меняйте формат вслепую s2s1.

Не открывайте этот API в интернет по одной только настройке --api-key. Официальная документация прямо указывает, что ключ защищает лишь часть путей, в частности /v1/..., но /invocations остаётся доступным без него. Для учебного теста оставьте --host 127.0.0.1; корпоративный доступ требует отдельной сети, прокси и контроля открытых путей. Если задача — GPU, ROCm-инструкция относится к иной архитектуре, а не к ускорению описанной CPU-сборки s5s6.

Удаление учебного окружения: остановите запущенный сервер, затем удалите только созданное для этого теста виртуальное окружение и скачанный кэш модели, если он больше не нужен другим проектам. Не очищайте общий ~/.cache/huggingface без проверки его использования. Основной следующий шаг: получить реальный ответ API на своём CPU и лишь потом измерять скорость на одинаковом наборе запросов s8s5.

Источники

  1. vLLM — CPU installation and runtime configuration — revision 6f75cc7d5d1b5adfb399cbf79a8231ae66844fcf. Получено 04.10.2026.
  2. vLLM — x86 CPU installation, wheels and source build — revision 6f75cc7d5d1b5adfb399cbf79a8231ae66844fcf. Получено 04.10.2026.
  3. vLLM — ARM AArch64 CPU installation — revision 6f75cc7d5d1b5adfb399cbf79a8231ae66844fcf. Получено 04.10.2026.
  4. vLLM — supported models on CPU, Intel reference matrix — revision 6f75cc7d5d1b5adfb399cbf79a8231ae66844fcf. Получено 04.10.2026.
  5. vLLM — OpenAI-compatible serving endpoints — revision 6f75cc7d5d1b5adfb399cbf79a8231ae66844fcf. Получено 04.10.2026.
  6. vLLM — security and API key authentication limitations — revision 6f75cc7d5d1b5adfb399cbf79a8231ae66844fcf. Получено 04.10.2026.
  7. Qwen — Qwen3-1.7B model card and config — revision 70d244cc86ccca08cf5af4e1e306ecf908b1ad5e. Получено 04.10.2026.
  8. vLLM — Python environment setup for CPU installation — revision 6f75cc7d5d1b5adfb399cbf79a8231ae66844fcf. Получено 04.10.2026.