[!NOTE] Автоматический перевод Эта статья была автоматически переведена с оригинальной английской версии.

LLM Руководство по инженерии: 45 концепций для Инференс, обучения, архитектуры и эксплуатации

Промышленные системы LLM опираются одновременно на архитектуру GPU, принципы системной инженерии и теорию ML. Основные концепции остаются неизменными независимо от того, занимаетесь ли вы настройкой алгоритма TTFT для чат-ботов или настройкой механизма DeepSpeed ZeRO для выполнения задач файн-тюнинг. В данном руководстве все эти элементы собраны в одном месте.

Кратко: В данном руководстве рассматриваются 45 концепций, разделённых на восемь частей — от аппаратного обеспечения и инференс до процессов обучения, деплой, и эксплуатации. В каждой статье определяется суть концепции, объясняется её практическое влияние, приводятся соответствующие цифры для наглядности масштабов, а также указываются связанные разделы. Приведённые данные охватывают период с 2024 года по начало 2026 года.

В данном руководстве предполагается знакомство с основами ML (обратное распространение ошибки, градиентный спуск, функция softmax), а также базовые понятия системной инженерии (иерархии памяти, основы сетевых технологий).

!!! Примечание «Примечание по объёму»

Это длинный справочник, а не линейное руководство. Используйте таблицу ниже, чтобы перейти к той части, которая соответствует вашему текущему выбору.
ЧастьТемыРазделы
Я — архитектурные основы аппаратного обеспеченияЛиния крыши модель, память GPU, глоссарий аппаратного обеспечения1–3
II — основы ИнференсЛатентность, throughput, KV cache, аттеншн, квантизация4–9
III — оптимизации Инференсядра CUDA, FlashAttention, группировка операций, PagedAttention, спекулятивная декодировка10–17
IV — архитектура МодельВнутренняя архитектура трансформеров с декодером только, MoE, токенизация, контекстные окна18–22
V — обучение и выравниваниеПретрейнинг, LoRA, смешанная точность, ZeRO, законы масштабирования, RLHF/DPO/GRPO, дистилляция23–32
VI — масштабирование и деплойПараллелизм, сервинг фреймворки, выбор GPU, роутинг33–36
VII — ПримененияЭмбеддинги, RAG, агенты, промпт-инжиниринг37–40
VIII — Режимы эксплуатации в производственной средеОграничение частоты запросов, моди опережений, мониторинг, затраты, пропускная способность планирование41–45

Как использовать этот руководство в качестве централизованного источника информации

Эта страница специально составлена в общем виде. Используйте её в качестве ориентира, а затем переходите к более подробным материалам, как только решение станет окончательным.

Если вы собираетесь принять решение…Начните сЗатем считываем.
Как обслуживать модельосновы Инференс и деплойРуководство по LoRAX Сервинг
Следует ли выполнять финтюнингОбучение и выравниваниеРуководство LLM Файн-тюнинг
Как retrieval интегрируется в приложениеЭмбеддинги и RAGRAG Метрики оценки
Как работают системы агентовАгенты и промпт-инжинирингИИ-агент Ризонинг циклы
Как оптимизировать позиции в результатах поискаЭмбеддинги и реранкингСтек алгоритмов ранжирования поиска

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


Часть I — Архитектурные основы аппаратного обеспечения

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

1. Ограничения памяти против ограничений вычислительных мощностей и граница производительности модель

Начальной точкой для оценки производительности LLM является интенсивность арифметических операций: за каждый байт данных, который GPU загружает из памяти, сколько полезных вычислений выполняется? Именно этот коэффициент определяет, является ли операция ограниченной процессорной частью (в ожидании результатов работы процессора) или памятью (в ожидании загрузки данных).

У каждого GPU существует порог «критической интенсивности», при котором его вычислительные возможности точно сбалансированы с пропускной способностью памяти. Для GPU NVIDIA H100 (Техническая документация, 2023):

989 TFLOPS3.35 TB/s295 FLOPs/байт\frac{989 \text{ TFLOPS}}{3.35 \text{ TB/s}} \approx 295 \text{ FLOPs/байт}

линия крыши Модель

Две фазы LLM инференс расположены по разные стороны от этого порога:

Чтобы ускорить процесс декодирования, необходимо работать над полосой пропускания памяти: сократить веса путём квантизация, сократить нагрузку на память KV с помощью GQA и PagedAttention, и увеличивать интенсивность с пакетная обработка. Чтобы ускорить префилл, необходимо сосредоточиться на чистых вычислениях: более быстрых GPUs и FP8 операциях.

2. Иерархия памяти GPU

GPU включает четыре уровня памяти, расположенные в форме пирамиды: большая, но медленная основная память (HBM) находится внизу, а крошечные, но чрезвычайно быстрые регистры — сверху. Основной узким местом является перемещение данных вверх и вниз по этой пирамиде. Самый сложный боттлнек располагается между HBM и SRAM, причём скорость работы SRAM примерно в 10 раз выше.

GPU Иерархия памяти

От самого быстрого к самому медленному на H100:

  1. Регистры — самая быстрая память, прямо подключённая к потокам обработки. Именно здесь выполняются математические операции; данные должны загружаться сюда, чтобы Tensor Cores могли их использовать.
  2. SRAM (общая память) — рабочая память со скоростью примерно 33 ТБ/с.
  3. L2 Кэш — промежуточный уровень памяти объёмом 50 МБ со скоростью около 12 ТБ/с. Он служит буфером, благодаря чему при необходимости нескольких SM получить доступ к одному и тому же веса им не нужно загружать данные непосредственно из HBM.
  4. HBM3 — основная память объёмом 80 ГБ, в которой хранятся веса модели и KV cache, со скоростью передачи данных ~3,35 ТБ/с.

FlashAttention, слияние ядер и PagedAttention позволяют сократить объём данных, передаваемых между этими слоями. Благодаря им информация остаётся в быстрой SRAM дольше, что исключает необходимость повторных передач в HBM.

3. Глоссарий аппаратного обеспечения GPU

Приведённые ниже термины встречаются во всём остальном разделе руководства.

HBM (Память с высокой пропускной способностью) — это стеки чипов DRAM, соединённые с помощью межчиповых каналов (TSVs) и размещённые непосредственно внутри корпуса рядом с чипом GPU. Поколения: HBM2e (A100, 2 ТБ/с), HBM3 (H100, 3,35 ТБ/с) и HBM3e (H200/B200 — 4,8–8 ТБ/с). Почему это важно для LLMs: процесс декодирования ограничен пропускной способностью памяти, поэтому пропускная способность HBM напрямую определяет TPOT.

GDDR (Graphics DDR) — традиционная видеопамять (GDDR6, GDDR6X), применяемая в потребительских GPUs (RTX 4090, L40S). У неё меньшая пропускная способность по сравнению с HBM, но она дешевле за ГБ. GDDR6X в RTX 4090 Обеспечивает пропускную способность около 1 ТБ/с по сравнению с 3,35 ТБ/с у H100 на базе памяти HBM3.

SM (Streaming Multiprocessor) — базовый вычислительный блок NVIDIA GPUs. Каждый SM включает в себя CUDA ядер, тензорные ядра, общую память (SRAM) и схематор ворпов. H100 содержит 132 ядра SM.; A100 имеет 108.

Tensor Cores — это специализированные блоки для выполнения операций умножения матриц и накопления внутри каждого SM. Они ускоряют вычисления смешанной точности (FP16, BF16, FP8, INT8), которые играют ключевую роль при обработке данных в трансформерных архитектурах. Tensor Cores модели H100 обеспечивают 989 TFLOPS в режиме TF32 против примерно 67 TFLOPS, получаемых только от ядер CUDA.

CUDA Ядра — универсальные блоки для выполнения операций с плавающей точкой и с целыми числами. Они обрабатывают операции над элементами, активация функции, а также задачи, не связанные с матричным умножением. Tensor Cores берут на себя основную нагрузку по обработке LLMs; все остальные задачи выполняются CUDA ядрами.

Warp — группа из 32 потоков, которые выполняются синхронно на процессоре ядра. Это самая мелкая единица планирования в устройствах NVIDIA GPUs. специализация по искривлению присваивает разные способы искажения данных для разных задач (загрузка данных и вычисления) в целях реализации конвейерной обработки.

NVLink — высокоскоростной интерконнект GPU–GPU внутри одного узла. NVLink 4.0 (H100) обеспечивает двунаправленную пропускную способность 900 ГБ/с; NVLink 5.0 (B200) достигает значения 1,8 ТБ/с. Это критически важно для реализации тензорного параллелизма, при котором GPUs должны обмениваться активации на каждом слое.

InfiniBand — высокоскоростная сетевая архитектура для межузловой коммуникации GPU. NVIDIA ConnectX-7 Обеспечивает пропускную способность 400 Гб/с на порт. Используется для реализации параллелизма пайплайн и распределённой обучающей процедуры между узлами.

RDMA (Remote Direct Memory Access) — позволяет одному GPU читать/записывать в память другого устройства без участия CPU, тем самым снижая латентность. GPUDirect RDMA позволяет осуществлять прямые передачи от GPU к GPU между узлами. Применяется в деагрегированных сервинг структурах для выполнения операций передачи KV cache.

NVMe (Non-Volatile Memory Express) — интерфейс высокоскоростных SSD, применяемый для выгрузки данных с помощью KV cache ZeRO-Infinity Перенос параметров при недостатке памяти GPU/CPU. Скорость последовательного чтения составляет 5–7 ГБ/с для каждого диска (PCIe Gen 4), причём более новые диски Gen 5 достигают скорости 10–14 ГБ/с.

TFLOPS / PFLOPS — количество операций с плавающей точкой в тера/пета единицах в секунду. 1 TFLOPS равен 10¹² FLOPS. Это стандартная единица для измерения производительности throughput процессоров GPU. Видеокарта H100 обеспечивает 989 TFLOPS при использовании формата TF32; устройство FlashAttention-3 достигает примерно 1,2 PFLOPS в режиме FP8.


Часть II — основы Инференс

Инференс представляет собой ту часть системы, которую ощущают пользователи напрямую. Латентность, KV cache, механизм двухфазной обработки модель, аттеншн и квантизация в совокупности определяют скорость, стоимость и надёжность предоставления услуг.

4. Латентность: TTFT, TPOT и процентили

Время от отправки запроса до первого результата Токен (TTFT) — это задержка между подачей запроса и получением первого ответа токен. Оно определяется этапом префилл: модуль модель должен обработать весь объём данных промпт перед тем, как генерировать какой-либо результат, поэтому более длительное время выполнения промпты обычно приводит к увеличению значения TTFT. Целевые показатели зависят от конкретного продукта; MLPerf Инференс v5.0 для интерактивного сценария Llama 2 70B используется лимит P99 TTFT в размере \leq 450 мс.

Время на выход Токен (TPOT) — это средний промежуток времени между последовательными токены после первого из них. Этот показатель относится к фазе декодирования, в ходе которой каждый шаг ограничивается пропускной способностью памяти:

TPOT=E2E ЛатентностьTTFTOutput Токены1\text{TPOT} = \frac{\text{E2E Латентность} - \text{TTFT}}{\text{Output Токены} - 1}

Средняя скорость бесзвучного чтения взрослыми англоязычными читателями составляет примерно 238 слов в минуту при чтении нон-фикшна.Brysbaert, 2019). Цели потоковой обработки по-прежнему должны определяться в ходе тестирования продукта; в рамках сценария интерактивной работы MLPerf устанавливается предельное значение P99 TPOT в размере \leq 40 мс.

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

5. Throughput: токены в секунду и компромисс латентность

Показатель Throughput измеряется в единицах выходного токены в секунду для одновременных запросов. Сам по себе показатель количества запросов в секунду имеет ограниченную информативность, поскольку время обработки ответа 10-токен и ответа 1 000-токен сильно различается. Опубликованные цифры бенчмарк зависят от модель, степени точности, аппаратного обеспечения, длины промпт и выходных данных, уровня конкурентности, а также от установленных SLO. Поэтому необходимо сравнивать эти параметры. vLLM, SGLang, и TensorRT-LLM с использованием одного харнесс вместо объединения их основных результатов.

Компромисс заключается в следующем: при низкой конкурентности каждый запрос получает высокий уровень латентность, однако GPU остаётся недоиспользуемым. Увеличение размера пакетов приводит к почти линейному росту throughput до момента насыщения вычислительных ресурсов, после чего латентность резко возрастает. Goodput — доля запросов, соответствующих установленным целевым показателям качества, — это показатель, который связывает первичные значения throughput с фактическим уровнем удовлетворённости пользователей.

6. KV cache: тот боттлнек за большинством остальных боттлнеки

В процессе авторегрессивного генерирования каждый новый токен учитывает все предыдущие токен. KV cache хранит проекции ключа и значения для каждого токен на всех уровнях структуры, что позволяет избежать необходимости повторных вычислений с сложностью O(n2)O(n^2). Без него для генерации токен в количестве nn элементов потребуется перезапустить процедуру модель для всех n1n-1 предыдущих токены.

KV cache обычно является основным фактором давления на память, поскольку его объём растёт линейно с длиной последовательности, размером пакета данных и количеством слоёв:

KVcache=2×L×hkv×dh×s×B×байтыKVcache = 2 \times L \times h_{kv} \times d_h \times s \times B \times \text{байты}

где:

Конкретные примеры с FP16 и размером пакета 1: Llama 3 8B при 8,192 токены потребляет около 1,0 ГБ KV cache; при 128K токены — 16 ГБ. Llama 3 70B при 128K токены требует около 40 ГБ для обработки одной последовательности, что составляет половину от объёма VRAM процессора H100. При производственных размерах пакетов KV cache легко превышает объём оперативной памяти вес модели. В нерациональных реализациях 60–80% выделенной памяти KV тратится на фрагментацию, что является основной проблемой. PagedAttention был создан для решения.

Основные оптимизации заключаются в GQA (меньшее количество голов KV), KV cache квантизация (FP8/INT8), PagedAttention (аллокация на основе блоков с уровнем отходов <4%)), а также перенос работы KV cache в CPU или NVMe.

7. Префилл против decode: два этапа, два боттлнеки

Этап префилл обрабатывает входные данные промпт параллельно и заполняет структуру KV cache. Из-за большого количества операций умножения матриц его работа ограничивается временем вычислений, поэтому префилл в значительной степени определяет время до первого получения результата токен (TTFT). Этап декодирования генерирует по одному токен за раз. На каждом шаге считываются значения веса модели и KV cache из HBM, превращение процесса декодирования в задачу, ограниченную пропускной способностью памяти, и основной фактор, определяющий время на выход токен (TPOT).

Этапы Префилл и декодирования

Разбиение на блоки префилл позволяет разделить промпт на фиксированные по размеру чанки (например, 512 токены) вместо обработки всего объёма данных сразу. Большие объёмы данных префилл больше не блокируют текущие запросы на декодирование, задачи, зависящие от вычислительных мощностей и объёма памяти, могут выполняться одновременно на одном и том же GPU, при этом показатели vLLM бенчмарки увеличиваются на +50% throughput.Агравал и др., 2024). Стоимость нового запроса немного выше из-за TTFT.

Разделённые сервинг объекты префилл обрабатываются и декодируются в отдельных пулах GPU, что позволяет каждому пулу работать с разным типом боттлнек. Splitwise и DistServe Опишите этот паттерн. Пулы передают данные KV-кэш посредством быстрой межсоединительной сети, такой как RDMA, Поэтому затраты на коммуникацию становятся неотъемлемой частью проектирования.

8. GQA и MQA: сокращение размера KV cache

Аттеншн Варианты

Стандарт Многоголовая архитектура Аттеншн (MHA) для каждого запроса создаётся отдельный головной блок K и головной блок V. Многозапросовая обработка Аттеншн (MQA) все головы запросов делятся одной и той же KV-головой, что обеспечивает крайне значительное сокращение ресурсов. Групповой запрос Аттеншн (GQA) Практический компромисс заключается в том, что группы запросных голов используют общую KV-голову.

Llama 3 70B использует 64 запросных головы, но лишь 8 KV-голов, что соответствует 8-кратному KV cache сокращению по сравнению с архитектурой, в которой на каждую запросную голову приходилась по одной KV-голове. Llama 3.1 405B имеет 128 запросных голов и 8 KV-голов, что по тем же расчётам означает 16-кратное сокращение.Meta, 2024). Ainslie и соавторы показали, что качество результатов работы GQA при использовании тестируемого модели близко к уровню MHA, при этом достигается скорость, сопоставимая с MQA. Меньший размер KV cache позволяет обрабатывать более крупные наборы данных, однако фактическая экономия по показателям латентность и throughput по‑прежнему зависит от выбранного ядра и характера задачи.

9. Квантизация: обмен битами ради ускорения и снижения потребления памяти

Квантизация снижает точность веса модели и/или активации. Основные компромиссы:

ФорматбитыВес память (7B) модель)Примечание по качеству
FP16/BF1616~14 ГБ
FP88~7 ГБРеализация на уровне аппаратного обеспечения в Hopper; оценка модель
INT88~7 ГБКалибровка и зависимость от ядра
INT44~3,5 ГБМаксимальная степень сжатия; требуется тщательная оценка

AWQ (Activation-Aware Вес Квантизация) выявляет ту <1% наиболее значимых веса путём анализа величин активация и применяет масштабирование по отдельным каналам для их защиты. Для его работы требуется всего 128–1,024 единиц калибровка токены, и он был удостоен награды «Лучшая статья» на конференции MLSys 2024. GPTQ для поэтапной обработки квантизация используется информация из гессиана второго порядка, при этом требуется дополнительное количество калибровочные данные. bitsandbytes Библиотека Tim Dettmers осуществляет квантизацию во время загрузки модель без необходимости отдельной предварительной обработки; её формат NF4 используется для поддержки QLoRA файн-тюнинг. Алгоритм FP8 на аппаратуре класса Hopper сокращает объём памяти, требуемой для вес, по сравнению с FP16/BF16, однако качество и скорость всё равно зависят от модель, калибровка и самого ядра.

Ядро сервинг может играть столь же важную роль, как и алгоритм квантизация. В рамках рассматриваемого сравнения Раздел 10, Те же самые квантизированные веса отличаются в 2,6 раза по throughput между разными ядрами.


Часть III — оптимизации Инференс

В этом разделе рассматриваются программные техники, позволяющие превратить работающую систему инференс в высокопроизводительную. Каждая из них нацелена на конкретный аспект производительности боттлнек: FlashAttention использует особенности разницы скоростей между SRAM и HBM, PagedAttention устраняет фрагментацию KV cache, а continuous batching обеспечивает постоянную загрузку GPU.

10. Ядра CUDA и их слияние

Ядро CUDA — это функция, написанная для GPU и выполняющаяся параллельно на тысячах потоков. Когда CPU вызывает ядро, GPU распределяет работу среди своих SMs: Каждый SM выполняет несколько пакетов обработки, состоящих по 32 потока, причём каждый поток обрабатывает определённый фрагмент данных. Любая операция в LLM инференс — от умножения матриц до сэмплирования с использованием токен — в конечном итоге представляет собой запуск ядра. Один проход через модель размером 70 млрд модель приводит к запуску сотен или тысяч ядер, и разница между примитивным и оптимизированным ядром может определить, сможет ли ваша система выполнить установленные показатели качества латентность.

Основные категории ядра в LLM сервинг:

Качество ядра зачастую имеет большее значение, чем алгоритм квантизация. Тот же самый веса, квантированный с использованием INT4, поступает через Marlin (Оптимизированный ядро FP16xINT4) достигает скорости 712 токены/с, тогда как стандартная версия GPTQ работает со скоростью 276 токены/с, что соответствует разнице в 2,6 раза throughput, обусловленной исключительно более эффективным использованием GPU. Благодаря асинхронному зачислению из памяти и очередям общей памяти Marlin обеспечивает непрерывную работу Tensor Cores без необходимости ожидания HBM. Тритон снижает барьеры для разработки собственных ядров путем предоставления возможности программирования с использованием GPU через Python вместо прямого использования CUDA C++, что позволяет инженерам ML осуществлять оптимизацию на уровне ядра, а не только специалистам GPU. Большинство оптимизаций, рассмотренных далее в этом разделе (FlashAttention, объединённые ядра, PagedAttention), по сути представляют собой либо улучшенные версии ядров, либо более эффективные способы управления запуском ядер.

Фьюжн ядра позволяет объединять последовательные операции в одно ядро GPU и исключать промежуточные операции записи HBM. К числу распространённых форм фьюжна относятся проекция QKV, аттеншн в сочетании с функцией softmax, а также операция сложения с применением метода RMSNorm.FlashNorm), и SwiGLU активация (Ядро DeepFusionKernel). Тритон Обеспечивает доступ к этим ядрам из Python. Конкретные показатели количества запусков и уровня использования зависят от графика модель, компилятора, GPU, а также параметров сервинг фреймворк, поэтому необходимо проанализировать реально используемую стек-архитектуру, вместо того чтобы полагаться на универсальные процентные значения.

11. FlashAttention: размещение аттеншн в виде плитки для хранения в SRAM

Стандартный аттеншн реализует полную матрицу размером N×NN \times N из аттеншн в HBM, что требует O(N2)O(N^2) памяти и приводит к значительному объёму операций с памятью. Идея метода FlashAttention заключается в том, чтобы вообще не создавать такую матрицу. Для этого матрицы Q, K, V делятся на блоки, которые помещаются в SRAM, Вычисляется частичный аттеншн внутри каждого тайла, а результаты объединяются с помощью онлайн-алгоритма softmax (с постепенным отслеживанием максимального значения и суммы за все обработанные блоки). Памятьозапотребление снижается с O(N2)O(N^2) до O(N)O(N), а время выполнения HBM уменьшается в десять раз.

Каждая версия ориентирована на боттлнек своей генерации GPU:

Каждое поколение сталкивалось с новыми ограничениями аппаратного обеспечения, и каждая версия FlashAttention перерабатывалась полностью, начиная с ядра операционной системы, чтобы преодолеть эти проблемы.

12. FlashDecoding: параллелизация процесса декодирования боттлнек

Стандартный FlashAttention поддерживает активность GPU путем распределения нагрузки между параметрами размера пакета и длины запроса. Во время декодирования модель генерирует ровно 1 токен за раз (при длине запроса, равной 1). Если произведение размера пакета на количество attention heads меньше общего количества единиц SM у GPU (108 на устройстве A100), большинство GPU остаются в неактивном состоянии, в то время как несколько единиц последовательно обрабатывают данные из истории токен.

FlashDecoding Для решения этой проблемы вводится новое измерение параллелизма — сама длина последовательности KV. Благодаря этому KV cache разбивается на более мелкие чанки, которые затем распределяются между всеми остальными свободными GPU процессорами для одновременной обработки; в результате полученные частичные результаты объединяются с помощью алгоритма сокращения по формуле log-sum-exp.

В результате достигается ускорение процесса полного декодирования в 8 раз для длинных последовательностей (контекст объёмом 64 Кб), причём время декодирования за один элемент остаётся практически неизменным для токен. Генерация токен в количестве 60 000 единиц происходит почти с такой же скоростью, как и генерация токен в количестве 100 единиц.

13. Continuous batching против статического батчинга

Статическое группирование предполагает ожидание завершения обработки всех последовательностей в пакете перед началом работы над следующими, из-за чего короткие последовательности тратят GPU циклов в состоянии простоя после достижения конца последовательности. Continuous batching (введённый… Статья Orca, OSDI 2022) работает с гранулярностью на уровне итераций: на каждом шаге декодирования завершённые последовательности удаляются, а новые вставляются.

В модели OPT-13B от Anyscale бенчмарк оптимизированное статическое группирование запросов позволило достичь скорости в 4 раза выше, чем у простой базовой версии, continuous batching — в 8 раз, а vLLM с использованием continuous batching и PagedAttention — 23 раза.Anyscale, 2023). Continuous batching также увеличивает нагрузку на механизм выделения ключ-значений, поэтому его часто используют в сочетании с управлением пейджированной памятью.

14. PagedAttention: виртуальная память для KV cache

vLLM’s PagedAttention В этом подходе идея виртуальной памяти операционной системы применяется к управлению KV cache. KV cache делится на блоки фиксированного размера (обычно по 16 токены); блоки выделяются по мере необходимости по мере генерации токены, а логические (последовательные) адреса сопоставляются с физическими (рассеянными) адресами памяти с помощью таблиц блоков. Несколько запросов, имеющих общий префикс (системные промпты, поиск лучей), могут указывать на одни и те же физические блоки.

Ранние системы тратили 60–80% памяти KV cache на фрагментацию и предварительное выделение ресурсов. Технология PagedAttention сокращает этот показатель до <4%, что позволяет объёму throughput увеличиться в 2–4 раза при сохранении того же латентность, а по сравнению с HuggingFace Transformers — даже в 24 раза.vLLM Блог, 2023).

15. Спекулятивная декодировка: несколько токены за один проход вперёд

спекулятивная декодировка

Небольшой draft модель генерирует KK кандидатов токены, после чего крупный target модель проверяет все эти KK вариантов токены за один проход вперед. Правильные токены принимаются, а первый неверный вариант отклоняется. Качество вывода математически идентично качеству, получаемому при использовании только самого target модель, поэтому речь идёт о безубыточном ускорении обработки.

Это работает потому, что процесс декодирования LLM ограничен пропускной способностью памяти: проверка KK токены требует примерно столько же ресурсов, сколько и генерация 1 элемента, поскольку в обоих случаях необходимо загрузить все веса модели один раз. Типичные ускорения составляют от 1,5 до 3 раз, при использовании подобных методов. EAGLE-3 доходит до 6,5x. Существуют следующие варианты: Медуза (дополнительные головы прогнозирования без отдельных модель), декодирование с использованием поиска промпт (сопоставление n-грамм с входными данными в свободном режиме) и метод EAGLE (экстраполяция на уровне признаков).

При больших размерах пакетов дополнительная работа по формированию предварительных версий и их проверке может свести на нет все преимущества; в одном из опубликованных отчетов об оценке указывается на замедление работы в 1,4–1,8 раза в таких условиях. Спекулятивное декодирование демонстрирует наилучшие результаты тогда, когда размер пакета сервинг достаточно мал, а вероятность принятия предварительной версии высока.

16. Prefix caching и KV cache используются повторно

Вместо того чтобы удалять KV cache по окончании обработки запроса, prefix caching сохраняет его для повторного использования в новых запросах, имеющих одинаковый префикс токены. Это позволяет избежать создания избыточных префилл для системные промпты, примеров типа «несколько примеров», RAG контекста и истории многократных диалогов.

Автоматический Prefix caching модуля vLLM Блоки вида ключ-значение хешируются, после чего для поиска используется глобальная таблица хешей. RadixAttention в SGLang сохраняет дерево радикс для кэшированных тензоров вида KV с уровнем детализации токен. Поскольку оба подхода основаны на повторяющихся идентичных префиксах типа токен, степень успеха поиска следует указывать вместе с показателями латентность или throughput.

17. Практическое применение стриминга

стриминг отправляет токены клиенту по мере их генерации, вместо того чтобы ждать полного ответа. Многие сервинг фреймворки предоставляют такую возможность с помощью Server-Sent Events: клиент устанавливает долгоживущее HTTP-соединение, а сервер передаёт каждый токен или токен пакет по мере его формирования data: событие. TTFT определяет момент, когда пользователь впервые видит результат выполнения; TPOT помогает оценить степень плавности его отображения. Целевые значения устанавливаются в ходе тестирования продукта и с учётом выбранного способа взаимодействия модель.

С точки зрения клиентской части приложения потоковая передача данных вынуждает принимать решения относительно буферизации. Отрисовка токен с помощью токен может приводить к визуальным скачкам, особенно при работе с маркдауном или блоками кода, которым требуется несколько токен контекстных элементов для корректной форматирования. Распространёнными подходами являются буферизация на уровне слов (накопление токены до появления разделителя пробелов), буферизация на уровне строк (ожидание символа новой строки перед отрисовкой) и адаптивная буферизация (немедленная отрисовка текстового контента и буферизация для блоков кода). stream_options: {"include_usage": true} Параметр в реализациях, совместимых с OpenAI, APIs возвращает значения токен для финального события SSE, что позволяет осуществлять точный учёт затрат при передаче потоковых ответов.

Разбитый на чанки префилл Именно это позволяет системе стриминга выдерживать нагрузку. Без этого один длительный префилл может заблокировать доставку контента токен для всех остальных одновременно работающих пользователей.


Часть IV — архитектура Модель

Как строятся LLMs: блок трансформера, токенизация, механизмы обработки контекста, а также архитектурные варианты, которые стали стандартом. Все эти элементы лежат в основе как инференс, так и процесса обучения.

18. Основы архитектуры Transformer

Современный трансформер, предназначенный исключительно для декодирования (GPT, Llama), представляет собой стек идентичных слоёв, в каждом из которых имеются два подблока: аттеншн и feed-forward. Каждый подблок оборачивается коннектом с остатком и операцией нормализации. Основные компоненты:

Многоголовой Аттеншн — это механизм, позволяющий каждому токен анализировать все остальные токен с целью определения того, что является релевантным. Входные данные проецируются в три матрицы: Queries (что я ищу?), Keys (что я содержу?) и Values (какую информацию я несу?). Затем вычисляются оценки Аттеншн следующим образом:

Аттеншн(Q,K,V)=softmax(QKTdk)V\text{Аттеншн}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Скалярное произведение QKTQK^T позволяет оценить степень сходства между любыми двумя парами токены. Деление этого значения на dk\sqrt{d_k} предотвращает чрезмерный рост скалярных произведений (что могло бы привести к тому, что функция softmax будет работать в областях с исчезающими градиентами). Функция softmax преобразует полученные оценки в вероятности, а умножение на VV формирует взвешенную комбинацию векторов значений. Параллельная обработка таких операций через несколько голов позволяет модель одновременно учитывать различные связи (одна голова — для синтаксиса, другая — для ко-референции и т. д.).

Сеть с прямым прохождением сигнала (FFN) — как только аттеншн определяет, какие токены являются релевантными, FFN решает, что делать с этой информацией. Современные LLMs используют SwiGLU вместо исходной двуматричной ReLU FFN:

SwiGLU(x)=Swish(xW1)xW2\text{SwiGLU}(x) = \text{Swish}(xW_1) \otimes xW_2

SwiGLU использует три матрицы вес вместо двух, а также функцию Swish активация с плавной зависимостью вместо функции ReLU. Эта архитектура применяется в семействах моделей модель, таких как Llama, Mistral, Qwen и Gemma. FFN обычно составляет около двух третей от общего количества параметров модель, хотя точный процент зависит от конкретной архитектуры.

Остаточные соединения — каждый подблок добавляет свой выход обратно к своему входу: Output=Input+Sublayer(Input)\text{Output} = \text{Input} + \text{Sublayer}(\text{Input}). Без таких пропускающих соединений градиенты исчезают при обратной передаче ошибки через 80–128 слоев. Остаточное соединение создаёт путь, позволяющий информации и градиентам передаваться напрямую от ранних слоёв к поздним.

RMSNorm — широко применяется в современных семействах моделей LLM. LayerNorm осуществляет нормализацию путём центрирования данных (вычитания среднего значения) и пересчёта масштаба (деления на стандартное отклонение). RMSNorm Этот подход опускает шаг вычитания среднего значения и осуществляет лишь перескейлинг; в соответствующей статье указано на достижение ускорения в размере 7–64% для всех тестированных модели без какого-либо снижения производительности в рамках этих экспериментов. Также часто применяется способ размещения данных Pre-norm, при котором нормализация выполняется до аттеншн или до слоя FFN, поскольку это способствует повышению стабильности градиентов.

Оценка количества параметров для декодера без модель:

Общая величинаV×d+12×L×d2\text{Общая величина} \approx V \times d + 12 \times L \times d^2

Здесь VV — размер словаря, dd — скрытая размерность, а LL — количество слоев. Выражение V×dV \times d представляет собой матрицу входных данных эмбеддинг; выражение 12×d212 \times d^2 используется для аппроксимации операций аттеншн и FFN веса в каждом слое. Для модели Llama 3 8B (V=128,256V=128{,}256, d=4,096d=4{,}096, L=32L=32) оценочное значение составляет примерно 0.53B+6.44B=6.97B0.53B + 6.44B = 6.97B параметров. Заявленное общее количество параметров в 8.03B выше из-за того, что в данной аппроксимации не учитываются архитектурные детали, такие как точная ширина блока FFN и отдельная проекция выходных данных.

19. Почему архитектуры с декодером только доминируют

Оригинал Трансформер (2017) включал как кодировщик, так и декодировщик. С тех пор этот сегмент технологий разделился на три архитектурные семейства, причём одно из них стало стандартом для генеративных AI.

Модели типа только энкодер модели (BERT, RoBERTa) используют двунаправленный аттеншн: каждый токен учитывает все остальные токен в обоих направлениях. Это позволяет получать высококачественные представления для задач понимания текста (классификация, NER, измерение семантического сходства), однако такие модели не способны к авторегрессивному генерированию текста. Тем не менее, модели только энкодер модели по-прежнему остаются основой для эмбеддинг-модели, реранкеры, а также легковесные классификаторы (например, роутеры, основанные на BERT) RouteLLM).

Кодер-декодер модели (T5, BART, первоначальная версия Transformer) разделяет процессы понимания и генерации. Кодер обрабатывает весь входной текст с использованием двунаправленного аттеншн, после чего декодер авторегрессивно формирует результат, опираясь на представления кодера через cross-attention. Такая архитектура имеет естественное преимущество при решении задач типа «последовательность — последовательность», таких как перевод, где входные и выходные данные являются совершенно разными последовательностями. Модель T5 от Google показала, что любую задачу NLP можно сформулировать как задачу «текст — текст», и кодер-декодеры модели по-прежнему используются в некоторых специализированных системах (Whisper для распознавания речи, FLAN-T5 для выполнения инструкций).

Только декодер модели (GPT, Llama, Mistral, Gemini) использует каузальную (однонаправленную) аттеншн структуру: каждый токен учитывает только предыдущие токены элементы. Все обрабатывается как прогноз следующего токен элемента: «входными данными» является начало последовательности, а «выходными» — её продолжение. Существует четыре основных причины, по которым такая архитектура стала доминирующей:

  1. KV cache эффективность. KV cache, рассчитанный на основе предыдущего токены, остаётся в силе при генерации новых токены, поэтому его никогда не нужно удалять или пересчитывать заново. Кодировщик-декодировщик модели вынужден хранить два отдельных аттеншн кэши (self-attention плюс cross-attention для выходных данных кодировщика), что увеличивает нагрузку на память и усложняет архитектуру.

  2. Простота обучения. Цель обучения заключается в прямой предсказании следующего токен на основе сырого текста. Не требуется ни парная входно-выходная данных (как это необходимо для перевода модели), ни реконструкция с маскировкой токен (как это нужно BERT). Модель можно обучать практически любому тексту из Интернета, книг или кода без специальной предварительной обработки, что является огромным преимуществом при масштабировании объёма данных до триллионов токены.

  3. Простота архитектуры. Один модуль обрабатывает всё: тот же блок трансформера, повторяющийся LL раз. Нет слоев энкодер-декодер cross-attention, нет отдельной стековой структуры энкодера. Это делает стратегии параллелизма более простыми в реализации (Раздел 33), и сокращает объём задач, требующих оптимизации. FlashAttention, квантизация, а также спекулятивная декодировка должны обрабатывать лишь один шаблон аттеншн.

  4. Обучение в контексте. Модели типа «только декодер» модели по своей природе хорошо справляются с задачами обучения на небольшом количестве примеров, поскольку примеры, инструкции и запросы находятся в одной последовательности в виде токены. У таких модель отсутствует различие между «входными данными» и «выходными данными»; они предсказывают следующий токен на основе всей информации, имеющейся до него. Именно GPT-3 впервые продемонстрировал работу этого подхода в масштабах, что сделало модели «только декодер» модели идеальным решением для роли универсального ассистента.

20. Смешивание экспертов

MoE позволяет заменить громоздкие FFN в каждом слое трансформера на несколько более мелких экспертных FFN, а также на легковесный механизм управления роутер. роутер вычисляет оценку для каждого эксперта (обычно с помощью функции softmax над выученными линейными проекциями) и выбирает kk лучших экспертов в соответствии с токен. Выполняются только активированные эксперты, поэтому модель может обладать огромной общей пропускной способностью при одновременном сохранении низких затрат на обработку за единицу токен. Это является редкой условной обработкой: общее количество параметров определяет, что модель может представлять, а количество активных параметров — сколько это стоит в плане вычислительных ресурсов.

МодельОбщее количество параметровАктивные параметрыЭксперты (маршрутизированные + общедоступные)Топ-к
Mixtral 8x7B47B~13 млрд8 + 02
DeepSeek-V3671B37B256 + 18

Общий эксперт в DeepSeek-V3 активируется для каждого токен. Он формирует базовое представление, на основе которого специализированные эксперты могут создавать более узкоспециализированные решения.

Процесс обучения MoE сопровождается тремя характерными проблемами: дисбаланс нагрузки, коллапс экспертов и высокие затраты на коммуникацию экспертный параллелизм. В традиционных методах MoE модели для коррекции дисбаланса в роутинг добавляется вспомогательная функция потерь, однако она может конкурировать с основной целевой функцией. DeepSeek-V3 Вместо этого используются параметры смещения вне рамок алгоритма обратного распространения ошибки: система снижает оценку экспертов с чрезмерной нагрузкой и повышает оценку тех, которые используются недостаточно интенсивно. В статье показано, что такой подход обеспечивает лучший баланс роутинг без необходимости идти на компромиссы, связанные с применением дополнительных функций потерь.

21. Токенизация: BPE, SentencePiece и tiktoken

LLMs не видит текст; вместо этого он обрабатывает последовательности целочисленных токен идентификаторов. Механизм токенизатор разбивает необработанный текст на токены (субслова) и присваивает каждому из них соответствующий идентификатор. Выбор токенизатор влияет на качество модель, скорость обработки инференс, а также на справедливость работы системы в мультиязычной среде.

Кодирование пар байтов (BPE) Это распространённый алгоритм. Он итеративно объединяет наиболее часто встречающиеся соседние пары в обучающем корпусе. Упрощённый пример:

  1. Начните с лексики на уровне символов: [l, o, w, e, r, _]
  2. Наиболее частая пара (l, o) → объединить с lo → словарный запас: [l, o, w, e, r, _, lo]
  3. Следующей по частоте парой является (lo, w) → объединить с low → добавляется словарный запас low
  4. Продолжайте процесс до тех пор, пока объём словаря не достигнет заданного значения (например, 128 К токены)

Обычные слова вроде «the» преобразуются в единый токены, тогда как редкие слова, такие как «defenestration», разбиваются на отдельные морфемы. ["def", "en", "est", "ration"]Компромисс заключается в соотношении размера словаря и длины последовательности.

Три реализации токенизатор покрывают большинство сценариев промышленного использования:

Размеры словарей постоянно увеличиваются, что имеет серьезные последствия для эффективности:

МодельРазмер словаряанглоязычная фертильностьПочему это важно
GPT-250,257~1,3 токены/словоИсходная база BPE
Llama 232,000~1,4 токены/словоМеньший размер словаря, более длинные последовательности
GPT-4100,256~1,1 токены/словоЛучшая степень сжатия и меньшее количество токены за один запрос
Llama 3128,256~1,0 токены/словоВ 4 раза превосходит по размеру Llama 2, что обеспечивает значительное улучшение мультиязычных возможностей.
GPT-4o200,000~1,0 токены/словоСамый крупный вводный словарь в продакшене

Плодородие (токены на слово) показывает эффективность сжатия. Чем ниже этот показатель, тем лучше: меньшее количество токены означает более короткие последовательности, снижение затрат и возможность разместить больше контента в контекстное окно. Для английского языка этот показатель обычно составляет ~1,0–1,3 токены на слово, однако при использовании нелатинских алфавитов (китайского, японского, корейского, арабского) он может быть в 2–4 раза выше из-за ориентации словаря на английский язык. Для пользователей, не говорящих на английском, передача того же контента стоит в 2–4 раза дороже в токены, что представляет собой постоянную проблему справедливости, которую более объёмные и сбалансированные словари решают лишь частично.

22. Контекстные окна и позиционные кодировки

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

МодельКонтекстное окноГод
Оригинальный Transformer5122017
128 К2023
Claude 3.5200K2024
Gemini 1.5 Pro1 млн+2024
2 М2025

Здесь существует фундаментальная проблема: механизм аттеншн рассматривает поступающий к нему вход как множество, а не как последовательность. В его архитектуре отсутствует встроенное понятие порядка слов. Без информации о позициях выражения «кот сидел на коврике» и «коврик сидел на коте» будут иметь одинаковые представления. Позиционные кодировки вносят информацию о порядке, благодаря чему модель может определять, где именно расположен каждый токен.

Три распространённых подхода:


Часть V — Обучение и выравнивание

Именно в процессе обучения формируются необходимые способности. В этом разделе рассматриваются претрейнинг, эффективные методы файн-тюнинг (LoRA, смешанная точность), законы масштабирования, а также подходы к выравниванию модели.

23. Претрейнинг, файн-тюнинг и выравнивание

Обучение Пайплайн

Претрейнинг представляет собой самонадзорное прогнозирование следующего элемента токен на основе крупного корпуса данных. Его вычислительные затраты спаны во много раз превышают аналогичные показатели для других подходов. Llama 3 405B, Например, для этой задачи применялась величина в 3,8×10253{,}8 \times 10^{25} FLOPs. Supervised файн-тюнинг (SFT) позволяет адаптировать заранее обученный модель под конкретные задачи с использованием маркированных данных. RLHF / RLAIF опирается на данные о предпочтениях для формирования поведения: традиционный RLHF пайплайн собирает сравнения, обучает функцию награды модель, а затем оптимизирует политику. В рамках подхода RLAIF вместо некоторых человеческих оценок используется обратная связь, генерируемая AI.

Вычислительные затраты зависят от размера модель, длины последовательности, объема данных, выбранного оптимизатора и используемого метода. Кроме того, PPO хранит больше состояний модель по сравнению с SFT, поскольку типичная структура включает в себя параметры политики, эталона, награды и критика модели. Я подробно рассмотрел весь процесс принятия решений файн-тюнинг фреймворк в Руководство LLM Файн-тюнинг.

24. LoRA и QLoRA: параметроэффективный файн-тюнинг

LoRA Происходит замораживание заранее обученной структуры веса, после чего вводятся обучаемые матрицы низкого ранга AA (r×kr \times k) и BB (d×rd \times r); в результате обновленная модель вес имеет вид W0+BAW_0 + BA. В работе LoRA модель GPT-3 175B была преобразована в конфигурацию, содержащую примерно 18 миллионов обучаемых параметров. Ранг является параметром настройки, а не правилом, определяющим сложность задачи; его значение выбирают путем тестирования качества работы и оценки затрат памяти. После завершения обучения адаптеры LoRA могут быть интегрированы в основную структуру веса, что позволяет избежать использования отдельного пути для адаптеров в инференс.

QLoRA В процессе обучения адаптеров LoRA в BF16 осуществляется загрузка базовой структуры модель с использованием 4-битных форматов NF4 квантизация. Механизм NormalFloat4 способствует размещению большего количества квантизация уровней ближе к нулю, где плотность вес достигает максимума. В исследовании была проведена финтунинговая настройка модели объемом 65 млрд модель на одном устройстве с памятью 48 ГБ GPU, и полученные результаты оказались сопоставимы с показателями базовых версий в 16 битах. Баланс между производительностью рантайм и потреблением памяти характерен именно для тестируемой технической стековой сборки.

25. Обучение с смешанной точностью

Каждый формат с плавающей точкой распределяет свои биты между тремя областями: знаком (всегда 1 бит), экспонентой, которая определяет динамический диапазон, и мантиссой, отвечающей за точность представления чисел. Увеличение количества битов экспоненты позволяет охватывать более широкий диапазон значений; большее количество битов в мантиссе обеспечивает более тонкое различение близко расположенных чисел. Форматы целых чисел не содержат экспоненты вовсе и представляют только равномерно расположенные целые значения в пределах фиксированного диапазона.

ФорматбитыРазметка (S / E / M)ДиапазонТочностьЧастое использование
FP32321 / 8 / 23±3,4×1038\pm 3{,}4 \times 10^{38}примерно 7 десятичных знаковОсвойте веса, состояния оптимизатора (моментум и дисперсия Adam)
BF16161 / 8 / 7±3,4×1038\pm 3{,}4 \times 10^{38}~2 знака после запятойРекомендуемый формат обучения — тот же диапазон, что и для FP32, масштабирование потерь не требуется
FP16161 / 5 / 10±65,504\pm 65{,}504примерно 3 знака после запятойОбучение с масштабированием функции потерь (старый GPUs); инференс на аппаратуре до появления Hopper
FP8 E4M381 / 4 / 3±448\pm 448примерно одна десятичная цифраПрямой проход на Hopper (H100) — повышенная точность для веса и активации
FP8 E5M281 / 5 / 2±57,344\pm 57{,}344~0,6 десятичных знакаОбратный проход в Hopper — более широкий диапазон градиентов
INT88фиксированная точка128-128 до 127127Целые числа с точностью до единицыПост-трейнинг вес квантизация в контексте инференс (W8A8); KV cache квантизация
INT44фиксированная точка8-8 до 77Целые числа с точностью до единицыАгрессивное weight-only квантизация (AWQ, GPTQ) применение к инференс на аппаратуре с ограниченными ресурсами памяти

BF16 имеет тот же диапазон, что и FP32, поскольку диапазон определяется значением поля экспонента, а BF16 сохраняет все 8 битов экспонента из FP32. Взамен он отказывается от битов мантиссы (7 против 23), жертвуя точностью ради сокращения объёма памяти вдвое, при этом избегая проблем переполнения и недополнения, характерных для процесса обучения FP16. У FP16 всего 5 битов экспонента, из-за чего его диапазон ограничивается примерно 65 К. Градиенты зачастую превышают этот предел, и именно поэтому при обучении FP16 требуется масштабирование потерь: сначала потери умножают на большую константу перед вычислением обратного распространения ошибки, а затем градиенты делят на эту же константу. BF16 делает масштабирование потерь ненужным.

Числовые форматы целых чисел редко используются в основных арифметических операциях обучения, поскольку процесс обратного распространения ошибок требует широкого динамического диапазона. Они широко применяются при инференс, где замороженные веса могут быть отображены в виде калиброванных шкал. Техники INT4, вес и квантизация позволяют сократить размер 7B модели модель с примерно 14 ГБ до 3,5 ГБ за счёт устранения накладных расходов, связанных с рантайм; при этом необходимо оценивать качество выбранного модель и метода.

FP8 обучение на процессорах H100 с использованием Механизм Transformer В сценариях, когда критична точность, используется архитектура E4M3, а в случаях, требующих более широкого диапазона обработки — архитектура E5M2. По данным NVIDIA, при тестировании конфигурации объёмом 175 миллиардов нейронов время выполнения задач увеличивается всего на 75% по отношению к аналогам. DeepSeek-V3 В ходе финальной фазы обучения была применена технология FP8 с смешанной точностью, в результате чего было затрачено около 5,6 миллиона долларов на вычислительные ресурсы, эквивалентные расходам на аренду, без учёта затрат на исследования и разработки и инфраструктуру.

26. Проверка чекпоинтов градиентов

Каждый слой процесса передачи данных генерирует промежуточный результат, называемый активация:

Входные данные[Слой 1]активация1[Слой 2]активация2[Слой 3]результаты обработки\text{Входные данные} \rightarrow [\text{Слой 1}] \rightarrow \text{активация}_1 \rightarrow [\text{Слой 2}] \rightarrow \text{активация}_2 \rightarrow [\text{Слой 3}] \rightarrow \text{результаты обработки}

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

Gradient checkpointing позволяет компромиссировать между вычислительными ресурсами и объёмом памяти за счёт отказа от хранения большей части этих активации и их повторного вычисления «на лету» во время процесса обратного распространения ошибки. Стандартная стратегия (Чен и др., 2016) делим сеть из nn слоев на n\sqrt{n} равномерно расположенных сегментов и сохраняем лишь границы активация каждого из них. Именно эти сохранённые границы и являются “чекпоинты”. Все промежуточные активации внутри сегмента немедленно удаляются.

Когда обратный проход достигает слоя внутри сегмента, его активации пересчитываются на основе ближайших чекпоинт. Это позволяет снизить потребление активация памяти с O(n)O(n) до O(n)O(\sqrt{n}), что на практике означает сокращение на 60–70%, при этом требуется примерно один дополнительный передний проход (что увеличивает нагрузку на вычисления примерно на 20–33%). FlashAttention применяет тот же принцип внутри аттеншн, не формируя полную матрицу аттеншн. Его можно включить в HuggingFace с gradient_checkpointing=True.

27. Этапы ZeRO в DeepSpeed

В стандартном режиме данных параллелизма каждый GPU хранит полную копию веса модели, градиентов и состояний оптимизатора. Для алгоритма Adam каждый параметр занимает 2 байта на FP16 вес, ещё 4 байта — на FP32 главный вес, 4 байта — на моментум, 4 байта — на дисперсию и 2 байта — на градиент, то есть в сумме 16 байт на параметр. Модель с 7,5 млрд параметров модель требует примерно 120 ГБ памяти на каждый GPU, причём каждый GPU хранит точно такую же информацию. На 64 процессорах GPUs это означает наличие 64 идентичных копий по 120 ГБ каждая. Это значительная трата ресурсов.

DeepSpeed ZeRO (Оптимизатор нулевой избыточности) устраняет такое дублирование путем размещения этих компонентов по GPUs вместо их копирования:

ConfiguraцияСостояния оптимизатораГрадиентыВесаПамять с ограничением по GPU (7,5 млрд)
Отсутствие ZeROреплицированныйреплицированореплицировано~120 ГБ
Этап 1Разделённый на частиреплицированореплицировано~31 ГБ
Этап 2Разделённый на частиРазделённый на частиреплицировано~16 ГБ
Этап 3Разделённый на частиРазделённый на частиРазделённый на части~1,9 ГБ

Компромисс заключается в объёме коммуникаций. На первом этапе добавляется минимальное дополнительное нагрузка, на втором этапе операция all-reduce заменяется на reduce-scatter (сопоставимая стоимость), однако на третьем этапе требуются вызовы all-gather перед каждым слоем как в процессе передачи данных вперёд, так и назад, что приводит примерно к в 1,5 раза большему объёму коммуникаций по сравнению со стандартным подходом с параллельной обработкой данных.

ZeRO-Infinity Этот подход расширяет концепцию этапа 3 путем переноса разбитых на части состояний в оперативную память CPU, а также в накопители типа NVMe SSD, что позволяет выполнять обучение модели с триллионами параметров даже на ограниченных кластерах GPU. Однако такой способ сопряжён с значительным снижением скорости (скорость работы NVMe в ~500 раз ниже, чем у HBM), поэтому техника ZeRO-Infinity применяется в тех случаях, когда объём данных модель действительно не укладывается в общую память GPU + CPU.

28. FSDP: родной шардинг PyTorch

Полностью шардированная параллельная обработка данных (FSDP) это встроенное решение PyTorch для DeepSpeed ZeRO-3. Оно распределяет параметры, градиенты и состояния оптимизатора по GPUs, используя ту же основную концепцию. Механизм обработки каждого слоя представляет собой простой цикл:

  1. С помощью операции All-gather собираются все параметры из всех GPUs (происходит временная реконструкция полноценного слоя).
  2. Затем выполняется вычисление процесса передачи данных вперед или назад для данного слоя.
  3. Собранные параметры немедленно освобождаются. Каждый GPU сохраняет только свой собственный фрагмент.
  4. Градиенты преобразуются с использованием алгоритма Reduce-scatter, чтобы каждый GPU получал лишь отведённую ему часть градиента.

Поскольку FSDP является частью среды PyTorch, он обеспечивает прямую интеграцию с инструментами отладки, профиляторами и другими компонентами PyTorch. torch.compile. Производительность в сравнении с DeepSpeed ZeRO-3 определяется политикой обёртки данных, топологией коммуникаций, настройками переноса нагрузки и размером модель, поэтому необходимо проводить сравнение на одном и том же кластере.

КритерииFSDP (PyTorch)DeepSpeed ZeRO
Стиль управленияПолное шардингование с использованием PyTorch APIsВыбираемые этапы ZeRO
ОффлоадингCPU перенос нагрузкиCPU + NVMe с технологией ZeRO-Infinity
Фреймворк интеграцияНативный PyTorch, torch.compile путиОтдельная библиотека и система конфигурации
Тест на отборПровести профилирование рабочей нагрузки целевого PyTorch.Определение необходимых функциональных характеристик профиля и перенос обработки на внешние ресурсы

FSDP2 (2024–2025) представляет собой переписку кода, направленную на улучшение производительности. torch.compile интеграция, обеспечивающая более эффективную фузию ядер, добавляет поддержку тренировки с использованием FP8 TorchAO, и упрощает работу с API. Как FSDP, так и DeepSpeed доступны через HuggingFace Accelerate, что позволяет переключаться между ними с помощью одной лишь изменения конфигурации.

29. Законы масштабирования и ловушка Чинчиллы

Масштабирование Chinchilla (DeepMind, 2022) показало, что при соблюдении поставленных предположений оптимальное с точки зрения вычислительных ресурсов распределение составляет примерно 20 тренировок токены на параметр. В этой оценке не учитываются дополнительные затраты на последующую обработку сервинг. Если более компактная модель модель, обученная на большем объёме данных, достигает необходимого уровня качества, её эксплуатация в течение длительного цикла жизни инференс может оказаться менее дорогостоящей.

Решение заключается в overtrain моделей меньшего размера модели на гораздо более обширных наборах данных. Эффект от такого подхода очень заметен:

МодельПараметрыОбучение ТокеныТокены/ParamChinchilla ×
Чинчила70 миллиардов1,4 Т20:1
Llama 165 млрд1,4 Т22:1
Llama 270 млрд2,0 Т29:11.4×
Llama 3 8B8B15T1,875:194×
Qwen3-0.6B0,6 млрд36T60,000:13,000×

Для модель, обрабатываемого в больших объёмах, инвестирование дополнительных ресурсов в обучение на более мелком модель может снизить суммарные затраты на весь цикл жизни. Модель Llama 3 8B служит примером такой стратегии, однако её эффективность будет зависеть от требуемого уровня качества и прогнозируемого объёма инференс. Термин «оптимальный для Chinchilla» относится к эффективности использования вычислительных ресурсов в процессе обучения, что представляет собой отдельную цель по сравнению с общими затратами на весь цикл жизни.

30. RLHF, DPO, GRPO и пространство выравнивания

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

Классический подход RLHF пайплайн: SFT → сбор пар предпочтений людей → обучение функции награды модель на основе этих пар → доработка политики с помощью PPO (Proximal Policy Optimization). Метод PPO одновременно хранит в памяти 4 модель копии данных (политика, эталон, критик/значение модель, награда модель), чувствителен к гиперпараметрам и склонен к явлению reward hacking, при котором модель использует особенности структуры наград модель (например, излишне подробные или самоуверенно звучащие ответы) вместо того, чтобы действительно повышать качество.

DPO (Direct Preference Optimization) позволяет пропустить процесс обучения функции награды модель и цикл онлайн-RL, оптимизируя функцию потерь непосредственно для пар предпочтений. Это упрощает процесс пайплайн обучения. Стандартный DPO работает в оффлайн-режиме: он обучается на фиксированном датасет и не исследует новые варианты ответов во время цикла обновления. Важность этого ограничения зависит от конкретной задачи и степени покрытия данных.

GRPO (Group Relative Policy Optimization, DeepSeek) удаляет обученный критик PPO путем генерации нескольких вариантов завершения для каждого промпт и использования групповых относительных наград в качестве базового значения. Это снижает нагрузку на состояния модель по сравнению с типичной конфигурацией PPO. В отличие от DPO, метод GRPO является on-policy: модель генерирует новые ответы в процессе обучения. DeepSeek-R1 Этот подход объединяет GRPO с RLVR (обучение с усилением на основе верифицируемых наград), применяя при этом проверки вроде проверки правильности математических решений, компиляции кода и выполнения модульных тестов. Такие награды проще аудитировать по сравнению с результатами обучения, основанными на личных предпочтениях, однако неполные тесты и заместительные цели всё равно могут быть использованы злоумышленниками для обхода защиты.

МетодТипичное состояние модельСигнал вознагражденияОнлайн/офлайнОсновное ограничение
PPO4 (политика, ссылка, критик, награда)Извлечённая награда модельОнлайнМанипуляции с системой вознаграждений, сложная настройка
DPOИмплицитные (пары предпочтений)ОфлайнОтсутствие исследования, фиксированные данные
GRPOЭксплицитный (проверяемый или выученный)ОнлайнНеобходимы проверяемые награды для получения полной выгоды.

31. Дистилляция: сжатие знаний в рамках модели

Процесс дистилляции знаний позволяет перенести функциональные возможности крупной модели-учителя на более мелкую модель-ученика. Дистилляция на основе логитов направлена на обучение ученика таким образом, чтобы его выходная распределения совпадали с распределениями учителя. Дистилляция на основе данных предполагает генерацию учителем примеров, с помощью которых ученик выполняет финальную настройку. Методы, основанные на данных, широко используются для LLMs, поскольку они способны работать с различными архитектурами и с учителями, реализованными только с использованием API, однако их эффективность определяется качеством учителя, охватом данных, процедурами фильтрации и затратами на генерацию.

DeepSeek-R1 Было сгенерировано 800 000 ризонинг примеров, которые затем использовались для аптимизации моделей Qwen2.5 и Llama 3 модели — при этом количество параметров увеличилось с 1,5 млрд до 70 млрд. Согласно оценкам, приведённым в статье:

В экспериментах с моделью DeepSeek-R1 в режиме small-модель было установлено, что метод дистилляции показывает лучшие результаты по сравнению с прямым GRPO на тестировавшейся базовой модели модели. Этот результат подтверждает целесообразность применения дистилляции в данной конфигурации; однако он не позволяет сделать общих выводов относительно превосходства одного из методов над другим.

32. Генерация синтетических данных

LLM — сгенерированные данные для обучения применяются в нескольких типичных паттернах:

Здесь ключевым риском является модель коллапс: когда модели обучаются рекурсивно на синтетических данных предыдущих поколений, хвосты исходного распределения постепенно исчезают. В результате модель преувеличивает частоту встречаемых шаблонов и упускает редкие, но важные вариации.Шумайлов и др., 2024). Отдельное исследование, проведённое Ahrefs, выявило, что 74,2% новых веб-страниц в выборке из 900 000 страниц содержат текст, сгенерированный с помощью AI; речь идёт о результатах работы инструмента классификации от поставщика, а не об общем статистическом опросе всего интернета. Для снижения этой проблемы необходимо начинать с смешивания синтетических и реальных данных, применения фильтрации и отслеживания происхождения информации, чтобы можно было оценивать объём материала, генерируемого рекурсивно.


Часть VI — Масштабирование и деплой

Масштабирование с одного GPU на кластер подразумевает распределение нагрузки между несколькими устройствами. В этом разделе рассматриваются стратегии параллелизма, методы сервинг фреймворки, процесс выбора GPU, а также принципы роутинг.

33. Четыре формы параллелизма

Стратегии параллелизма

Параллелизм по тензорам (TP) предполагает разделение отдельных матриц вес между GPUs, причём обычно происходит обмен данными после обработки каждого слоя. Благодаря высокоскоростным внутренним каналам связи, таким как NVLink, этот подход наиболее эффективен в рамках одного узла. Увеличение количества шардов снижает объём памяти и нагрузку на вычисления на каждом устройстве, но одновременно увеличивает объём коммуникаций; поэтому степень параллелизма следует выбирать с учётом латентность бенчмарк.

Пайплайн Параллелизм (PP) предполагает последовательное разделение слоёв между GPUs с передачей активации между отдельными этапами обработки. Такая схема взаимодействия может использоваться в распределённых системах из нескольких узлов, однако пайплайн эффекты «пузырей» и различия в времени выполнения этапов снижают общую эффективность. Крупные деплои часто сочетают подход TP внутри одного узла с подходом PP между несколькими узлами.

Параллелизм по данным (Data Parallelism, DP) предполагает копирование сервинг модель, в результате чего каждая копия обрабатывает независимые запросы без необходимости во взаимодействии между копиями при каждом запросе. Такой подход эффективен тогда, когда модель позволяет это сделать и позволяет сбалансировать объёмы трафика. В процессе обучения параллелизм по данным часто сочетают с технологиями ZeRO или FSDP для разделения состояния между копиями.

Экспертный параллелизм (EP) предусматривает распределение MoE экспертов по GPUs с использованием схемы общения всех с всеми для токен роутинг. Производительность данного подхода зависит от сбалансированности токен, расположения экспертов и топологии взаимосвязей; трафик типа «все с всеми» может стать доминирующим фактором, влияющим на боттлнек.

Эвристика для инициализации параллелизма:

Решение о параллелизме Фреймворк

34. Сравнение Сервинг и фреймворки

vLLM Обеспечивает пагинацию при распределении ключей-значений, continuous batching, совместимость с OpenAI в формате API, а также несколько режимов параллелизма. Его модель и поддержка аппаратного обеспечения часто меняются, поэтому необходимо проверять целевой модель согласно актуальной матрице совместимости.

SGLang Этот подход объединяет механизм RadixAttention для повторного использования префиксов, специальный график выполнения задач и структурированную генерацию. Результаты его работы в оригинальной версии throughput зависят от нагрузки и конфигурации; для сравнения с vLLM и TensorRT-LLM следует использовать одинаковые параметры промпты, формат вывода, аппаратное обеспечение и KPI эффективности.

TensorRT-LLM Достигается низкий уровень затрат на обработку отдельных запросов латентность до CUDA за счёт фьюжн графов и оптимизации ядра, при этом обеспечивается полная поддержка FP8/FP4. Публикуемые показатели зависят от конкретной аппаратной платформы и модель, поэтому их следует сравнивать с данными других фреймворки на одном и том же харнесс. Однако это сопряжено с более крутым углом обучения и специфической для NVIDIA структурой деплой.

TGI Этот компонент совместим с экосистемой Hugging Face и поддерживает работу с несколькими типами аппаратного обеспечения бэкенды. Перед тем как использовать его в новом деплой, обязательно уточните текущий статус технического обслуживания и наличие новых функций в репозитории.

Ollama подчёркивает простоту локальной обработки модель workflow. Используйте его для удобства разработки; бенчмарк ещё один сервинг стек, когда важна высокая конкурентность или прямой контроль SLO.

llama.cpp это портативный компилятор на C/C++ рантайм, работающий с архитектурами ARM, x86, Metal, CUDA, ROCm и Vulkan. GGUF поддерживает несколько уровней квантизация. Производительность сильно зависит от модель, квантизация, контекста и бэкенд, поэтому для работы с конкретной машиной следует использовать её встроенный инструмент бенчмарк.

35. Выбор GPU для инференс

Эта таблица содержит данные о ценах на аппаратное обеспечение и облачные сервисы за март 2026 года снапшот. Указанные здесь показатели точности отражают возможности поставщиков, причём цены могут различаться в зависимости от выбранного провайдера, региона, срока контракта и наличия ресурсов; обязательно проверьте их перед покупкой.

GPUПамятьполоса пропусканияТочность на уровне нативного кодаTF32 TFLOPS — это единица измерения вычислительной мощности, характеризующая количество операций типа тензорного умножения с плавающей точкой, выполнимых за одну секунду.NVLinkОблачные вычисления $/час
B200192 ГБ HBM3e8 ТБ/сFP4, FP8, INT8~4,500 (FP8)5.0 (1,8 ТБ/с)~$6.25
H200141 ГБ HBM3e4,8 ТБ/сFP8, INT89894.0 (900 ГБ/с)$2.15-6.00
H100 SXM80 ГБ HBM33,35 ТБ/сFP8, INT89894.0 (900 ГБ/с)$1.49-3.90
A100 SXM80 ГБ HBM2e2,0 ТБ/сINT8, FP163123.0 (600 ГБ/с)$1.10-2.54
L40S48 ГБ GDDR6864 ГБ/сFP8, INT8362 (FP16)Нет$0.80-1.50
A10G24 ГБ GDDR6600 ГБ/сINT8, FP1670Нет$1.00-1.50
RTX 409024 ГБ GDDR6X1,0 ТБ/сFP8, INT883 (FP32)Нет~$0,35/час

Сначала выбирают устройства в зависимости от объёма памяти, подходящего для задачи, а затем — в соответствии с измеренным значением throughput на целевом уровне латентность. Объём памяти 141 ГБ у модели H200 позволяет упростить работу с некоторыми крупными модель деплои, тогда как модель B200 обеспечивает поддержку FP4, память объёмом 192 ГБ типа HBM3e и более новое поколение интерфейса NVLink. Более компактные устройства на основе памяти GDDR типа GPUs могут оказаться экономически выгодными для использования с квантизированными модели, если их ограничения по объёму памяти и скорости передачи данных соответствуют требованиям конкретной задачи.

Нативная поддержка аппаратного обеспечения квантизация оказывает значительное влияние на производительность. Механизмы AWQ и GPTQ (с использованием INT4 и веса) могут эффективно работать на любой архитектуре за счёт деквантизации данных в регистры FP16, однако настоящая нативная ускорение через тензорные ядра зависит от поколения чипа. Архитектуры Hopper (H100/H200) и Ada (L40S/4090) обеспечивают нативную поддержку FP8, тогда как архитектура Blackwell (B200) добавляет нативные тензорные ядра FP4, что позволяет достичь значительных преимуществ при обработке крупных объёмов данных throughput. Все перечисленные решения поддерживают GPUs для выполнения матричных операций INT8.

LLM Декодирование зачастую ограничивается пропускной способностью памяти, поэтому HBM При этом пропускная способность и объём полосы пропускания могут оказаться более важными параметрами, чем пиковая цифра TFLOPS. сервинг нагрузки. Сравнение GPUs с использованием модель, точность, распределение по пакетам, длина контекста и латентность цель остаётся неизменной.

36. Каскадирование Модель и роутинг

Модель — это подход с каскадными операциями по сравнению с Роутинг.

Роутинг моделей определяет, какой LLM будет обрабатывать каждый запрос, исходя из оценки его сложности или возможностей. RouteLLM (LMSYS/UC Berkeley, ICLR 2025) сообщает о сокращении затрат на 85% в рамках своей инфраструктуры MT-Bench при сохранении уровня качества, эквивалентного 95% от базового показателя GPT-4. Тот факт, окупится ли роутинг с точки зрения экономической эффективности, зависит от текущих цен, структуры трафика, количества роутер ошибок и минимально допустимого уровня качества.

Роутеры варьируются от легких классификаторов до LLM-основанный на джаджи. Cascading — это последовательная версия: запрос начинается с более дешёвого модель и усиливается, когда функция оценки отклоняет данный ответ. FrugalGPT В тестовом наборе модель этот инструмент показывает снижение затрат на уровне до 98% или повышение точности до 4%. В режиме производства каскад требуются настроенные критерии усиления реакции и постоянный мониторинг запросов, которые дешевый вариант модель обрабатывает некорректно.


Часть VII — Применения

Шаблоны на уровне приложения, преобразующие необработанные возможности модель в полезные системные решения. Благодаря мощности Эмбеддинги retrieval, а также тому, что RAG позволяет основывать ответы на внешних знаниях, агенты организуют многоэтапные рабочие процессы, в то время как промпт-инжиниринг обеспечивает их единое интегрированное функционирование.

37. Эмбеддинг-модели против генеративного модели

Эмбеддинг-модели кодируют текст в векторы фиксированной размерности, отражающие семантическое значение. В отличие от генеративных декодеров модели которые генерируют токен Для последовательностей они генерируют единый плотный вектор (с размерностью от 768 до 4 096) для всего входного данных. Большинство эмбеддинг-модели использование трансформеров с только энкодером (двунаправленные) аттеншн) вместо декодеров. Энкодер обрабатывает весь входной данные токены одновременно формирует контекстуализированное представление для каждого элемента токен. Затем слой пуллинга сжимает эти значения по-токен преобразование представлений в один вектор обычно подразумевает пулинг (среднее арифметическое всех) токен эмбеддинги) или пулы CLS (с использованием специальной классификации токенрезультат её работы). модель Затем модель дорабатывается с использованием метода контрастного обучения: семантически похожие тексты смещаются ближе друг к другу в векторном пространстве, а несхожие — удаляются друг от друга.

Отобранные эмбеддинг-модели и указанные для них показатели оценки (2025–2026 гг.):

МодельРазмерыАрхитектураОценка MTEB
Qwen3-Эмбеддинг-8Bдо 4 096Основанный на декодере (Qwen3)70.6%
Gemini Эмбеддинг 23,07268.2%
pplx-embed-v1-4B2,560Модели на основе декодера (Qwen3), нативные INT8/бинарные69.7%
Voyage-3-large2,048защищённый66.8%
OpenAI text-эмбеддинг-3-large3,072защищённый64.6%

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

Обучение представлений в стиле «матрёшка» (MRL, Kусупати и др., NeurIPS 2022) позволяет сделать размерности эмбеддинг гибкими. Получив своё название от русских матрёшек, структуры MRL организуют эмбеддинг таким образом, что их первые mm размерностей содержат столько же информации, сколько независимо обученная mm-мерная модель. Во время обучения вместо вычисления единственной функции потерь для всей эмбеддинг, метод MRL параллельно вычисляет несколько функций потерь на размерностях, расположенных с логарифмическим интервалом (64, 128, 256, 512, 1024, 2048, 3072). Суммарная функция потерь заставляет первые размерности передавать крупномасштабную семантическую информацию, в то время как более поздние размерности добавляют более детальные характеристики.

После обучения вектор представления MRL эмбеддинг можно сократить до размера префикса, поддерживаемого архитектурой. Компания OpenAI сообщает, что модель text-эмбеддинг-3-large с размером вектора 256 единиц показывает лучшие результаты по сравнению с моделью text-эмбеддинг-ada-002 с размером 1 536 единиц в используемом ими тесте MTEB. Это позволяет сократить объём хранения сырых векторов в 6 раз; кроме того, затраты на поиск латентность и работу с базами данных также зависят от структуры индекса, метаданных, методов фильтрации и характеристик оборудования.

эмбеддинг-модель является одним из ключевых компонентов в RAG пайплайн, Помимо парсинга, чанкинг, поиска, реранкинг и генерации, при отсутствии соответствующих доказательств более мощный генератор не сможет надёжно восстановить их.

38. Архитектура RAG в продакшене

RAG Архитектура

Метод Retrieval позволяет обеспечивать LLM документами, полученными в момент выполнения запроса. Он способен предоставлять актуальные или конфиденциальные данные, отсутствующие в веса модели, однако retrieval не гарантирует правильного использования этих данных в ответе. Промышленная система RAG представляет собой многоэтапный пайплайн, каждый из этапов которого требует отдельной оценки.

Процесс загрузки пайплайн выполняется офлайн. Сырые документы (PDF, HTML, Markdown, базы данных) сначала парсятся в чистый текст, что оказывается сложнее, чем кажется: уже при одном только парсинге PDF могут быть утеряны таблицы, заголовки и форматирование. Затем этот текст разбивается на чанки, которые затем встраиваются и индексируются отдельно друг от друга.

Чанкинг влияет как на показатель воспроизведения retrieval, так и на объём контекста, доступного генератору. Оптимальные размеры зависят от структуры документа, степени детализации запроса, ограничений модуля эмбеддинга и ограничений реранкер. Распространёнными подходами являются использование фиксированного размера с перекрытием, рекурсивное разделение по границам документа и семантическое чанкинг на основе схожести, определяемой с помощью эмбеддинг. Следует сравнивать эти методы по меткам релевантности на уровне страниц или разделов, вместо того чтобы универсально применять один конкретный диапазон токен.

Каждый чанк затем встраивается с использованием модель, аналогично тем, что применяются в Раздел 37 и хранится в базе данных векторов (Pinecone, Weaviate, Qdrant, pgvector и т. д.).

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

Распространённые моды отказа:

GraphRAG (Microsoft, 2024) дополняет вектор retrieval извлечённой графом сущностей и связей. Этот подход предназначен для решения задач на уровне корпуса текстов, требующих анализа сложных связей, которые простой метод чанк retrieval может упустить. При этом возникают дополнительные затраты на извлечение данных, индексацию, хранение информации и оценку качества результатов.

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

39. Архитектуры агентов и вызов инструментов

LLM агенты используют модели для выбора и сортировки по порядку tool calls вокруг изменяющегося состояния. Три полезных оркестрация Шаблоны представлены следующим образом:

ШаблонТокен склонностьАдаптивностьПолезная отправная точка
ReActВышеОбновления после проведения наблюденийНеопределённый или исследовательский tool use
ReWOOНижеФиксированный план, если только он не будет расширен.Предсказуемая работа с параллельными шагами
Планировщик-экзекьюторСреднийМогу переработать детальный план.Более сложные задачи, для решения которых требуется управление

Function calling представляет собой распространённый механизм вызова инструментов. С помощью APIs осуществляется обнаружение определений инструментов и возвращается структурированный набор аргументов, что снижает необходимость в парсинге текста свободного формата. Однако даже аргументы, соответствующие заданной схеме, могут привести к выбору неверного инструмента или содержать недопустимые значения. Параллельные function calling операции позволяют уменьшить количество итераций при выполнении независимых друг от друга задач.

Structured output и constrained decoding обеспечивают соблюдение схемы путём ограничения количества токены, доступных на каждом шаге генерации. Такие движки, как xgrammar, используется в vLLM и SGLang; позволяет устранять множество синтаксических ошибок и проблем парсинга при минимальных затратах ресурсов в поддерживаемых конфигурациях. Однако он не гарантирует корректности извлекаемых значений или принимаемых решений. Схема-руководство Ризонинг (SGR) использует порядок полей и структуру схемы для обеспечения возможности отслеживания промежуточных состояний до принятия окончательного решения. Его три паттерна представляют собой Каскад (последовательные шаги), Роутинг (типы объединения в качестве семантических переключателей) и Cycle (ограниченные списки).

Качество выбора инструментов, энд-то-энд латентность и стоимость токен обычно ухудшаются по мере увеличения набора инструментов и глубины выполнения операций. Для анализа этих зависимостей необходимо использовать реальные описания инструментов вместе с данными о распределении сбоев. Фреймворки подобные LangGraph Можно явно определить состояния и пути восстановления, однако это не устраняет нагрузку, связанную с проведением оценок.

40. Промпт-инжиниринг в продакшене

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

Примеры с небольшим количеством случаев часто эффективны для контроля формата вывода. Начните с 3–5 примеров, охватывающих пустые входные данные, неоднозначные запросы и многокомпонентные ответы, затем оцените результат на отдельном наборе данных. Примеры должны спан реальное распределение входных данных, а не только сценарий успешного выполнения. Дополнительные примеры потребляют контекст и не гарантируют дальнейшего улучшения качества.

Chain-of-thought (CoT) — это тип промптов, при котором от модель требуется раскрыть промежуточные ризонинг перед предоставлением ответа. Кодзима и соавторы отметили улучшение результатов при использовании суффикса «Давайте разберём всё по шагам» в тестированных ими задачах типа ризонинг, однако эффективность такого подхода зависит от модель, а более современные ризонинг APIs могут не позволять выявлять скрытые трейсы. В реальных проектах целесообразно использовать структурированное разложение задач или краткое обоснование, когда это полезно для эвалуатор. Самоконсистентность (Ванг и др., 2023) Он тестирует несколько путей к ризонинг и объединяет полученные результаты, идя на дополнительные затраты в виде инференс ради повышения надёжности при решении подходящих задач.

Structured output с явно заданными схемами JSONРаздел 39) это снижает количество сбоев при парсинге. Constrained decoding движки вроде xgrammar позволяют обеспечивать соблюдение поддерживаемой грамматики на этапе генерации; тем не менее для проверки фактической точности и семантической корректности всё равно требуется дополнительная оценка, а функции схемы, которые не поддерживаются, могут потребовать специальной обработки.

Промпт цепочка обработки позволяет разбить задачу на последовательные этапы с чёткой специализацией: сначала классификация намерения, затем получение контекста, далее генерация ответа и, наконец, проверка результата. Этот подход обеспечивает локализацию сбоев, возможность настройки разных модели для каждого этапа, а также предоставляет доступ к промежуточным состояниям, пригодным для кэширования. Кроме того, он включает в себя специальные интерфейсы и латентность, поэтому его следует сравнивать с сценарием выполнения всей операции за один вызов.

Температура влияет на распределение выборки. Низкие значения являются разумной отправной точкой для классификации или извлечения данных; более высокие значения могут способствовать повышению разнообразия результатов при генерации идей. Точное поведение этого параметра различается в модель APIs и зависит от взаимодействия с top_p, top_kа также значения по умолчанию провайдера; поэтому следует применить все поддерживаемые настройки к задаче вместо копирования лишь одного диапазона.

Разделение сообщений системы и пользователя позволяет изолировать постоянные правила от контента, связанного с конкретным запросом. Шаблоны чатов и настройка инструкций предоставляют этим ролям разный уровень приоритета, однако они не превращают сообщение системы в границу для применения ограничений. Стабильное поведение следует задавать в сообщении системы, ненадёжные данные — хранить в контенте пользователя или инструмента, а строгие требования, такие как удаление персональных данных, необходимо реализовывать вне модель.

Контекст-инжиниринг расширяет понятие промпт на сбор полученных документов, результатов работы инструментов, истории общения и примеров. Лю и его коллеги обнаружили эффект «потери в середине» в моделях с длинным контекстом модели, которые они тестировали, поэтому учёт позиции должен входить в процесс оценки, а не считаться чем-то незначимым. Я рассмотрел более широкий рабочий процесс в Контекст-инжиниринг для ИИ-агенты.


Часть VIII — Работа в продакшене

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

41. Ограничение частоты запросов с переменной стоимостью обработки

Традиционное ограничение скорости в запросах в секунду исходит из предположения о примерно одинаковой стоимости каждого запроса. LLMs Разрушьте это предположение. Значение 10-токен классификация промпт и 100K-токен анализ документов столкнулся с теми же проблемами API эндпоинты, однако их стоимость отличается в четыре порядка величины. Ограничение скорости по количеству запросов в секунду либо позволяет дорогостоящим запросам проходить без проверки, либо неоправданно блокирует дешёвые запросы.

Промышленные системы требуют механизмов ограничения скорости, основанных на токен, с возможностью применения ограничений в различных измерениях. OpenAI документируются запросы и ограничения токен в зависимости от уровня использования. Anthropic разделяет лимиты входных данных-токен и выходных данных-токен. Точные квоты и алгоритмы могут меняться, поэтому источником достоверной информации следует считать документацию провайдера; с точки зрения архитектуры важно независимо планировать объёмы запросов и токены.

Практический шаблон реализации представляет собой многомерную иерархию ограничений (пользователь → приложение → организация → глобальный уровень), в которой определены уровни приоритета для премиум-доступа. На уровне запроса ключевым элементом является процедура бронирования бюджета токен: необходимо рассчитать общую сумму токены (входные данные + max_tokens) В момент приёма запроса происходит вычитание соответствующей суммы из назначенного лимита, а затем после завершения обработки запроса осуществляется корректировка на основе фактического объёма использования ресурсов. Это предотвращает ситуацию, когда множество запросов на длительную генерацию исчерпывают доступную емкость ещё до того, как они начнут генерировать результат.

Для самостоятельно развернутого деплои эквивалентом является настроенный throughput: выделение специализированной пропускной способности GPU для достижения целевых тарифов токен. В случае vLLM деплои это подразумевает настройку механизмов контроля доступа с учётом активных слотов декодирования и уровня нагрузки KV cache, а не только количества запросов. Раздел 5 Объясняется, что как throughput, так и процесс адмиссии требуют наличия лимитов, учитывающих особенности токен.

42. Виды сбоев, против которых необходимо проектировать

LLM сервинг приводят к возникновению сценариев сбоев, связанных с переменной длиной последовательностей, ограничениями памяти типа KV и длительной обработкой данных в режиме декодирования. Перед тем как производственный трафик начнёт использовать эти механизмы защиты, необходимо спроектировать соответствующие решения и протестировать их под нагрузкой.

Нехватка памяти (Out-of-Memory, OOM) — это распространённая проблема. Модель размером 70 миллиардов FP16 модель Требуется примерно 140 ГБ для веса по отдельности, и KV cache Для одной последовательности с контекстом объёмом 128 КБ при соблюдении указанных предположений может потребоваться добавить примерно 40 ГБ памяти. Раздел 6. Разница между ситуацией, когда данные «вмещаются в память», и ситуацией OOM при нагрузке оказывается меньше, чем кажется, поскольку набор запросов с длинным контекстом может потребовать больше памяти типа KV, чем предполагалось. Для предотвращения этого применяется сочетание рассчитанного резерва памяти, квантизация, а также выделения памяти типа KV с пагинацией. В случае рабочих нагрузок с высокой нагрузкой на память типа KV, LMCache Можно перенести данные KV в память или диск CPU; результаты их обработки могут служить отправной точкой для работы с локальной иерархией памяти бенчмарк.

Прерывание выполнения происходит тогда, когда давление, создаваемое KV cache, вынуждает планировщик извлекать данные или пересчитывать объёмы работы. Конкретная стратегия зависит от версии и настроек сервинг. С точки зрения пользователя это проявляется повышением общего времени обработки запросов латентность без явных ошибок в приложении. Необходимо отслеживать количество случаев прерывания выполнения и связывать его с уровнем использования структур типа KV, глубиной очередей и длиной запросов.

Tail латентность может резко возрастать при том, что крупные предзаполнения замедляют процесс декодирования. Разбиение на чанки префилл (Раздел 7) Для устранения данного взаимного влияния применяется планирование с учётом длины запросов. В работах, посвящённых алгоритму Learning-to-Rank и технологии CascadeInfer, описываются значительные улучшения по сравнению с базовыми решениями, однако конкретный результат напрямую зависит от распределения длин запросов и настроек планировщика.

Каскадные сбои могут возникать из-за того, что медленные запросы увеличивают длину очереди, клиенты на верхнем уровне сети таймаутят, а попытки повторной отправки добавляют дополнительную нагрузку. Мерами защиты являются контроль доступа, ограничения конкурентности по абонентам, лимиты объёма выводимых данных, бюджеты на повторные попытки и предохранители в шлюзе. Разделение префилл и пулы декодирования могут помочь в случаях, когда load tests указывает на постоянное взаимное влияние фаз.

43. Мониторинг систем LLM

Мониторинг LLM отличается от традиционного мониторинга API по ряду фундаментальных аспектов. Каждый запрос имеет переменную стоимость, включает две разные фазы с разными параметрами боттлнеки, а также требует определённого объёма памяти, который зависит как от длины входных данных, так и от длины генерируемого результата. Стандартные показатели, такие как количество запросов латентность и уровень ошибок, не учитывают большинство важных факторов.

Goodput — это количество запросов в секунду, которые соответствуют всем заданным порогам SLO, таким как TTFT, TPOT и общий латентность. Это удобная комплексная метрика, поскольку чистый показатель throughput может казаться в норме, даже если пороги латентность не соблюдаются: система, обрабатывающая 100 запросов в секунду, но не выполняющая требования к 40% из них, имеет значение goodput равное 60. Оптимизация под goodput позволяет видеть структуру производительности, вместо того чтобы отображать только среднее значение.

vLLM предоставляет эндпоинт Prometheus /metrics При наличии одновременно выполняемых и ожидающих запросов необходимо применять KV cache, распределения длины генерируемого текста, а также статистику по префиксам кэш. Названия метрик могут меняться в разных версиях, поэтому панели управления следует связывать с конкретной развернутой версией. Типичная архитектура включает Prometheus для сбора метрик, Grafana для их визуализации, а также OpenTelemetry-совместимый трейсы во всех компонентах приложения и сервинг.

К полезным шаблонам сигналов относятся следующие. Значения порогов для них следует определять на основе load tests, а не копировать эти примеры без изменений:

44. Оптимизация затрат: стратегия сложного процента

Поскольку метод снапшот устарел, цены на март 2026 года API сильно различались в зависимости от уровней модель. Точные значения цен быстро меняются, поэтому для принятия решения о покупке следует использовать актуальный калькулятор у провайдера. Стоит отметить, что выбор модель и длина выводимого контента могут существенно повлиять на итоговую стоимость ещё до внедрения оптимизаций инфраструктуры.

В выпуске от марта 2026 года снапшот, применяемом в данном разделе, стоимость вывода токены оказалась в несколько раз выше, чем стоимость входных данных токены, для упомянутых уровней модель. Такая асимметрия обусловлена последовательной работой по декодированию, описанной ранее. Раздел 7. Для таких структур ценообразования сокращение ненужного объёма выходных данных может принести больший эффект, чем уменьшение аналогичного количества входных данных токены.

Можно комбинировать несколько подходов, но только после того, как будет определено, какие из них применимы к конкретной нагрузке:

  1. Квантизация от FP16 до INT4 позволяет сократить объём памяти вес на 75%. То, снизит ли это стоимость обработки, зависит от скорости ядра, размера пакетов данных и уровня использования аппаратных ресурсов.Раздел 9).
  2. Роутинг моделей направляет подходящий трафик на более дешёвый модели. A Технический кейс компании Maxim AI Сообщено о снижении ежемесячного счета с 42 000 долларов до 29 000 долларов; необходимо воссоздать контрольную точку качества перед тем, как использовать его роутинг часть.Раздел 36).
  3. Кэширование промптов снижает нагрузку, связанную с многократным использованием одинаковых префиксов. Скидки от поставщиков и правила ограничения частоты запросов постоянно меняются, поэтому необходимо учитывать фактическую частоту запросов наряду с действующими условиями.Раздел 16).
  4. Пакетная обработка APIs позволяет снизить стоимость работы, не требующей реального времени, такой как оценка качества, генерация синтетических данных и массовая классификация. Проверьте текущие тарифы и сроки выполнения задач.
  5. Самостоятельное размещение серверов может оказаться выгодным при постоянной нагрузке, однако не существует универсальной точки безубыточности для объёмов обработки токен. Помимо арендной платы за GPU необходимо учитывать затраты на инженерные решения, оркестрация, observability, запас пропускной способности и расходы на круглосуточную поддержку.

Умножение этих иллюстративных коэффициентов позволяет получить значительное теоретическое снижение, однако входные параметры не являются независимыми: квантизация влияет на throughput, роутинг изменяет структуру качества, а механизмы кэширования и группировки применимы лишь к подходящему трафику. Необходимо построить оценку на основе измеренных долей трафика и проверить её согласованность с данными счёта.

А Отчёт по поставщикам за 2024 год от TrueFoundry Атрибуты, обусловливающие наибольшие затраты деплой в рамках выборки, связаны с аспектами инженерии ML, а не с процессами вычислений. Следует рассматривать этот показатель как промпт, отражающий затраты на труд и операционные расходы в составе модель, а не как универсальное соотношение.

45. Пропускная способность планирование и автомасштабирование

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

Фактическим ограничением для количества одновременных запросов является бюджет памяти KV cache, а не количество операций типа FLOPS:

максимальное количество одновременных последовательностей=GPU памятивеса моделинакладные расходыразмер каждой последовательности KV cache\text{максимальное количество одновременных последовательностей} = \frac{\text{GPU памяти} - \text{веса модели} - \text{накладные расходы}}{\text{размер каждой последовательности KV cache}}

В упрощённом примере с Llama 3 70B INT4 около 35 ГБ веса на карте H100 объёмом 80 ГБ оставляют примерно 40 ГБ после выделения ресурсов на дополнительные накладные расходы. При контексте размером 4 Кбайт, если предположить 160 МБ на одну последовательность, теоретический предел составляет около 250 последовательностей; при контексте 128 Кбайт такая же арифметика даёт примерно пять последовательностей. Фактическая ёмкость снижается при учёте поведения механизма распределения памяти, буферов рантайм, изменчивости длины запросов и целевых показателей качества латентность. Именно по этой причине процесс выбора GPU и оптимизация KV cache непосредственно определять план масштабирования.

Формула расчёта пропускной способности для определения размера флота:

Требуемое GPUs=максимальное токены в минуту×измеренный запас надёжностизначение на единицу GPU throughput при целевом SLO\text{Требуемое GPUs} = \frac{\text{максимальное токены в минуту} \times \text{измеренный запас надёжности}}{\text{значение на единицу GPU throughput при целевом SLO}}

Важным параметром является состояние «в рамках целевого SLO». Пик токен throughput и соответствует требованиям SLO throughput Этот разрыв может резко увеличиваться по мере роста уровня конкурентности. Бенчмарк с реальными данными промпт а также распределение длины выходного потока на заданных пороговых значениях TTFT и TPOT, вместо использования теоретического максимума.

Уровень использования GPU является недостаточным в качестве единственного сигнала для автомасштабирования, поскольку он может оставаться высоким как при нормальной обработке данных, так и при перегрузке. Необходимо сочетать его с показателем глубины очереди, уровнем использования KV cache и степенью ухудшения качества работы goodput. Пороговые значения следует настраивать на основе параметра load tests; такие значения, как 80% использования памяти KV, служат лишь отправной точкой, а не универсальными пределами. Эти метрики вводятся в Раздел 43.

Механизм сокращения масштаба до нуля позволяет эффективно использовать среды разработки и стейджинга, в которых серверы длительное время находятся в состоянии покоя. Платформы без серверов инференс, а также автоскейлеры на базе Kubernetes, такие как KEDA, способны устранять избыточную производственную мощность, однако экономия ресурсов и время запуска зависят от размера модель, оптимизации образов и использования механизмов кэширования вес, а также от характеристик инфраструктуры. Обязательно измерьте время запуска перед тем, как применять такую же политику к трафику в продакшене, где критична скорость реакции латентность.


Взаимосвязанная система

Эти 45 концепций не являются простым набором элементов. Они образуют взаимосвязанную систему. Размер KV cache определяет размер пакета данных, размер пакета в свою очередь влияет на арифметическую интенсивность, которая контролирует, будет ли процесс декодирования ограничен доступом к памяти; это, в свою очередь, влияет на значение TPOT, а TPOT, в свою очередь, определяет throughput. GQA сокращает KV cache, что позволяет использовать более крупные пакеты данных, повышая тем самым арифметическую интенсивность и улучшая эффективность использования GPU. Технология FlashAttention использует разницу в пропускной способности между SRAM и HBM. Метод Continuous batching помогает решить проблему недостаточной загрузки вычислительных ресурсов, однако при этом возникает фрагментация памяти, которую затем устраняет PagedAttention. Метод разбиения данных на чанки префилл позволяет синхронизировать выполнение задач, требующих вычислительных ресурсов, и задач, ограниченных доступом к памяти; принцип «крыши» модель объясняет, почему такое взаимодополнение эффективно.

Инференс Стек оптимизации

С точки зрения процесса обучения, с учётом затрат на весь жизненный цикл модели более целесообразно тренировать более маленькую модель на большем количестве токены, как показывает пример Llama 3 8B. GRPO снижает нагрузку на состояние критика в PPO. В тестированной конфигурации DeepSeek-R1 с использованием небольшой модель модели метод дистилляции показал лучшие результаты по сравнению с прямым подходом на основе RL. Речь идёт о вариантах проектирования, которые необходимо оценить, а не о единственном оптимальном алгоритме обучения.

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

Основные принципы

  1. LLM инференс имеет две чётко различимые фазы. В общем случае сервинг режимы префилл оптимизация сосредоточена на вычислениях, а декодирование — на пропускной способности памяти; характер нагрузки может изменять это распределение.
  2. The KV cache Это зачастую является ключевым ограничением. Размер данного элемента влияет на пропускную способность пакетной обработки и нагрузку на память. GQA, пагинированное выделение памяти и структуры KV квантизация целиться в разные компоненты данного ограничения. GPU FlashAttention а слияние ядер сокращает затратный процесс перемещения данных, вместо того чтобы изменять их структуру. модельфункция ‘s.Continuous batching и PagedAttention Работать совместно. В одном опубликованном сравнительном отчёте указано 23-кратное превосходство. throughput по сравнению с его примитивной базовой версией; определите величину улучшения в вашем сервинг стек.
  3. Оптимум для Chinchilla — это не инференс-optimal. Например, Llama 3 8B обучался примерно на 1 875 токены для каждого параметра — обменивать больше вычислительных ресурсов на обучение на более низкую стоимость инференс.
  4. **GRPO а процесс дистилляции изменил набор инструментов для алинейментов. DeepSeek-R1 показал более высокую эффективность при обработке небольших данных.модель Результаты, полученные в ходе процесса дистилляции, превосходят результаты, достигнутые при непосредственных экспериментах с методом RL.
  5. Оптимизация затрат производится исключительно для подходящего трафика. Модель квантизация, роутинг, кэширование и обработка пакетами APIs Необходимо провести отдельные измерения уровня покрытия и качества, прежде чем будет возможно масштабировать получаемую экономию.
  6. Сервинг аппаратное обеспечение должно соответствовать боттлнек. Задачи с высокой нагрузкой на декодирование часто получают преимущества от достаточного объёма памяти и пропускной способности HBM; задачи с интенсивным использованием префилл создают более большую нагрузку на вычислительные ресурсы в виде вес.

Дополнительная литература

Связанные подробные статьи с этого блога, отсортированные по темам:


Список литературы

Расположено по тематическим областям; номера разделов указаны в скобках при необходимости.

Инференс и аттеншн

Спекулятивная декодировка

Квантизация

Обучение и файн-тюнинг

Соответствие модели целям

Масштабирование и архитектура

Эмбеддинги

Архитектуры агентов

Роутинг

Бенчмарки

Архитектуры Сервинг

Сервинг фреймворки

Операции