{/ Эта страница автоматически передается из навыков SKILL.md с помощью сайта/scripts/generate-skill-docs.py. Редактируйте исходный SKILL.md, а не эту страницу. /}
vLLM, Служба вывода, PagedAttention, Непрерывная пакетная обработка, Высокая пропускная способность, Производство, OpenAI API, Квантование, Тензорный параллелизм
Справочник: полный SKILL.md:::информация
Ниже приведено полное описание навыка, который Hermes загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навыки активны.
vLLM - высокопроизводительный LLM-сервис
Когда использовать
Используйте при развёртывании производства LLM API, оптимизации задержки/пропускной способности вывода или поддержки моделей с ограниченной памятью графического процессора. Поддерживает конечные точки, совместимые с OpenAI, квантизацией (GPTQ/AWQ/FP8) и тензорным параллелизмом.
Быстрый старт
vLLM достигает в 24 раза более высокой пропускной способности, чем стандартные преобразователи, благодаря PagedAttention (блочному КВ-кэшу) и непрерывному батчингу (сливамеш запроса предварительного заполнения/декодирования).
Выберите конфигурацию в зависимости от размера модели:
# Для моделей 7B-13B на одном GPU
vllmservemeta-llama/Llama-3-8B-Instruct\--gpu-memory-utilization0.9\--max-model-len8192\--port8000# Для моделей 30B-70B с тензорным параллелизмом
vllmservemeta-llama/Llama-2-70b-hf\--tensor-parallel-size4\--gpu-memory-utilization0.9\--quantizationawq\--port8000# Для production с кэшированием и метриками
vllmservemeta-llama/Llama-3-8B-Instruct\--gpu-memory-utilization0.9\--enable-prefix-caching\--enable-metrics\--metrics-port9090\--port8000\--host0.0.0.0
Шаг 2: Тестирование с ограниченным трафиком
Запустите нагрузочное тестирование перед производством:
# Установка инструмента нагрузочного тестирования
pipinstalllocust
# Создайте test_load.py с примерами запросов# Запустите: locust -f test_load.py --host http://localhost:8000
Проверьте TTFT (время до первого токена) < 500 мс и пропускная способность > 100 запросов/сек.
Шаг 3: Включение Диптихов
vLLM предоставляет метрики Prometheus на порту 9090:
curlhttp://localhost:9090/metrics|grepvllm
Ключевые метрики для Диптихов:
- vllm:time_to_first_token_секундs - Задержка
- vllm:num_requests_running - Активные запросы
- vllm:gpu_cache_usage_perc - Использование KV-кэша
Шаг 4: Развёртывание на производстве
Используйте Docker для согласованного развёртывания:
# Запуск vLLM в Docker
dockerrun--gpusall-p8000:8000\vllm/vllm-openai:latest\--modelmeta-llama/Llama-3-8B-Instruct\--gpu-memory-utilization0.9\--enable-prefix-caching
Шаг 5: Проверка показателей производительности
Убедитесь, что развёртывание соответствует требованиям:
- ТТФТ < 500 мс (для времени ожидания)
- Пропускная способность > целевого значения запроса/сек
- Использование графического процессора > 80%
- Нет ошибок OOM в логах
Рабочий процесс 2: Офлайн-пакетный инференс
Для обработки больших наборов данных без накладных расходов сервера.
# Загрузка промптов из файлаprompts=[]withopen("prompts.txt")asf:prompts=[line.strip()forlineinf]print(f"Загружено {len(prompts)} промптов")
Шаг 2: Настройка движка LLM
fromvllmimportLLM,SamplingParamsllm=LLM(model="meta-llama/Llama-3-8B-Instruct",tensor_parallel_size=2,# Использовать 2 GPUgpu_memory_utilization=0.9,max_model_len=4096)sampling=SamplingParams(temperature=0.7,top_p=0.95,max_tokens=512,stop=["</s>","\n\n"])
Шаг 3: Запуск пакетного вывода
Автоматический батчит vLLM для повышения эффективности:
# Обработка всех промптов одним вызовомoutputs=llm.generate(prompts,sampling)# vLLM обрабатывает батчинг внутри# Нет необходимости вручную разбивать промпты на части
Шаг 4: Обработка результатов
# Извлечение сгенерированного текстаresults=[]foroutputinoutputs:prompt=output.promptgenerated=output.outputs[0].textresults.append({"prompt":prompt,"generated":generated,"tokens":len(output.outputs[0].token_ids)})# Сохранение в файлimportjsonwithopen("results.jsonl","w")asf:forresultinresults:f.write(json.dumps(result)+"\n")print(f"Обработано {len(results)} промптов")
Рабочий процесс 3: Обслуживание квантизованных моделей
Размещение больших моделей в ограниченной памяти GPU.
Настройка квантизации:
- [ ] Шаг 1: Выбор метода квантизации
- [ ] Шаг 2: Поиск или создание квантизованной модели
- [ ] Шаг 3: Запуск с флагом квантизации
- [ ] Шаг 4: Проверка точности
Шаг 1: Выбор метода квантизации
AWQ: Лучше всего для моделей 70B, минимальная ошибка точности.
GPTQ: широкая поддержка моделей, хорошее сжатие.
FP8: самый быстрый на графическом процессоре H100.
Шаг 2: Поиск или создание квантизованной модели
Используйте предварительно квантованные модели HuggingFace:
# Поиск моделей AWQ# Пример: TheBloke/Llama-2-70B-AWQ
Шаг 3: Запуск с флагом квантизации
# Использование предварительно квантизованной модели
vllmserveTheBloke/Llama-2-70B-AWQ\--quantizationawq\--tensor-parallel-size1\--gpu-memory-utilization0.95
# Результат: модель 70B в ~40 ГБ VRAM
Шаг 4: Проверка точности
Убедитесь, что данные выходного дня соответствуют ожидаемому качеству:
# Сравнение ответов квантизованной и неквантизованной модели# Проверьте, что производительность на конкретной задаче не изменилась
Когда использовать против альтернатив
Используйте vLLM когда:
- Развёртывает производство LLM API (100+ запросов/сек)
- Обеспечивает конечные точки, совместимые с OpenAI.
- Ограниченная память графического процессора, но нужны большие модели.
- Многопользовательские приложения (чат-боты, ассистенты)
- Необходимо продемонстрировать задержку с высокой пропускной способностью.
Используйте альтернативы вместо:
- llama.cpp: запросы на ЦП/границу, однопользовательские.
- Трансформеры HuggingFace: Исследования, прототипирование, разовая генерация
- TensorRT-LLM: Только NVIDIA, нужна абсолютно максимальная производительность.
- Генерация текста-вывод: Уже в экосистеме HuggingFace