[!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 интегрируется в приложение | Эмбеддинги и RAG | RAG Метрики оценки |
| Как работают системы агентов | Агенты и промпт-инжиниринг | ИИ-агент Ризонинг циклы |
| Как оптимизировать позиции в результатах поиска | Эмбеддинги и реранкинг | Стек алгоритмов ранжирования поиска |
Наиболее эффективный подход обычно заключается в следующем: сначала разбираются особенности боттлнек, затем выбирается самый минимальный набор инструментов, способный его реализовать, бенчмарк с учётом реальной нагрузки, после чего сложность вносится лишь там, где это действительно оправдано цифрами.
Часть I — Архитектурные основы аппаратного обеспечения
Понятия, рассматриваемые здесь — арифметическая интенсивность, иерархия памяти GPU, а также характеристики аппаратного обеспечения — встречаются повсеместно в остальной части данного руководства.
1. Ограничения памяти против ограничений вычислительных мощностей и граница производительности модель
Начальной точкой для оценки производительности LLM является интенсивность арифметических операций: за каждый байт данных, который GPU загружает из памяти, сколько полезных вычислений выполняется? Именно этот коэффициент определяет, является ли операция ограниченной процессорной частью (в ожидании результатов работы процессора) или памятью (в ожидании загрузки данных).
У каждого GPU существует порог «критической интенсивности», при котором его вычислительные возможности точно сбалансированы с пропускной способностью памяти. Для GPU NVIDIA H100 (Техническая документация, 2023):
Две фазы LLM инференс расположены по разные стороны от этого порога:
- Декодирование ограничено объёмом памяти. Пошаговое генерирование токены требует загрузки многогигабайтной матрицы вес из памяти для последующего умножения её на отдельный новый токен. В упрощённом анализе с 16 битами и обработкой одного набора данных операция выполняется со скоростью примерно 1 FLOP/байт, что в почти 300 раз меньше пороговых значений производительности карты H100. Именно это различие препятствует достижению декодированием максимальной скорости вычислений throughput в данном режиме.
- Префилл ограничено вычислительными мощностями. Обработка входных данных промпт подразумевает загрузку веса лишь один раз, но при этом происходит их умножение одновременно на сотни или тысячи токены. Интенсивность вычислений значительно превышает 295 единиц, в результате чего вычислительные блоки перегружаются.
Чтобы ускорить процесс декодирования, необходимо работать над полосой пропускания памяти: сократить веса путём квантизация, сократить нагрузку на память KV с помощью GQA и PagedAttention, и увеличивать интенсивность с пакетная обработка. Чтобы ускорить префилл, необходимо сосредоточиться на чистых вычислениях: более быстрых GPUs и FP8 операциях.
2. Иерархия памяти GPU
GPU включает четыре уровня памяти, расположенные в форме пирамиды: большая, но медленная основная память (HBM) находится внизу, а крошечные, но чрезвычайно быстрые регистры — сверху. Основной узким местом является перемещение данных вверх и вниз по этой пирамиде. Самый сложный боттлнек располагается между HBM и SRAM, причём скорость работы SRAM примерно в 10 раз выше.
От самого быстрого к самому медленному на H100:
- Регистры — самая быстрая память, прямо подключённая к потокам обработки. Именно здесь выполняются математические операции; данные должны загружаться сюда, чтобы Tensor Cores могли их использовать.
- SRAM (общая память) — рабочая память со скоростью примерно 33 ТБ/с.
- L2 Кэш — промежуточный уровень памяти объёмом 50 МБ со скоростью около 12 ТБ/с. Он служит буфером, благодаря чему при необходимости нескольких SM получить доступ к одному и тому же веса им не нужно загружать данные непосредственно из HBM.
- 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 в размере 450 мс.
Время на выход Токен (TPOT) — это средний промежуток времени между последовательными токены после первого из них. Этот показатель относится к фазе декодирования, в ходе которой каждый шаг ограничивается пропускной способностью памяти:
Средняя скорость бесзвучного чтения взрослыми англоязычными читателями составляет примерно 238 слов в минуту при чтении нон-фикшна.Brysbaert, 2019). Цели потоковой обработки по-прежнему должны определяться в ходе тестирования продукта; в рамках сценария интерактивной работы MLPerf устанавливается предельное значение P99 TPOT в размере 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 хранит проекции ключа и значения для каждого токен на всех уровнях структуры, что позволяет избежать необходимости повторных вычислений с сложностью . Без него для генерации токен в количестве элементов потребуется перезапустить процедуру модель для всех предыдущих токены.
KV cache обычно является основным фактором давления на память, поскольку его объём растёт линейно с длиной последовательности, размером пакета данных и количеством слоёв:
где:
- = количество слоев
- = количество голов KV
- = размер головы
- = длина последовательности
- = размер пакета
Конкретные примеры с 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/BF16 | 16 | ~14 ГБ | |
| FP8 | 8 | ~7 ГБ | Реализация на уровне аппаратного обеспечения в Hopper; оценка модель |
| INT8 | 8 | ~7 ГБ | Калибровка и зависимость от ядра |
| INT4 | 4 | ~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 сервинг:
- Ядра GEMM для умножения матриц, которые играют ключевую роль как в префилл, так и в вычислениях при декодировании.
- Ядра Аттеншн, подобные FlashAttention, которые используют технику плиточного разбиения вычислений для обеспечения эффективности. SRAM вместо переноса данных в HBM.
- Слиянные ядра, объединяющие несколько операций (таких как сложение + нормализация по слою или проекция QKV) в одну инстанцию запуска, чтобы избежать промежуточных итераций типа HBM.
- Ядра сэмплирования, преобразующие логиты в идентификаторы токен с использованием методов сэмплирования top-k, top-p или по параметру температуры.
Качество ядра зачастую имеет большее значение, чем алгоритм квантизация. Тот же самый веса, квантированный с использованием 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
Стандартный аттеншн реализует полную матрицу размером из аттеншн в HBM, что требует памяти и приводит к значительному объёму операций с памятью. Идея метода FlashAttention заключается в том, чтобы вообще не создавать такую матрицу. Для этого матрицы Q, K, V делятся на блоки, которые помещаются в SRAM, Вычисляется частичный аттеншн внутри каждого тайла, а результаты объединяются с помощью онлайн-алгоритма softmax (с постепенным отслеживанием максимального значения и суммы за все обработанные блоки). Памятьозапотребление снижается с до , а время выполнения HBM уменьшается в десять раз.
Каждая версия ориентирована на боттлнек своей генерации GPU:
- FlashAttention версия 1 (A100, 2022) показал, что подход с тайлингом в сочетании с онлайн-алгоритмом softmax действительно эффективен. Это обеспечивает ускорение в 2–4 раза по сравнению со стандартными аттеншн, однако уровень использования GPU составляет лишь 25–40%, поскольку схема расписания ядер оставляет множество SM без работы. FlashAttention версия 2 (A100, 2023) переработал механизм параллелизма таким образом, что вычисления теперь распределяются по измерению последовательностей вместо того, чтобы производиться независимо для каждой группы данных и каждой головы. Благодаря этому он достигает уровня использования ресурсов 50–73% на чипе A100, что примерно в 2 раза быстрее, чем у версии v1.
- FlashAttention версия 3 H100 Hopper (модель 2024 года) получил поддержку специализированных потоковых путей — отдельных каналов для передачи данных и выполнения математических операций — а также технологию пайплайнинга GEMM-softmax, что позволяет синхронизировать загрузку данных из памяти с процессом вычислений. Уровень использования ресурсов составляет 75–85% на чипах H100, а производительность достигает ~1,2 PFLOPS в FP8. Тема особого внимания конференции NeurIPS 2024. FlashAttention версия 4 (B200 Blackwell, 2026) рассматривает новую проблему боттлнек: в архитектуре Blackwell ядра тензорных операций throughput развиваются настолько быстро, что операции, не связанные с умножением матриц (softmax, экспоненты, рескалирование), становятся фактором ограничения производительности. Программное обеспечение FA4 имитирует вычисления экспонент с помощью полиномиальных аппроксимаций на единицах FMA, применяет условное рескалирование для снижения накладных расходов и сохраняет промежуточные результаты в специализированной памяти тензоров Blackwell (TMEM) вместо регистров. В результате на чипе B200 достигается скорость 1,605 TFLOPS/с в BF16, что на 1,3 раза быстрее, чем у cuDNN 9.13, и на 2,7 раза быстрее, чем у Triton.
Каждое поколение сталкивалось с новыми ограничениями аппаратного обеспечения, и каждая версия 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 модель генерирует кандидатов токены, после чего крупный target модель проверяет все эти вариантов токены за один проход вперед. Правильные токены принимаются, а первый неверный вариант отклоняется. Качество вывода математически идентично качеству, получаемому при использовании только самого target модель, поэтому речь идёт о безубыточном ускорении обработки.
Это работает потому, что процесс декодирования LLM ограничен пропускной способностью памяти: проверка токены требует примерно столько же ресурсов, сколько и генерация 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 (какую информацию я несу?). Затем вычисляются оценки Аттеншн следующим образом:
Скалярное произведение позволяет оценить степень сходства между любыми двумя парами токены. Деление этого значения на предотвращает чрезмерный рост скалярных произведений (что могло бы привести к тому, что функция softmax будет работать в областях с исчезающими градиентами). Функция softmax преобразует полученные оценки в вероятности, а умножение на формирует взвешенную комбинацию векторов значений. Параллельная обработка таких операций через несколько голов позволяет модель одновременно учитывать различные связи (одна голова — для синтаксиса, другая — для ко-референции и т. д.).
Сеть с прямым прохождением сигнала (FFN) — как только аттеншн определяет, какие токены являются релевантными, FFN решает, что делать с этой информацией. Современные LLMs используют SwiGLU вместо исходной двуматричной ReLU FFN:
SwiGLU использует три матрицы вес вместо двух, а также функцию Swish активация с плавной зависимостью вместо функции ReLU. Эта архитектура применяется в семействах моделей модель, таких как Llama, Mistral, Qwen и Gemma. FFN обычно составляет около двух третей от общего количества параметров модель, хотя точный процент зависит от конкретной архитектуры.
Остаточные соединения — каждый подблок добавляет свой выход обратно к своему входу: . Без таких пропускающих соединений градиенты исчезают при обратной передаче ошибки через 80–128 слоев. Остаточное соединение создаёт путь, позволяющий информации и градиентам передаваться напрямую от ранних слоёв к поздним.
RMSNorm — широко применяется в современных семействах моделей LLM. LayerNorm осуществляет нормализацию путём центрирования данных (вычитания среднего значения) и пересчёта масштаба (деления на стандартное отклонение). RMSNorm Этот подход опускает шаг вычитания среднего значения и осуществляет лишь перескейлинг; в соответствующей статье указано на достижение ускорения в размере 7–64% для всех тестированных модели без какого-либо снижения производительности в рамках этих экспериментов. Также часто применяется способ размещения данных Pre-norm, при котором нормализация выполняется до аттеншн или до слоя FFN, поскольку это способствует повышению стабильности градиентов.
Оценка количества параметров для декодера без модель:
Здесь — размер словаря, — скрытая размерность, а — количество слоев. Выражение представляет собой матрицу входных данных эмбеддинг; выражение используется для аппроксимации операций аттеншн и FFN веса в каждом слое. Для модели Llama 3 8B (, , ) оценочное значение составляет примерно параметров. Заявленное общее количество параметров в 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) использует каузальную (однонаправленную) аттеншн структуру: каждый токен учитывает только предыдущие токены элементы. Все обрабатывается как прогноз следующего токен элемента: «входными данными» является начало последовательности, а «выходными» — её продолжение. Существует четыре основных причины, по которым такая архитектура стала доминирующей:
-
KV cache эффективность. KV cache, рассчитанный на основе предыдущего токены, остаётся в силе при генерации новых токены, поэтому его никогда не нужно удалять или пересчитывать заново. Кодировщик-декодировщик модели вынужден хранить два отдельных аттеншн кэши (self-attention плюс cross-attention для выходных данных кодировщика), что увеличивает нагрузку на память и усложняет архитектуру.
-
Простота обучения. Цель обучения заключается в прямой предсказании следующего токен на основе сырого текста. Не требуется ни парная входно-выходная данных (как это необходимо для перевода модели), ни реконструкция с маскировкой токен (как это нужно BERT). Модель можно обучать практически любому тексту из Интернета, книг или кода без специальной предварительной обработки, что является огромным преимуществом при масштабировании объёма данных до триллионов токены.
-
Простота архитектуры. Один модуль обрабатывает всё: тот же блок трансформера, повторяющийся раз. Нет слоев энкодер-декодер cross-attention, нет отдельной стековой структуры энкодера. Это делает стратегии параллелизма более простыми в реализации (Раздел 33), и сокращает объём задач, требующих оптимизации. FlashAttention, квантизация, а также спекулятивная декодировка должны обрабатывать лишь один шаблон аттеншн.
-
Обучение в контексте. Модели типа «только декодер» модели по своей природе хорошо справляются с задачами обучения на небольшом количестве примеров, поскольку примеры, инструкции и запросы находятся в одной последовательности в виде токены. У таких модель отсутствует различие между «входными данными» и «выходными данными»; они предсказывают следующий токен на основе всей информации, имеющейся до него. Именно GPT-3 впервые продемонстрировал работу этого подхода в масштабах, что сделало модели «только декодер» модели идеальным решением для роли универсального ассистента.
20. Смешивание экспертов
MoE позволяет заменить громоздкие FFN в каждом слое трансформера на несколько более мелких экспертных FFN, а также на легковесный механизм управления роутер. роутер вычисляет оценку для каждого эксперта (обычно с помощью функции softmax над выученными линейными проекциями) и выбирает лучших экспертов в соответствии с токен. Выполняются только активированные эксперты, поэтому модель может обладать огромной общей пропускной способностью при одновременном сохранении низких затрат на обработку за единицу токен. Это является редкой условной обработкой: общее количество параметров определяет, что модель может представлять, а количество активных параметров — сколько это стоит в плане вычислительных ресурсов.
| Модель | Общее количество параметров | Активные параметры | Эксперты (маршрутизированные + общедоступные) | Топ-к |
|---|---|---|---|---|
| Mixtral 8x7B | 47B | ~13 млрд | 8 + 0 | 2 |
| DeepSeek-V3 | 671B | 37B | 256 + 1 | 8 |
Общий эксперт в DeepSeek-V3 активируется для каждого токен. Он формирует базовое представление, на основе которого специализированные эксперты могут создавать более узкоспециализированные решения.
Процесс обучения MoE сопровождается тремя характерными проблемами: дисбаланс нагрузки, коллапс экспертов и высокие затраты на коммуникацию экспертный параллелизм. В традиционных методах MoE модели для коррекции дисбаланса в роутинг добавляется вспомогательная функция потерь, однако она может конкурировать с основной целевой функцией. DeepSeek-V3 Вместо этого используются параметры смещения вне рамок алгоритма обратного распространения ошибки: система снижает оценку экспертов с чрезмерной нагрузкой и повышает оценку тех, которые используются недостаточно интенсивно. В статье показано, что такой подход обеспечивает лучший баланс роутинг без необходимости идти на компромиссы, связанные с применением дополнительных функций потерь.
21. Токенизация: BPE, SentencePiece и tiktoken
LLMs не видит текст; вместо этого он обрабатывает последовательности целочисленных токен идентификаторов. Механизм токенизатор разбивает необработанный текст на токены (субслова) и присваивает каждому из них соответствующий идентификатор. Выбор токенизатор влияет на качество модель, скорость обработки инференс, а также на справедливость работы системы в мультиязычной среде.
Кодирование пар байтов (BPE) Это распространённый алгоритм. Он итеративно объединяет наиболее часто встречающиеся соседние пары в обучающем корпусе. Упрощённый пример:
- Начните с лексики на уровне символов:
[l, o, w, e, r, _] - Наиболее частая пара
(l, o)→ объединить сlo→ словарный запас:[l, o, w, e, r, _, lo] - Следующей по частоте парой является
(lo, w)→ объединить сlow→ добавляется словарный запасlow - Продолжайте процесс до тех пор, пока объём словаря не достигнет заданного значения (например, 128 К токены)
Обычные слова вроде «the» преобразуются в единый токены, тогда как редкие слова, такие как «defenestration», разбиваются на отдельные морфемы. ["def", "en", "est", "ration"]Компромисс заключается в соотношении размера словаря и длины последовательности.
Три реализации токенизатор покрывают большинство сценариев промышленного использования:
- SentencePiece обрабатывает входные данные как необработанный поток байтов без какой-либо предварительной обработки, специфичной для конкретного языка (без разделения на токенизация с помощью пробелов или знаков пунктуации), что делает его независимым от языка и имеет большое значение для нелатинских алфавитов. Поддерживает как BPE, так и униграммы. Используется в моделях Llama 1/2, T5 и Mistral. tiktoken OpenAI-совместимый движок, написанный на Rust и основанный на токенизатор, использует обработку на уровне байтов с применением BPE. Его скомпилированное ядро на Rust работает в 3–6 раз быстрее, чем аналоги, реализованные на Python. В версии Llama 3 алгоритм обработки текста был заменён с SentencePiece на алгоритм от tiktoken.
- Hugging Face Токенизаторы Это широко используемая библиотека на Rust, обеспечивающая поддержку BPE, алгоритмов WordPiece и Unigram.
Размеры словарей постоянно увеличиваются, что имеет серьезные последствия для эффективности:
| Модель | Размер словаря | англоязычная фертильность | Почему это важно |
|---|---|---|---|
| GPT-2 | 50,257 | ~1,3 токены/слово | Исходная база BPE |
| Llama 2 | 32,000 | ~1,4 токены/слово | Меньший размер словаря, более длинные последовательности |
| GPT-4 | 100,256 | ~1,1 токены/слово | Лучшая степень сжатия и меньшее количество токены за один запрос |
| Llama 3 | 128,256 | ~1,0 токены/слово | В 4 раза превосходит по размеру Llama 2, что обеспечивает значительное улучшение мультиязычных возможностей. |
| GPT-4o | 200,000 | ~1,0 токены/слово | Самый крупный вводный словарь в продакшене |
Плодородие (токены на слово) показывает эффективность сжатия. Чем ниже этот показатель, тем лучше: меньшее количество токены означает более короткие последовательности, снижение затрат и возможность разместить больше контента в контекстное окно. Для английского языка этот показатель обычно составляет ~1,0–1,3 токены на слово, однако при использовании нелатинских алфавитов (китайского, японского, корейского, арабского) он может быть в 2–4 раза выше из-за ориентации словаря на английский язык. Для пользователей, не говорящих на английском, передача того же контента стоит в 2–4 раза дороже в токены, что представляет собой постоянную проблему справедливости, которую более объёмные и сбалансированные словари решают лишь частично.
22. Контекстные окна и позиционные кодировки
контекстное окно представляет собой максимальное количество токены, которое модель может обработать за один проход вперёд. Это значение значительно увеличилось:
| Модель | Контекстное окно | Год |
|---|---|---|
| Оригинальный Transformer | 512 | 2017 |
| 128 К | 2023 | |
| Claude 3.5 | 200K | 2024 |
| Gemini 1.5 Pro | 1 млн+ | 2024 |
| 2 М | 2025 |
Здесь существует фундаментальная проблема: механизм аттеншн рассматривает поступающий к нему вход как множество, а не как последовательность. В его архитектуре отсутствует встроенное понятие порядка слов. Без информации о позициях выражения «кот сидел на коврике» и «коврик сидел на коте» будут иметь одинаковые представления. Позиционные кодировки вносят информацию о порядке, благодаря чему модель может определять, где именно расположен каждый токен.
Три распространённых подхода:
-
RoPE (Rотационное положение Эмбеддинги) кодирует положение каждого токен путем вращения его векторов запроса и ключа под углом, пропорциональным этому положению. Токены, находящиеся рядом друг от друга, получают схожие значения вращения, поэтому их скалярный произведение (аттеншн score) остаётся высоким. Токены, расположенные далеко друг от друга, претерпевают сильно различные варианты вращения, что позволяет кодировать относительное расстояние между ними. RoPE является стандартом практически для всех современных открытых LLMs моделей (Llama, Mistral, Qwen), поскольку он эффективно обрабатывает относительные положения и требует минимальных вычислительных ресурсов.
-
ALiBi Метод (Аттеншн с линейными смещениями) игнорирует модификации эмбеддинг и добавляет штраф непосредственно к оценкам аттеншн: чем больше расстояние между двумя токены, тем выше величина отрицательного смещения. В этом подходе не требуется обучение параметров и не происходит дополнительных вычислений. Он позволяет выполнять определённую экстраполяцию за пределы длины обучающего набора, однако качество результата значительно снижается при использовании контекста, в 2 раза или более превышающего объём обучения.
-
YaRN (Ещё одно расширение для RoPE) позволяет использовать механизм RoPE модель за пределами контекста его обучения. В рамках этого подхода измерения частоты группируются в три категории, причём к каждой из них применяется своя шкала масштабирования. В статье отмечается, что количество файн-тюнинг токены снижается в 10 раз, а количество шагов обучения — в 2,5 раза по сравнению с базовой моделью, основанной на интерполяции позиций.
Часть V — Обучение и выравнивание
Именно в процессе обучения формируются необходимые способности. В этом разделе рассматриваются претрейнинг, эффективные методы файн-тюнинг (LoRA, смешанная точность), законы масштабирования, а также подходы к выравниванию модели.
23. Претрейнинг, файн-тюнинг и выравнивание
Претрейнинг представляет собой самонадзорное прогнозирование следующего элемента токен на основе крупного корпуса данных. Его вычислительные затраты спаны во много раз превышают аналогичные показатели для других подходов. Llama 3 405B, Например, для этой задачи применялась величина в FLOPs. Supervised файн-тюнинг (SFT) позволяет адаптировать заранее обученный модель под конкретные задачи с использованием маркированных данных. RLHF / RLAIF опирается на данные о предпочтениях для формирования поведения: традиционный RLHF пайплайн собирает сравнения, обучает функцию награды модель, а затем оптимизирует политику. В рамках подхода RLAIF вместо некоторых человеческих оценок используется обратная связь, генерируемая AI.
Вычислительные затраты зависят от размера модель, длины последовательности, объема данных, выбранного оптимизатора и используемого метода. Кроме того, PPO хранит больше состояний модель по сравнению с SFT, поскольку типичная структура включает в себя параметры политики, эталона, награды и критика модели. Я подробно рассмотрел весь процесс принятия решений файн-тюнинг фреймворк в Руководство LLM Файн-тюнинг.
24. LoRA и QLoRA: параметроэффективный файн-тюнинг
LoRA Происходит замораживание заранее обученной структуры веса, после чего вводятся обучаемые матрицы низкого ранга () и (); в результате обновленная модель вес имеет вид . В работе LoRA модель GPT-3 175B была преобразована в конфигурацию, содержащую примерно 18 миллионов обучаемых параметров. Ранг является параметром настройки, а не правилом, определяющим сложность задачи; его значение выбирают путем тестирования качества работы и оценки затрат памяти. После завершения обучения адаптеры LoRA могут быть интегрированы в основную структуру веса, что позволяет избежать использования отдельного пути для адаптеров в инференс.
QLoRA В процессе обучения адаптеров LoRA в BF16 осуществляется загрузка базовой структуры модель с использованием 4-битных форматов NF4 квантизация. Механизм NormalFloat4 способствует размещению большего количества квантизация уровней ближе к нулю, где плотность вес достигает максимума. В исследовании была проведена финтунинговая настройка модели объемом 65 млрд модель на одном устройстве с памятью 48 ГБ GPU, и полученные результаты оказались сопоставимы с показателями базовых версий в 16 битах. Баланс между производительностью рантайм и потреблением памяти характерен именно для тестируемой технической стековой сборки.
25. Обучение с смешанной точностью
Каждый формат с плавающей точкой распределяет свои биты между тремя областями: знаком (всегда 1 бит), экспонентой, которая определяет динамический диапазон, и мантиссой, отвечающей за точность представления чисел. Увеличение количества битов экспоненты позволяет охватывать более широкий диапазон значений; большее количество битов в мантиссе обеспечивает более тонкое различение близко расположенных чисел. Форматы целых чисел не содержат экспоненты вовсе и представляют только равномерно расположенные целые значения в пределах фиксированного диапазона.
| Формат | биты | Разметка (S / E / M) | Диапазон | Точность | Частое использование |
|---|---|---|---|---|---|
| FP32 | 32 | 1 / 8 / 23 | примерно 7 десятичных знаков | Освойте веса, состояния оптимизатора (моментум и дисперсия Adam) | |
| BF16 | 16 | 1 / 8 / 7 | ~2 знака после запятой | Рекомендуемый формат обучения — тот же диапазон, что и для FP32, масштабирование потерь не требуется | |
| FP16 | 16 | 1 / 5 / 10 | примерно 3 знака после запятой | Обучение с масштабированием функции потерь (старый GPUs); инференс на аппаратуре до появления Hopper | |
| FP8 E4M3 | 8 | 1 / 4 / 3 | примерно одна десятичная цифра | Прямой проход на Hopper (H100) — повышенная точность для веса и активации | |
| FP8 E5M2 | 8 | 1 / 5 / 2 | ~0,6 десятичных знака | Обратный проход в Hopper — более широкий диапазон градиентов | |
| INT8 | 8 | фиксированная точка | до | Целые числа с точностью до единицы | Пост-трейнинг вес квантизация в контексте инференс (W8A8); KV cache квантизация |
| INT4 | 4 | фиксированная точка | до | Целые числа с точностью до единицы | Агрессивное 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. Проверка чекпоинтов градиентов
Каждый слой процесса передачи данных генерирует промежуточный результат, называемый активация:
Как правило, все активации должны оставаться в памяти, поскольку процесс обратной передачи ошибки требует их для вычисления градиентов. В случае глубоких трансформеров объём сохраняемых активации может превысить объём самих веса модели.
Gradient checkpointing позволяет компромиссировать между вычислительными ресурсами и объёмом памяти за счёт отказа от хранения большей части этих активации и их повторного вычисления «на лету» во время процесса обратного распространения ошибки. Стандартная стратегия (Чен и др., 2016) делим сеть из слоев на равномерно расположенных сегментов и сохраняем лишь границы активация каждого из них. Именно эти сохранённые границы и являются “чекпоинты”. Все промежуточные активации внутри сегмента немедленно удаляются.
Когда обратный проход достигает слоя внутри сегмента, его активации пересчитываются на основе ближайших чекпоинт. Это позволяет снизить потребление активация памяти с до , что на практике означает сокращение на 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 вместо их копирования:
- Этап 1 — состояния оптимизатора разделения. Каждый GPU хранит лишь 1/N состояний оптимизатора (импульс и дисперсия Adam, 8 байт на параметр). При этом GPU необходимо обновить вес, она обновляет только свой сегмент и транслирует полученный результат. Запас памяти снижается с ~120 ГБ до ~31 ГБ на единицу GPU**.
- Этап 2 — также разделение градиентов. Градиенты (2 байта/параметр) больше не суммируются полностью для каждого из них. GPU. Каждый GPU получает только необходимый слой градиента с помощью алгоритма reduce-scatter. Объём памяти снижается до ~16 ГБ на единицу GPU**.
- Этап 3 — также произвести разделение веса модели.** Каждый GPU содержит лишь 1/N от общего объёма FP16 веса. Перед выполнением процесса передачи данных вперёд или назад для каждого слоя GPU привлекает операцию all-gather для временной реконструкции полного слоя веса из всех остальных GPUs, вычисляет и удаляет собранные данные веса. Объём памяти снижается до ~1,9 ГБ на единицу GPU**.
| 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, используя ту же основную концепцию. Механизм обработки каждого слоя представляет собой простой цикл:
- С помощью операции All-gather собираются все параметры из всех GPUs (происходит временная реконструкция полноценного слоя).
- Затем выполняется вычисление процесса передачи данных вперед или назад для данного слоя.
- Собранные параметры немедленно освобождаются. Каждый GPU сохраняет только свой собственный фрагмент.
- Градиенты преобразуются с использованием алгоритма 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 моделей меньшего размера модели на гораздо более обширных наборах данных. Эффект от такого подхода очень заметен:
| Модель | Параметры | Обучение Токены | Токены/Param | Chinchilla × |
|---|---|---|---|---|
| Чинчила | 70 миллиардов | 1,4 Т | 20:1 | 1× |
| Llama 1 | 65 млрд | 1,4 Т | 22:1 | 1× |
| Llama 2 | 70 млрд | 2,0 Т | 29:1 | 1.4× |
| Llama 3 8B | 8B | 15T | 1,875:1 | 94× |
| Qwen3-0.6B | 0,6 млрд | 36T | 60,000:1 | 3,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 (обучение с усилением на основе верифицируемых наград), применяя при этом проверки вроде проверки правильности математических решений, компиляции кода и выполнения модульных тестов. Такие награды проще аудитировать по сравнению с результатами обучения, основанными на личных предпочтениях, однако неполные тесты и заместительные цели всё равно могут быть использованы злоумышленниками для обхода защиты.
| Метод | Типичное состояние модель | Сигнал вознаграждения | Онлайн/офлайн | Основное ограничение |
|---|---|---|---|---|
| PPO | 4 (политика, ссылка, критик, награда) | Извлечённая награда модель | Онлайн | Манипуляции с системой вознаграждений, сложная настройка |
| DPO | Имплицитные (пары предпочтений) | Офлайн | Отсутствие исследования, фиксированные данные | |
| GRPO | Эксплицитный (проверяемый или выученный) | Онлайн | Необходимы проверяемые награды для получения полной выгоды. |
31. Дистилляция: сжатие знаний в рамках модели
Процесс дистилляции знаний позволяет перенести функциональные возможности крупной модели-учителя на более мелкую модель-ученика. Дистилляция на основе логитов направлена на обучение ученика таким образом, чтобы его выходная распределения совпадали с распределениями учителя. Дистилляция на основе данных предполагает генерацию учителем примеров, с помощью которых ученик выполняет финальную настройку. Методы, основанные на данных, широко используются для LLMs, поскольку они способны работать с различными архитектурами и с учителями, реализованными только с использованием API, однако их эффективность определяется качеством учителя, охватом данных, процедурами фильтрации и затратами на генерацию.
DeepSeek-R1 Было сгенерировано 800 000 ризонинг примеров, которые затем использовались для аптимизации моделей Qwen2.5 и Llama 3 модели — при этом количество параметров увеличилось с 1,5 млрд до 70 млрд. Согласно оценкам, приведённым в статье:
- DeepSeek-R1-Distill-Qwen-32B показывает результат 72,6% на тесте AIME 2024 и 94,3% на тесте MATH-500, что превышает значения модели OpenAI o1-mini, указанные в оригинальной статье.
- DeepSeek-R1-Distill-Qwen-7B демонстрирует результат 55,5% на тесте AIME 2024, также превосходящий результат модели QwQ-32B-Preview с меньшим модель.
В экспериментах с моделью DeepSeek-R1 в режиме small-модель было установлено, что метод дистилляции показывает лучшие результаты по сравнению с прямым GRPO на тестировавшейся базовой модели модели. Этот результат подтверждает целесообразность применения дистилляции в данной конфигурации; однако он не позволяет сделать общих выводов относительно превосходства одного из методов над другим.
32. Генерация синтетических данных
LLM — сгенерированные данные для обучения применяются в нескольких типичных паттернах:
- Самообучение запускается на основе небольшого начального набора инструкций, написанных людьми: LLM генерирует новые инструкции, входные и выходные данные, которые затем фильтруются и добавляются обратно в этот пул. Альпака
- Эвол-Инструкт (WizardLM) берёт существующие инструкции и итеративно развивает их вдоль осей сложности (при добавлении ограничений, углублении ризонинг, делании задач более конкретными), чтобы генерировать всё более сложные примеры для обучения.
- Microsoft’s Phi-4** (14B) использовал синтетические данные на протяжении большей части претрейнинг, включая этапы генерации, оценки качества, саморевизии и инверсии инструкций. В его техническом отчёте сравниваются полученные показатели в областях STEM и программирования с показателями более крупных модели на выбранных бенчмарки.
Здесь ключевым риском является модель коллапс: когда модели обучаются рекурсивно на синтетических данных предыдущих поколений, хвосты исходного распределения постепенно исчезают. В результате модель преувеличивает частоту встречаемых шаблонов и упускает редкие, но важные вариации.Шумайлов и др., 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 с использованием схемы общения всех с всеми для токен роутинг. Производительность данного подхода зависит от сбалансированности токен, расположения экспертов и топологии взаимосвязей; трафик типа «все с всеми» может стать доминирующим фактором, влияющим на боттлнек.
Эвристика для инициализации параллелизма:
- Модель помещается в один GPU: начните с отдельных реплик и оцените масштабируемость по показателю DP.
- Модель размещается в пределах одного узла: протестируйте работу TP внутри узла, а затем создайте группу реплик, если это необходимо из-за объёма трафика.
- Модель спаны узлов: протестируйте комбинацию TP и PP на соединении между узлами и цели латентность.
- Смешанная модель экспертов: добавляйте EP только тогда, когда это требуется для расположения экспертов.
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 | Облачные вычисления $/час |
|---|---|---|---|---|---|---|
| B200 | 192 ГБ HBM3e | 8 ТБ/с | FP4, FP8, INT8 | ~4,500 (FP8) | 5.0 (1,8 ТБ/с) | ~$6.25 |
| H200 | 141 ГБ HBM3e | 4,8 ТБ/с | FP8, INT8 | 989 | 4.0 (900 ГБ/с) | $2.15-6.00 |
| H100 SXM | 80 ГБ HBM3 | 3,35 ТБ/с | FP8, INT8 | 989 | 4.0 (900 ГБ/с) | $1.49-3.90 |
| A100 SXM | 80 ГБ HBM2e | 2,0 ТБ/с | INT8, FP16 | 312 | 3.0 (600 ГБ/с) | $1.10-2.54 |
| L40S | 48 ГБ GDDR6 | 864 ГБ/с | FP8, INT8 | 362 (FP16) | Нет | $0.80-1.50 |
| A10G | 24 ГБ GDDR6 | 600 ГБ/с | INT8, FP16 | 70 | Нет | $1.00-1.50 |
| RTX 4090 | 24 ГБ GDDR6X | 1,0 ТБ/с | FP8, INT8 | 83 (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 Эмбеддинг 2 | 3,072 | 68.2% | |
| pplx-embed-v1-4B | 2,560 | Модели на основе декодера (Qwen3), нативные INT8/бинарные | 69.7% |
| Voyage-3-large | 2,048 | защищённый | 66.8% |
| OpenAI text-эмбеддинг-3-large | 3,072 | защищённый | 64.6% |
В этой таблице смешаны отчёты модель и версии бенчмарк, поэтому речь идёт скорее о списке кандидатов, чем о строгой классификации по рейтингу. Некоторые более новые системы эмбеддинг используют архитектуры декодеров с двунаправленным обработанием аттеншн и техникой пуллинга. Другие генерируют данные с меньшей точностью или в мультимодальном формате эмбеддинги. Необходимо оценить требуемый язык, модальность, тип задачи, размерность данных и стоимость сервинг на основе одного набора retrieval.
Обучение представлений в стиле «матрёшка» (MRL, Kусупати и др., NeurIPS 2022) позволяет сделать размерности эмбеддинг гибкими. Получив своё название от русских матрёшек, структуры MRL организуют эмбеддинг таким образом, что их первые размерностей содержат столько же информации, сколько независимо обученная -мерная модель. Во время обучения вместо вычисления единственной функции потерь для всей эмбеддинг, метод MRL параллельно вычисляет несколько функций потерь на размерностях, расположенных с логарифмическим интервалом (64, 128, 256, 512, 1024, 2048, 3072). Суммарная функция потерь заставляет первые размерности передавать крупномасштабную семантическую информацию, в то время как более поздние размерности добавляют более детальные характеристики.
После обучения вектор представления MRL эмбеддинг можно сократить до размера префикса, поддерживаемого архитектурой. Компания OpenAI сообщает, что модель text-эмбеддинг-3-large с размером вектора 256 единиц показывает лучшие результаты по сравнению с моделью text-эмбеддинг-ada-002 с размером 1 536 единиц в используемом ими тесте MTEB. Это позволяет сократить объём хранения сырых векторов в 6 раз; кроме того, затраты на поиск латентность и работу с базами данных также зависят от структуры индекса, метаданных, методов фильтрации и характеристик оборудования.
эмбеддинг-модель является одним из ключевых компонентов в RAG пайплайн, Помимо парсинга, чанкинг, поиска, реранкинг и генерации, при отсутствии соответствующих доказательств более мощный генератор не сможет надёжно восстановить их.
38. Архитектура RAG в продакшене
Метод Retrieval позволяет обеспечивать LLM документами, полученными в момент выполнения запроса. Он способен предоставлять актуальные или конфиденциальные данные, отсутствующие в веса модели, однако retrieval не гарантирует правильного использования этих данных в ответе. Промышленная система RAG представляет собой многоэтапный пайплайн, каждый из этапов которого требует отдельной оценки.
Процесс загрузки пайплайн выполняется офлайн. Сырые документы (PDF, HTML, Markdown, базы данных) сначала парсятся в чистый текст, что оказывается сложнее, чем кажется: уже при одном только парсинге PDF могут быть утеряны таблицы, заголовки и форматирование. Затем этот текст разбивается на чанки, которые затем встраиваются и индексируются отдельно друг от друга.
Чанкинг влияет как на показатель воспроизведения retrieval, так и на объём контекста, доступного генератору. Оптимальные размеры зависят от структуры документа, степени детализации запроса, ограничений модуля эмбеддинга и ограничений реранкер. Распространёнными подходами являются использование фиксированного размера с перекрытием, рекурсивное разделение по границам документа и семантическое чанкинг на основе схожести, определяемой с помощью эмбеддинг. Следует сравнивать эти методы по меткам релевантности на уровне страниц или разделов, вместо того чтобы универсально применять один конкретный диапазон токен.
Каждый чанк затем встраивается с использованием модель, аналогично тем, что применяются в Раздел 37 и хранится в базе данных векторов (Pinecone, Weaviate, Qdrant, pgvector и т. д.).
retrieval пайплайн выполняется во время обработки запроса. Начните с измеримого базового уровня, а затем добавляйте дополнительные этапы там, где анализ ошибок покажет, что они помогают устранять реальные недостатки:
- Гибридный поиск объединяет плотные векторы retrieval с разреженными retrieval, такими как BM25, причём часто происходит их слияние с помощью метода Reciprocal Rank Fusion (RRF). Плотный поиск позволяет обрабатывать семантические парафразы, тогда как разреженный поиск способен выявлять точные идентификаторы, коды ошибок и аббревиатуры. Провайдеры бенчмарки сообщают о повышении эффективности по сравнению с базовыми решениями, основанными исключительно на векторах, однако размер таких моделей зависит от объёма корпуса данных и меток релевантности.
- Реранкинг направляет полученные кандидаты на обработку через модель, который одновременно оценивает запрос и документ. Это может улучшить точность отбора кандидатов за счёт дополнительного вызова функции модель. Количество кандидатов, количество сохраняемых результатов и латентность необходимо настраивать совместно. Я подробно рассмотрел полную многоэтапную процедуру пайплайн в Создание современной стек-архитектуры для ранжирования результатов поиска.
- Преобразование запроса предусматривает переписывание вводимого пользователя запроса перед retrieval с целью повышения точности восстановления информации. Метод HyDE (Hypothetical Document Эмбеддинги) позволяет LLM сгенерировать гипотетический ответ, который затем встраивается и используется для retrieval. Расширение множественными запросами включает создание нескольких вариантов формулировки одного и того же вопроса. Подсказки с отступлением заключаются в первоначальном задании более общего вопроса для получения более широкого контекста.
Распространённые моды отказа:
- Retrieval сбой — корректный документ существует, но не возвращается. Проверьте чанкинг, преобразование запроса, гибридный поиск и фильтрацию метаданных в контексте данной проблемы.
- Отравление контекста — нерелевантные полученные чанки данные вводят в заблуждение LLM. Протестируйте реранкинг, фильтры контекста и более маленькие наборы данных для хранения.
- Проблема «затерянности посередине» — LLM игнорирует релевантный контекст, расположенный в середине длинного промпт.Лю и др., 2024 Было отмечено, что модели уделяет наибольшее внимание началу и концу контекстное окно).
GraphRAG (Microsoft, 2024) дополняет вектор retrieval извлечённой графом сущностей и связей. Этот подход предназначен для решения задач на уровне корпуса текстов, требующих анализа сложных связей, которые простой метод чанк retrieval может упустить. При этом возникают дополнительные затраты на извлечение данных, индексацию, хранение информации и оценку качества результатов.
Руководства для практиков приводят диапазоны латентность для эмбеддинг, поиска, реранкинг и генерации, однако эти значения различаются в зависимости от региона, корпуса данных, аппаратного обеспечения и модель. Необходимо измерять каждый этап в трейсы и оценивать изменение качества перед тем, как принимать добавленный латентность.
39. Архитектуры агентов и вызов инструментов
LLM агенты используют модели для выбора и сортировки по порядку tool calls вокруг изменяющегося состояния. Три полезных оркестрация Шаблоны представлены следующим образом:
- ReAct — сочетает процесс выбора действий с получением наблюдений. Он способен адаптироваться после каждого результата работы инструмента, однако увеличение объёма истории приводит к росту затрат на токен и латентность. ReWOO — планирует tool calls с использованием местоимений, выполняет независимые задачи параллельно, а затем осуществляет синтез. В опубликованной статье указывается на токен экономию по сравнению с ReAct, однако фиксированный план требует чёткого пути восстановления при сбое инструмента.
- Планировщик-экзекьютор — отделяет планирование от процесса выполнения и позволяет добавить политику повторного планирование после сбоя. Он обеспечивает модель специализацию, но увеличивает количество оркестрация состояний и создаёт дополнительную границу принятия решений.
| Шаблон | Токен склонность | Адаптивность | Полезная отправная точка |
|---|---|---|---|
| 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, а не копировать эти примеры без изменений:
- Резкий скачок количества прерываний — запросы вытесняются и перезапускаются; у пользователей наблюдается скрытое удвоение объёма латентность.
- Использование KV cache приближается к зоне прерываний, определённой в тестах — необходимо либо увеличить пропускную способность, либо снизить нагрузку до момента начала вытеснения каскад.
- Глубина очереди постоянно превышает заданные параметры пакетной обработки — система контроля за доступом должна начать отклонять запросы или снижать их приоритет.
- Показатель TTFT растёт, в то время как TPOT остаётся неизменным — такое отклонение указывает прежде всего на проблемы с очередью, механизмом доступа, сетью или давлением префилл, а не на ошибки декодирования throughput. Для различения этих причин следует использовать трейсы и метрики очереди.
44. Оптимизация затрат: стратегия сложного процента
Поскольку метод снапшот устарел, цены на март 2026 года API сильно различались в зависимости от уровней модель. Точные значения цен быстро меняются, поэтому для принятия решения о покупке следует использовать актуальный калькулятор у провайдера. Стоит отметить, что выбор модель и длина выводимого контента могут существенно повлиять на итоговую стоимость ещё до внедрения оптимизаций инфраструктуры.
В выпуске от марта 2026 года снапшот, применяемом в данном разделе, стоимость вывода токены оказалась в несколько раз выше, чем стоимость входных данных токены, для упомянутых уровней модель. Такая асимметрия обусловлена последовательной работой по декодированию, описанной ранее. Раздел 7. Для таких структур ценообразования сокращение ненужного объёма выходных данных может принести больший эффект, чем уменьшение аналогичного количества входных данных токены.
Можно комбинировать несколько подходов, но только после того, как будет определено, какие из них применимы к конкретной нагрузке:
- Квантизация от FP16 до INT4 позволяет сократить объём памяти вес на 75%. То, снизит ли это стоимость обработки, зависит от скорости ядра, размера пакетов данных и уровня использования аппаратных ресурсов.Раздел 9).
- Роутинг моделей направляет подходящий трафик на более дешёвый модели. A Технический кейс компании Maxim AI Сообщено о снижении ежемесячного счета с 42 000 долларов до 29 000 долларов; необходимо воссоздать контрольную точку качества перед тем, как использовать его роутинг часть.Раздел 36).
- Кэширование промптов снижает нагрузку, связанную с многократным использованием одинаковых префиксов. Скидки от поставщиков и правила ограничения частоты запросов постоянно меняются, поэтому необходимо учитывать фактическую частоту запросов наряду с действующими условиями.Раздел 16).
- Пакетная обработка APIs позволяет снизить стоимость работы, не требующей реального времени, такой как оценка качества, генерация синтетических данных и массовая классификация. Проверьте текущие тарифы и сроки выполнения задач.
- Самостоятельное размещение серверов может оказаться выгодным при постоянной нагрузке, однако не существует универсальной точки безубыточности для объёмов обработки токен. Помимо арендной платы за GPU необходимо учитывать затраты на инженерные решения, оркестрация, observability, запас пропускной способности и расходы на круглосуточную поддержку.
Умножение этих иллюстративных коэффициентов позволяет получить значительное теоретическое снижение, однако входные параметры не являются независимыми: квантизация влияет на throughput, роутинг изменяет структуру качества, а механизмы кэширования и группировки применимы лишь к подходящему трафику. Необходимо построить оценку на основе измеренных долей трафика и проверить её согласованность с данными счёта.
А Отчёт по поставщикам за 2024 год от TrueFoundry Атрибуты, обусловливающие наибольшие затраты деплой в рамках выборки, связаны с аспектами инженерии ML, а не с процессами вычислений. Следует рассматривать этот показатель как промпт, отражающий затраты на труд и операционные расходы в составе модель, а не как универсальное соотношение.
45. Пропускная способность планирование и автомасштабирование
Пропускная способность планирование для процессов LLM сервинг должна учитывать изменчивость стоимости обработки запросов, длительные операции декодирования и зависимость использования памяти от порядка обработки данных. В зависимости от нагрузки ограничивающим фактором может выступать память типа KV, пропускная способность памяти, вычислительные ресурсы или средства внутренней связи.
Фактическим ограничением для количества одновременных запросов является бюджет памяти KV cache, а не количество операций типа FLOPS:
В упрощённом примере с Llama 3 70B INT4 около 35 ГБ веса на карте H100 объёмом 80 ГБ оставляют примерно 40 ГБ после выделения ресурсов на дополнительные накладные расходы. При контексте размером 4 Кбайт, если предположить 160 МБ на одну последовательность, теоретический предел составляет около 250 последовательностей; при контексте 128 Кбайт такая же арифметика даёт примерно пять последовательностей. Фактическая ёмкость снижается при учёте поведения механизма распределения памяти, буферов рантайм, изменчивости длины запросов и целевых показателей качества латентность. Именно по этой причине процесс выбора GPU и оптимизация KV cache непосредственно определять план масштабирования.
Формула расчёта пропускной способности для определения размера флота:
Важным параметром является состояние «в рамках целевого 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. Речь идёт о вариантах проектирования, которые необходимо оценить, а не о единственном оптимальном алгоритме обучения.
Режим работы обладает большей стабильностью, чем любая кривая цен: роутинг, кэширование, квантизация и аппаратное обеспечение оптимального размера создают синергетический эффект лишь в том случае, если все эти факторы оцениваются по единому критерию качества и целевым показателям латентность.
Основные принципы
- LLM инференс имеет две чётко различимые фазы. В общем случае сервинг режимы префилл оптимизация сосредоточена на вычислениях, а декодирование — на пропускной способности памяти; характер нагрузки может изменять это распределение.
- The KV cache Это зачастую является ключевым ограничением. Размер данного элемента влияет на пропускную способность пакетной обработки и нагрузку на память. GQA, пагинированное выделение памяти и структуры KV квантизация целиться в разные компоненты данного ограничения. GPU FlashAttention а слияние ядер сокращает затратный процесс перемещения данных, вместо того чтобы изменять их структуру. модельфункция ‘s.Continuous batching и PagedAttention Работать совместно. В одном опубликованном сравнительном отчёте указано 23-кратное превосходство. throughput по сравнению с его примитивной базовой версией; определите величину улучшения в вашем сервинг стек.
- Оптимум для Chinchilla — это не инференс-optimal. Например, Llama 3 8B обучался примерно на 1 875 токены для каждого параметра — обменивать больше вычислительных ресурсов на обучение на более низкую стоимость инференс.
- **GRPO а процесс дистилляции изменил набор инструментов для алинейментов. DeepSeek-R1 показал более высокую эффективность при обработке небольших данных.модель Результаты, полученные в ходе процесса дистилляции, превосходят результаты, достигнутые при непосредственных экспериментах с методом RL.
- Оптимизация затрат производится исключительно для подходящего трафика. Модель квантизация, роутинг, кэширование и обработка пакетами APIs Необходимо провести отдельные измерения уровня покрытия и качества, прежде чем будет возможно масштабировать получаемую экономию.
- Сервинг аппаратное обеспечение должно соответствовать боттлнек. Задачи с высокой нагрузкой на декодирование часто получают преимущества от достаточного объёма памяти и пропускной способности HBM; задачи с интенсивным использованием префилл создают более большую нагрузку на вычислительные ресурсы в виде вес.
Дополнительная литература
Связанные подробные статьи с этого блога, отсортированные по темам:
- Руководство LLM Файн-тюнинг — когда использовать финтюнинг вместо RAG и промпт-инжиниринг Варианты и форматы файлов с открытым исходным кодом LLM — сопоставление вариантов модель и квантизированных форматов с архитектурой оборудования Руководство по LoRAX Сервинг — сервинг тысячи LoRA адаптеров в рабочей среде
- Масштабирование крупных языковых моделей Модели — стратегии с множественными GPU и многокластерной архитектурой Локальная реализация LLMs в macOS — практическая настройка с llama.cpp и Ollama ИИ-агент Ризонинг Циклы в 2026 году — углублённый анализ ReAct, механизма ReWOO и циклов планировщик-экзекьютор
- ИИ-агент Архитектура памяти в 2026 году — чекпоинты, хранилища векторов и память документов для агентов с состоянием
Список литературы
Расположено по тематическим областям; номера разделов указаны в скобках при необходимости.
Инференс и аттеншн
- FlashAttention: быстрый и энергоэффективный точный Аттеншн с учётом операций ввода-вывода - Dao и др., NeurIPS 2022 FlashAttention-2: Более высокая скорость Аттеншн благодаря улучшенной параллелизации и распределению задач. - Dao, 2023
- FlashAttention-3: Быстрый и точный Аттеншн за счёт асинхронности и низкой точности - Shah и др., NeurIPS 2024 Flash-декодирование для длинных контекстов инференс - Dao и др., 2023 Эффективное управление памятью для крупных языковых моделей Сервинг модели с использованием PagedAttention - Kwon и др., SOSP 2023
- Orca: Распределённая система Сервинг для генеративных Модели на основе трансформеров - Yu и др., OSDI 2022 GQA: обучение генерализованным многозапросным Аттеншн - Ainslie и др., 2023 Triton — промежуточный язык программирования и компилятор для вычислений в нейронных сетях - Tillet и др., MAPL 2019
- FlashNorm: быстрая нормализация для LLMs - 2024
- Глубокая фузия ядра для трансформеров - DeepFusionKernel, 2026
Спекулятивная декодировка
- EAGLE-3: Масштабирование процесса ускорения обработки крупных языковых Инференс с помощью Модели - Ли и др., NeurIPS 2025 Medusa: простая система LLM Инференс ускорения Фреймворк с несколькими головками декодирования - ICML 2024
Квантизация
- AWQ: Activation-aware Вес Квантизация в рамках LLM компрессии и ускорения - Лучшая статья конференции MLSys 2024 GPTQ: Точная Пост-трейнинг Квантизация для генеративных предобученных трансформеров - Frantar и др., ICLR 2023
- Marlin: ядро с смешанной точностью (FP16xINT4) LLM Инференс - Frantar и др., 2024
Обучение и файн-тюнинг
- LoRA: Адаптация крупных языковых моделей с низким рангом Модели - Hu и др., ICLR 2022 QLoRA: Эффективная настройка параметров для квантизированных LLMs - Dettmers и др., NeurIPS 2023
- ZeRO: оптимизации памяти для обучения моделей с триллионами параметров Модели - Rajbhandari и др., SC20 ZeRO-Infinity: преодоление «стены памяти» GPU для глубокого обучения в экстремальных масштабах - Rajbhandari и др., 2021 Self-Instruct: синхронизация языка Модели с самостоятельно сгенерированными инструкциями - Wang и др., ACL 2023
- WizardLM: позволяет крупным языковым моделям Модели выполнять сложные инструкции - Xu и др., ICLR 2024 Технический отчет Phi-4 - Microsoft, 2024 AI модели происходит сжатие при обучении на данных, генерируемых рекурсивно - Шумайлов и др., Nature 2024
Соответствие модели целям
- Оптимизация прямых предпочтений: ваш язык Модель на самом деле является неким Модель в виде награды. - Рафайлов и др., NeurIPS 2023 DeepSeekMath: преодоление границ математического Ризонинг в открытых языках Модели - Введён GRPO
- DeepSeek-R1: Стимулирование развития способности Ризонинг в LLMs с помощью метода обучения с подкреплением - DeepSeek, 2025
Масштабирование и архитектура
- Стадо Llama 3 Модели - Meta, 2024 LLaMA: открытый и эффективный языковой фундаментальный модель Модели - Touvron и др. (Meta), 2023
- Llama 2: модель от Open Foundation и её вариант с доработкой для чатов Модели - Touvron и др. (Meta), 2023 Технический отчет Qwen3 - Qwen Team (Alibaba), 2025 Обучение крупных языковых моделей с оптимизацией под вычислительные ресурсы Модели - Hoffmann и др. (Chinchilla), NeurIPS 2022
- RoFormer: усовершенствованный Transformer с механизмом вращательной позиционирования Эмбеддинг - Su и др., 2021 YaRN: эффективное Контекстное окно расширение больших языковых Модели моделей - Peng и др., ICLR 2024 SGLang: эффективная обработка программ на структурированном языке Модель - Zheng и др., NeurIPS 2024
- Mixtral of Experts - Jiang и др. (Mistral AI), 2024
Эмбеддинги
- Обучение представлений в стиле «матрёшка» - Kusupati и др., NeurIPS 2022 pplx-embed-v1: плотные и контекстуальные модели, предобученные с использованием метода диффузии Эмбеддинги - Перплексити AI, 2026
Архитектуры агентов
- ReAct: Синергизация Ризонинг и работа в рамках языковой Модели - Yao и др., ICLR 2023 ReWOO: Разделение Ризонинг от наблюдений с целью повышения эффективности процессов расширения языка Модели - Xu и др., 2023
Роутинг
- RouteLLM: Обучение маршрутизации LLMs с использованием данных о предпочтениях - Ong и др., ICLR 2025
Бенчмарки
- Результаты тестирования MLPerf Инференс v5.0 - MLCommons, апрель 2025 г.
Архитектуры Сервинг
- SARATHI: Эффективное использование LLM Инференс за счёт параллельной декодировки с блочными предзаполнениями - Agrawal и др., 2023 (фрагментированный Префилл) Splitwise: Эффективный генеративный LLM Инференс с применением метода разделения фаз - Patel и др., ISCA 2024 (Дезагрегированный Сервинг)
- DistServe: дезагрегация Префилл и декодирование для оптимизированных по Goodput крупномасштабных языковых Сервинг модели моделей. - Zhong и др., OSDI 2024 (Разнесённые Сервинг)
Сервинг фреймворки
- vLLM - движок на основе PagedAttention-связанных сервинг SGLang - RadixAttention и структурированное генерирование
- TensorRT-LLM - Оптимизировано для NVIDIA инференс
- llama.cpp - Портабельные компиляторы C/C++ инференс
- DeepSpeed - Библиотека дистрибутированной обучающей выборки от Microsoft
- Оллама - Локальный запускающий процесс LLM
Операции
- Эффективное планирование LLM за счёт обучения методам ранжирования - Fu и др., NeurIPS 2024 (vLLM-LTR) CascadeInfer: низкий уровень Латентность и балансировка нагрузки LLM Сервинг с использованием расписания, учитывающего длину элементов - 2024
- Goodput metric как метрика измерения ML производительность - Google Cloud, 2024 vLLM Оптимизация и настройка - vLLM Документация vLLM Метрики - vLLM Документация
- LMCache: управление KV Cache для LLM Сервинг - KV cache перенос нагрузки Лимиты частоты запросов OpenAI - Документация OpenAI API Лимиты частоты запросов Anthropic - Документация Anthropic API