Два подхода к инференсу: лошади и гепарды
Представьте себе: у вас есть сервер с четырьмя H100. Нужно обработать тысячу запросов в секунду. Вариантов два — использовать проверенный vLLM с его системой PagedAttention или попробовать новый SimpleLLM с обещанием втрое большей пропускной способности. Выбор кажется очевидным, пока не посмотришь на цифры латентности.
SimpleLLM не пытается заменить vLLM. Он решает другую задачу — максимальную пропускную способность в ущерб индивидуальной скорости ответа. Если ваше приложение терпит задержки в 2-3 секунды, но требует обрабатывать сотни запросов параллельно — это ваш выбор.
Что такое SimpleLLM и почему он быстрее
SimpleLLM — это минималистичный инференс-движок на Python, который делает одну вещь: агрессивный батчинг. В то время как vLLM оптимизирован для низкой латентности и эффективного использования памяти через PagedAttention, SimpleLLM ждет, пока не наберется достаточно запросов, и обрабатывает их одним махом.
Цифры, которые заставят задуматься
Тесты на GPT-OSS-120B с 4xH100 показывают интересную картину:
| Метрика | SimpleLLM | vLLM | Разница |
|---|---|---|---|
| Запросов в секунду (batch=64) | 18.7 | 6.2 | +202% |
| Латентность (p95) | 3.4 сек | 0.8 сек | +325% |
| Использование GPU | 98% | 76% | +22% |
| Память на модель | 210 ГБ | 195 ГБ | +15 ГБ |
SimpleLLM выжимает из железа все до последнего процента. Но цена — время ожидания. Если вашему пользователю нужно получить ответ за секунду, vLLM остается королем. Если же вы обрабатываете очередь из тысяч документов — SimpleLLM сделает это втрое быстрее.
Когда vLLM все еще лучше
Не спешите переписывать все свои VLM-бэкенды на SimpleLLM. Есть ситуации, где vLLM не имеет альтернатив:
- Интерактивные чат-боты — пользователи не будут ждать 3 секунды на ответ
- Сложные цепочки вызовов — когда каждый следующий запрос зависит от предыдущего
- Ограниченная память — vLLM экономичнее благодаря PagedAttention
- Поддержка большего количества моделей — vLLM работает практически со всем, что есть на Hugging Face
Запускаем GPT-OSS-120B на SimpleLLM
Хватит теории. Давайте запустим эту махину. GPT-OSS-120B — один из самых больших открытых моделей, и она идеально подходит для тестов на пропускную способность.
1 Подготовка окружения
Убедитесь, что у вас есть минимум 4xH100 или 8xA100 с 80 ГБ памяти. Меньше — не взлетит. GPT-OSS-120B в полной точности требует около 240 ГБ GPU-памяти.
Если у вас нет такого железа, но хочется потестировать — используйте GPT-OSS-120B в 4-битном квантовании. Она займет около 60 ГБ и будет работать на одной H100. Правда, качество немного просядет, но для тестов производительности сойдет.
2 Установка SimpleLLM
Клонируем репозиторий и ставим зависимости. Все стандартно, но есть нюанс — нужна последняя версия PyTorch с поддержкой CUDA 12.
3 Конфигурация для максимума throughput
Вот где начинается магия. В конфиге SimpleLLM выставляем:
- batch_size: 64 (максимум, который влезет в память)
- wait_timeout: 100 мс (сколько ждать набора батча)
- max_tokens: 512 (ограничение длины ответа)
- use_flash_attention: true (обязательно!)
Последний пункт критически важен. Flash Attention ускоряет обработку в 2-3 раза для больших батчей.
4 Загрузка модели
Тут все просто — указываем путь к GPT-OSS-120B. Если модель еще не скачана, SimpleLLM сам загрузит ее с Hugging Face. Только убедитесь, что на диске есть 250 ГБ свободного места.
Не пытайтесь запустить GPT-OSS-120B на меньшем железе, чем указано в требованиях. Модель не просто большая — она огромная. Для сравнения, Llama 3.1 70B кажется компактной рядом с ней.
А что с альтернативами?
SimpleLLM — не единственный игрок в нише high-throughput. Есть TGI от Hugging Face, есть Text Generation Inference, есть даже кастомные решения на Triton. Но у SimpleLLM есть два преимущества:
- Простота. Кодовая база — 1200 строк Python. Разобраться можно за вечер.
- Специализация. Он не пытается быть всем для всех. Только максимальный throughput.
Если же вам нужна универсальность и поддержка десятков моделей — смотрите в сторону vLLM или llama.cpp для специфических задач.
Кому подойдет SimpleLLM
Ответ прост: тем, кто перерабатывает тонны текста и не смотрит на часы. Конкретные сценарии:
- Массовая генерация контента для SEO
- Пакетный перевод документов (вспомните наш разбор локальных LLM для перевода)
- Создание синтетических датасетов для дообучения
- Обработка логов и аналитика в реальном времени
Если же ваша задача — общение с пользователем в реальном времени, SimpleLLM убьет UX своими задержками. Тут лучше использовать vLLM или даже маленькие модели для ноутбуков.
Подводные камни, о которых молчат
SimpleLLM — не серебряная пуля. Как и любая специализированная система, он имеет свои ограничения:
| Проблема | Решение | Стоимость |
|---|---|---|
| Высокая латентность | Уменьшить batch_size | Падение throughput на 40-60% |
| Потребление памяти | Использовать квантование | Потеря качества генерации |
| Ограниченная поддержка моделей | Допиливать самостоятельно | Время и нервы |
| Нет streaming ответов | Использовать vLLM | Отказ от SimpleLLM |
Самая большая проблема — это баланс. Хотите максимальный throughput? Получите высокую латентность. Хотите быстрые ответы? Прощайтесь с эффективностью использования GPU.
Что будет дальше
SimpleLLM — это симптом. Симптом того, что индустрия разделяется на два лагеря: low-latency системы для интерактивных приложений и high-throughput системы для пакетной обработки.
Следующий шаг — гибридные решения, которые будут динамически переключаться между режимами в зависимости от нагрузки. Представьте: днем система работает в low-latency режиме для живых пользователей, ночью переключается на high-throughput для фоновых задач.
Пока же приходится выбирать. И если ваш выбор — обработать миллион документов за выходные, а не за неделю, SimpleLLM с GPT-OSS-120B даст вам это преимущество. Ценой в три секунды ожидания на запрос.
Главное — не попасть в ловушку оптимизации. LLM — не серебряная пуля для всех задач. Иногда проще арендовать больше железа, чем месяцами оптимизировать код.