Загрузка урока...
В мире продакшена «голый» PyTorch — это непозволительная роскошь. Если вы просто загружаете модель и вызываете model.generate(), вы используете ресурсы GPU крайне неэффективно.
Ваша задача — заставить видеокарту работать на пределе её возможностей, минимизируя время ожидания пользователя (latency) и максимизируя количество запросов в секунду (throughput).
Самая большая проблема при работе с LLM — это KV-кэш. Во время генерации текста модель сохраняет промежуточные вычисления для каждого токена. В обычном режиме эта память выделяется огромными статичными блоками, 60–80% которых пустуют, но «забронированы».
vLLM решает это с помощью технологии PagedAttention. Она разбивает память на маленькие «страницы» (как в операционных системах) и выделяет их динамически только тогда, когда они реально нужны.
Результат:
Возможность обрабатывать в 5–10 раз больше параллельных запросов на той же видеокарте.
Почти нулевая фрагментация памяти.
Веса модели в стандартном формате FP16 занимают много места. Квантование переводит их в форматы с меньшей точностью: INT8, FP8 или даже 4-bit (NF4/GPTQ).
FP8 (доступно на H100): Дает ускорение до 2 раз практически без потери точности.
4-bit (AWQ/GPTQ): Позволяет запустить модель, которой нужно 40 ГБ VRAM, на карте с 12–16 ГБ. Это «золотой стандарт» для экономии на железе.
Если vLLM — это про умное распределение памяти, то TensorRT — это про глубокую оптимизацию математики под конкретный чип NVIDIA. Он переписывает граф вычислений нейросети, объединяя слои и выбирая наиболее быстрые ядра для каждой операции.
Когда использовать TensorRT-LLM?
Когда у вас стабильный стек (например, Llama 3) и вам нужно выжать абсолютный максимум скорости на серверных картах (A100/H100).
Запуск модели через vLLM превращает её в высокопроизводительный API-сервер за одну команду.
Установка:
pip install vllm
Команда запуска (пример для Llama 3):
Bash
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct \
--tensor-parallel-size 1 \
--max-model-len 4096 \
--gpu-memory-utilization 0.9
--tensor-parallel-size: Количество GPU, между которыми будет разделена модель.
--gpu-memory-utilization: Какой процент памяти отдать под KV-кэш (чем выше, тем больше параллельных юзеров).
Это метод «предсказания будущего». Мы запускаем маленькую, очень быструю модель (например, 1B параметров), чтобы она набросала черновик ответа, а большая модель (например, 70B) лишь проверяет его. Поскольку проверять легче, чем генерировать, общая скорость работы системы возрастает в 2–3 раза.
Посчитайте: сколько памяти займет модель 70B в формате FP16 (2 байта на параметр) и сколько она будет весить после квантования в 4-bit (0.5 байта на параметр)?
Выберите инструмент: если вам нужно быстро развернуть чат-бот для 1000 сотрудников с минимальными усилиями по настройке, что вы выберете — TensorRT или vLLM?
vLLM — лучший выбор для масштабирования LLM по количеству пользователей.
Квантование — способ втиснуть «слона в посудную лавку» (тяжелую модель в дешевую карту).
Оптимизация инференса экономит деньги эффективнее, чем покупка новых GPU.
В этом материале нет файлов для просмотра.