
Я устал писать одноразовые скрипты для бенчмарков LLM и собрал харнесс, который сам считает Pareto-front
Happynood 9 минут назад Я устал писать одноразовые скрипты для бенчмарков LLM и собрал харнесс, который сам считает Pareto-front Средний 9 мин 151 Машинное обучение * Python * Open source * Высоконагруженные системы *...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Значимый прорыв формирует отрасль ИИ: Happynood 9 минут назад Я устал писать одноразовые скрипты для бенчмарков LLM и собрал харнесс, который сам считает Pareto-front Средний 9 мин 151 Машинное обучение * Python * Open source * Высоконагруженные системы * DevOps * Туториал LLM inference benchmarkС чего все началосьУ меня была вполне приземленная задача: понять, на каком бэкенде гонять одну и ту же открытую модель — на vLLM, llama. cpp, ONNX Runtime или просто на transformers. Звучит как вопрос на пять минут, пока ты не начинаешь честно мерить.
Проблема в том, что почти все готовые бенчмарки меряют не то, что нужно на практике. А мне нужно было держать в голове сразу четыре оси: p95-latency, throughput (tok/s), пиковый VRAM и то, что модель вообще не сошла с ума под нагрузкой. И главный вопрос звучал так: какая конфигурация влезает в мой бюджет по видеопамяти и при этом держит p95 ниже порога?
Технические детали
Ответа на него не давал никто, поэтому я в очередной раз открывал ноутбук и писал bench_v3_final_FINAL. Когда таких скриптов накопилось штук пять, и каждый мерил по-своему (а значит, числа между собой сравнивать было нельзя), я сел писать нормальный харнесс. Так появился llm-inference-benchmark.
Что это в итоге за тулзаЕсли совсем коротко — это воспроизводимый харнесс для экспериментов с инференсом. Ты описываешь эксперимент в YAML, он гоняет одну и ту же нагрузку через разные бэкенды и конфиги, складывает результаты в CSV + JSON-манифест, а потом сам говорит, какая конфигурация оптимальна при заданных ограничениях. Сверху прикручен браузерный дашборд, чтобы не втыкать в голый CSV.
Кому это нужно:тем, кто выбирает бэкенд/квантизацию под конкретное железо;тем, кому нужна воспроизводимость — чтобы через месяц можно было доказать, откуда взялась цифра;тем, кто хочет CI-гейт на регрессии инференса (об этом ниже). Бэкенды, которые поддерживаются прямо сейчас (v1. 3):БэкендЧем хорошmockдетерминированный, для CI — модель не нужна вообщеtransformersAutoModelForCausalLM от HF, CUDAllama-cppGGUF-квантизация, pre-built CUDA-wheel, без nvccopenaiлюбой сервер с /v1/chat/completions (Ollama, LM Studio, vLLM)onnxONNX Runtime через Optimum, INT8/FP16vllmhigh-throughput движок, Linux onlyДальше — самое интересное, что под капотом.
Отраслевые последствия
Под капотом: YAML, Run Matrix и SweepОдин эксперимент = один YAMLБазовая единица — конфиг одного прогона. Никакой магии, просто декларация того, что мы меряем:# configs/llama-cpp-gpu. yaml backend: llama-cpp model: ~/models/Llama-3.
2-3B-Instruct-Q4_K_M. gguf requests: 20 warmup_requests: 2 prompts_file: data/prompts/smoke. txt repeats: 3 # медиана ± std по 3 прогонам llama_cpp: n_ctx: 2048 n_gpu_layers: 99 # 99 = выгрузить все слои на GPU; 0 = только CPU max_tokens: 50 temperature: 0.
0 # greedy, детерминированноЗапуск:uv run llm-bench --config configs/llama-cpp-gpu. yaml --output results/run. csvЛюбое поле можно переопределить из CLI, не трогая YAML — удобно, когда хочется быстро дернуть один параметр:uv run llm-bench --config configs/llama-cpp-gpu.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





