Практикум по приёмке сервиса инференса

GPU для LLM: память, задержка и проверенный запуск

Разберите запуск decoder-only модели: программный стек, форматы весов, tokenizer, prefill/decode, KV-cache и параллелизм. Рассчитайте компоненты памяти, выберите измерительные границы и составьте протокол приёмки по качеству, задержкам и нагрузке. Учебные примеры не заменяют испытание конкретного оборудования.

От устройства GPU к эксплуатации модели220 минут12 модулей24 вопроса
После курса

Что вы сможете сделать

  1. Различить SIMD, SIMT, warp и тензорные операции, затем выбрать границу полного замера.
  2. Сверить программный стек и точный артефакт запуска, отделив идентичность файлов от допуска и качества.
  3. Рассчитать объём плотных весов и KV-cache с правильными единицами и числом KV-heads.
  4. Подготовить вход реальным tokenizer и распределить контекст между полным входом и новым ответом.
  5. Связать prefill, decode и batching с памятью, очередью и наблюдаемыми клиентскими задержками.
  6. Различить TP, PP и независимые реплики и проверить память и обмен каждого устройства.
  7. Составить воспроизводимую приёмку качества, TTFT, интервалов, throughput, ошибок и восстановления.
Модуль 1 из 12

Какую работу передать GPU?

Команда запускает сервис ответов по документам. Покупку ускорителя нужно связать с вычислениями модели: число потоков в программе, вычислительные блоки и скорость ответа обозначают разные вещи.

  • GPU выполняет много однотипной работы параллельно. Пользовательская операция включает также работу CPU и перенос данных. Если ускоренный фрагмент занимает малую часть запроса, даже быстрое вычислительное ядро GPU (kernel) мало меняет полное время ответа.

  • SIMD задаёт одну операцию над несколькими элементами вектора; SIMT описывает группу программных потоков с собственным состоянием. Маска активности выбирает участвующие элементы или потоки. Эти модели помогают понять выполнение, но сами по себе не задают число вычислительных блоков GPU.

  • В выбранной модели CUDA warp содержит 32 потока. Последний неполный warp не становится отдельным маленьким устройством. Если потоки одного warp расходятся по ветвям, активные подмножества выполняют соответствующие участки; число полезно занятых lanes может уменьшиться.

  • Совпадение warp не разрешает обмениваться данными без нужной синхронизации. Independent Thread Scheduling меняет допустимые предположения о ходе потоков; warp-примитив с корректной маской не заменяет барьер всего блока. Правила CUDA не задают размер группы у произвольного другого ускорителя.

  • Occupancy — доля активных групп warp на потоковом мультипроцессоре SM относительно доступного максимума. Высокое значение не доказывает скорость приложения. При сравнении измеряют завершённую операцию: асинхронный запуск kernel может вернуть управление CPU раньше окончания вычисления.

Модуль 2 из 12

Формат чисел и тензорные операции

Поставщик предлагает BF16 и четырёхбитные веса. Сначала установите, что именно меняется: диапазон чисел, размер хранения, операция умножения или качество ответа.

  • FP16 и BF16 хранят по 16 бит, то есть по два байта на значение. У FP16 5 бит порядка и 10 дробных бит, у BF16 — 8 и 7. BF16 даёт более широкий диапазон. Между 1 включительно и 2 не включительно шаг BF16 равен 1/128, а FP16 — 1/1024. Переход FP16 → BF16 не сокращает объём плотных данных вдвое.

  • Тензорные блоки выполняют поддержанные варианты матричного умножения с накоплением. Форматы входов и накопителя могут отличаться. Нужны подходящие форма матриц, размещение и kernel библиотеки; наличие Tensor Core в названии устройства не доказывает, что конкретный запуск использует этот путь.

  • У квантованного артефакта фиксируют метод, упаковку кодов, группировку, шкалы и оставшиеся тензоры другого dtype. Ровно 7 млрд значений по 4 бита занимают 3,5 млрд байт кодов против 14 млрд байт по два байта. Это учебное отношение объёмов кодов 4:1, без обещания такого же сокращения всей VRAM.

  • Weight-only квантование не меняет автоматически KV-cache. Поддержка метки INT4 тоже недостаточна: backend должен читать точную схему и выполнять её операции. AWQ использует активации для выбора масштабирования весов; калибровка метода и оценка качества готового сервиса — разные проверки.

  • Сравнивайте численные режимы на одинаковых заданиях, входах и параметрах генерации. Проверьте качество, память, prefill и decode. Число операций для sparse-режима нельзя подставлять вместо dense-режима; ни эта цифра, ни разрядность кодов не задают универсального ускорения ответа.

Модуль 3 из 12

Согласованный стек и артефакт запуска

Файл весов уже загружен, GPU видна системе, но запуск модели ещё не доказан. Соберите точный набор компонентов, который можно повторить на другом узле.

  • Драйвер, CUDA runtime, toolkit и библиотеки выполняют разные роли. Compute capability описывает аппаратные возможности выбранной GPU и не является номером CUDA. Версия установленного toolkit не сообщает автоматически версию драйвера, с которым выполнится процесс.

  • Сверяют целевую архитектуру бинарного кода, наличие применимого PTX и направление совместимости версий. Универсальный номер минимального драйвера из названия модели GPU не выводят. Проверяют точное сочетание драйвера, runtime, библиотек, dtype и kernels на принимаемом устройстве.

  • Артефакт запуска шире весов: нужны конфигурация архитектуры, tokenizer, chat template, параметры генерации и runtime. Для фиксации комплекта можно принять локальный список файлов и их дайджестов. Тот же файл весов при другом шаблоне диалога может получить иной вход и дать иной результат.

  • Safetensors — контейнер тензоров. Его свойства не дают разрешения исполнять сопутствующий Python-код или доверять остальным файлам пакета. Совпавший хеш подтверждает выбранные байты, а качество модели и допустимость исполнения проверяют отдельно.

  • Видимость GPU проверяет лишь часть пути. Зафиксированный набор версий должен загрузить нужную модель и выполнить характерные операции; проверка готовности сервиса отдельно показывает готовность принимать трафик. Ни перечисление устройств, ни одна успешная проба не заменяют нагрузочную приёмку.

Модуль 4 из 12

Ёмкость памяти и скорость доступа

В спецификации стоят гигабайты, HBM и терабайты в секунду. Эти величины отвечают на разные вопросы; объединённое адресное пространство тоже не делает любую память одинаково быстрой.

  • У дискретной GPU локальная память отличается от оперативной памяти узла. Внутри GPU глобальная память, shared memory блоков и регистры имеют разные области использования. HBM — организация локальной DRAM с широким интерфейсом, а не название shared memory каждого вычислительного блока.

  • Ёмкость определяет объём хранимых данных; bandwidth — объём переноса за время. Большая HBM не доказывает более быструю модель. Скорость чтения локальной памяти также не становится скоростью связи GPU с другой GPU или с CPU.

  • Unified addressing даёт согласованное адресное пространство, но не один физический пул с одинаковой стоимостью доступа. Unified Memory может перемещать страницы; page fault и передача расходуют время. Возможность адресовать данные сверх локального объёма не доказывает, что модель работает с прежней задержкой.

  • Effective bandwidth считают как сумму полезных байтов чтения и записи, делённую на время завершённой операции. Задайте границу и синхронизацию замера. Пиковая паспортная величина служит потолком определённого интерфейса. В байте восемь бит; объём полезных данных и объём фактических транзакций памяти тоже могут отличаться.

  • Соседние обращения потоков могут объединяться в транзакции. Неудачная раскладка переносит лишние данные, а повторный тест из cache измеряет другой путь, чем холодная DRAM. Latency одного доступа и суммарная bandwidth также не взаимозаменяемы.

Модуль 5 из 12

Как связаны устройства?

Для модели рассматривают несколько GPU. Начните со схемы реального обмена: локальная память, host-device copy и GPU peer transfer не складываются в одну паспортную скорость.

  • У CPU↔GPU и GPU↔GPU могут быть разные физические пути. У PCIe важны поколение и фактическая ширина соединения; у peer transfer — доступность нужной пары устройств и топология. Возможности одной пары не доказывают возможности всех пар узла.

  • Успешный peer access даёт способ доступа между устройствами, но не превращает две VRAM в одну локальную область без затрат. Программный runtime должен явно поддерживать размещение данных и обмен для выбранной модели.

  • Паспортные скорости нескольких соединений нельзя сложить без модели трафика: возможны общий участок и обмены, зависящие друг от друга. Проверяют нужные пары, размеры сообщений, одновременную работу и направление передачи; отдельный быстрый copy не доказывает скорость коллективной операции.

  • Передача входа и результата может занять заметную часть операции даже при быстром kernel. Отдельно измерьте полезный сценарий целиком и расходы обмена. Подбор числа GPU должен учитывать эту стоимость вместе с памятью и вычислением.

Модуль 6 из 12

Веса, токены и граница контекста

Учебный сервис использует decoder-only модель. До выбора batch нужно понять, сколько данных хранится постоянно и сколько токенов действительно получает модель после подготовки диалога.

  • Веса — подготовленные параметры модели. В обычном инференсе они используются для вычисления, а не обновляются на каждом ответе. KV и token IDs относятся к состоянию запроса; их изменение не означает обучение модели на разговоре.

  • Для ровно 8 млрд отдельно хранимых значений по два байта объём плотных весов равен 16 млрд байт: 16 GB, около 14,90 GiB. Считают уникальные сохранённые значения, учитывая совместное использование одних весов разными операциями. Это один компонент бюджета, без KV, рабочих буферов и возможных копий при загрузке.

  • Tokenizer связан с конкретной моделью: он превращает текст в token IDs по своим правилам. Токен не обязан быть словом; BPE обучает слияния частей, но не описывает каждый tokenizer. Число символов нельзя делить на постоянный коэффициент для точного допуска запроса.

  • Сначала применяют реальный chat template и специальные токены, затем считают полный вход. В учебном лимите 4096 токенов вход 3072 уже включает эту упаковку; резерв на новые токены 1024 исчерпывает остаток. Добавление ещё одного разделителя сверх входного бюджета меняет допустимость запроса.

  • max_new_tokens ограничивает новые токены, а не задаёт всю длину контекста. При превышении нельзя незаметно считать усечение эквивалентным запросом. Поддержку более длинной позиции, качество на ней и достаточный KV-бюджет проверяют отдельно; увеличение одного runtime-параметра не доказывает все три свойства.

Модуль 7 из 12

Prefill и decode одного ответа

На графике запроса долго нет текста, затем появляется поток ответа. Разделите этапы модели и доставку: каждая задержка должна иметь свою измерительную границу.

  • В prefill модель обрабатывает доступный входной префикс и формирует K/V для последующего использования. Вычисления последней входной позиции дают распределение для выбора первого выходного токена; не нужно заранее приписывать ему ещё один полный проход по всему входу.

  • Обычный авторегрессионный decode использует уже доступный префикс для выбора следующего токена. Новые токены одной цепочки зависят от предыдущих. KV избавляет от повторного получения старых K/V, но attention всё ещё читает нужное состояние; cache не отменяет стоимость длинного контекста.

  • Клиентское время до первого токена включает подготовку и очередь в согласованной границе, вычисление и доставку. Изолированное время prefill меньше по области измерения. Первый HTTP-байт или служебный role event не обязательно содержит текст ответа.

  • Network chunk может содержать несколько токенов, часть текста или служебное сообщение; это не один шаг модели. Остановка по EOS отличается от достижения token cap: второй случай может оставить ответ усечённым. Логи должны сохранять причину завершения, а не объявлять любой закрытый stream успешным.

  • Длина входа влияет на prefill, длина выхода — на число decode-шагов. Нельзя заранее присвоить любому prefill ограничение только вычислениями, а decode — только памятью: batch, модель и реализация меняют результат. Сравнивайте их при фиксированном профиле и состоянии prefix reuse.

Модуль 8 из 12

Сколько памяти нужно одновременно?

Учебный расчёт нужен для проверки заказа, но не заменяет фактический пик памяти. Сначала посчитайте независимые компоненты, затем проверьте их размещение и запас.

  • При одинаковой геометрии слоёв и равной длине последовательностей плотный KV занимает M=2×L×Hkv×D×T×s×B байт. L — слои, Hkv — головы K/V, D — размер головы, T — сохраняемые токены, s — байты значения, B — последовательности. Множитель 2 означает K и V. При разных длинах без выравнивания и совместного хранения вместо T×B используют сумму длин. В GQA считают головы K/V, а не головы запросов Q.

  • В примере layers=32, KV heads=8, head dimension=128, tokens=4096, FP16/BF16=2 байта. Одна последовательность требует 536870912 байт K/V, то есть 512 MiB; четыре независимые — 2147483648 байт, или 2 GiB. Это арифметика K/V без общего prefix, sliding window, квантования KV, padding и allocator overhead.

  • К 16 млрд байт плотных весов из модуля о весах и контексте прибавляют KV, временные буферы операций, служебные структуры, резерв выделения памяти и нужные копии. Даже сумма весов и K/V меньше VRAM не доказывает запуск: пиковые временные расходы и распределение по устройствам ещё неизвестны.

  • Если квантованы только веса, в формуле KV остаётся фактический dtype cache. Повторное использование prefix и переменные длины могут менять реально выделенную память, но их нельзя вычитать из худшего случая без подтверждённого механизма. Запрошенное число активных sequences задаёт отдельную нагрузку на память.

  • Суммарную оценку нельзя механически делить на число GPU: раскладка, репликация отдельных тензоров и размещение KV зависят от реализации. Проверяют пик каждого устройства при длинных входах, активных последовательностях и загрузке; окончательный предел одновременно обслуживаемых запросов подтверждают испытанием.

Модуль 9 из 12

Пакеты и поступление запросов

При одинаковой модели batch из коротких запросов и batch с длинным контекстом расходуют разные ресурсы. Планировщик должен учитывать память и задержку, пока запросы прибывают и завершаются.

  • Batch обозначает совместно обрабатываемые последовательности. Одно число batch size не сообщает длины входов и выходов, padding или размер сохранённого KV. Сравнивать две нагрузки можно только с этим профилем и действующим способом размещения последовательностей.

  • Совместная работа может распределить стоимость чтения весов между последовательностями и увеличить throughput. При этом ожидание набора и конкуренция запросов меняют задержку. Больший batch не означает более быстрый ответ каждому клиенту.

  • Continuous batching допускает изменение активного набора на границах итераций: завершившиеся запросы освобождают место, а новые могут войти в работу. Это отличается от ожидания конца всего статического пакета. Фактические правила допуска и освобождения KV проверяют у выбранного engine.

  • Ограничение числа активных запросов не является самостоятельным бюджетом памяти: важны длины и KV. Prefill новых входов может конкурировать с текущим decode. Настройка, дающая больше выходных токенов в секунду, может ухудшить хвост задержек у уже принятых запросов.

  • Исследование ORCA объясняет механизм iteration-level scheduling; оно не обещает наличие тех же настроек в любом выпуске serving engine. Для приёмки фиксируют версию, правила допуска новых запросов, длины и предложенную нагрузку, затем смотрят совместно память, задержки и завершённую работу.

Модуль 10 из 12

Задержки и производительность сервиса

Заказчик принимает потоковый ответ. Зафиксируйте содержательное начало, паузы и полное завершение, а затем определите, какая работа считается выполненной в пределах цели.

  • TTFT измеряют от согласованного начала запроса до первого содержательного токена в выбранной клиентской границе. В неё входят очередь и prefill. В отчёте указывают предложенную нагрузку, условия холодного и прогретого запуска, распределение и ошибки: среднее только по успешным быстрым ответам скрывает часть поведения.

  • В принятом договоре ITL — интервалы между последовательными выходными токенами при наличии их отдельных отметок времени. Это условие нужно проверить у измерителя. Если клиент видит только порции текста, их интервалы так и называют; постфактум пересчитанное число токенов не восстанавливает индивидуальные моменты выдачи.

  • Для N выходных токенов, N≥2, TPOT = (tN−t1)/(N−1): интервал от первого до последнего токена делят на число промежутков. Длинная пауза с последующей быстрой пачкой может дать то же среднее, что ровная выдача. Общая выборка интервалов и равный вес каждого запроса отвечают на разные вопросы; среднее локальных p95 не является общим p95.

  • Производительность требует единицы работы и окна времени. Входные и выходные токены в секунду считают отдельно; число запросов в секунду дополняют длинами. Интенсивность поступления отличается от скорости завершения. Рост очереди не превращает отправленные запросы в обслуженные.

  • Сравнивают одинаковые tokenizer, входы, параметры генерации и допустимое качество. В предлагаемом протоколе отдельно считают всю работу и работу, уложившуюся в выбранные условия SLO, за то же время; правила отбора задают заранее. Ошибки и усечённые ответы остаются видимыми. Высокий темп непригодных ответов не выполняет приёмку.

Модуль 11 из 12

Разделить модель или добавить реплики?

Четыре GPU можно использовать для частей одной модели или для разных запросов. Выберите схему по памяти и обменам, затем проверьте реализацию этой схемы в serving runtime.

  • Tensor parallelism делит вычисление и данные внутри слоёв между устройствами. Коллективные обмены сохраняют зависимости между частями вычисления; возможность их перекрытия проверяют у реализации. Доля весов не равна всей памяти устройства. Топология и поддержанный способ распределения влияют на результат, поэтому удвоение числа GPU не обещает удвоить скорость.

  • Pipeline parallelism размещает стадии из разных слоёв на устройствах и передаёт между ними активации. Зависимости одного запроса сохраняются. Заполнение конвейера и свободные интервалы зависят от работы; самые медленные и самые тесные по памяти стадии ограничивают выбранную схему.

  • При data-parallel inference независимые реплики имеют собственные копии модели и получают разные запросы. Четыре отдельные карты по 24 GiB не размещают автоматически одну модель с объёмом весов 60 GiB: если каждая реплика живёт на одной карте, сумма 96 GiB относится к разным копиям, а не одной общей.

  • Состояние продолжаемого запроса должно попасть к соответствующей реплике или быть восстановлено корректным способом. Внутри одной реплики могут работать TP/PP; это не то же самое, что четыре полных копии. Для обычного inference не следует автоматически добавлять обучение и синхронизацию градиентов.

  • Megatron-LM и GPipe дают основания для объяснения видов параллелизма. Их обучающие расписания и результаты не являются контрактом выбранного serving engine. Проверьте поддержку, размещение KV, память каждого устройства, обмены и нагрузочные результаты конкретного выпуска.

Модуль 12 из 12

Принять конкретный запуск

Итог работы — воспроизводимый протокол приёмки сервиса. Он должен помочь другому инженеру повторить результат и отличить успешный ответ от ошибки, усечения или одной удачной короткой пробы.

  • Зафиксируйте артефакт и стек, набор заданий, длины входов и выходов, параметры генерации, предложенную нагрузку и предел одновременного обслуживания. Сначала установите допустимое качество ответа. Изменённая модель или tokenizer требуют повторной оценки: прежний результат качества не переносится только по одинаковому числу параметров.

  • Измерьте TTFT, интервалы, throughput, ошибки и причины остановки одновременно. Разделите холодный запуск и прогретый режим. Из отчёта должно быть видно, входят ли загрузка модели и прогрев в окно, какой prefix cache применён и как считаются неуспешные запросы.

  • Испытайте длинные контексты и согласованный предел активных sequences, наблюдая каждый GPU. Короткий одиночный запрос не доказывает пиковую память и хвост задержек. Повторение прогона с теми же входами помогает отделить устойчивый результат от случайной удачной серии.

  • Readiness проверяет готовность к маршрутизации по принятому контракту, но не подтверждает качество и SLO. После выбранного сбоя или замены версии проверьте возвращение готовности и полезную операцию; зафиксируйте судьбу прерванных запросов и повторов. В предлагаемом протоколе отката отдельно задают возвращаемый комплект, способ запуска и проверку после возврата.

  • Допуск оформляют по фактическим наблюдениям и заранее заданным порогам. Открытые условия — например, неизвестный пик рабочих буферов, отсутствующие отметки времени отдельных токенов или непроверенный длинный контекст — перечисляют явно. Исследование, паспорт GPU и расчёт памяти помогают спланировать тест, но не заменяют его результат.

Финишная прямая

Проверьте инженерное мышление

Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.

01Одинаковая задача с одинаковым результатом занимала на CPU 80 мс. В варианте с GPU измерены последовательные, не перекрывающиеся этапы: подготовка CPU 15 мс, передача входа 25 мс, завершённый kernel 10 мс, возврат результата 30 мс. Каков результат для полной операции?
02Обычный CUDA-блок содержит 64 потока, warp size равен 32. Все потоки первого warp выбирают ветвь A; во втором 16 выбирают A и 16 — B. Речь об одном условном переходе. Где возникает внутригрупповое расхождение?
03Плотные веса FP16 пересохраняют в BF16. Число отдельно хранимых значений и способ упаковки не меняются; квантования нет. Инженер ожидает вдвое меньший объём весов. Какой вывод следует из форматов?
04Модель упакована в четырёхбитные группы с собственной схемой шкал. Движок сообщает «INT4 поддерживается», а GPU имеет Tensor Cores. Точная схема упаковки в списке движка не указана. Достаточно ли этих двух отметок для подтверждения исполнимости артефакта?
05На узле установлен CUDA Toolkit 12.6, устройство с compute capability 8.0 присутствует в списке GPU. Версия загруженного драйвера не записана, целевой kernel ещё не запускали. Что уже подтверждено этими наблюдениями?
06Хеш файла весов safetensors совпал с выбранной поставкой, и тензоры читаются. Для запуска пакет дополнительно требует исполнить model.py; этот код ещё не рассмотрен. Подтверждают ли формат и хеш весов допуск всего пакета к исполнению?
07У дискретной GPU 24 GiB локальной памяти, у CPU — 512 GiB RAM. В CUDA включена UVA. Планируется обычное выделение 32 GiB памяти устройства; managed allocation и распределение по устройствам не используются. Какой вывод о ёмкости обоснован?
08Операция полезно читает 8 GiB и записывает 8 GiB. Корректные CUDA events с ожиданием завершения дали 40 мс. Физический трафик DRAM отдельно не измерялся. Как подписать effective bandwidth по заданным полезным байтам?
09На узле четыре одинаковые GPU. Запрос CUDA подтвердил peer access только в направлении 0 → 1. Приложению нужен обмен между всеми четырьмя устройствами; остальные пары ещё не проверяли. Как продолжить проверку топологии?
10Одна большая копия между двумя GPU показала высокий bandwidth. Проект модели использует четыре GPU и частые небольшие обмены между несколькими парами. Коллега переносит результат копирования на весь проект. Какая проверка соответствует его реальной нагрузке?
11Учебная модель хранит ровно 8 000 000 000 отдельных значений весов BF16, по два байта каждое. Sharing и квантование отсутствуют. Считаются только плотные значения весов, без KV и временных буферов. Каков их объём?
12В этой decoder-only конфигурации общий лимит входа и продолжения — 4096 токенов. После шаблона и специальных токенов вход содержит 3072, а max_new_tokens задан как 1024. Затем приложение добавляет ещё один токен-разделитель к входу. Какой бюджет теперь получается?
13В обычной авторегрессионной decoder-only схеме завершён prefill всего входа. K/V сохранены, logits последней входной позиции доступны. Коллега предлагает заново прогнать весь вход, чтобы получить первый выходной токен. Какой следующий шаг соответствует этой схеме?
14Клиент отправил запрос в t=0. Первый HTTP-байт пришёл через 20 мс, служебное событие — через 30 мс, а первый подтверждённый выходной токен — через 760 мс. В этом пути очередь заняла 500 мс, prefill — 200 мс, остальное — 60 мс. Каков TTFT от отправки до первого выходного токена?
15Для плотного KV-кеша заданы 32 слоя, 32 query-heads, 8 KV-heads, размер головы 128 и два байта на значение. Одновременно живут четыре независимые последовательности с одинаковой геометрией, в каждой сохранено 4096 токенов. Общего префикса, sliding window, квантования KV и накладных расходов нет. Сколько занимают K и V?
16Для одного GPU посчитаны 16 GB плотных весов, около 14,90 GiB, и 2 GiB KV. Доступно 20 GiB device memory. Пик временных буферов, резерв allocator и возможные копии при загрузке ещё не установлены. Какой вывод о запуске обоснован?
17Выбранный движок поддерживает continuous batching с допуском на границе итераций. Из четырёх запросов два завершились; два ещё генерируют. Память завершённых освобождена, новый запрос ожидает, ресурсов для него хватает и политика допуска разрешает приём. Когда он может войти в работу?
18Другая учебная конфигурация поддерживает обе рассматриваемые длины. В двух нагрузках по четыре независимые активные последовательности, но сохранённый контекст каждой — 1024 либо 8192 токена. Слои, KV-heads, размер головы и dtype одинаковы, sharing отсутствует. Как меняется плотный KV при неизменном batch size?
19Клиент записал времена прихода текстовых порций: промежутки примерно 40 мс, в каждой порции разное число токенов. Индивидуальных token timestamps нет; готовый текст затем токенизировали целиком. Какую метрику позволяют обосновать эти наблюдения?
20При одинаковом наборе задач, tokenizer, длинах и правилах генерации X дал 200 выходных токенов/с и оценку качества 0,82; Y — 160 и 0,93. Допуск требует не менее 150 токенов/с и качества 0,90. Оба варианта выполнили заданные TTFT/ITL и остальные критерии. Каков результат приёмки?
21Узел имеет четыре GPU по 24 GiB. Плотные веса выбранной модели занимают 60 GiB. План задаёт четыре независимые реплики, каждую целиком на одной GPU; распределения весов, выгрузки в RAM и квантования нет. Коллега ссылается на суммарные 96 GiB. Как оценить размещение весов?
22План размещает последовательные группы слоёв одной модели на четырёх GPU и передаёт между стадиями активации. В обоснование скорости одиночного ответа приводят обучающий эксперимент GPipe. Документацию выбранного serving-движка ещё не проверяли. Какое описание плана корректно?
23Readiness возвращает успех, и один короткий запрос на прогретой модели дал правильный ответ с низким TTFT. План эксплуатации разрешает 32 активных запроса с длинными контекстами; такой прогон ещё не выполнялся. Какой следующий шаг нужен для подтверждения этого плана?
24В приёмке 100 запросов получили HTTP 200. Из них 80 дали полные правильные ответы, а 20 остановились по лимиту новых токенов и не решили задачу полностью. Критерий успешности требует полного правильного ответа. Отчёт объявил все 100 успешными. Как исправить учёт?
Проверяемая база

Источники курса

Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.

  • Официальная документация

    CUDA C++ Programming Guide

    NVIDIA · CUDA C++ Programming Guide, CUDA 12.6, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    CUDA C++ Best Practices Guide

    NVIDIA · CUDA C++ Best Practices Guide, CUDA 12.6, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Первичная спецификация

    Intel 64 and IA-32 Architectures Software Developer Manuals

    Intel · Version 092, обновлено 19 августа 2026 года

    Официальное описание архитектуры, программной модели и полного набора инструкций Intel 64 и IA-32.

    Открыть первоисточник
  • Официальная документация

    Cloud TPU: bfloat16

    Google Cloud · документация Google Cloud TPU, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    NVIDIA Ampere GPU Architecture Tuning Guide

    NVIDIA · NVIDIA Ampere GPU Architecture Tuning Guide, CUDA 12.6, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Первичная публикация

    AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration

    Ji Lin и соавторы · arXiv:2306.00978, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Первичная публикация

    Efficient Memory Management for Large Language Model Serving with PagedAttention

    Woosuk Kwon и соавторы · arXiv:2309.06180, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    Safetensors

    Hugging Face · репозиторий safetensors, тег v0.4.5, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Контейнер тензоров и граница безопасной сериализации; доверие загрузчику и runtime отдельно.

    Открыть первоисточник
  • Официальная документация

    Transformers 4.44.2: Generation

    Hugging Face · документация Hugging Face Transformers v4.44.2, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    NVIDIA A100 Tensor Core GPU Architecture

    NVIDIA · NVIDIA A100 Tensor Core GPU Architecture whitepaper, PDF открыт 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Первичная публикация

    Neural Machine Translation of Rare Words with Subword Units

    Rico Sennrich, Barry Haddow, Alexandra Birch · ACL Anthology, ACL 2016, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    Transformers 4.44.2: Chat templates

    Hugging Face · документация Hugging Face Transformers v4.44.2, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Первичная спецификация

    Open Container Initiative Image Format Specification

    Open Container Initiative · OCI Image Specification, November 2025

    Определяет манифест, индекс, конфигурацию и слои образа, а также дескрипторы объектов с адресацией по содержимому.

    Открыть первоисточник
  • Первичная спецификация

    SLSA Build Track v1.2

    Supply-chain Levels for Software Artifacts · SLSA specification v1.2

    Определяет уровни SLSA Build, требования к подлинности сведений о происхождении и защите сборочной платформы.

    Открыть первоисточник
  • Официальная документация

    Liveness, Readiness, and Startup Probes

    Kubernetes · Kubernetes current documentation

    Разделяет проверки готовности, работоспособности и запуска. Объясняет их действия и риск каскадного отказа при неверной настройке.

    Открыть первоисточник
  • Официальная документация

    Service Level Objectives

    Google Site Reliability Engineering · Site Reliability Engineering, Chapter 4

    Определяет SLI, SLO и SLA и объясняет user-centric latency, error rate, throughput и percentiles.

    Открыть первоисточник
  • Первичная спецификация

    PCI Express Base

    PCI-SIG · Current Approved Specification: PCI Express Base 7.0

    Официальное описание архитектуры и программного интерфейса PCI Express.

    Открыть первоисточник
  • Официальная документация

    Tuning Throughput Performance for Intel Ethernet Adapters

    Intel · support article 000005811, проверено 6 февраля 2025 года

    Предупреждает, что физический размер PCIe-слота может превышать его электрическую ширину.

    Открыть первоисточник
  • Первичная публикация

    Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism

    Shoeybi et al.; NVIDIA · arXiv:1909.08053, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Первичная схема tensor parallelism при обучении; поддержка современного serving здесь не подтверждается.

    Открыть первоисточник
  • Первичная публикация

    GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints

    Joshua Ainslie и соавторы · arXiv:2305.13245, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    vLLM online serving benchmark: benchmark_serving.py

    vLLM Project · репозиторий vLLM, тег v0.5.4, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Клиентские метрики; точные timestamps, chunks и знаменатели проверить в этой версии и её request adapter.

    Открыть первоисточник
  • Первичная публикация

    Attention Is All You Need

    Ashish Vaswani и соавторы · arXiv:1706.03762, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Первичная публикация

    Orca: A Distributed Serving System for Transformer-Based Generative Models

    USENIX · USENIX OSDI 2022, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Iteration-level scheduling и selective batching; результат статьи не переносится на любой движок.

    Открыть первоисточник
  • Официальная документация

    Histograms and Summaries

    Prometheus · Prometheus documentation, проверено 29 августа 2026 года

    Определяет quantiles/percentiles, histogram buckets и ограничения aggregation precomputed quantiles.

    Открыть первоисточник
  • Официальная документация

    Implementing SLOs

    Google Site Reliability Engineering · The Site Reliability Workbook, Chapter 2

    Описывает построение SLI/SLO от пользовательской цели, measurement window и error-budget policy.

    Открыть первоисточник
  • Первичная публикация

    GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism

    Huang et al.; Google · arXiv:1811.06965, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Стадии и micro-batch pipeline для обучения; иной inference schedule требует отдельной проверки.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие