Хостинг Qwen на Blackwell
Как мы обслуживаем Qwen3 235B на стойках NVIDIA GB200 NVL72, снижая затраты на инференс при сохранении точности моделей.
Стойки NVIDIA GB200 NVL72 с графическими процессорами NVIDIA Blackwell, объединенными через 72-канальный NVLink, уникально подходят для развертывания больших моделей смешанных экспертов (MoE). В этой статье мы описываем настройку инференса для моделей Qwen3 235B, прошедших пост-тренировку и поддерживающих часть трафика Perplexity. Мы показываем, как адаптировали наш внутренний движок инференса для использования преимуществ тензорных ядер и высокоскоростного соединения графических процессоров NVIDIA Blackwell. С помощью этого оборудования мы обрабатываем больше трафика с меньшими затратами без ущерба для точности базовых моделей.
Развертывание на GB200 NVL72
Стойки GB200 NVL72 состоят из 18 узлов с 2 ARM-процессорами NVIDIA Grace и 4 графическими процессорами на базе Blackwell, каждый из которых оснащен 180 ГБ памяти HBM. Все 72 графических процессора соединены через NVLink и 18 ASIC-коммутаторов NVLink, обеспечивая пропускную способность 1800 ГБ/с между любыми двумя узлами и разделяя достаточный объем памяти для размещения моделей с триллионами параметров. Кроме того, адаптеры ConnectX-7 InfiniBand обеспечивают дополнительную пропускную способность 400 Гбит/с как внутри узлов стойки, так и между соседними стойками.
Для обработки трафика мы решили использовать Qwen-модели после пост-тренировки. В этой статье мы сосредоточимся на Qwen3 235B, однако многие из описанных методов обслуживания и показателей производительности схожи с таковыми у новых моделей Qwen3.5 397B и 122B, на которые мы переходим. Что касается параллелизма, линейное внимание схоже с полным самовниманием, а существующая реализация слоя MoE может быть легко адаптирована для новых гейтовых параметров. Чтобы поддерживать стабильную скорость декодирования при максимизации пропускной способности, мы решили разделить процессы префилла (prefill) и декодирования (decode), используя различные стратегии параллелизма для двух типов узлов. Коммуникация между узлами префилла и декодирования осуществляется по InfiniBand, в то время как полоса пропускания NVLink зарезервирована для связи внутри самих префиллеров и декодеров. Показатели производительности устройств Blackwell при выполнении матричного умножения и межпроцессорной коммуникации, исследованные в этой статье, определяют используемые стратегии шардирования. По сравнению с графическими процессорами NVIDIA Hopper мы наблюдаем улучшения на уровне отдельных ядер благодаря большему количеству потоковых мультипроцессоров, увеличенной полосе пропускания памяти и меньшим задержкам при передаче данных между устройствами.
Наш TransferEngine, реализующий разделенный префилл, обрабатывает произвольное и, возможно, несогласованное шардирование между префиллерами и декодерами. KV-кэши располагаются в памяти в порядке HND, где головы находятся в ведущем измерении, а токены остаются непрерывными, что позволяет шардированному KV-кэшу на префиллере быть дополнительно разделенным или объединенным во время передачи на узел декодера.
Префиллеры
Узлы префиллеров получают входные токены запроса, заполняют KV-кэши и передают их декодерам для продолжения генерации текста. Префилл является вычислительно интенсивным процессом, так как тысячи токенов, принадлежащих одной последовательности, обрабатываются одновременно.
В результате мы пришли к выводу, что наиболее подходящим является тензорно-параллельное развертывание, при котором модель шардируется на 4 графических процессора в пределах одного узла GB200, а проекции и эксперты распределяются (TP=4, EP=4). Поскольку и внимание, и MLP ограничены вычислительной мощностью, оба процесса выигрывают от параллелизма, распределяя экспертов и головы внимания по отдельным рангам. Дальнейшее увеличение параллелизма дало бы убывающую отдачу, так как прирост пропускной способности от размещения меньшего количества экспертов на каждом ранге (16 вместо 32) не компенсировал бы дополнительные затраты на 8-сторонний all-reduce и накладные расходы на разделение кода, выполняемого на хосте, между двумя узлами, что потребовало бы связи по Ethernet.
У Qwen3 235B всего 4 головы ключей-значений (key-value heads), что требует репликации проекций k и v между парами рангов при использовании 8 устройств. Мы могли бы рассмотреть более агрессивное шардирование, чтобы сократить объем памяти, требуемый для хранения весов на каждом ранге, высвобождая Пространство для большего количества токенов в KV-кэше. Однако мы обнаружили, что более масштабное развертывание нецелесообразно.
Принимая длину входных данных около 6000 токенов, на каждого из 128 экспертов приходится около 6000 * 8 / 128 = 375 токенов, что обеспечивает плотную задачу для MoE GEMM. Поскольку это уже насыщает вычислительную пропускную способность устройства, параллелизм данных для префилла не требуется.
Несмотря на квадратично возрастающую стоимость механизма внимания, префиллеры обеспечивают стабильную пропускную способность, позволяя делать приблизительную оценку количества входных токенов, обрабатываемых узлом за секунду. Опираясь на метрики, отслеживающие общее количество входных токенов из запросов, можно масштабировать количество узлов префиллеров, чтобы общая пропускная способность префилла соответствовала нагрузке. Чтобы избежать очередей, количество реплик префиллеров подбирается в соответствии с общим количеством получаемых входных токенов.
Декодеры
Узлы декодеров получают KV-кэши от префиллеров и генерируют токены по одному. Процесс декодирования, как правило, ограничен памятью: при малом количестве входных токенов умножение матриц полностью лимитируется стоимостью загрузки весов из HBM в тензорные ядра. Помимо применения другой стратегии шардирования, необходимо настроить несколько ядер, чтобы лучше распараллелить вычисления и доступ к памяти.
В отличие от префилла, шардирование внимания здесь уже не приносит пользы: разделение голов внимания между несколькими устройствами означало бы меньше возможностей для параллелизма в рамках одного устройства. В результате используются только параллелизм данных и параллелизм экспертов: эксперты шардируются между несколькими устройствами, но каждое устройство управляет собственными KV-кэшами и запросами. Без тензорного параллелизма размер KV-кэша на один токен на устройстве становится больше. Однако высвобождается Пространство в памяти за счет размещения меньшего количества экспертов на одном узле. В отличие от Hopper, где мы ограничивали тензорный параллелизм в рамках одного домена NVLink в 8-GPU узле, на Blackwell мы обнаружили, что расширение на несколько узлов внутри домена с использованием до 16 устройств является эффективным.
Для максимизации пропускной способности декодеры обрабатывают большее количество запросов одновременно. Несмотря на то, что дополнительные запросы влекут за собой минимальные накладные расходы в слоях MoE и других проекциях, они непропорционально увеличивают стоимость внимания. Чтобы поддерживать приемлемую минимальную скорость декодирования, количество узлов декодеров масштабируется для удержания размера батча на один декодер ниже определенного порога.
Подобно предыдущим развертываниям на Hopper, мы используем спекулятивное декодирование с MTP-слоями, разработанными внутри компании, для повышения скорости декодирования. К счастью, базовое оборудование и фреймворки программирования достаточно схожи, чтобы полностью использовать одну и ту же реализацию для обеих архитектур.
Внутриузловая и межпроцессорная коммуникация
Главное отличие GB200 NVL72 от предыдущих узлов Hopper — это большой домен NVLink, который позволяет осуществлять коммуникацию между устройствами за пределами прежнего ограничения в 8 единиц. Несмотря на то, что устройства Blackwell развертываются в 8-GPU узлах, масштабирование на несколько узлов через NVLink значительно ценнее по сравнению с более медленной сетью InfiniBand.
На узлах префиллеров мы полагаемся на коммуникацию all-reduce внутри слоев внимания и на экспертно-параллельную редукцию, которая близка к all-reduce. На 4 графических процессорах мы используем как NVLink, так и NVIDIA SHARP (Scalable Hierarchical Aggregation and Reduction Protocol): помимо полосы пропускания между устройствами, мы также используем редукции в коммутаторах NVLink для дальнейшего снижения задержек и реализации быстрой широковещательной рассылки. На узлах декодеров используется собственная реализация all-to-all dispatch и combine по NVLink. Ядра были разработаны нами с использованием CuTeDSL и отображений cuMem или multicast.
All-Reduce
Префиллеры выполняют операцию all-reduce в выходной проекции слоя внимания, суммируя вклады голов, распределенных между участвующими рангами. Тензорный параллелизм эффективен только тогда, когда затраты на накладные расходы all-reduce компенсируются сниженной задержкой при выполнении меньших задач умножения матриц. Это предположение обычно верно для префилла.
На системах корпоративного уровня NVIDIA HGX H200 и GB200 NVL72 графические процессоры обычно соединяются через коммутаторы NVLink. Помимо маршрутизации, коммутаторы могут выполнять операции редукции между подключенными устройствами через SHARP. После создания отображений памяти и регистрации их в группе многоадресной рассылки с использованием API CUDA, ядра могут использовать multicast.ld_reduce и multicast.st для агрегации и широковещательной рассылки значений через коммутаторы. Чтобы создать базу и переиспользуемые компоненты, которые можно интегрировать в другие ядра, мы внутренне поддерживаем ядро all-reduce на базе CuTeDSL, использующее эти примитивы.
В системе с N графическими процессорами, редуцирующими B байт, тривиальная реализация заставляла бы каждый узел считывать значения со всех остальных узлов, что суммарно составило бы N * (N - 1) * B байт трафика на чтение. Более эффективная реализация разделяла бы данные для редукции между узлами, где каждый выполняет редукцию части входных данных, а затем транслирует их остальным. Это приводит к (N - 1) * (B / N) байт, считываемых каждым узлом и рассылаемых остальным, что дает суммарно (N - 1) * B * 2 операций чтения и записи, сокращая трафик через коммутаторы.
С SHARP редукция и широковещательная рассылка выполняются эффективнее: вместо считывания (N - 1) * (B / N) байт на устройство для локального накопления, с коммутатора перемещается только B / N байт, поскольку он сам выполняет редукцию, используя данные от узлов. Для широковещательной рассылки наблюдается схожее улучшение, так как количество транзакций между GPU и коммутатором по каналам NVLink значительно сокращается. Без SHARP накапливающее устройство совершало бы (N - 1) * (B / N) транзакций по NVLink с коммутатором, при этом коммутатор считывал бы такой же объем данных от узлов, что в сумме дает 2 * (N - 1) * (B / N) транзакций. С SHARP выполняется B / N транзакций между GPU и коммутатором, и еще (N - 1) * (B / N) с остальными узлами, что дает всего B транзакций.
Благодаря своей простоте SHARP является ценным инструментом, так как предоставляет прямолинейную аппаратную реализацию алгоритма. Хотя объем передач теоретически сокращается на дробь N / (2 * (N - 1)) (что составляет 33% для 4 узлов), на практике мы наблюдаем 10% улучшение задержек как при префилле, так и при декодировании на системах H200 и GB200 NVL72.
MoE Dispatch - Combine
Для моделей MoE ядра dispatch (распределение) и combine (объединение) перемещают и группируют токены для последующих задач MoE GEMM между узлами, выполняя после этого взвешенное накопление в combine. Мы адаптировали наши существующие ядра Dispatch и Combine к Blackwell, портировав их на CuTeDSL, настроив распределение блоков и агрессивно специализировав их для префилла и декодирования.
Параллелизм экспертов
Ядро параллелизма экспертов (EP) используется в префиллерах. Поскольку его входные данные реплицируются по всем рангам, ядро dispatch должно просто выбирать токены, направленные экспертам на текущем ранге. Оно агрегирует информацию о маршрутизации и готовит токены в буферах, которые используются как входные данные для MoE GEMM. Ядро combine сначала выполняет локальное накопление между вкладами токенов, направленных экспертам на текущем ранге, а затем выполняет all-reduce по всем рангам.
Для декодирования все ядро объединяется в одно. Ядро префилла разбивается на несколько ядер, так как маршрутизация и all-reduce требуют меньше блоков, чем этап локального накопления. С CuTeDSL мы смогли создать общую библиотеку как для SHARP и NVLink all-reduce, так и для синхронизации между устройствами, объединив ее как в ядра all-reduce, так и в ядра экспертного параллелизма.
Что касается производительности, мы наблюдаем, что Blackwell существенно быстрее Hopper благодаря улучшенным скоростям передачи, более высокой пропускной способности памяти и лучшей вычислительной эффективности. При шардировании на 8 устройств и несколько узлов на GB200 (EP=8) ядра работают быстрее, так как локальное накопление выполняется для гораздо меньшего количества токенов на каждом устройстве, а с SHARP затраты на редукцию по большему количеству рангов лучше масштабируются. Однако на практике мы ограничиваем параллелизм 4 устройствами, так как этот прирост скорости не является универсальным для всех ядер.
Параллелизм данных и параллелизм экспертов
Ядро DP-EP (data parallel and expert parallel) используется в декодерах с параллелизмом данных. Оно рассылает различные токены со всех рангов экспертам, передавая результаты обратно исходным рангам и накапливая их. Поскольку оно реализует разреженную задачу all-to-all, оно полагается исключительно на NVLink.
На Hopper это ядро ограничено 8 устройствами внутри домена NVLink одного узла. Однако на системах GB200 мы можем масштабировать его на всю стойку. Большая часть кода переиспользуется. Единственное отличие — использование дескрипторов fabric для обмена информацией об узлах через IMEX при начальной настройке.
Поскольку объемы передач при декодировании малы, они далеки от насыщения пропускной способности NVLink и ограничены задержкой. Задержки составляют десятки микросекунд и остаются относительно стабильными при увеличении количества узлов, что позволяет распределять развертывание на большее количество устройств без значительного увеличения дополнительных задержек.
MoE GEMM
Модели MoE выигрывают от параллелизма экспертов, так как затраты на умножение всех токенов со всеми экспертами легко распараллеливаются между несколькими устройствами. При тензорном параллелизме на префиллерах для плотных задач преимущество довольно прямолинейно, так как каждый ранг должен выполнять меньше вычислений. В случае декодирования параллелизм данных дает дополнительный выигрыш поверх параллелизма экспертов, поскольку большее количество параллельных запросов направляет больше токенов каждому эксперту, уплотняя задачи.
В нашей реализации мы в настоящее время полагаемся на ядра CUTLASS CUDA/C++ для умножения матриц. Мы прогнали их через бенчмарки на разреженных входных данных декодирования с различными схемами квантования и уровнями параллелизма, чтобы определить оптимальную стратегию шардирования для декодеров. В приведенных ниже тестах все эксперты активируются одним токеном.
Мы обнаружили, что масштабирование 128 экспертов на более чем 16 рангов дает убывающую отдачу при использовании CUTLASS, так как затраты на умножение 2 экспертов ненамного ниже умножения 4. На Blackwell наблюдается явное улучшение по сравнению с Hopper, даже при субоптимальной стратегии масштабирования блоков. Поскольку увеличение задержки примерно на 5 мкс между EP=8 и EP=16 в dispatch/combine перевешивается снижением более чем на 10 мкс в стоимости GEMM, на системах GB200 шардирование декодеров на 16 рангов оправдано, что также подтверждается сквозными бенчмарками.
Квантование
Blackwell внедряет аппаратную поддержку новых 8-битных и 4-битных схем квантования. В отличие от Hopper, который опирался на коэффициенты масштабирования по тензору или блоку, Blackwell требует микромасштабирования для достижения наилучшей пропускной способности префилла и декодирования. Хотя схема блочного масштабирования, используемая для моделей типа DeepSeek или Kimi, доступна, микромасштабирование более эффективно.
Мы развернули Qwen3 235B со схемой квантования MXFP8, конвертируя веса статически после дообучения модели. Влияние на точность было схожим с влиянием блочного масштабирования со стохастическим квантованием, но полученная производительность оказалась значительно выше, что иллюстрируют микробенчмарки MoE GEMM. Мы также рассматривали схемы квантования MXFP4 и NVFP4, хотя влияние на точность без Quantization-Aware Training было слишком значительным для начального перехода с Hopper на Blackwell. Мы планируем более тщательно исследовать эти форматы в будущих работах.
Сквозная производительность
Мы провели бенчмаркинг декодеров для развертываний Blackwell Qwen3 235B и сравнили их с нашими предыдущими развертываниями на Hopper. В этой настройке мы рассматривали блочное масштабирование для обоих случаев, чтобы сосредоточиться на влиянии параллелизма. Префиллеры TP=4 были разделены для обеих архитектур, чтобы изолировать производительность декодирования. На рисунке ниже показана пропускная способность декодирования, исходя из реалистичной скорости принятия черновика (draft acceptance rate), обеспечиваемой нашими MTP-слоями.
На Hopper шардирование развертывания на более чем 8 графических процессоров не является жизнеспособным, так как задержки через InfiniBand, особенно на адаптерах EFA, существенно выше. Однако на Blackwell мы достигаем существенно более высокой пропускной способности благодаря большим доменам NVLink.
Мы достигли первоначальной реализации на Blackwell путем обобщения существующих ядер Hopper и повышения производительности ядер на базе NVLink. Мы продолжим снижать стоимость обслуживания Qwen за счет улучшения квантования и донастройки производительности декодирования и пропускной способности префилла других ядер в конвейере.
Ссылки
Статья в блоге о Transfer Engine
Статья в блоге о разделении префилла
Статья в блоге о спекулятивном декодировании
Цитирование
@online{perplexity2026HostingQwenOnBlackwell,
author = {{Perplexity} and Nandor Licker and Kevin Hu and Bex Brooker and Erin McKnight},
title = {{Hosting Qwen on Blackwell}},
date = {2026-05-12},
url = {https://www.perplexity.ai/hub/blog/hosting-qwen-on-blackwell}
}