[{"data":1,"prerenderedAt":619},["ShallowReactive",2],{"guide-\u002Fguides\u002Fmnogopotochnyy-inference":3},{"id":4,"title":5,"body":6,"checkedAt":609,"date":610,"description":611,"extension":612,"meta":613,"navigation":614,"path":615,"seo":616,"stem":617,"__hash__":618},"guides\u002Fguides\u002Fmnogopotochnyy-inference.md","Многопоточный inference GPU: batch и throughput",{"type":7,"value":8,"toc":595},"minimark",[9,14,23,28,31,53,133,144,148,156,186,189,193,285,299,303,306,329,332,336,339,411,414,418,425,436,439,443,450,461,464,468,471,503,507,561,565],[10,11,13],"h1",{"id":12},"многопоточный-inference-gpu","Многопоточный inference GPU",[15,16,17,18,22],"p",{},"Когда модель обслуживает не одного пользователя, а поток запросов (API, чат-бот, батч-обработка датасета), метрика смещается: важна не latency одного запроса, а ",[19,20,21],"strong",{},"throughput"," — токенов\u002Fсекунду или запросов\u002Fминуту. Под это нужны другие карты и другой софт. Правило простое: throughput ≈ batch size × tokens\u002Fsecond на один запрос, и главные рычаги — большой HBM на карте и батчинг-движок.",[24,25,27],"h2",{"id":26},"batch-size-и-vram","Batch size и VRAM",[15,29,30],{},"При batch-инференсе GPU обрабатывает несколько запросов одновременно, переиспользуя веса модели. Память растёт так:",[32,33,34,41,47],"ul",{},[35,36,37,40],"li",{},[19,38,39],{},"Веса модели"," — фиксированы (например, 13 ГБ для 7B в FP16).",[35,42,43,46],{},[19,44,45],{},"KV-cache"," — растёт с числом одновременных запросов и длиной контекста. Это главный потребитель памяти. Для 7B при batch=32 и контексте 4k — ещё 20–40 ГБ поверх весов.",[35,48,49,52],{},[19,50,51],{},"Активации"," — растут линейно с batch, обычно меньше KV-cache.",[54,55,56,75],"table",{},[57,58,59],"thead",{},[60,61,62,66,69,72],"tr",{},[63,64,65],"th",{},"Batch size",[63,67,68],{},"7B FP16, ctx 4k",[63,70,71],{},"13B FP16, ctx 4k",[63,73,74],{},"70B FP16, ctx 4k",[76,77,78,93,107,121],"tbody",{},[60,79,80,84,87,90],{},[81,82,83],"td",{},"1 (low-latency)",[81,85,86],{},"16 ГБ",[81,88,89],{},"28 ГБ",[81,91,92],{},"140 ГБ (нужно квантование)",[60,94,95,98,101,104],{},[81,96,97],{},"8",[81,99,100],{},"24 ГБ",[81,102,103],{},"48 ГБ",[81,105,106],{},"multi-GPU",[60,108,109,112,115,118],{},[81,110,111],{},"32",[81,113,114],{},"40 ГБ",[81,116,117],{},"80 ГБ",[81,119,120],{},"8× H100 80GB",[60,122,123,126,128,130],{},[81,124,125],{},"64+",[81,127,117],{},[81,129,106],{},[81,131,132],{},"кластер",[134,135,138],"callout",{"color":136,"icon":137},"primary","i-lucide-info",[15,139,140,141,143],{},"Главный потребитель VRAM при batch-инференсе — ",[19,142,45],{},", а не веса. Поэтому для throughput критичен большой HBM на карте: A100\u002FH100 80GB держат в 4× больший batch, чем A100 40GB, при той же модели. KV-cache можно урезать через PagedAttention, GQA и квантование cache в FP8\u002FINT8.",[24,145,147],{"id":146},"инструменты-для-throughput","Инструменты для throughput",[15,149,150,151,155],{},"Простой ",[152,153,154],"code",{},"transformers.generate()"," не батчит эффективно и не переиспользует память. Для production-инференса используют специализированные движки:",[32,157,158,164,170,176],{},[35,159,160,163],{},[19,161,162],{},"vLLM"," — PagedAttention, непрерывный (continuous) batching, до 10× к vanilla-циклу. Стандарт для LLM-сервинга, OpenAI-совместимый API.",[35,165,166,169],{},[19,167,168],{},"TGI"," (Text Generation Inference, от HuggingFace) — продакшн-сервер с динамическим batching, стримингом, очередью.",[35,171,172,175],{},[19,173,174],{},"TensorRT-LLM"," — максимально быстрая инференс-оптимизация под конкретную модель, требует сборки движка под фиксированную конфигурацию. Долгая настройка, максимальная скорость.",[35,177,178,181,182,185],{},[19,179,180],{},"llama.cpp"," с континуальным батчингом (",[152,183,184],{},"--cont-batching",") — для квантованных моделей (GGUF Q4\u002FQ5\u002FQ8), дешевле по VRAM, ниже overhead, хорошо на consumer-картах.",[15,187,188],{},"Эти движки поднимают throughput на той же карте в 3–10 раз — это почти всегда дешевле, чем покупать больше GPU. Сначала тюньте движок, потом масштабируйте железо.",[24,190,192],{"id":191},"consumer-vs-дата-центровые-карты","Consumer vs дата-центровые карты",[54,194,195,208],{},[57,196,197],{},[60,198,199,202,205],{},[63,200,201],{},"Параметр",[63,203,204],{},"RTX 4090 (24 ГБ)",[63,206,207],{},"A100 \u002F H100 (80 ГБ)",[76,209,210,220,231,242,252,263,274],{},[60,211,212,215,218],{},[81,213,214],{},"Batch=1 latency",[81,216,217],{},"Отличная",[81,219,217],{},[60,221,222,225,228],{},[81,223,224],{},"Max batch (7B, ctx 4k)",[81,226,227],{},"4–8",[81,229,230],{},"32+",[60,232,233,236,239],{},[81,234,235],{},"Пропускная способность (токенов\u002Fс)",[81,237,238],{},"Низкая",[81,240,241],{},"Высокая",[60,243,244,247,250],{},[81,245,246],{},"Драйвер в shared-пуле",[81,248,249],{},"Доступна",[81,251,249],{},[60,253,254,257,260],{},[81,255,256],{},"Цена (₽\u002Fчас)",[81,258,259],{},"от 83",[81,261,262],{},"212–1678",[60,264,265,268,271],{},[81,266,267],{},"Время работы 24\u002F7",[81,269,270],{},"Consumer-карты деградируют",[81,272,273],{},"Дизайнены для 24\u002F7",[60,275,276,279,282],{},[81,277,278],{},"Подходит для",[81,280,281],{},"Low-latency, dev, одиночные запросы",[81,283,284],{},"Production API, батчи",[134,286,288],{"color":136,"icon":287},"i-lucide-lightbulb",[15,289,290,291,294,295,298],{},"Правило: ",[19,292,293],{},"4090 для batch=1 и low-latency"," (быстрый ответ одному пользователю, dev\u002Fтест, стриминг-ассистент). ",[19,296,297],{},"A100\u002FH100 — для throughput"," (десятки одновременных запросов, батч-обработка датасетов). Золотой середины нет — упираетесь либо в latency, либо в throughput.",[24,300,302],{"id":301},"когда-нужен-multi-gpu","Когда нужен multi-GPU",[15,304,305],{},"Одной карты хватает, пока модель + KV-cache под целевой batch влезают в VRAM. Дальше — multi-GPU:",[32,307,308,314,320],{},[35,309,310,313],{},[19,311,312],{},"Tensor parallelism"," (vLLM, TGI, TensorRT-LLM) — модель режется по слоям\u002Fattention-головам на 2–8 GPU, нужен NVLink или NVSwitch с малой задержкой. Линейное ускорение на 2–4 GPU, на 8 уже с overhead.",[35,315,316,319],{},[19,317,318],{},"Pipeline parallelism"," — для очень больших моделей (70B+), выше latency, реже для inference.",[35,321,322,324,325,328],{},[19,323,120],{}," в HGX\u002FDGX — стандарт для обслуживания 70B-моделей в проде. Это ",[19,326,327],{},"кластерные конфигурации, цена и наличие — sales-led"," (через менеджера Selectel\u002FHOSTKEY), не в общем пуле по часам.",[15,330,331],{},"Для 7B и 13B моделей multi-GPU почти никогда не нужен — одна A100 80GB закрывает типичный продакшн с batch 32. Для 70B в FP16 tensor parallelism 8-way обязателен, либо квантование в 4-бит + 2–4 GPU.",[24,333,335],{"id":334},"метрики-что-мерить","Метрики: что мерить",[15,337,338],{},"В многопоточном инференсе есть три разные метрики, их нельзя путать:",[54,340,341,354],{},[57,342,343],{},[60,344,345,348,351],{},[63,346,347],{},"Метрика",[63,349,350],{},"Что значит",[63,352,353],{},"Когда важна",[76,355,356,370,384,398],{},[60,357,358,364,367],{},[81,359,360,363],{},[19,361,362],{},"TTFT"," (Time To First Token)",[81,365,366],{},"Задержка до первого токена",[81,368,369],{},"Чат-боты, стриминг-ассистенты",[60,371,372,378,381],{},[81,373,374,377],{},[19,375,376],{},"TPOT"," (Time Per Output Token)",[81,379,380],{},"Задержка генерации каждого следующего токена",[81,382,383],{},"Пользовательский опыт стриминга",[60,385,386,392,395],{},[81,387,388,391],{},[19,389,390],{},"Throughput"," (токенов\u002Fсек)",[81,393,394],{},"Общая производительность системы",[81,396,397],{},"Batch-обработка датасетов, массовый API",[60,399,400,405,408],{},[81,401,402],{},[19,403,404],{},"e2e latency",[81,406,407],{},"Время на полный ответ",[81,409,410],{},"Synchronous-запросы (RAG, summarization)",[15,412,413],{},"Часто throughput и latency в конфликте: большой batch повышает throughput, но удлиняет TTFT для каждого запроса в очереди. Подбирайте batch под SLA вашего продукта.",[24,415,417],{"id":416},"continuous-batching-как-работает","Continuous batching: как работает",[15,419,420,421,424],{},"Классический статический batching ждёт, пока наберётся N запросов, потом гоняет их вместе — запросы в очереди простаивают. ",[19,422,423],{},"Continuous batching"," (он же iteration-level \u002F dynamic batching) делает пересборку батча на каждом шаге декодера:",[32,426,427,430,433],{},[35,428,429],{},"Когда один запрос закончился, его слот тут же занимает новый запрос из очереди.",[35,431,432],{},"Никто не ждёт завершения самого длинного запроса в батче.",[35,434,435],{},"KV-cache переиспользуется между шагами без перерасчёта.",[15,437,438],{},"vLLM и TGI реализуют именно continuous batching. Это даёт основной прирост throughput (3–10×) относительно naive-подхода. Без него любая карта работает в 5–10 раз ниже потенциала.",[24,440,442],{"id":441},"pagedattention-и-kv-cache","PagedAttention и KV-cache",[15,444,445,446,449],{},"KV-cache — главный пожиратель памяти, и без управления он фрагментируется: под каждый запрос резервируется блок «с запасом», часть простаивает. ",[19,447,448],{},"PagedAttention"," (изобретение vLLM) решает это:",[32,451,452,455,458],{},[35,453,454],{},"KV-cache разбивается на фиксированные блоки (как страницы памяти в ОС).",[35,456,457],{},"Блоки выдаются по мере роста последовательности, без резервирования.",[35,459,460],{},"Неактивные последовательности (waiting) можно выгружать на CPU и возвращать.",[15,462,463],{},"Эффект: на ту же VRAM помещается в 2–4 раза больше одновременных запросов. Это эквивалентно бесплатному апгрейду карты — обязательно включайте в продакшене.",[24,465,467],{"id":466},"оптимизация-сначала-софт-потом-железо","Оптимизация: сначала софт, потом железо",[15,469,470],{},"Дешевле сократить KV-cache и батчить эффективнее, чем купить H100:",[472,473,474,481,488,494,500],"ol",{},[35,475,476,477,480],{},"Используйте ",[19,478,479],{},"vLLM с PagedAttention"," — сократит фрагментацию KV-cache в 2–4 раза.",[35,482,483,484,487],{},"Включите ",[19,485,486],{},"GQA","-вариант модели (Llama 3, Qwen2) — меньше attention-голов, меньше cache.",[35,489,490,493],{},[19,491,492],{},"Квантуйте веса"," в AWQ\u002FGPTQ (4-бит) или FP8 — модель займёт в 2–4 раза меньше VRAM.",[35,495,496,499],{},[19,497,498],{},"Квантуйте KV-cache"," в FP8\u002FINT8 — дополнительное сокращение в 2 раза.",[35,501,502],{},"Только после этого — больше GPU или multi-GPU.",[24,504,506],{"id":505},"практические-шаги","Практические шаги",[472,508,509,512,515,524,537,548,551],{},[35,510,511],{},"Оцените нагрузку: запросов\u002Fсек, средний контекст, нужна ли низкая latency.",[35,513,514],{},"Считайте требуемый VRAM: веса + KV-cache под целевой batch.",[35,516,517,518,523],{},"Для batch=1 и dev — ",[519,520,522],"a",{"href":521},"\u002Fgpu\u002Frtx4090","RTX 4090"," от 83 ₽\u002Fчас.",[35,525,526,527,531,532,536],{},"Для throughput и production — ",[519,528,530],{"href":529},"\u002Fgpu\u002Fa100-80","A100 80GB"," или ",[519,533,535],{"href":534},"\u002Fgpu\u002Fh100-80","H100 80GB",".",[35,538,539,540,531,544,536],{},"Для 70B в проде — конфигурации 8× H100, ищите через sales ",[519,541,543],{"href":542},"\u002Fhosting\u002Fselectel","Selectel",[519,545,547],{"href":546},"\u002Fhosting\u002Fhostkey","HOSTKEY",[35,549,550],{},"Сначала тюньте движок (vLLM\u002FTGI) — это дешевле, чем больше GPU.",[35,552,553,554,560],{},"Подпишитесь на ",[519,555,559],{"href":556,"rel":557},"https:\u002F\u002Ft.me\u002Fgpuradar_bot",[558],"nofollow","алерт в Telegram"," — сообщим о появлении A100\u002FH100 по нижней цене.",[24,562,564],{"id":563},"смежные-гайды","Смежные гайды",[32,566,567,574,581,588],{},[35,568,569,573],{},[519,570,572],{"href":571},"\u002Fguides\u002Farenda-a100","Аренда A100"," — основная карта для throughput",[35,575,576,580],{},[519,577,579],{"href":578},"\u002Fguides\u002Farenda-h100","Аренда H100"," — новейшая, быстрее A100",[35,582,583,587],{},[519,584,586],{"href":585},"\u002Fguides\u002Fgpu-dlya-llm-inference","GPU для LLM-инференса"," — детально по LLM-сервисингу",[35,589,590,594],{},[519,591,593],{"href":592},"\u002Fguides\u002Fgpu-dlya-obucheniya-modeley","GPU для обучения моделей"," — если нужна не подача, а дообучение",{"title":596,"searchDepth":597,"depth":597,"links":598},"",2,[599,600,601,602,603,604,605,606,607,608],{"id":26,"depth":597,"text":27},{"id":146,"depth":597,"text":147},{"id":191,"depth":597,"text":192},{"id":301,"depth":597,"text":302},{"id":334,"depth":597,"text":335},{"id":416,"depth":597,"text":417},{"id":441,"depth":597,"text":442},{"id":466,"depth":597,"text":467},{"id":505,"depth":597,"text":506},{"id":563,"depth":597,"text":564},null,"2026-07-09","Какую видеокарту арендовать для высоконагруженного инференса. Batch size и VRAM, vLLM и TGI для throughput, когда multi-GPU, consumer vs дата-центровые карты.","md",{},true,"\u002Fguides\u002Fmnogopotochnyy-inference",{"title":5,"description":611},"guides\u002Fmnogopotochnyy-inference","GR4khvFS7NbFhlkua7yl-r9_I0hhS1fYEZKqdsbVe5Q",1783633714398]