Розміщення 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 центральними процесорами NVIDIA Grace на базі ARM та 4 графічними процесорами на базі Blackwell, кожен з яких оснащений 180 ГБ пам'яті HBM. 72 графічні процесори з'єднані між собою через NVLink та 18 ASIC комутаторів NVLink, що забезпечує пропускну здатність 1800 ГБ/с між будь-якими двома вузлами та спільний доступ до достатньої кількості пам'яті для розміщення моделей з трильйонами параметрів. Крім того, адаптери ConnectX-7 InfiniBand забезпечують додаткову пропускну здатність 400 ГБ/с як всередині вузлів стійки, так і між сусідніми стійками.
Для обробки трафіку ми вирішили донавчити та обслуговувати моделі Qwen. У цьому блозі ми зосереджуємося на Qwen3 235B, але багато з обговорюваних методів обслуговування та характеристик продуктивності подібні до новіших моделей Qwen3.5 397B та 122B, на які ми мігруємо. З точки зору паралелізму, лінійна увага подібна до повної самостійної уваги, а наявна реалізація шару MoE може бути легко адаптована для врахування нових термінів шлюзу. Щоб підтримувати сталу швидкість декодування при максимізації пропускної здатності, ми вирішили відокремити попереднє заповнення від декодування, розгорнувши різні стратегії паралелізму для двох типів вузлів. Зв'язок між префілером і декодером здійснюється через 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 голови типу «ключ-значення», що вимагає реплікації проєкцій k та v по парах рангів, якщо використовується 8 пристроїв. Ми могли б розглянути більш агресивне шарування, щоб зменшити обсяг пам'яті, необхідний для зберігання вагів на кожному ранзі, звільняючи простір для більшої кількості токенів у кеші KV. Проте ми виявили, що ширше розгортання не варте зусиль.
Припускаючи довжину входу близько 6000 токенів, на кожного зі 128 експертів припадає близько 6000 * 8 / 128 = 375 токенів, що спрямовуються на нього, забезпечуючи щільну задачу для MoE GEMM. Оскільки це вже насичує обчислювальну пропускну здатність пристрою, паралелізм даних не потрібен для попереднього заповнення.
Незважаючи на квадратичне зростання вартості уваги, префілери забезпечують сталу пропускну здатність, що дозволяє грубо оцінити кількість вхідних токенів, які можуть бути оброблені вузлом за секунду. Покладаючись на метрики, що відстежують загальну кількість вхідних токенів із запитів, кількість вузлів префілера можна масштабувати, щоб забезпечити відповідний розмір загальної пропускної здатності попереднього заповнення. Щоб уникнути черг, кількість копій префілера узгоджується із загальною кількістю отриманих вхідних токенів.
Декодери
Вузли декодера отримують кеші KV від префілерів і генерують токени один за одним. Декодування зазвичай обмежене пам'яттю: за невеликої кількості вхідних токенів матричне множення повністю обмежене вартістю завантаження вагів з HBM у тензорні ядра. Окрім використання іншої стратегії шарування, кілька ядер потрібно налаштувати для кращого розпаралелювання обчислень і доступу до пам'яті.
На відміну від попереднього заповнення, шарування уваги більше не є корисним: розділення голів уваги на кілька пристроїв означатиме менше можливостей для паралелізму в межах одного пристрою. Отже, використовуються лише паралелізм даних та паралелізм експертів: експерти розділені між кількома пристроями, але кожен пристрій керує власними кешами KV та запитами. Без тензорного паралелізму розмір кешу KV на токен на пристрої є більшим. Проте простір у пам'яті звільняється завдяки розміщенню меншої кількості експертів на одному вузлі. На відміну від Hopper, де ми обмежили тензорний паралелизм в межах одного домену NVLink у вузлі з 8 графічними процесорами, на Blackwell ми виявили, що розширення на кілька вузлів у межах домену з використанням до 16 пристроїв є корисним.
Для максимізації пропускної здатності декодери обробляють більшу кількість запитів одночасно. Навіть попри те, що додаткові запити створюють мінімальні накладні витрати в шарах MoE та інших проєкціях, вони непропорційно збільшують вартість уваги. Для підтримки мінімальної прийнятної швидкості декодування кількість вузлів декодера масштабується, щоб утримувати розміри пакетів на декодер нижче певного порогового значення.
Подібно до попередніх розгортань Hopper, ми використовуємо спекулятивне декодування з шарами MTP, навченими власними силами, для підвищення швидкості декодування. На щастя, базове обладнання та фреймворки програмування достатньо схожі, щоб повністю розділити реалізацію між двома архітектурами.
Внутрішньовузловий та міжвузловий зв'язок
Основна відмінність між GB200 NVL72 та попередніми вузлами Hopper полягає у великому домені NVLink, який забезпечує двосторонній зв'язок (peer-to-peer) понад попереднє обмеження у 8 пристроїв. Навіть незважаючи на те, що пристрої Blackwell були розгорнуті у вузлах з 8 графічними процесорами, існує велика цінність у масштабуванні на кілька вузлів через NVLink порівняно з повільнішою мережею InfiniBand.
На вузлах префілера ми покладаємося на зв'язок all-reduce всередині шарів уваги та на експертне паралельне зменшення, яке дуже нагадує all-reduce. На 4 графічних процесорах ми використовуємо як NVLink, так і NVIDIA SHARP (Scalable Hierarchical Aggregation and Reduction Protocol): на додаток до пропускної здатності peer-to-peer, ми також використовуємо зменшення в комутаторах NVLink для подальшого зниження затримок і реалізації швидких широкомовних розсилок. На вузлах декодера використовується спеціальна власна реалізація диспетчеризації all-to-all та об'єднання через NVLink. Ядра були реалізовані власними силами з використанням CuTeDSL і зіставлень cuMem або багатоадресних зіставлень.
Зведення (All-Reduce)
Префілери виконують операцію all-reduce у вихідній проєкції шару уваги, підсумовуючи внески голів, розділених між ранг-учасниками. Тензорний паралелизм ефективний лише тоді, коли вартість накладних витрат all-reduce компенсується меншою затримкою менших задач матричного множення. Це припущення зазвичай виконується для попереднього заповнення.
У системах NVIDIA HGX H200 та GB200 NVL72 рівня дата-центрів графічні процесори зазвичай з'єднані через комутатори NVLink. Крім маршрутизації, комутатори можуть виконувати операції зменшення між підключеними пристроями через SHARP. Після створення зіставлень пам'яті та їх реєстрації в багатоадресній групі за допомогою API CUDA, ядра можуть використовувати multicast.ld_reduce та multicast.st для агрегації та трансляції значень через комутатори. Щоб створити основу та багаторазово використовувані компоненти, які можна об'єднати в інші ядра, ми внутрішньо підтримуємо ядро all-reduce CuTeDSL, використовуючи ці примітиви.
У системі з N GPU, які зменшують B байтів, тривіальна реалізація змусила б один пір завантажити значення з усіх інших пірів, що в сумі дало б N * (N - 1) * B байтів трафіку читання. Більш ефективна реалізація розподілила б дані, які потрібно зменшити, між пірами: кожен зменшує свій фрагмент вхідних даних, а потім транслює його решті. Це дає (N - 1) * (B / N) байтів, прочитаних у пір і транслюваних решті, що в сумі становить (N - 1) * B * 2 операцій читання і запису, зменшуючи трафік через комутатори.
Завдяки SHARP зменшення та трансляцію можна виконувати ефективніше: замість зчитування (N - 1) * (B / N) байтів на пристрій для локального накопичення, з комутатора переміщується лише B / N, оскільки він сам виконує зменшення, використовуючи дані від інших вузлів. Для трансляції спостерігається подібне покращення, оскільки кількість транзакцій між графічним процесором та комутатором по каналах NVLink значно зменшується. Без SHARP пристрій накопичення виконував би (N - 1) * (B / N) транзакцій через NVLink з комутатором, причому комутатор зчитував би таку саму кількість даних від вузлів, загалом для 2 * (N - 1) * (B / N) транзакцій. З SHARP між графічним процесором і комутатором виконується B / N транзакцій, а з вузлами — ще (N - 1) * (B / N), загалом B транзакцій.
Завдяки своїй просторті SHARP є цінним інструментом, оскільки він забезпечує пряму апаратну реалізацію алгоритму. Незважаючи на те, що передачі зменшуються на теоретичну частку N / (2 * (N - 1)) (що становить 33% з 4 вузлами), на практиці ми спостерігаємо 10% покращення затримок як попереднього заповнення, так і декодування на системах H200 та GB200 NVL72.
Диспетчеризація та об'єднання MoE (Dispatch - Combine)
Для моделей MoE ядра диспетчеризації та об'єднання переміщують і групують токени для подальших задач MoE GEMM між вузлами, виконуючи зважене накопичення пізніше в об'єднанні. Ми адаптували наші існуючі ядра диспетчеризації та об'єднання до Blackwell, портирувавши їх на CuTeDSL, налаштувавши розподіл блоків і агресивно спеціалізувавши їх між попереднім заповненням і декодуванням.
Експертний паралелізм
Ядро експертного паралелізму (EP) використовується в префілерах. Оскільки його вхідні дані реплікуються по всіх рангах, ядро диспетчеризації повинно просто вибрати токени, що направляються до експертів на поточному ранзі. Воно агрегує інформацію про маршрутизацію та готує токени в буферах, які використовуються як вхідні дані для MoE GEMM. Ядро об'єднання спочатку виконує локальне накопичення між внесками токенів, направлених до експертів на поточному ранзі, а потім виконує all-reduce по всіх рангах.
Для декодування все ядро об'єднується в одне. Ядро попереднього заповнення розділене на кілька ядер, оскільки маршрутизація та all-reduce вимагають менше блоків, ніж етап локального об'єднання. За допомогою CuTeDSL ми могли б побудувати загальну бібліотеку для SHARP і NVLink all-reduce та синхронізації peer-to-peer, включивши її як в all-reduce, так і в експертні паралельні ядра.
З точки зору продуктивності, ми бачимо, що Blackwell працює суттєво швидше, ніж Hopper, завдяки покращеній швидкості передачі, вищій пропускній здатності пам'яті та кращій обчислювальній пропускній здатності. Розподілені по 8 пристроях та кількох вузлах на GB200 (EP=8), ядра працюють швидше, оскільки локальне накопичення виконується на значно меншій кількості токенів на кожному пристрої, а завдяки SHARP вартість зменшення на більшій кількості рангів масштабується краще. Проте на практиці ми обмежуємо паралелізм до 4 пристроїв, оскільки ці прискорення не є універсальними для всіх ядер.
Паралелізм даних та експертний паралелізм
Ядро паралелізму даних та експертного паралелізму (DP-EP) використовується в декодерах з паралелізмом даних. Воно транслює різні токени з усіх рангів до експертів, передаючи результати на вихідні ранги та накопичуючи їх. Оскільки воно реалізує розріджену задачу 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 для диспетчеризації/об'єднання переважається зменшенням більш ніж на 10 мкс у вартості GEMM, на системах GB200 шарування декодерів по 16 рангах є виправданим, що також підтверджується комплексними (end-to-end) бенчмарками.
Квантування
Blackwell вводить апаратну підтримку для нових 8-бітних і 4-бітних схем квантування. На відміну від Hopper, який покладався на коефіцієнти масштабування на тензор або на блок, Blackwell вимагає мікромасштабування для досягнення найкращої пропускної здатності попереднього заповнення та декодування. Хоча схема блокового масштабування, що використовується для таких моделей, як DeepSeek або Kimi, доступна, мікромасштабування є більш ефективним.
Ми розгорнули Qwen3 235B зі схемою квантування MXFP8, статично конвертувавши ваги після точного настроювання моделі. Вплив на точність був подібним до впливу блокового масштабування зі стохастичним квантуванням, але забезпечена продуктивність була набагато вищою, як показано мікробенчмарками MoE GEMM. Ми також розглянули схеми квантування MXFP4 та NVFP4, хоча вплив на точність без навчання з урахуванням квантування (Quantization-Aware Training) був занадто значним для початкового переходу від Hopper до Blackwell. Ми плануємо детальніше дослідити ці формати в майбутній роботі.
Комплексна продуктивність (End-to-End)
Ми провели бенчмаркування декодерів розгортань Blackwell Qwen3 235B та порівняли їх з нашими попередніми розгортаннями Hopper. У цьому налаштуванні ми розглянули блокове масштабування для обох розгортань, щоб зосередитися на впливі паралелізму. Префілери TP=4 були відокремлені для обох архітектур, щоб ізолювати продуктивність декодування. Наведений нижче малюнок ілюструє пропускну здатність декодування за умови реалістичного коефіцієнта прийняття чорнеток, забезпеченого нашими шарами MTP.
На Hopper шарування розгортання на понад 8 графічних процесорів є нежиттєздатним, оскільки затримки через InfiniBand, особливо на адаптерах EFA, є суттєво повільнішими. Проте на Blackwell ми досягаємо суттєво вищої пропускної здатності завдяки більшим доменам NVLink.
Ми досягли початкової реалізації Blackwell шляхом узагальнення існуючих ядер Hopper та підвищення продуктивності ядер на базі NVLink. Ми будемо й надалі знижувати вартість обслуговування Qwen шляхом покращення квантування та точного настроювання продуктивності декодування і пропускної здатності попереднього заповнення інших ядер у конвеєрі.
Посилання
Допис у блозі про спекулятивне декодування
Цитування
@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}
}