Hostovanje Qwen-a na Blackwell-u

Kako opslužujemo Qwen3 235B na NVIDIA GB200 NVL72 čajevima, smanjujući troškove inferencije uz očuvanje tačnosti modela.

AutoriPerplexity Research

NVIDIA GB200 NVL72 čajevi sa NVIDIA Blackwell GPU-ovima međusobno povezanim preko 72-smernog NVLink-a izuzetno su pogodni za primenu velikih modela mešavine stručnjaka (MoE). U ovom blog postu opisujemo podešavanje inferencije koje opslužuje naknadno obučene Qwen3 235B modele koji podržavaju deo saobraćaja kompanije Perplexity. Prikazujemo kako smo prilagodili naš interni endžin za inferenciju da iskoristi napredna tenzorska jezgra i brzu međusobnu vezu NVIDIA Blackwell GPU-ova. Sa ovim hardverom obrađujemo više saobraćaja po nižoj ceni bez žrtvovanja tačnosti osnovnih modela.

Primena na GB200 NVL72

GB200 NVL72 čajevi se sastoje od 18 čvorova sa 2 NVIDIA Grace CPU-a zasnovana na ARM-u i 4 GPU-a zasnovana na Blackwell-u, od kojih je svaki opremljen sa 180 GB HBM-a. 72 GPU-a su međusobno povezana preko NVLink-a i 18 NVLink prekidačkih ASIC-ova, isporučujući propusni opseg od 1800 GB/s između bilo koja dva para i deleći dovoljno memorije za hostovanje modela sa bilionima parametara. Pored toga, ConnectX-7 InfiniBand adapteri obezbeđuju dodatni propusni opseg od 400 Gb/s kako unutar čvorova reka, tako i preko susednih reka.

Da bismo upravljali saobraćajem, izabrali smo da naknadno obučimo i opslužujemo Qwen modele. U ovom blog postu fokusiramo se na Qwen3 235B, ali mnoge od razmatranih tehnika opsluživanja i karakteristika performansi slične su onima kod novijih Qwen3.5 397B i 122B modela na koje prelazimo. U pogledu paralelizma, linearna pažnja je slična potpunoj samopažnji, a postojeća implementacija MoE sloja može se lako prilagoditi da primi nove uslove gejtovanja. Da bismo održali doslednu stopu dekodiranja uz maksimalno povećanje protoka, izabrali smo da razdvojimo prethodno popunjavanje (prefill) od dekodiranja, primenjujući različite strategije paralelizma za ove dve vrste čvorova. Komunikacija između elementa za prethodno popunjavanje i dekodera obavlja se preko InfiniBand-a, dok je propusni opseg NVLink-a rezervisan za komunikaciju unutar elemenata za prethodno popunjavanje i dekodera. Karakteristike performansi Blackwell uređaja pri izvođenju množenja matrica i komunikacije između uređaja, istražene u ovom blog postu, određuju korišćene strategije deljenja (sharding). U poređenju sa NVIDIA Hopper GPU-ovima, vidimo poboljšanja od jezgra do jezgra zbog većeg broja striming multiprocesora, povećanog memorijskog propusnog opsega i manjih kašnjenja u komunikaciji između uređaja.

Disagregirani prefill i decode, sa InfiniBand vezom između prefillera i decodera i NVLink-om unutar svake implementacije.

Naš TransferEngine, koji implementira razdvojeno prethodno popunjavanje, upravljao je proizvoljnim i potencijalno nepodudarnim deljenjem između elemenata za prethodno popunjavanje i dekodera. KV keš memorije su raspoređene u memoriji HND redosledom, sa glavama u vodećoj dimenziji i tokenima koji se drže u kontinuitetu, kako bi se omogućilo da se deljena KV keš memorija na elementu za prethodno popunjavanje dodatno podeli ili konkatenira u letu tokom prenosa do čvora dekodera.

Elementi za prethodno popunjavanje

Čvorovi za prethodno popunjavanje primaju ulazne tokove zahteva, popunjavaju KV keš memorije i prenose ih na dekodere radi nastavka generisanja teksta. Prethodno popunjavanje je računski intenzivno, pošto se hiljade tokena koji pripadaju sekvenci obrađuju istovremeno.

Posledično, otkrili smo da je tenzorska paralelna primena pogodna, pri čemu je model podeljen na 4 GPU-a unutar jednog GB200 čvora, a projekcije i stručnjaci podeljeni (TP=4, EP=4). Pošto su i pažnja i MLP računski ograničeni, oba imaju koristi od paralelizma, raspoređujući stručnjake i glave pažnje preko odvojenih rangova. Dalji paralelizam bi doneo opadajuće prinose, pošto poboljšanje protoka od hostovanja manjeg broja stručnjaka na svakom rangiranju (16 naspram 32) ne bi nadoknadilo dodatnu cenu dvosmerne all-reduce operacije i opterećenje deljenja koda na strani hosta na dva čvora, što zahteva komunikaciju preko Ethernet-a.

Qwen3 235B ima samo 4 glave ključ-vrednost, što zahteva da se k i v projekcije replikuju preko parova rangova ako se koristi 8 uređaja. Možemo razmotriti agresivnije deljenje kako bi se smanjila količina memorije potrebna za skladištenje težina na svakom rangiranju, oslobađajući prostor za više tokena u KV keš memoriji. Međutim, otkrili smo da šira primena nije isplativa.

Pod pretpostavkom da je ulazna dužina oko 6000 tokena, svakom od 128 stručnjaka je dodeljeno oko 6000 * 8 / 128 = 375 tokena, čime se obezbeđuje gust problem za MoE GEMM. Pošto ovo već zasićuje računski protok uređaja, paralelizam podataka nije potreban za prethodno popunjavanje.

Uprkos kvadratno rastućim troškovima pažnje, elementi za prethodno popunjavanje isporučuju dosledan protok, omogućavajući grubu procenu broja ulaznih tokena koje čvor može da obradi u jednoj sekundi. Oslanjajući se na metrike koje prate ukupan broj ulaznih tokena iz zahteva, čvorovi za prethodno popunjavanje mogu se skalirati kako bi se osiguralo da je ukupni protok prethodnog popunjavanja adekvatno dimenzionisan. Da bi se izbeglo formiranje redova čekanja, broj replika za prethodno popunjavanje je usklađen sa ukupnim brojem primljenih ulaznih tokena.

Dekoderi

Čvorovi dekodera primaju KV keš memoriju od elemenata za prethodno popunjavanje i generišu tokene jedan po jedan. Dekodiranje je uglavnom ograničeno memorijom: sa malo ulaznih tokena, množenje matrica je u potpunosti ograničeno troškovima učitavanja težina iz HBM-a u tenzorska jezgra. Pored primene drugačije strategije deljenja, nekoliko jezgara mora biti prilagođeno radi bolje paralelizacije izračunavanja i pristupa memoriji.

Za razliku od prethodnog popunjavanja, deljenje pažnje više nije korisno: deljenje glava pažnje na više uređaja značilo bi da ima manje mogućnosti za paralelizam unutar jednog uređaja. Posledično, koriste se samo paralelizam podataka i paralelizam stručnjaka: stručnjaci se dele na više uređaja, ali svaki uređaj upravlja sopstvenom KV keš memorijom i zahtevima. Bez tenzorskog paralelizma, veličina KV keš memorije po tokenu na uređaju je veća. Međutim, prostor u memoriji se oslobađa lociranjem manjeg broja stručnjaka na jednom čvoru. Za razliku od Hopper-a, gde smo ograničili tenzorski paralelizam unutar jednog NVLink domena u čvoru sa 8 GPU-ova, na Blackwell-u smo otkrili da je širenje preko više čvorova unutar domena, korišćenjem do 16 uređaja, korisno.

Da bi se maksimalno povećao protok, dekoderi istovremeno obrađuju veći broj zahteva. Iako dodatni zahtevi izazivaju minimalno opterećenje u MoE slojevima i drugim projekcijama, oni nesrazmerno povećavaju troškove pažnje. Da bi se održala razumna minimalna brzina dekodiranja, broj čvorova dekodera se skalira kako bi se veličine serija po dekoderu održale ispod određenog praga.

Slično prethodnim primenama na Hopper-u, koristimo spekulativno dekodiranje sa MTP slojevima razvijenim internim snagama radi povećanja brzine dekodiranja. Srećom, osnovni hardver i programski okviri su dovoljno slični da u potpunosti dele implementaciju između dve arhitekture.

Komunikacija unutar čvora i između čvorova

Glavna razlika između GB200 NVL72 i prethodnih Hopper čvorova jeste veliki NVLink domen, koji omogućava komunikaciju između uređaja preko prethodnog ograničenja od 8 uređaja. Iako su Blackwell uređaj primenjeni u čvorovima sa 8 GPU-ova, postoji velika vrednost u skaliranju preko više čvorova preko NVLink-a u poređenju sa sporijom InfiniBand mrežom.

Na čvorovima za prethodno popunjavanje oslanjamo se na all-reduce komunikaciju unutar slojeva pažnje i na redukciju paralelnu sa stručnjacima koja veoma podseća na all-reduce. Preko 4 GPU-a koristimo i NVLink i NVIDIA SHARP (Scalable Hierarchical Aggregation and Reduction Protocol): pored propusnog opsega za komunikaciju između uređaja, takođe koristimo redukcije u NVLink prekidačima da bismo dodatno smanjili kašnjenja i primenili brza emitovanja. Na čvorovima dekodera koristi se prilagođena all-to-all implementacija raspodele i kombinovanja preko NVLink-a. Jezgra su implementirana interno korišćenjem CuTeDSL-a i cuMem mapiranja ili multikasting mapiranja.

All-Reduce

Elementi za prethodno popunjavanje obavljaju all-reduce operaciju u izlaznoj projekciji sloja pažnje, sumirajući doprinose glava podeljenih preko učestvujućih rangova. Tenzorski paralelizam je efikasan samo kada je cena all-reduce opterećenja nadoknađena smanjenim kašnjenjem manjih problema množenja matrica. Ova pretpostavka obično važi za prethodno popunjavanje.

Na NVIDIA HGX H200 i GB200 NVL72 sistemima namenjenim data centrima, GPU-ovi su obično povezani preko NVLink prekidača. Pored rutiranja, prekidači mogu da obavljaju operacije redukcije na povezanim uređajima preko SHARP-a. Nakon kreiranja memorijskih mapiranja i njihovog registrovanja u multikasting grupu pomoću CUDA API-ja, jezgra mogu da koriste multicast.ld_reduce i multicast.st za agregiranje i emitovanje vrednosti kroz prekidače. Da bismo stvorili osnovu i višekratno upotrebljive komponente koje se mogu spojiti u druga jezgra, interno održavamo CuTeDSL all-reduce jezgro koristeći ove primitive.

U sistemu sa N GPU-ova koji vrše redukciju B bajtova, trivijalna implementacija bi imala to da jedan uređaj učitava vrednosti sa svih drugih uređaja, što daje ukupno N * (N - 1) * B bajtova čitanog saobraćaja. Efikasnija implementacija bi podelila podatke na kojima se vrši redukcija među uređajima, pri čemu svaki vrši redukciju isečka ulaza, a zatim ga emituje na ostatak. Ovo rezultira sa (N - 1) * (B / N) bajtova pročitanih u uređaj i emitovanih na ostatak, što daje ukupno (N - 1) * B * 2 čitanja i pisanja, čime se smanjuje saobraćaj preko prekidača.

NVSwitch saobraćaj all-reduce sa akumulacijom na GPU strani i redukcijom uz podršku switcha.

Sa SHARP-om, redukcija i emitovanje se mogu obaviti efikasnije: umesto čitanja (N - 1) * (B / N) bajtova u uređaj radi lokalne akumulacije, samo B / N se premešta sa prekidača, pošto on sam obavlja redukciju koristeći podatke sa uređaja. Za emitovanje postoji slično poboljšanje, pošto je broj transakcija između GPU-a i prekidača preko NVLink kanala znatno smanjen. Bez SHARP-a, uređaj za akumulaciju bi obavio (N - 1) * (B / N) transakcija preko NVLink-a sa prekidačem, pri čemu prekidač čita istu količinu podataka sa uređaja, što daje ukupno 2 * (N - 1) * (B / N) transakcija. Sa SHARP-om, B / N transakcija se obavlja između GPU-a i prekidača, a dodatnih (N - 1) * (B / N) sa uređajima, što daje ukupno B transakcija.

Zbog svoje jednostavnosti, SHARP je dragocena alatka jer pruža direktnu hardversku implementaciju za algoritam. Iako su prenosi smanjeni za teoretsku frakciju N / (2 * (N - 1)) (što iznosi 33% sa 4 uređaja), u praksi opažamo poboljšanje od 10% u kašnjenju i prethodnog popunjavanja i dekodiranja na H200 i GB200 NVL72 sistemima.

Latencija raspodele putem NVLink-a i NVLS-a na H200 i GB200 pri TP=4 sa 16K tokena.

MoE Raspodela - Kombinovanje

Za MoE modele, jezgra za raspodelu i kombinovanje pomeraju i grupišu tokene za naknadne MoE GEMM probleme između uređaja, obavljajući naknadnu ponderisanu akumulaciju u kombinovanju. Prilagodili smo naša postojeća jezgra za raspodelu i kombinovanje za Blackwell prenošenjem na CuTeDSL, prilagođavanjem alokacija blokova i agresivnim specijalizovanjem između prethodnog popunjavanja i dekodiranja.

Paralelizam stručnjaka

Paralelno jezgro stručnjaka (EP) koristi se u elementima za prethodnog popunjavanja. Pošto su njegovi ulazi replikovani na svim rangovima, jezgro za raspodelu treba jednostavno da izabere tokene usmerene na stručnjake na trenutnom rangu. Ono agregira informacije o rutiranju i priprema tokene u baufere koji se koriste kao ulazi za MoE GEMM. Jezgro za kombinovanje prvo obavlja lokalnu akumulaciju između doprinosa tokena usmerenih na stručnjake na trenutnom rangu, a zatim obavlja all-reduce na svim rangovima.

Za dekodiranje, celo jezgro je spojeno u jedno. Jezgro za prethodno popunjavanje je podeljeno na više jezgara, pošto rutiranje i all-reduce zahtevaju manje blokova nego korak lokalnog kombinovanja. Sa CuTeDSL-om mogli bismo da izgradimo generičku biblioteku i za SHARP i za NVLink all-reduce i sinhronizaciju između uređaja, ugrađujući je i u all-reduce i u paralelna jezgra stručnjaka.

Latencija raspodele i kombinovanja za expert-parallel prefill na H200 i GB200 kroz konfiguracije ekspertne paralelizacije.

Što se tiče performansi, primećujemo da je Blackwell znatno brži od Hopper-a zbog poboljšanih brzina prenosa, većeg memorijskog propusnog opsega i boljeg računskog protoka. Podeljen na 8 uređaja i više čvorova na GB200 sistemima (EP=8), jezgra postaju brža pošto se lokalna akumulacija izvršava na znatno manjem broju tokena na svakom uređaju i, sa SHARP-om, troškovi redukcije preko više rangova se bolje skaliraju. Međutim, u praksi ograničavamo paralelizam na 4 uređaja, pošto ova ubrzanja nisu univerzalna za sva jezgra.

Paralelizam podataka i paralelizam stručnjaka

Paralelno jezgro podataka i stručnjaka (DP-EP) koristi se u dekoderima sa paralelizmom podataka. Ono emituje različite tokene sa svih rangova stručnjacima, prenoseći rezultate na izvorne rangove i akumulirajući ih. Pošto implementira problem retke all-to-all komunikacije, oslanja se isključivo na NVLink.

Na Hopper-u, ovo jezgro je ograničeno na 8 uređaja unutar NVLink domena jednog čvora. Međutim, na GB200 sistemima možemo ga skalirati preko cele reke. Većina koda se ponovo koristi. Jedina razlika je upotreba fabric ručki za razmenu informacija o uređajima preko IMEX-a za početno podešavanje.

Latencija raspodele i kombinovanja na GB200 kroz konfiguracije paralelizacije podataka i ekspertne paralelizacije.

Pošto su veličine prenosa tokom dekodiranja male, one su daleko od zasićenja propusnog opsega NVLink-a i umesto toga su ograničene kašnjenjem. Kašnjenja su u opsegu desetina mikrosekundi i ostaju relativno stabilna kako se broj uređaja povećava, što nam omogućava da proširimo primenu na veći broj uređaja bez izazivanja značajnog dodatnog kašnjenja.

MoE GEMM

MoE modeli imaju koristi od paralelizma stručnjaka, pošto se troškovi množenja svih tokena sa svim stručnjacima mogu lako paralelizovati na više uređaja. Sa tenzorskim paralelizmom na elementima za prethodno popunjavanje, kod gustih problema korist je prilično jasna, pošto svaki rang sada mora da obavi manje izračunavanja. U slučaju dekodiranja, paralelizam podataka pruža dodatnu korist povrh paralelizma stručnjaka, pošto veći broj paralelinih zahteva usmerava više tokena ka svakom stručnjaku, čineći probleme gustim.

U našoj implementaciji trenutno se oslanjamo na CUTLASS CUDA/C++ jezgra za množenje matrica. Testirali smo ih na retkim ulazima za dekodiranje sa različitim šemama kvantizacije i nivoima paralelizma kako bismo odredili optimalnu strategiju deljenja za dekodere. U testovima performansi u nastavku, svi stručnjaci se aktiviraju jednim tokenom.

Latencija Grouped MoE GEMM-a kroz konfiguracije ekspertne paralelizacije i šeme kvantizacije na H200 i GB200.

Otkrili smo da skaliranje 128 stručnjaka na više od 16 rangova daje opadajuće prinose sa CUTLASS-om, pošto troškovi množenja 2 stručnjaka nisu znatno niži od množenja 4. Postoji jasno poboljšanje na Blackwell-u u odnosu na Hopper, čak i na suboptimalnoj strategiji skaliranja blokova. Pošto je povećanje kašnjenja od oko 5 µs između EP=8 i EP=16 za raspodelu/kombinovanje nadjačano smanjenjem od preko 10 µs u troškovima GEMM-a, na GB200 sistemima je opravdano deljenje dekodera na 16 rangova, što potvrđuju i testovi performansi od kraja do kraja.

Kvantizacija

Blackwell uvodi hardversku podršku za nove 8-bitne i 4-bitne šeme kvantizacije. Za razliku od Hopper-a, koji se oslanjao na faktore skaliranja po tenzoru ili po bloku, Blackwell zahteva mikro skaliranje radi postizanja najboljeg protoka prethodnog popunjavanja i dekodiranja. Iako je šema skaliranja blokova koja se koristi za modele poput DeepSeek-a ili Kimi-ja dostupna, mikro skaliranje je efikasnije.

Primenili smo Qwen3 235B sa MXFP8 šemom kvantizacije, statički konvertujući težine nakon finog podešavanja modela. Uticaj na tačnost bio je sličan uticaju skaliranja blokova sa stohastičkom kvantizacijom, ali su isporučene performanse bile znatno bolje, što ilustruju MoE GEMM mikrotestovi performansi. Takođe smo razmotrili MXFP4 i NVFP4 šeme kvantizacije, mada je uticaj na tačnost bez obuke svesne kvantizacije bio preveliki za početni prelazak sa Hopper-a na Blackwell. Planiramo da detaljnije istražimo ove formate u budućem radu.

Performanse od kraja do kraja

Testirali smo dekodere Blackwell Qwen3 235B primena i uporedili ih sa našim prethodnim primenama na Hopper-u. U ovom podešavanju razmatrali smo skaliranje blokova na obe primene kako bismo se fokusirali na uticaj paralelizma. TP=4 elementi za prethodno popunjavanje su odvojeni za obe arhitekture radi izolacije performansi dekodiranja. Slika ispod ilustruje protok dekodiranja pod pretpostavkom realne stope prihvatanja nacrta koju isporučuju naši MTP slojevi.

Qwen3 235B FP8 brzina dekodiranja i propusnost po GPU-u kroz expert-parallel konfiguracije na H200 i GB200, uz pretpostavljenu dužinu draft prihvatanja 0.8.

Na Hopper-u deljenje primene na više od 8 GPU-ova nije izvodljivo, pošto su kašnjenja preko InfiniBand-a, posebno na EFA adapterima, znatno veća. Međutim, na Blackwell-u ostvarujemo znatno veći protok zahvaljujući većim NVLink domenima.

Ostvarili smo početnu Blackwell implementaciju generalizacijom postojećih Hopper jezgara i poboljšanjem performansi jezgara baziranih na NVLink-u. Dalje ćemo smanjivati troškove opsluživanja Qwen-a poboljšavanjem kvantizacije i finim podešavanjem performansi dekodiranja i protoka prethodnog popunjavanja drugih jezgara u cevovodu.

Reference

Blog post o Transfer Engine-u

Blog post o CuTeDSL-u

Blog post o razdvojenom prethodnom popunjavanju

Blog post o spekulativnom dekodiranju

CUTLASS

NVLink

Citiranje

BibTeX
@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}
}