Сколько людей на самом деле может обслужить один GPU.
Машина, которая вмещает вашу модель, — не то же самое, что машина, которая обслуживает ваших пользователей. Веса — это пошлина, уплаченная один раз; всё, что остаётся после них, — весь ваш бюджет на обслуживание людей. Именно этот остаток — а не размер карты — определяет вашу вместимость, и он меняется намного быстрее, чем объём памяти.
Коротко
- Вместимость — это остаток, а не карта
- Llama 3.3 70B в 4-бит резервирует 40 GB, прежде чем обслужить хоть кого-то. Каждый следующий одновременный запрос стоит ещё 2.9 GB.
- Вот почему память окупается дважды
- На одной и той же карте переход от 48 GB к 240 GB увеличивает память в 5.0××, а число мест — в 35××. Веса уже оплачены.
- Худшая покупка в шортлисте
- NVIDIA L40S за $714 в месяц вмещает 2 одновременных запросов — $357.00 за место.
- Лучший вариант стоит дешевле
- 4 × NVIDIA L4 за $564 вмещает 19 — $29.68 за место, при более дешёвом инвойсе.
Коротко
Любое руководство, которое говорит вам, помещается ли модель, отвечает на вопрос об одном запросе. Продукт — это не один запрос. В тот момент, когда два человека одновременно используют ваш endpoint, машине нужна вторая копия диалога в памяти — а потом и третья, и сороковая, — тогда как сами веса хранятся ровно один раз.
Так что число, которое определяет, скольких людей вы можете обслужить, — это не размер карты. Это размер карты минус модель, делённый на то, во что обходится один диалог. Обе эти величины известны ещё до заказа, а значит, вместимость — одна из немногих вещей в машинном обучении, которую можно верно рассчитать на бумаге заранее.
Веса — это пошлина. Платится один раз, при входе, независимо от вашего трафика. Она не растёт вместе с числом пользователей и никогда не возвращается.
KV-кэш — это аренда. Платится за каждый одновременный запрос, пока этот запрос открыт, и пропорционально тому, как долго длится диалог.
Вместимость — это остаток, делённый на аренду. Именно поэтому машина с вдвое большим объёмом памяти очень часто обслуживает не вдвое, а в десять раз больше людей.
И почему самая дешёвая машина, в которую помещается модель, обычно оказывается самой невыгодной. Она помещается потому, что после весов у неё почти ничего не остаётся, а то немногое, что остаётся, — это единственное, за что вы на самом деле платите.
Всё, что ниже, использует ту же арифметику, что и конфигуратор, по тому же каталогу, в 4-бит при 8k контекста. Если сама формула памяти для вас в новинку, ей посвящено отдельное руководство — а эта страница о том, что с ней происходит, когда появляется больше одного человека.
Что остаётся после весов
Возьмите эталонную модель этого сайта и разместите её на узлах каждого размера, построенных на одной и той же карте. Тот же кремний, та же цена за карту, всё то же самое — меняется только объём памяти. Смотрите, как два последних столбца движутся с совершенно разной скоростью.
| Узел | Память | Остаток после весов | Параллельные запросы | В месяц |
|---|---|---|---|---|
| NVIDIA L4 | 24 GB | — | не вмещает её | $125 |
| 2 × NVIDIA L4 | 48 GB | 8 GB | 2 | $285 |
| 4 × NVIDIA L4 | 96 GB | 56 GB | 19 | $564 |
| 8 × NVIDIA L4 | 192 GB | 152 GB | 52 | $1,106 |
| 10 × NVIDIA L4 | 240 GB | 200 GB | 69 | $1,371 |
Первая строка — это весь урок целиком: карта, которая не может вместить даже веса, не обслуживает никого, и это не пограничный случай. В следующих строках память растёт равными шагами, а число мест — всё более крупными, потому что пошлина в 40 GB уплачена уже в первой строке и больше никогда не взимается.
seats = (memory − weights) ÷ cache_per_request. Для Llama 3.3 70B в 4-бит это 40 GB пошлины и 2.9 GB аренды за каждый открытый диалог. Сначала вычитайте, потом делите: поступить наоборот значит купить машину под демо и обнаружить нехватку уже в продакшене.
Во что на самом деле обходится один пользователь
Теперь те же модели, отсортированные так, как их сортирует покупатель: сначала самые дешёвые. Последний столбец — это месячная цена, делённая на число людей, которых машина может вместить одновременно, — единственный столбец, который честно сравнивает две машины, если вы строите что-то большее, чем демо.
Одно допущение, названное прямо, потому что оно меняет каждое число: каждое число мест дано для одного экземпляра модели, развёрнутого на весь узел, — именно это даёт флаг --tensor-parallel-size. Веса хранятся один раз, и каждая карта отдаёт свою оставшуюся память в общий пул диалогов. Если вместо этого запустить на одном узле две отдельные копии, пошлина будет уплачена дважды, а мест в сумме получится меньше.
| Узел | Память | В месяц | Параллельные запросы | На пользователя |
|---|---|---|---|---|
| 2 × NVIDIA L4 | 48 GB | $285 | 2 | $142.50 |
| NVIDIA RTX A6000 | 48 GB | $286 | 2 | $143.00 |
| 2 × NVIDIA RTX 4090 | 48 GB | $416 | 2 | $208.00 |
| 4 × NVIDIA L4 | 96 GB | $564 | 19 | $29.68 |
| 2 × NVIDIA RTX A6000 | 96 GB | $597 | 19 | $31.42 |
| 2 × NVIDIA RTX 5090 | 64 GB | $692 | 8 | $86.50 |
| NVIDIA L40S | 48 GB | $714 | 2 | $357.00 |
| 2 × NVIDIA A100 PCIe | 80 GB | $802 | 13 | $61.69 |
| 4 × NVIDIA RTX 4090 | 96 GB | $814 | 19 | $42.84 |
| NVIDIA A100 PCIe | 80 GB | $1,091 | 13 | $83.92 |
Сравните две выделенные цветом ячейки с их столбцом цены. NVIDIA L40S стоит $714 в месяц и вмещает 2; 4 × NVIDIA L4 стоит $564 — меньше денег — и вмещает 19. Это 10× мест за 0.79× инвойса, и именно дорогой вариант обычно остаётся в шортлисте, потому что именно в нём модель помещается на одной карте.
Если смотреть по всему каталогу, а не по первым десяти строкам, лучшая цена за место для этой модели — 8 × NVIDIA RTX A6000 за $2,239 в месяц: 119 одновременных запросов по $18.82 каждый. Это намного более крупный инвойс, чем всё, что было в шортлисте выше, и всё равно самый дешёвый способ разместить пользователя — и именно это решает, рассчитываете ли вы продукт или прототип.
Длина контекста — второй множитель
Всё сказанное выше предполагало 8k контекста. Это допущение значит больше, чем выбор машины. Кэш оплачивается не только за пользователя, но и за токен, поэтому один и тот же узел вмещает совершенно разное число людей — в зависимости от того, насколько длинным вы позволяете стать диалогу.
Одна машина, четыре модели, четыре длины контекста. Узел — 8 × NVIDIA L4 за $1,106 в месяц: самый дешёвый в нашем каталоге, который вмещает все четыре модели одновременно, так что каждое число ниже измерено относительно одного и того же объёма памяти.
| Модель | Кэш на токен | 4k | 8k | 32k | 128k |
|---|---|---|---|---|---|
| Llama 3.1 8B | 128 KiB | 325 | 162 | 40 | 10 |
| Qwen 3 32B | 256 KiB | 150 | 75 | 18 | 4 |
| Llama 3.3 70B | 320 KiB | 105 | 52 | 13 | 3 |
| Qwen 3 235B-A22B (MoE) | 188 KiB | 67 | 33 | 8 | 2 |
На одной и той же неизменной машине Llama 3.3 70B переходит с 105 одновременных пользователей на 3 — рост в 35×× — и всё это просто из-за числа, заданного в командной строке. Оборудование остаётся совершенно прежним.
Отсюда следуют две вещи. Первая: столбец контекста, на который стоит смотреть, — это тот, который вы реально обслуживаете, а не тот, что заявлен на карточке модели, — модель, которая поддерживает 128k, не обязывает вас резервировать все 128k. Вторая: объём кэша на токен сильно различается между моделями схожего размера, потому что его определяет архитектура внимания, а не число параметров; у самых крупных моделей из этой таблицы порой самый маленький кэш — и это, пожалуй, самый парадоксальный факт во всей этой теме.
Четыре способа отвоевать вместимость
В порядке убывания отношения пользы к затратам. Первый способ почти бесплатен и почти всегда остаётся неиспользованным.
--max-model-len равным вашему реальному потолку.| Модель | 16-битный кэш | 8-битный кэш | Прирост мест |
|---|---|---|---|
| Llama 3.1 8B | 162 | 325 | +163 |
| Qwen 3 32B | 75 | 150 | +75 |
| Llama 3.3 70B | 52 | 105 | +53 |
| Qwen 3 235B-A22B (MoE) | 33 | 67 | +34 |
Тот же узел, те же веса, те же деньги. Меняется только точность, в которой хранится кэш, — и это разница между машиной, которая обслуживает команду, и машиной, которая обслуживает продукт.
Места — это ещё не обслуживание
Одна поправка перед тем, как вы начнёте что-то рассчитывать по цифрам выше, — и именно она не даёт этой странице соврать. Здесь везде считается, сколько диалогов машина может держать открытыми. Это не обещание, что каждый из них получает быстрый ответ.
Память и пропускная способность — это два разных потолка. На 8 × NVIDIA L4 Llama 3.3 70B вмещает 52 одновременных диалогов, а один пользователь в одиночку на этой машине получает примерно 17 токенов в секунду. Заполнение всех 52 мест не даёт каждому по 17 токенов в секунду — генерация делит одну и ту же пропускную способность памяти, поэтому суммарная скорость растёт вместе с батчингом, а скорость на пользователя падает. Потолок пропускной способности достигается заметно раньше потолка памяти.
Хорошая новость в том, что оба потолка обычно движутся вместе: машины с большим остатком памяти после весов — почти всегда те же машины, у которых больше и пропускная способность. Выбор по запасу памяти редко стоит вам скорости. Настройка стека обслуживания на выбранной машине — отдельное руководство, и именно в его флагах эти цифры превращаются в реальность.
Выбор под собственное число пользователей
По порядку. Остановитесь на первой строке, которая описывает вашу нагрузку.
- Один запрос за раз. Пакетные задачи, внутренний инструмент, один разработчик. Покупайте самую дешёвую машину, которая вмещает модель на одной карте, и на этом чтение можно закончить — каждый столбец этой страницы отвечает на вопрос, которого у вас нет.
- Горстка людей, изредка. Инструмент для команды, продукт на раннем этапе. Считайте пиковое число одновременных запросов, а не число пользователей: сто зарегистрированных пользователей редко означают больше горстки одновременных. Затем берите самую дешёвую машину, чьё число мест с запасом превышает этот пик.
- Реальный продукт с реальным трафиком. Сортируйте каталог по цене за место, а не по цене, ограничьте контекст тем, что вы реально обслуживаете, переведите кэш на 8 бит — и будьте готовы, что победителем окажется машина, которую вы не включили бы в шортлист по одной только месячной цене.
- Длинные документы или длинные диалоги. Сначала смотрите таблицу контекста, потом таблицу машин. Начиная с 32k кэш преобладает настолько, что выбор модели значит меньше, чем архитектура внимания, лежащая в её основе.
- Скачкообразный, непредсказуемый трафик. Рассчитывайте машину на пик, который нельзя провалить, потому что кэш нельзя одолжить, когда он заканчивается, — запрос, которому некуда деть свой диалог, ждёт в очереди. Если пик редкий и огромный, потокенный API для избытка нагрузки обходится дешевле, чем машина, рассчитанная на всплеск, который случается дважды в месяц.
На какой бы строке вы ни остановились, прежде всего сделайте вычитание: возьмите объём памяти машины, уберите веса вашей модели в той точности, в которой будете её обслуживать, и посмотрите, что осталось. Именно этот остаток вы и арендуете. Конфигуратор применяет ту же арифметику к каждому узлу, который мы эксплуатируем, а во что обходится месяц аренды разобрано отдельно.
Подбирайте машину по пользователям, а не по модели.
Конфигуратор включает каждый узел, который мы сдаём в аренду, использует ту же арифметику памяти, что и эта страница, и показывает, что остаётся после загрузки вашей модели, — ещё до того, как вы за что-либо заплатите.
Другие руководства
- Стоимость · 6 мин
Когда помесячная аренда выгоднее почасовой
Точка безубыточности на реальных цифрах, три статьи расходов, которые почасовая цена скрывает до счёта, и ловушка простоя, утраивающая оценку.
Читать руководство - Стоимость · 9 мин
Self-hosting против API с оплатой за токен
Точка безубыточности между оплатой API за токен и арендой GPU на наших ценах и пропускной способности — и четыре момента, которые арифметика не учитывает.
Читать руководство - Практика · 11 мин
Llama 3.3 70B на одном узле
От доставленной машины до OpenAI-совместимого эндпоинта: флаги, которые действительно важны, и два флага, которые незаметно вдвое снижают пропускную способность.
Читать руководство