GPT-OSS á Degi 0

Dag-0 stuðningur við GPT-OSS á H200 með því að aðlaga ROSE með FP8, brankasþætti og MoE-fínstillingum

HöfundarPerplexity Engineering

Perplexity er staðráðið í að gera bestu gervigreindarlíkönin aðgengileg forvitnum einstaklingum sem krefjast nákvæmra og áreiðanlegra svars og umboðsaðgerða. OpenAI tilkynnti nýlega um opin vægalíkön sín (gpt-oss-20b og gpt-oss-120b). Eins og margra leiðandi líkana, er Perplexity meðal fyrstu stofnana til að meta gpt-oss-20b og gpt-oss-120b.

Í þessari færslu deilum við ákvörðunum um innviði innlendu ályktunarstapilsins okkar sem gerðu stuðning við Dag-0 mögulegan. Við leggjum áherslu á að þjóna þessum líkönum á NVIDIA H200 GPU-um, förum nánar í kjarna breytingarnar, valmöguleika úrlausna og málamiðlanir milli hraða og kostnaðar.

GPT-OSS á Hopper

Opin vægalíkönin eru send með MXFP4 magntölun, sem hjálpar þeim að passa í minnið á vélbúnaði í neytendaflokki eða ná hámarksafköstum á NVIDIA Blackwell. Hins vegar, til að meta þetta í upphafi, vildum við keyra þau á núverandi H200 Hopper þyrpingum með lágmarksbreytingum á ályktunarvél. Hopper er ekki með sérstaka FP4 tensor-kjarna, sem voru kynntir af Blackwell. Því ákváðum við að þjóna líkönunum með FP8 nákvæmni í staðinn til að lágmarka þörfina fyrir sérsniðna kjarna og nýta tiltækan vélbúnað sem best.

Á háu stigi eru spenniviðs-LLM (transformer LLMs) einföld í byggingu:

Inntaksinfelling (Input embedding)

Röð af spenniviðslögum. Hvert þeirra inniheldur athyglisblokk, og þétta MLP- eða gisnna MoE-blokk.

Úttaks-logit vörpun (Output logit projection)

Þegar nýtt spenniviðslíkan er kynnt erum við fyrst og fremst áhugasöm um að læra að hvaða marki þau passa við núverandi líkön til að bera kennsl á þær breytingar sem þarf. OpenAI deildi góðfúslega yfirliti yfir líkön sín fyrirfram, sem gerði okkur kleift að sníða ályktunaruppsetningu okkar í samræmi við það. Við komumst að því að líkanið krafðist nokkurra litkra breytinga.

Athygli: GQA með athyglisbrönkum (Attention Sinks)

Hvert athyglishöfuð er með forþjálfaða branksbreytu sem er tekin með í Softmax

YaRN staðsetningarkóðun, svipað og DeepSeek-V3

QKV spörpun hefur hlutdrægni (biases), svipað og Qwen 2

Úttaksspörpun hefur hlutdrægni (bias)

MLP: Gisnandi blanda af sérfræðingum (Sparse Mixture-of-Expert - MoE)

SwiGLU virkjunarfall, frábrugðið flestum opin vægalíkönum

Softmax á eftir Top-K fyrir sérfræðingavogir

Sérfræðingar hafa hlutdrægni (biases)

Væntingarnar um að fjöldi breyta sé um 100B-200B urðu til þess að við ákváðum að:

Víkka út FlashInfer til að styðja við athyglisbranka

Endurnota MoE útfærsluna sem þegar var byggð fyrir DeepSeek-V3 fjölskyldu líkana

Velja FP8 128x128 blokkaskölun sem magntölunarkerfi og víkka út DeepGEMM-kjarnana til að styðja við hlutdrægniterm.

Innlend ályktunarvél (In-house Inference Engine)

Ályktunarviðleitni okkar er studd af innlendu ályktunarvélinni okkar, ROSE. Við erum að byggja ROSE upp sem sveigjanlegan ramma sem gerir kleift að koma nýjum líkönum hratt á koppinn. Að auki, þegar við höfum skuldbundið okkur til að þjóna líkani í stórum stíl, veitir hún vettvang til að fínstilla og auka afköst til að ná fremstu röð.

ROSE birtingarvinnur LLM-vél, sem getur hlaðið líkani og útbúið afkóðaða táknmyndir fyrir það með mörgum afkóðurum, þar á meðal spásagnar- og MTP-afkóðurum. Líkanið sjálft samanstendur af sérsniðnu seti laga, sem styðja ýmsar stillingarvísa fyrir magntölun og samsíðun. Undir lögunum sameinar hún bæði Triton- og CUDA-kjarna sem útfæra og flétta útreikningana sem einstök lög framkvæma á skilvirkan hátt.

ROSE er að stærstum hluta byggð í Python og treystir á PyTorch fyrir skilgreiningar líkana. Þó að Python geri okkur kleift að vera sveigjanleg og laga okkur að nýjum líkönum, erum við að flytja flesta afkastanæmu íhlutina, svo sem þjónustu og hópáætlun, yfir í Rust.

Til að koma nýju líkani á koppinn skilgreinum við í fyrsta lagi líkanahierarkíuna og smíðum þyngdarbreyti fyrir hana. Þegar öllum þyngdum hefur verið úthlutað skilgreinum við áframvirka ferð (forward pass) fyrir einfaldasta TP=1 notkunartilvikið og tryggjum að það virki enda á enda. Að lokum útfærum og prófum við stuðning við ýmsar gerðir samsíðunar áður en við gefum út nýjan gám og setjum líkanið upp á þyrpingu til matss. Við iterum síðan yfir afköstum, treystum á endurgjöf bæði frá mælaborðum og nákvæmari viðmiðum.

ROSE starfar á tölulegum táknmyndum, með litla þekkingu á spjallsniðum fyrir utan samþættingarpróf. Á sama tíma þurftum við að skoða að laga aðliggjandi innviði til að styðja Harmony-táknarann ​​og kortleggja beiðnir rétt yfir í inntakstáknraðir.

Með GPT OSS-líkaninu komust við að því að engar breytingar voru nauðsynlegar á afkóðurum okkar, CUDA-grafbúnaði (CUDA graph harnesses) eða aðliggjandi innviðum, sem gerði okkur kleift að beina krafti okkar að því að fínstilla kjarnana sem styðja við líkanið.

Kjarnar fyrir GPT-OSS

Brankasþáttur (Sink Attention)

Brankasþáttur kynnir auka hlutdrægnistuðul áður en Softmax á sér stað, sem safnast upp með afurð Q og K:

plaintext
attn = softmax(q @ k^T * sm_scale + sink) * V

Þó að einföld útfærsla sé frekar einföld, þá samhliða athyglisútgáfur eins og FlashInfer útreikninga á athygli yfir bæði sjálfstæð höfuð og yfir KV raðarlengdina. Að auki, vegna tölulegrar stöðugleika, er Softmax reiknað út á netinu á meðan stærsta stakið er einnig dregið frá til að ná tölulegum stöðugleika:

plaintext
softmax(x) = e^x / sum(e^x) = e ^ (x - max(x)) / sum(e ^ (x - max(x))

Útfærslan á netinu fylgdist með hlaupandi hámarki m sem var frumstillt í -inf og kvarða d í 1. Með því að frumstilla hámarkið við brankagildi núverandi höfuðs tryggðum við að það myndi safnast rétt saman í Softmax. Við þurftum að gæta þess að tryggja að þetta hámark væri aðeins innlent í fyrsta hlutanum ef athyglinni var skipt í margar blokkir eftir raðarlengdinni.

Við höfum aðlagað FlashInfer FA2 kjarnamátinn, sem notaður er fyrir bæði forfyllingu og afkóðun, til að innihalda brankabreytur.

MoE

Helsti munurinn á MoE-lagi mismunandi líkana er venjulega leiðarvalið (routing scheme). Þar sem búist er við töverulegri breytileika útfærir ROSE þennan kjarna í Triton, sem gerir okkur kleift að laga hann auðveldlega að nýjum líkönum. Þegar um GPT-OSS er að ræða þurftum við að laga þyngdareinkunnir til að framkvæma Softmax aðeins yfir Top-K völdu sérfræðingana, ólíkt sumum líkönum í DeepSeek-stíl sem reikna Softmax út yfir alla sérfræðinga. Okkur fannst það skipta miklu máli fyrir nákvæmni að reikna út sérfræðingavogirnar í bfloat16 nákvæmni.

Áskorunin með MoE-laginu stafaði af ákvörðun okkar um að endurnota núverandi DeepGEMM-kjarna, sem skortu stuðning við hlutdrægniterm. Sem betur fer samþættumst við þeim djúpt með tímanum og gerðum breytingar til að tengja þá betur við okkar sérsniðnu all-to-all útsendingarkjarna. Við bættum við hlutdrægnistuðningi við DeepGEMM með því að frumstilla WGMMA-safnaraskrárnar í hlutdrægnigildin sem hlaðið var inn úr minni. Þetta er eingöngu gert við vinnslu á MN-blokk, þannig að kostnaðurinn er líklega hverfandi og L2 skyndiminnið tryggir skilvirkan aðgang að þessum gildum.

Þar sem þessi líkön njóta ekki góðs af gagna-samsíðun (Data Parallelism) endurnotuðum við útsendingar- og samsetningarkjarna sem nota eingöngu TP. Inntöku í útsendingu er endurtekin yfir alla raðir, þannig að útsendingin velur táknmyndirnar fyrir staðbundið tiltæka sérfræðinga. Samsetning (Combine) framkvæmir veginsu söfnun yfir NVLink.

Afkastafínstillingar (Performance Tweaks)

Jafnvel þó að markmið okkar hafi verið að koma líkönunum hratt upp, vildum við tryggja að afköstin væru enn eðlileg. Eftir að hafa tryggt réttmæti gagnvart viðmiðunarútfærslu frá OpenAI, profíleruðum við útfærslu okkar með sjálfgefnum PyTorch profiler, og fylgdumst með blokka- og þráðaúthlutun yfir kjarna. Virknin sem við endurnotuðum var smíðuð fyrir líkön sem voru með stærri falinn vídd (hidden dimension) á stærð við 7168, sem er töluvert stærri en 2880 hjá GPT-OSS líkonunum. Við sérhæfðum kjarnaræsa til að velja betri netvíddir, sem jók afköst verulega.

Auðkennislausnir og rásir

Spjallsnið Harmony (Harmony’s chat format) hefur nokkur mikilvæg hugtök til að skipuleggja samræður, rökhugsun og aðgerðaköll. Í þessu sniði samanstendur hvert skilaboð af haus og efni:

plaintext
<|start|>{header}<|message|>{content}<|end|>

Hausinn ber lýsigögn — síðast en ekki síst hlutverkið (kerfi, þróunaraðili, notandi, aðstoðarmaður, tól), rásina og viðtakanda eins og to=functions.<function-name> þegar kallað er á aðgerðakall.

Rásir (svo sem greining, athugasemd og lokaútkomur) gera úttak líkansins gagnsærra og skiptari. Vegna þess að sniðið þvingar þessa aðgreiningu fram getur líkanið rökhugsað á gagnsæjan hátt (og verið skoðað til villuleitar) án þess að leka hugsunarkeðju inn í framleiðslu. Viðtakandamerki (to= hausar) segja keyrslutímanum nákvæmlega hvaða leikari eigi að fá næsta gögn — hvort sem það er aðgerð, líkanið sjálft eða notandinn.

Ályktunarvélin okkar ROSE er óháð sniði. Hún fær hóp af inntakstáknmyndum og streymir til baka úttakstáknmyndum. Í okkar ályktunarstafla er það hlutverk sérhæfða JSON API framendaþjónustunnar að sniða inntak í táknmyndað stef og þátta niðurstöður LLM aftur í skipulögð skilaboð. Við samþættum Harmony með því að bæta nýjum innstungumótara/þáttara við þennan framenda, sem gerir bakendanum kleift að vera óbreyttur á meðan framendinn stýrir spjallsniðsreglum, aðgerðaköllum og streymi snyrtilega. Þessi aðgreining á áhyggjum heldur arkitektúrnum einingaskiptum, sem gerir kleift að taka fljótt upp ný snið og úttaksvirkni með lágmarksbreytingum á bakenda.

Kostnaður og afköst

Miðað við hve líkönin GPT-OSS eru tiltölulega lítil takmörkum við dreifingu eintaks við eina taug til að koma í veg fyrir samskiptakostnað milli tauganna. Útfærsla okkar styður sveigjanlegar samsetningar af sérfræðinga-samsíðun (EP), gagna-samsíðun (DP) og tensor-samsíðun (TP). Til að ákvarða bestu dreifingaruppsetninguna gerðum við viðmiðunarpróf á öllum samsetningum af skiptingarstefnum yfir hópstærðir frá 1 til 128. Þökk sé forfyllingar- og afkóðunaraðgreiningu (Prefill-Decode Disaggregation) getum við rætt málamiðlunina milli afkasta og kostnaðar sérstaklega fyrir forfyllingu og afkóðun.

Fyrir kostnaðaráætlanir gerum við ráð fyrir nafnverði á H200 markaði upp á $3.00/klst. (athugið: þetta er ekki raunverulegt GPU-verð okkar).

Við komumst að því að stillingarnar batch_size=1 og DP1 skila bestu forfyllingarafköstum. Mismunandi TP-stillingar bjóða síðan upp á ýmsar málamiðlanir milli leyndar fyrsta tákns og kostnaðar. Töflurnar hér að neðan sýna forfyllingarleynd og kostnaður á hverja milljón inntakstákna fyrir ýmsar stillingar og inntakslengdir.

GPT-OSS 120B:

Inntakslengd

8192

32768

65536

128000

EP1 DP1 TP1

0.364s, $0.037

2.421s, $0.062

7.375s, $0.094

23.902s, $0.156

EP2 DP1 TP2

0.190s, $0.039

1.245s, $0.063

3.786s, $0.096

12.116s, $0.158

EP4 DP1 TP4

0.165s, $0.067

0.900s, $0.092

2.449s, $0.125

7.165s, $0.187

EP8 DP1 TP8

0.179s, $0.145

0.839s, $0.171

2.003s, $0.204

5.119s, $0.267

Forvinnslutöf og kostnaður á hverja milljón innsláttartókna fyrir GPT-OSS 120B eftir samhliða stillingu og inntakslengd.

GPT-OSS 20B:

Inntakslengd

8192

32768

65536

128000

EP1 DP1 TP1

0.239s, $0.024

1.610s, $0.041

4.895s, $0.062

16.037s, $0.104

EP2 DP1 TP2

0.127s, $0.026

0.833s, $0.042

2.522s, $0.064

8.143s, $0.106

EP4 DP1 TP4

0.108s, $0.044

0.593s, $0.060

1.616s, $0.082

4.766s, $0.124

EP8 DP1 TP8

0.116s, $0.094

0.547s, $0.111

1.310s, $0.133

3.365s, $0.175

Forvinnslutöf og kostnaður á hverja milljón innsláttartókna fyrir GPT-OSS 20B eftir samhliða stillingu og inntakslengd.

Fyrir afkóðun komumst við að því að EP4 DP1 TP4 er besta stillingin í flestum tilfellum. Fjórir línurit hér að neðan sýna málamiðlunina milli afkóðunarhraða og kostnaðar á hverja milljón úttakstákna fyrir bæði 120B og 20B líkönin við raðarlengdirnar 8192 og 32768.

Afkóðun eingöngu: kostnaður á hverja milljón úttakstókna á móti afkóðunarhraða fyrir GPT-OSS 120B við raðlengd 8.192, þar sem EP1, EP2, EP4 og EP8 stillingar eru bornar saman.
Afkóðun eingöngu: kostnaður á hverja milljón úttakstókna á móti afkóðunarhraða fyrir GPT-OSS 120B við raðlengd 32.768, þar sem EP1, EP2, EP4 og EP8 stillingar eru bornar saman.
Afkóðun eingöngu: kostnaður á hverja milljón úttakstókna á móti afkóðunarhraða fyrir GPT-OSS 20B við raðlengd 8.192, þar sem EP1, EP2, EP4 og EP8 stillingar eru bornar saman.
Afkóðun eingöngu: kostnaður á hverja milljón úttakstókna á móti afkóðunarhraða fyrir GPT-OSS 20B við raðlengd 32.768, þar sem EP1, EP2, EP4 og EP8 stillingar eru bornar saman.

Við höfum einnig íhugað að nota minni 20B líkanið sem spásagnar-afkóðunar dráttarlíkan (draft model) fyrir stærra 120B líkanið. Hins vegar, vegna þess að fjöldi virkra breyta er svipaður (3B vs. 5B), voru tilheyrandi hraðaukningar litlar.

Heimildir

Aðgreind forfylling og afkóðun

Hraða á Sonar með spásögnum​

Minni leynd og meiri afköst með fjöl-tauga DeepSeek dreifingu

​Skilvirk og færanleg blanda af sérfræðingasamskiptum

​pplx-kernels

DeepGEMM

FlashInfer: Skilvirk og sérhannað athyglisvél fyrir LLM ályktunarþjónustu

Skilvirk streymismálalíkön með athyglisbrönkum

DeepSeek-V3 Tækniskýrsla​

​OpenAI Harmony úttakssnið | OpenAI matreiðslubók​

Tilvitnun

BibTeX
@online{perplexity2025GptOssOnDay0,
  author = {{Perplexity} and Nandor Licker and Lequn Chen and Vladimir Zaytsev and Kevin Hu and Lauren Kolm and Jesse Dwyer},
  title = {{GPT-OSS on day 0}},
  date = {2025-08-08},
  url = {https://www.perplexity.ai/hub/blog/gpt-oss-on-day-0}
}