Локальная ИИ-инфраструктура
Пропускная способность памяти и пределы скорости
Какова максимальная скорость decode этой модели на этом GPU?
Узнайте, почему скорость decode у LLM ограничена пропускной способностью памяти, а не вычислениями, сравните GPU для одной и той же конфигурации и сопоставьте измерение с пределом.
1 · Модель
Qwen3-8B
Qwen
Карточка модели на Hugging Face(откроется в новой вкладке)config.json(откроется в новой вкладке)
- Параметры
- 8,19 млрд
- Слои
- 36
- Головы
- 32 для запросов, 8 KV
- Размерность головы
- 128
- Максимальный контекст
- 40 960 токенов
- KV cache на токен, 16 бит
- 147,46 KB/token
- Скрытая размерность
- 4 096
- Словарь
- 151 936
Значения прочитаны из config.json на Hugging Face 30 октября 2026 г..
Эти значения получены с Hugging Face и не редактируются. Чтобы изменить их, выберите «Изменить значения».
2 · Точность
Сколько бит занимает каждый параметр.
›Опубликованные квантизации
Только для квантизованных форматов.
Задается отдельно от весов. FP8 вдвое сокращает KV cache.
3 · Рабочая нагрузка
Токенов на последовательность: промпт и сгенерированный текст вместе.
Запросы, которые обрабатываются одновременно, то есть батч.
4 · Оборудование
RTX PRO 6000 Blackwell Server Edition
NVIDIA · Blackwell
Память
96 GB
GDDR7 · учтено как 96 GiB
Пропускная способность памяти
1 597 GB/s
Макс. мощность
300 to 600 W
Настраивается.
Столбцы сравнивают каждое значение с самым большим GPU в каталоге.
- NVLink
- Нет
- Экземпляры MIG
- 4
- Группа NVLink
- Нет, только PCIe
- GPU на сервер
- до 8
Как GPU встраивается в серверы
- The Server Edition lists no NVLink. NVIDIA-Certified RTX PRO servers hold up to 8 GPUs. NVIDIA RTX PRO 6000 Blackwell Server Edition(откроется в новой вкладке)
Деление этого GPU
MIG
Делится на срезы (памяти: 4, вычислений: 4), до 4 экземпляров на одном GPU. Профили:
- 1g.24gb
- 2g.48gb
- 4g.96gb
С каких срезов может начинаться экземпляр:Вычислено
vGPU for Compute
10 типов с framebuffer от 8 до 96 GB, до 12 vGPU на одном GPU. Нужны лицензия NVIDIA AI Enterprise и гипервизор.
Совместное использование без деления
Time-slicing работает на любом GPU, без изоляции памяти и сбоев между репликами. MPS позволяет совместно использовать GPU целиком, но не экземпляр MIG.
Числовые форматы
Документы NVIDIA
›Характеристики и источники
- Память
- 96 GB[1]
- Тип
- GDDR7[1]
- Пропускная способность памяти
- 1 597 GB/s[1]
- Макс. мощность
- 300 to 600 W[2]Настраивается.
- NVLink
- 0[3]Не поддерживается.
- Экземпляры MIG
- 4[4]
- FP4
- 4 000 TFLOPS[1]NVIDIA не уточняет, плотное это значение или с разреженностью.
- FP8
- 2 000 TFLOPS[1]NVIDIA не уточняет, плотное это значение или с разреженностью.
- FP16 / BF16
- 1 000 TFLOPS[1]NVIDIA не уточняет, плотное это значение или с разреженностью.
- TF32
- 234 TFLOPS[1]NVIDIA не уточняет, плотное это значение или с разреженностью.
Числовые форматы: FP4, FP8, FP16, BF16, TF32, FP32
Значения для тензорных ядер пиковые, взяты из технических описаний и не отражают производительность приложений.
Источники
Загрузка источников
Всего GPU. Модель делится между ними через tensor parallel, стадии pipeline parallel и реплики, как задано в схеме развертывания ниже.
1 сервер по 8 GPU, последний с 1
Как используется GPU
Разделите каждый GPU на срезы или используйте его совместно для нескольких реплик вместо добавления GPU. Срезы и доли запускают реплики модели: объединить их в группу tensor parallel нельзя.
›Схема развертывания
Как модель распределяется между GPU. От этого зависят память на каждом GPU, место под KV cache и число GPU, по схеме деления vLLM.
Стадии pipeline parallel
Делит слои на последовательные блоки, каждый на своем GPU. Между стадиями передается мало данных, поэтому этот способ подходит для GPU без быстрой связи и для серверов, соединенных сетью.
Реплики
Независимые копии модели, у каждой свой KV cache. Последовательности делятся между репликами. Модель со смесью экспертов распределяет своих экспертов по всем репликам.
Размер tensor parallel: 1, то есть число GPU, деленное на число стадий и реплик.
GPU на сервер
Tensor parallel работает внутри сервера. Остальные GPU становятся стадиями pipeline parallel.
Размер decode context parallel
Делит KV cache каждой последовательности по токенам между GPU tensor parallel. Новых GPU не требует, но замедляет decode.
Только для моделей со смесью экспертов.
Измерение
Необязательно: задержка между токенами, которую вы измерили для этой конфигурации, в миллисекундах.
Допущения среды выполнения›накладные расходы 3,22 GB на GPU, доступно 90 %, запас 10 %
Память под контекст CUDA, активации и графы, в единицах, выбранных на странице. Это эвристика.
Доля памяти GPU, которую может использовать движок инференса. В vLLM по умолчанию 92%.
Доля доступной памяти, которая должна остаться свободной, чтобы модель помещалась с запасом.
В этой модели нет слоев со скользящим окном.
Теоретический предел, а не ожидаемая скорость
Минимальное время шага decode
13,28 ms
21,21 GB читается на каждом GPU при 1,6 TB/s.
Предел скорости одной последовательности
75,28 tok/s
Токенов в секунду, которые нельзя превысить без спекулятивного декодирования.
Всего: 4 последовательности
301,13 tok/s
Токенов в секунду суммарно.
Время чтения весов
10,26 ms
Веса одного GPU, прочитанные один раз на полной пропускной способности памяти.
Пороговый батч
313
Там, где вычисления становятся узким местом вместо памяти. Задержка растет раньше.
Что читает один GPU за шаг
- Чтение весов16,38 GB77,22 %
- Чтение KV cache4,83 GB22,78 %
Время шага при росте батча
Каждая дополнительная последовательность добавляет свой KV cache к байтам, которые читает шаг, а веса читаются один раз для всех. Те же пределы при контексте 8 192 токена.
1 последовательность
11,01 ms
2 последовательности
11,77 ms
4 последовательности
13,28 ms
8 последовательностей
16,31 ms
16 последовательностей
22,36 ms
32 последовательности
34,46 ms
64 последовательности
58,67 ms
128 последовательностей
107,08 ms
256 последовательностей
203,89 ms
Та же конфигурация на других GPU
Те же байты при пропускной способности памяти каждого GPU. GPU, на котором конфигурация не помещается, отмечен, а его значение показывает, что было бы, если бы она помещалась.
GB200 NVL72
377 tok/s
GB300 NVL72
377 tok/s
B200 HGX
363 tok/s
B300 HGX
363 tok/s
GH200 144 GB HBM3e
231 tok/s
H200 SXM
226 tok/s
H200 NVL
226 tok/s
GH200 96 GB HBM3
189 tok/s
H100 NVL
186 tok/s
H100 SXM
158 tok/s
A100 80GB SXM4
96 tok/s
H100 PCIe
94 tok/s
RTX PRO 6000 Blackwell Server EditionВыбран
75 tok/s
- Примечание: Производитель указывает пиковую производительность этого GPU, не уточняя, включает ли она разреженность. Используется половина значения, как для GPU того же поколения, у которых это указано.
Развернуть эту конфигурацию
Эти команды написаны для конфигурации, которую вы рассчитали выше, и для выбора, который вы делаете здесь, и меняются вместе с ними. Ничего не меняется за вас: выбор, который перестал работать, сохраняется и помечается, а рядом указаны способы исправления.
Сервер
Способ запуска
Движок
Сервер, который загружает модель.
GPU
Индексы GPU на машине в том виде, как их показывает nvidia-smi, через запятую. Конфигурации нужно 1 GPU.
Как идентифицировать GPU
Индекс зависит от порядка, в котором драйвер находит GPU. UUID привязан к карте.
Эндпоинт
Порт, на котором отвечает эндпоинт. 8000 (по умолчанию)
Принимать подключения на
По умолчанию эндпоинт остается доступным только на этой машине.
Эндпоинт отвечает только на запросы с ключом. Ключ создается на вашей машине и никогда не записывается в команду или ссылку.
Дополнительные параметры
Где хранятся скачанные веса. Если каталог уже существует, повторная загрузка не нужна.
По умолчанию это релиз, для которого написаны команды. latest следует за самым новым.
Что будет запущено
vLLM · Docker · 1 GPU, RTX PRO 6000 Blackwell
- Репозиторий
- Qwen/Qwen3-8BИз калькулятора
- Движок
- vLLMПо умолчанию
- Способ запуска
- DockerПо умолчанию
- GPU
- 1 GPU, RTX PRO 6000 BlackwellИз калькулятора
- индекс 0По умолчанию
- Контекст
- токенов: 8 192Из калькулятора
- Последовательностей на реплику
- 4Вычислено
- Память на GPU
- Нужно 22,76 GiB из 86,40 GiB доступных
- Доля каждого GPU для движка
- 90%Вычислено
- Доступ
- ОткрытыйИз калькулятора
- Эндпоинт
- 127.0.0.1:8000По умолчанию
Стоит обратить внимание
Вы рассчитали KV cache fp16 для весов bf16. KV cache в 16 бит занимает одинаковое место в любом из типов, а vLLM хранит его в собственном типе модели, если не указано иное, поэтому команды не навязывают fp16.
16 шагов в 5 этапах. Открывайте по одному или все сразу.
1Проверка оборудования
Посмотрите, что предлагает машина или кластер, прежде чем что-либо менять.3 шага
- Шаг 1
Проверка драйвера
Убедитесь, что драйвер NVIDIA установлен и достаточно новый для программ ниже.
nvidia-smiЧто вы увидите
- Таблица с версией драйвера и версией CUDA не ниже 13.0, которая нужна образу.
Справка и источники
Если не работает
- Если версия CUDA ниже, чем нужно программам, обновите драйвер и проверьте снова.
Откуда берутся значения
- Выбранный вами GPU: RTX PRO 6000 Blackwell.
- Шаг 2
Проверка GPU
Убедитесь, что машина показывает GPU с индексом 0.
nvidia-smi -LЧто вы увидите
- По одной строке на каждый GPU, в каждой указано RTX PRO 6000 Blackwell так, как его называет машина.
Справка и источники
Если не работает
- Если выбранного вами GPU нет в списке, его нет в этой машине или драйвер его не видит.
- Если названия не совпадают с ожидаемыми, индексы не такие, как вы думаете. Идентифицируйте GPU по UUID, который не зависит от порядка.
Откуда берутся значения
- Калькулятор использует 1 GPU.
- Выбранный вами GPU: RTX PRO 6000 Blackwell.
- Шаг 3
Проверка свободной памяти
Калькулятор ожидает 22,76 GiB на каждом GPU из 86,40 GiB, которые может использовать движок. Проверьте, что память GPU с индексом 0 свободна.
nvidia-smi --query-gpu=index,name,memory.total,memory.used,memory.free --format=csv -i 0Что вы увидите
- Почти вся память GPU свободна, не менее 22,76 GiB.
Что учесть
- Эти GPU уже могут использоваться другими задачами. Если их память занята, остановите эти задачи или выберите другие GPU, прежде чем начинать.
Справка и источники
Откуда берутся значения
- Калькулятор: нужно 22,76 GiB из 86,40 GiB доступных на каждом GPU.
2Подготовка
Получите доступ к модели, установите то, что нужно серверу, и скачайте сам сервер. Здесь же создается разделенный GPU.2 требуют прав администратора5 шагов
Установка инструментов
- Шаг 4
Проверка Docker
Убедитесь, что Docker Engine установлен.
docker --versionЧто вы увидите
- Версия Docker.
Справка и источники
- Шаг 5
Установка NVIDIA Container Toolkit
Нужны права администратораОн позволяет контейнерам использовать GPU. Эти команды для Ubuntu и Debian, а для других дистрибутивов см. страницу по ссылке ниже.
Выполняется после шага 1
sudo apt-get update && sudo apt-get install -y --no-install-recommends ca-certificates curl gnupg2 curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.20.1-1 sudo apt-get install -y \ nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \ nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \ libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \ libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}Что вы увидите
- Пакеты устанавливаются без ошибок.
Справка и источники
- Шаг 6
Подключение Docker к GPU
Нужны права администратораЗарегистрируйте среду выполнения NVIDIA в Docker и перезапустите его.
sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart dockerЧто вы увидите
- Без ошибок, и Docker снова запускается.
Что учесть
- Перезапуск Docker останавливает работающие контейнеры.
Справка и источники
- Шаг 7
Проверка, что контейнер видит GPU
Запустите nvidia-smi в контейнере, которому выданы GPU с индексом 0. Ожидаемый результат: только этот GPU.
docker run --rm --runtime=nvidia --gpus '"device=0"' \ ubuntu nvidia-smiЧто вы увидите
- Таблица с одним GPU, который вы выбрали.
Справка и источники
Если не работает
- Если Docker не запускается с GPU, toolkit не настроен или таких индексов на этой машине нет.
- Если названия не совпадают с ожидаемыми, индексы не такие, как вы думаете. Идентифицируйте GPU по UUID, который не зависит от порядка.
- NVIDIA Container Toolkit: sample workload(откроется в новой вкладке)
- NVIDIA Container Toolkit: Specialized configurations with Docker(откроется в новой вкладке)
Откуда берутся значения
--gpus '"device=0"'По умолчанию Первые GPU, считая с 0.
Загрузка сервера
- Шаг 8
Загрузка образа
Скачайте vllm/vllm-openai:v0.32.0 до первого запуска, чтобы при запуске оставалось только загрузить модель.
docker pull vllm/vllm-openai:v0.32.0Что вы увидите
- Загрузка завершается, и последняя строка называет образ.
Что учесть
- Образ занимает несколько гигабайт.
3Запуск сервера
Запустите его с рассчитанной вами конфигурацией.1 шаг
- Шаг 9
Запуск сервера
Запустите vllm-qwen3-8b с рассчитанной вами конфигурацией: модель Qwen/Qwen3-8B, параллелизм, контекст и выделенная память. При первом запуске скачивается модель, это занимает несколько минут.
Выполняется после шага 3
# config YSTVGT docker run -d --name vllm-qwen3-8b \ --runtime nvidia --gpus '"device=0"' \ --ipc=host \ -v "$HOME/.cache/huggingface":/root/.cache/huggingface \ -p 127.0.0.1:8000:8000 \ vllm/vllm-openai:v0.32.0 \ --model Qwen/Qwen3-8B \ --max-model-len 8192 --max-num-seqs 4 \ --gpu-memory-utilization 0.90Что вы увидите
- Идентификатор контейнера.
Что учесть
- При первом запуске скачивается модель и подготавливаются ядра, это занимает несколько минут. До этого сервер не готов.
Справка и источники
Если не работает
- Если запуск останавливается с сообщением о нехватке памяти, конфигурации нужно больше, чем вмещает GPU. Уменьшите контекст или число последовательностей, отдайте движку большую долю GPU или используйте больше GPU. Насколько больше, показывает калькулятор.
- Если vLLM сообщает, что контекст длиннее, чем может вместить KV cache, уменьшите контекст или число последовательностей.
- Если vLLM сообщает, что головы внимания не делятся на размер tensor parallel, выберите размер, на который они делятся.
- Если порт занят, выберите другой в своих настройках.
- Если Docker не запускается с GPU, toolkit не настроен или таких индексов на этой машине нет.
- vLLM: vllm serve arguments(откроется в новой вкладке)
- vLLM: engine arguments(откроется в новой вкладке)
Откуда берутся значения
-dПо умолчанию Выбранный вами способ запуска.
--name vllm-qwen3-8bИз калькулятора Репозиторий выбранной вами модели.
--runtime nvidiaПо умолчанию Выбранный вами способ запуска.
--gpus '"device=0"'По умолчанию Первые GPU, считая с 0.
--ipc=hostПо умолчанию Выбранный вами способ запуска.
-v "$HOME/.cache/huggingface":/root/.cache/huggingfaceПо умолчанию Где хранятся скачанные веса.
-p 127.0.0.1:8000:8000По умолчанию Порт, на котором отвечает эндпоинт.
--model Qwen/Qwen3-8BИз калькулятора Репозиторий выбранной вами модели.
--max-model-len 8192Из калькулятора Заданная вами длина контекста, токенов: 8 192.
--max-num-seqs 4Вычислено Всего 4 последовательности на 1 реплику.
--gpu-memory-utilization 0.90Вычислено Заданная вами доля доступной памяти, 90%, делится между 1 репликой на устройстве, с округлением вниз, чтобы доли в сумме никогда не превышали устройство.
- Репозиторий выбранной вами модели.
- Заданная вами длина контекста, токенов: 8 192.
- Заданная вами доля доступной памяти, 90%, делится между 1 репликой на устройстве, с округлением вниз, чтобы доли в сумме никогда не превышали устройство.
4Проверка работоспособности
Дождитесь ответа, задайте вопрос и сравните память с калькулятором.6 шагов
Проверка эндпоинта
- Шаг 10
Ожидание готовности
Сервер начинает отвечать на /health, когда модель загружена.
timeout 900 bash -c 'until curl -fs http://127.0.0.1:8000/health >/dev/null; do sleep 5; done' && echo readyЧто вы увидите
- Слово ready, но не сразу: загрузка модели занимает минуту и больше.
Справка и источники
Если не работает
- Если сервер не становится готовым, прочитайте последние строки журнала: модель еще загружается или сервер остановился с ошибкой.
- Если запуск останавливается с сообщением о нехватке памяти, конфигурации нужно больше, чем вмещает GPU. Уменьшите контекст или число последовательностей, отдайте движку большую долю GPU или используйте больше GPU. Насколько больше, показывает калькулятор.
- Шаг 11
Проверка, что модель обслуживается
Спросите у сервера, какие модели он обслуживает.
curl -sS http://127.0.0.1:8000/v1/modelsЧто вы увидите
- Список, в котором есть Qwen/Qwen3-8B.
Справка и источники
Если не работает
- Если ответ 401, ключ в этой оболочке не тот, с которым запускался сервер.
- Шаг 12
Запрос к модели
Один запрос через эндпоинт, который будут использовать ваши приложения.
curl -sS http://127.0.0.1:8000/v1/chat/completions \ -H 'Content-Type: application/json' \ -d '{"model": "Qwen/Qwen3-8B", "messages": [{"role": "user", "content": "Say hello in five words."}], "max_tokens": 32}'Что вы увидите
- Ответ в формате JSON с сообщением от модели.
Справка и источники
Если не работает
- Если ответ 401, ключ в этой оболочке не тот, с которым запускался сервер.
- Если сервер не становится готовым, прочитайте последние строки журнала: модель еще загружается или сервер остановился с ошибкой.
Состояние машины
- Шаг 13
Просмотр GPU
Посмотрите занятую память и нагрузку на GPU с индексом 0, пока сервер работает.
nvidia-smi --query-gpu=index,name,memory.used,memory.total,utilization.gpu --format=csv -i 0Что вы увидите
- Занятая память близка к той, что выдана движку.
Справка и источники
- Шаг 14
Просмотр сервера
Убедитесь, что vllm-qwen3-8b работает, и посмотрите его последние сообщения.
Выполняется после шага 12
docker ps --filter name=vllm-qwen3-8b --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' docker logs --tail 20 vllm-qwen3-8bЧто вы увидите
- Сервер работает, и в последних строках его журнала нет ошибок.
Справка и источники
Сравнение с калькулятором
- Шаг 15
Сравнение с калькулятором
Калькулятор ожидал 22,76 GiB на каждом GPU, при этом 90% GPU отдается движку. Собственный журнал сервера показывает, сколько ушло на веса и сколько осталось под KV cache.
Выполняется после шага 12
docker logs vllm-qwen3-8b 2>&1 | grep -E 'Model loading took|Available KV cache memory|GPU KV cache size'Что вы увидите
- Строки с объемом памяти, который заняли веса, памятью, оставшейся под KV cache, и числом токенов, которое она вмещает.
Справка и источники
- vLLM: parallelism and scaling(откроется в новой вкладке)
- vLLM: conserving memory(откроется в новой вкладке)
Откуда берутся значения
- Калькулятор: нужно 22,76 GiB из 86,40 GiB доступных на каждом GPU.
5Очистка
Остановите сервер и удалите то, что создали эти шаги.1 шаг
- Шаг 16
Остановка
Может что-то остановить или удалитьОстановите vllm-qwen3-8b и освободите GPU.
Выполняется после шага 9
docker stop vllm-qwen3-8b && docker rm vllm-qwen3-8bЧто вы увидите
- Вывода нет, и GPU свободны.
Что учесть
- Эндпоинт перестает отвечать.
Справка и источники
Расчет
- Ваши данные
- Официальная спецификация
- Расчетный результат
- Оценка
- Эвристика
- Теоретический предел
›Веса
Исходный размер весов
Расчетный результатИсходный размер весов = параметры × номинальных бит на параметр ÷ 8
= Ваши данные: 8,19 млрд параметров × Официальная спецификация: 16 bit/param ÷ 8
= 16,38 GB
Веса в памяти
Расчетный результатВеса в памяти = параметры × эффективных бит на параметр ÷ 8
= Ваши данные: 8,19 млрд параметров × Официальная спецификация: 16 bit/param ÷ 8
= 16,38 GB
›KV cache
KV cache на токен
Расчетный результатKV cache на токен = 2 × слои с KV cache × головы KV × размерность головы × бит KV cache на значение ÷ 8
= 2 × Ваши данные: 36 × Ваши данные: 8 × Ваши данные: 128 × Ваши данные: 16 bit ÷ 8
= 147,46 KB/token
KV cache на последовательность
Расчетный результатKV cache на последовательность = KV cache на токен × длина контекста
= Расчетный результат: 147,46 KB/token × Ваши данные: 8 192 токена
= 1,21 GB
KV cache
Расчетный результатKV cache = KV cache на последовательность × одновременные последовательности
= Расчетный результат: 1,21 GB × Ваши данные: 4
= 4,83 GB
›Память на GPU и в сумме
Нужная память на GPU
ОценкаНужная память на GPU = Веса в памяти + KV cache + Накладные расходы среды выполнения
= Расчетный результат: 16,38 GB + Расчетный результат: 4,83 GB + Эвристика: 3,22 GB
= 24,43 GB
Модель с накладными расходами среды выполнения
ОценкаМодель с накладными расходами среды выполнения = Веса в памяти + Накладные расходы среды выполнения
= Расчетный результат: 16,38 GB + Эвристика: 3,22 GB
= 19,6 GB
›Один шаг decode и его пределы
Веса, читаемые на GPU за один шаг
Расчетный результатВеса, читаемые на GPU за один шаг = Веса в памяти
= Расчетный результат: 16,38 GB
= 16,38 GB
Байт, читаемых на GPU за один шаг
Расчетный результатБайт, читаемых на GPU за один шаг = Веса, читаемые на GPU за один шаг + KV cache
= Расчетный результат: 16,38 GB + Расчетный результат: 4,83 GB
= 21,21 GB
Время однократного чтения весов
Теоретический пределВремя однократного чтения весов = Веса в памяти ÷ Пропускная способность памяти GPU
= Расчетный результат: 16,38 GB ÷ Официальная спецификация: 1,6 TB/s
= 10,26 ms
Минимальное время одного шага
Теоретический пределМинимальное время одного шага = Байт, читаемых на GPU за один шаг ÷ Пропускная способность памяти GPU
= Расчетный результат: 21,21 GB ÷ Официальная спецификация: 1,6 TB/s
= 13,28 ms
Предел скорости одной последовательности
Теоретический пределПредел скорости одной последовательности = 1 ÷ Минимальное время одного шага
= 1 ÷ Теоретический предел: 13,28 ms
= 75,28 tok/s
Предел скорости всех последовательностей
Теоретический пределПредел скорости всех последовательностей = одновременные последовательности ÷ Минимальное время одного шага
= Ваши данные: 4 ÷ Теоретический предел: 13,28 ms
= 301,13 tok/s
›Пороговые точки
Батч, с которого главными становятся вычисления
Теоретический пределБатч, с которого главными становятся вычисления = (Пиковая вычислительная мощность, плотная × 1 000 000 000 000 ÷ Пропускная способность памяти GPU) × эффективных бит на параметр ÷ 8 ÷ 2
= (Оценка: 500 TFLOPS × 1 000 000 000 000 ÷ Официальная спецификация: 1,6 TB/s) × Официальная спецификация: 16 bit/param ÷ 8 ÷ 2
= 313,09
Допущения
- Допущение: KV cache хранится блоками (в vLLM по 16 токенов), поэтому реальная емкость немного ниже показанного числа.
- Эвристика: Накладные расходы среды выполнения составляют 3,22 GB на GPU: контекст CUDA, активации и графы. Это эвристика: vLLM измерил 2.57 GiB для модели 8B, значение зависит от движка и настроек. Изменить
- Допущение: Модели отдается только 90 % памяти GPU. Остальное резервируют движки инференса: в vLLM по умолчанию используется 92% (документация версии 0.32). Изменить
- Допущение: Модель помещается комфортно, если свободной остается не менее 10 % доступной памяти. Изменить
- Допущение: NVIDIA указывает память GPU в GB, а физически установлено столько же GiB: у H100 80 GB есть 80 GiB, а nvidia-smi показывает 79.6. Несколько процентов, которые забирают ECC и драйвер, покрываются долей доступной памяти.
- Допущение: Точность KV cache задается отдельно от точности весов. Квантизация весов не уменьшает ни KV cache, ни накладные расходы. Изменить
- Допущение: Предполагается, что каждая последовательность одновременно использует весь контекст: это худший случай. Реальные запросы обычно короче. Изменить
- Допущение: Предполагается, что несколько GPU делят модель через tensor parallel, как в vLLM: веса и головы KV делятся, а накладные расходы среды выполнения несет каждый GPU.
- Теоретический предел: Это пределы, а не прогнозы. Реальные движки добавляют время на ядра, планирование и сеть: опубликованные измерения vLLM оказались медленнее расчета по той же формуле на 30-270%, а измерения воркшопа на одном GPU на 10-15%.
- Допущение: Спекулятивное декодирование не учитывается. Оно может выдавать несколько токенов за шаг и превзойти предел для одной последовательности.
- Допущение: Каждый вес вне экспертов считается прочитанным на каждом шаге. Поиск эмбеддингов читает лишь несколько строк входной таблицы, поэтому настоящий минимум у малых моделей на несколько процентов ниже.
- Теоретический предел: Батч, при котором вычисления шага занимают столько же времени, сколько чтение памяти, по плотному пику формата, в котором считаются веса. Задержка начинает расти раньше. Для смеси экспертов каждому эксперту нужно столько токенов, предназначенных именно ему.
13,28 ms75,28 tok/sПредел скорости одной последовательности
Почему это важно
Каждый шаг decode один раз читает нужные ему веса и KV cache каждой работающей последовательности, поэтому шаг не может быть короче, чем эти байты, поделенные на пропускную способность памяти. Так именно пропускная способность задает скорость ответа модели, задолго до того, как вмешиваются вычисления GPU. Пределы здесь определяет физика. Реальные движки медленнее, и измерение показывает, насколько.
Как читать результат
Минимальное время шага равно числу байт, которые один GPU читает за шаг, поделенному на его пропускную способность памяти, и из него следуют пределы скорости. Это пределы, а не прогнозы: опубликованные измерения vLLM оказались медленнее на 30-270%. Введите собственное измеренное время на токен, чтобы увидеть, насколько вы близки к пределу. Пороговый батч показывает точку, с которой роль начинают играть вычисления. Для смеси экспертов число байт растет с батчем, потому что затрагивается больше экспертов.
Локальный ИИ и суверенитет
Запуск модели на оборудовании, которое вы контролируете, служит лишь одним из факторов при решении о суверенитете. Сам по себе он не делает развертывание суверенным и не обеспечивает соответствие GDPR или EU AI Act.
Эти инструменты появились в рамках воркшопа ИИ без облака.