Day 0 кезіндегі GPT-OSS
ROSE жүйесін FP8, тұзақ назары және MoE оңтайландыруларымен бейімдеу арқылы H200 жүйесіндегі GPT‑OSS үшін Day‑0 қолдауы
Perplexity ең дәл әрі сенімді жауаптар мен агенттік әрекеттерді талап ететін, ізденімпаз адамдарға ең үздік AI модельдерін қолжетімді етуге ұмтылады. OpenAI жуырда өзінің open-weight модельдерін (gpt-oss-20b және gpt-oss-120b) жариялады. Көптеген жетекші модельдердегі сияқты, Perplexity gpt-oss-20b және gpt-oss-120b модельдерін бағалайтын алғашқы ұйымдардың қатарында.
Бұл мақалада біз Day-0 қолдауын мүмкін еткен ішкі инференс стегінің инфрақұрылымдық шешімдерімен бөлісеміз. Біз бұл үлгілерді NVIDIA H200 GPU-ларында қызмет көрсетуге назар аударып, ядро өзгерістерін, орналастыру таңдауларын және жылдамдық пен құн арасындағы ымыраларды егжей-тегжейлі баяндаймыз.
Hopper жүйесіндегі GPT-OSS
Ашық салмақты үлгілер тұтынушылық деңгейдегі жабдық жадына сыюға немесе NVIDIA Blackwell жүйесінде ең жоғары өткізу қабілетіне қол жеткізуге көмектесетін MXFP4 кванттау арқылы жеткізіледі. Дегенмен, бастапқы бағалау үшін біз оларды инференс қозғалтқышына мінімалды өзгерістер енгізе отырып, бар H200 Hopper кластерлерінде іске қосқымыз келді. Hopper жүйесінде Blackwell ұсынған арнайы FP4 тензорлық ядролары жоқ. Нәтижесінде, арнайы ядроларға деген қажеттілікті барынша азайту және қолжетімді жабдықты барынша тиімді пайдалану үшін үлгілерге орнына FP8 дәлдігімен қызмет көрсетуді ұйғардық.
Жалпы алғанда, трансформерлік LLM құрылымы жағынан қарапайым:
Кіріс эмбеддингі
Трансформер қабаттарының тізбегі. Олардың әрқайсысында назар аудару блогы (attention block) және тығыз MLP немесе сирек MoE блогы болады.
Шығыс логит протекциясы
Жаңа трансформерлік үлгіні іске қосқан кезде, қажетті өзгерістерді анықтау үшін олардың бар үлгілермен қаншалықты сәйкес келетінін білу бізді көбірек қызықтырады. OpenAI бізге инференс орнатуын тиісінше реттеуге мүмкіндік бере отырып, өз үлгілерінің шолуын алдын ала мейірімділікпен бөлісті. Үлгі шынымен де бірқатар шағын өзгерістерді талап еткенін анықтадық.
Назар аудару (Attention): Назар аудару тұзақтары (Attention Sinks) бар GQA
Әрбір назар аудару басында (attention head) Softmax есептеулеріне енгізілетін алдын ала оқытылған тұзақ параметрі (sink parameter) бар
DeepSeek-V3 сияқты YaRN позициялық кодтауы
Qwen 2 сияқты QKV проекцияларында ығысулар (biases) бар
Шығыс проекциясында ығысу (bias) бар
MLP: Сирек сарапшылар қоспасы (Sparse Mixture-of-Expert - MoE)
Көптеген ашық салмақты үлгілерден ерекшеленетін SwiGLU белсендіру функциясы
Сарапшы салмақтары үшін Top-K кейінгі Softmax
Сарапшыларда ығысулар (biases) бар
Параметрлер саны 100B-200B шамасында болады деп күте отырып, біз мыналарды шештік:
Назар аудару тұзақтарын (attention sinks) қолдау үшін FlashInfer кеңейту
DeepSeek-V3 үлгілер отбасы үшін бұрын жасалған MoE іске асыруын қайта пайдалану
DeepGEMM ядроларын ығысу шамасын (bias term) қолдау үшін кеңейте отырып, кванттау схемасы ретінде FP8 128x128 блок масштабын таңдау.
Меншікті инференс қозғалтқышы
Біздің инференс жұмыстарымыз меншікті ROSE инференс қозғалтқышымен қамтамасыз етіледі. Біз ROSE жүйесін жаңа үлгілерді жылдам іске қосуға мүмкіндік беретін икемді құрылым ретінде жасап жатырмыз. Сонымен қатар, үлгіге ауқымды түрде қызмет көрсетуге кіріскеннен кейін, ол озық деңгейге жету үшін өнімділікті оңтайландыру және арттыру платформасын ұсынады.
ROSE үлгіні жүктей алатын және бірнеше декодерлер (соның ішінде спекулятивті және MTP декодерлері арқылы) үшін шешілген токендерді жасай алатын LLM қозғалтқышын ұсынады. Үлгілердің өздері кванттау және параллелизм үшін әртүрлі конфигурациялық параметрлерді қолдайтын реттелетін қабаттар жиынтығынан тұрады. Қабаттардың астында ол жеке қабаттар орындайтын есептеулерді тиімді жүзеге асыратын және біріктіретін Triton және CUDA ядроларын біріктіреді.
ROSE негізінен Python тілінде жасалған және үлгі анықтамалары үшін PyTorch жүйесіне сүйенеді. Python бізге икемді болуға және жаңа үлгілерге бейімделуге мүмкіндік берсе де, біз қызмет көрсету және топтаманы жоспарлау сияқты өнімділікке сезімтал компоненттердің көбін Rust тіліне көшіріп жатырмыз.
Жаңа үлгіні іске қосу үшін біз алдымен үлгі иерархиясын анықтаймыз және оған арналған салмақ түрлендіргішін құрамыз. Барлық салмақтар есепке алынғаннан кейін, біз ең қарапайым TP=1 қолданыс жағдайы үшін тура өтуді (forward pass) анықтаймыз және оның толық жұмыс істейтінін қамтамасыз етеміз. Соңында, жаңа контейнерді шығарып, үлгіні бағалау үшін кластерде орналастырмас бұрын, параллелизмнің әртүрлі формаларын қолдауды іске асырып, сынаймыз. Содан кейін біз бақылау тақталарынан (dashboards) және неғұрлым дәл өлшемдерден алынған кері байланысқа сүйене отырып, өнімділікті жетілдіреміз.
ROSE интеграциялық тесттерден тыс чат пішімдері туралы шамалы білімі бар сандық токендерде жұмыс істейді. Сонымен қатар, біз Harmony токенызаторын қолдау және сұрауларды кіріс токен тізбектеріне дұрыс сәйкестендіру үшін іргелес инфрақұрылымды реттеу мәселесін қарастыруға мәжбүр болдық.
GPT OSS үлгісімен декодерлерімізге, CUDA графының құралдарына немесе іргелес инфрақұрылымға ешқандай өзгерістер қажет емес екенін анықтадық, бұл бізге күш-жігерімізді үлгіні қолдайтын ядроларды реттеуге бағыттауға мүмкіндік берді.
GPT-OSS үшін ядролар
Тұзақ назары (Sink Attention)
Тұзақ назары softmax алдында қосымша ығысу факторын енгізеді, ол Q және K көбейтіндісімен жинақталады:
attn = softmax(q @ k^T * sm_scale + sink) * VҚарапайым іске асыру аса қиын болмаса да, FlashInfer сияқты тиімді назар аудару іске асырулары назар аударуды есептеуді тәуелсіз бастар (independent heads) бойынша да, KV тізбегінің ұзындығы бойынша да параллельді орындайды. Сонымен қатар, сандық тұрақтылық үшін Softmax есептеулері сандық тұрақтылық мақсатында максималды элементті шегере отырып, онлайн режимінде орындалады:
softmax(x) = e^x / sum(e^x) = e ^ (x - max(x)) / sum(e ^ (x - max(x))-inf мәніне инициализацияланған жұмыс істеп тұрған максимум m мәнін және 1 мәніне келтірілген d масштабын онлайн іске асыру бақылап отырды. Максимумды ағымдағы басшының тұзақ мәніне (sink value) инициализациялау арқылы біз оның Softmax-қа дұрыс жиналуын қамтамасыз ете аламыз. Егер назар аудару тізбек ұзындығы бойынша бірнеше блоктарға бөлінген болса, бұл максимумның тек бірінші блокқа енгізілуін қамтамасыз етуге назар аударуымыз керек еді.
Біз префилл және декод үшін қолданылатын FlashInfer FA2 ядро үлгісін тұзақ параметрлерін (sink parameters) қосу үшін реттедік.
MoE
Әр түрлі үлгілердің MoE қабаты арасындағы негізгі айырмашылық әдетте бағыттау схемасы (routing scheme) болып табылады. Айтарлықтай өзгермелілікті күте отырып, ROSE бұл ядроны Triton тілінде іске асырады, бұл оны жаңа үлгілерге оңай бейімдеуге мүмкіндік береді. GPT-OSS жағдайында барлық сарапшылар бойынша softmax есептейтін кейбір DeepSeek стиліндегі үлгілерден айырмашылығы, біз softmax функциясын тек Top-K таңдалған сарапшылары бойынша орындау үшін салмақ ұпайларын реттеуге мәжбүр болдық. Дәлдік үшін сарапшы салмақтарын bfloat16 дәлдігінде есептеу өте маңызды екенін анықтадық.
MoE қабатындағы мәселе біздің бар DeepGEMM kernel-дерін қайта пайдалануға шешім қабылдағанымызға байланысты болды, өйткені оларда bias терминдеріне қолдау жоқ еді. Бақытымызға қарай, уақыт өте біз олармен терең интеграцияланып, оларды біздің арнайы all-to-all dispatch kernel-дерімен жақсырақ байланыстыру үшін өзгерістер енгіздік. Біз DeepGEMM-ге bias қолдауын WGMMA accumulator регистрлерін жадтан жүктелген bias мәндеріне инициализациялау арқылы қостық. Бұл MN блогын өңдеу кезінде бір реттік әрекет, сондықтан құны елеусіз болуы ықтимал, ал L2 кэш бұл мәндерге тиімді қолжетімділікті қамтамасыз етеді.
Бұл үлгілер деректер параллелизмінен (Data Parallelism) айтарлықтай пайда көрмейтіндіктен, біз тек TP диспетчерлік және біріктіру ядроларын қайта пайдаландық. Диспетчерлік кірістер барлық рангтер бойынша көшіріледі, сондықтан диспетчер жергілікті қолжетімді сарапшылар үшін токендерді таңдайды. Біріктіру (Combine) NVLink арқылы салмақталған жинақтауды орындайды.
Өнімділікті реттеу
Біздің мақсатымыз үлгілерді жылдам іске қосу болғанымен, өнімділіктің әлі де қолайлы болуын қамтамасыз еткіміз келді. OpenAI ұсынған анықтамалық іске асыруға қарсы дұрыстығын тексергеннен кейін, біз ядролар бойынша блок пен тредті бөлуді қадағалай отырып, әдепкі PyTorch профилері арқылы іске асыруымызды профильдедік. Біз қайта пайдаланған функционал GPT-OSS үлгілерінің 2880 өлшемінен едәуір үлкен, жасырын өлшемі 7168 болатын үлгілер үшін жасалған еді. Біз өткізу қабілетін айтарлықтай арттыра отырып, жақсырақ тор өлшемдерін таңдау үшін ядро лаунчерлерін арнайы бейімдедік.
Токенизация және арналар
Harmony чат пішімінде сөйлесулерді, пайымдау мазмұнын және функция шақыруларын құрылымдауға арналған бірнеше маңызды тұжырымдамалар бар. Бұл пішімде әрбір хабарлама тақырыптан және мазмұннан тұрады:
<|start|>{header}<|message|>{content}<|end|>Тақырып метадеректерді — ең бастысы рөлді (жүйелік, әзірлеуші, пайдаланушы, көмекші, құрал), арнаны және құралды шақырған кездегі to=functions.<function-name> сияқты алушыны тасымалдайды.
Арналар (талдау, түсініктеме және соңғы жауап сияқты) үлгі нәтижелерін анағұрлым ашық әрі сегменттелген етеді. Пішім осы бөлінуді талап ететіндіктен, үлгі ойлау тізбегін (chain-of-thought) өндіріске ағызбай, ашық түрде пайымдай алады (және ақаулықтарды жою үшін тексеріледі). Алушы тегтері (to= тақырыптары) орындау ортасына келесі жүктемені қандай актер қабылдауы керектігін — функция ма, үлгінің өзі ме, әлде соңғы пайдаланушы ма — дәл көрсетеді.
Біздің ROSE инференс қозғалтқышымыз пішімге тәуелсіз. Ол кіріс токендерінің топтамасын қабылдап, шығыс токендерін ағынмен қайтарады. Біздің инференс стегінде кірістерді токенделген жедел әрекетке пішімдеу және LLM нәтижелерін құрылымдық хабарламаларға талдау міндетін арнайы JSON API алдыңғы жүйе қызметі (frontend service) атқарады. Біз артқы жүйені өзгеріссіз қалдыруға мүмкіндік бере отырып, алдыңғы жүйеге жаңа қосылатын пішімдеушіні/талдағышты қосу арқылы Harmony жүйесін біріктірдік, ал алдыңғы жүйе чат-формат ережелерін, құрал шақыруларын және ағынды таза түрде басқарады. Бұл міндеттерді бөлу архитектураны модульдік күйде сақтайды, бұл артқы жүйеге аз өзгерістер енгізу арқылы жаңа пішімдерді, жауап мүмкіндіктерін тез қабылдауға мүмкіндік береді.
Құны және өнімділігі
GPT-OSS үлгілерінің салыстырмалы түрде кішкентай өлшемін ескере отырып, біз түйінаралық байланыс шығындарын болдырмау үшін көшірмені (replica) бір түйінмен шектейміз. Біздің іске асыруымыз сарапшы параллелизмінің (EP), деректер параллелизмінің (DP) және тензорлық параллелизмнің (TP) икемді комбинацияларын қолдайды. Оңтайлы орналастыру параметрлерін анықтау үшін біз 1-ден 128-ге дейінгі топтама өлшемдері бойынша шардтау стратегияларының барлық комбинацияларын салыстырдық. Prefill-Decode Disaggregation арқасында біз префилл мен декод үшін өнімділік пен құн арасындағы ымыраны бөлек талқылай аламыз.
Құн бағалаулары үшін біз H200 номиналды нарықтық бағасын сағатына $3,00 деп есептейміз (ескерту: бұл біздің нақты GPU бағамыз емес).
batch_size=1 және DP=1 орнату ең жақсы префилл өнімділігін беретінін анықтадық. Әр түрлі TP конфигурациялары содан кейін бірінші токен кідірісі мен құны арасындағы әртүрлі ымыраларды ұсынады. Төмендегі кестелерде әртүрлі конфигурациялар мен кіріс ұзындықтары үшін префилл кідірісі мен миллион кіріс токенінің құны көрсетілген.
GPT-OSS 120B:
Кіріс ұзындығы | 8192 | 32768 | 65536 | 128000 |
EP1 DP1 TP1 | 0.364с, $0.037 | 2.421с, $0.062 | 7.375с, $0.094 | 23.902с, $0.156 |
EP2 DP1 TP2 | 0.190с, $0.039 | 1.245с, $0.063 | 3.786с, $0.096 | 12.116с, $0.158 |
EP4 DP1 TP4 | 0.165с, $0.067 | 0.900с, $0.092 | 2.449с, $0.125 | 7.165с, $0.187 |
EP8 DP1 TP8 | 0.179с, $0.145 | 0.839с, $0.171 | 2.003с, $0.204 | 5.119с, $0.267 |
GPT-OSS 120B үшін параллелизм конфигурациясы мен енгізу ұзындығына қарай million input tokens-қа шаққандағы prefill кідірісі және құны.
GPT-OSS 20B:
Кіріс ұзындығы | 8192 | 32768 | 65536 | 128000 |
EP1 DP1 TP1 | 0.239с, $0.024 | 1.610с, $0.041 | 4.895с, $0.062 | 16.037с, $0.104 |
EP2 DP1 TP2 | 0.127с, $0.026 | 0.833с, $0.042 | 2.522с, $0.064 | 8.143с, $0.106 |
EP4 DP1 TP4 | 0.108с, $0.044 | 0.593с, $0.060 | 1.616с, $0.082 | 4.766с, $0.124 |
EP8 DP1 TP8 | 0.116с, $0.094 | 0.547с, $0.111 | 1.310с, $0.133 | 3.365с, $0.175 |
GPT-OSS 20B үшін параллелизм конфигурациясы мен енгізу ұзындығына қарай million input tokens-қа шаққандағы prefill кідірісі және құны.
Декод үшін біз EP4 DP1 TP4 көптеген жағдайлар үшін ең жақсы конфигурация екенін анықтадық. Төмендегі төрт график 8192 және 32768 тізбек ұзындықтарындағы 120B және 20B үлгілері үшін декод жылдамдығы мен миллион шығыс токенінің құны арасындағы ымыраны көрсетеді.
Біз сондай-ақ кішірек 20B үлгісін үлкенірек 120B үлгісі үшін спекулятивті декодтау (speculative decoding) жобалық үлгісі ретінде пайдалануды қарастырдық. Дегенмен, белсендірілген параметрлер саны ұқсас болғандықтан (3B және 5B), нәтижесінде алынған жылдамдықтың артуы шамалы болды.
Әдебиеттер тізімі
Болжам арқылы Sonar жылдамдығын арттыру
Көп түйінді DeepSeek орналастыруы арқылы төменгі кідіріс және жоғарырақ өткізу қабілеті
Тиімді және портативті сарапшылар қоспасының байланысы
FlashInfer: LLM инференсіне қызмет көрсету үшін тиімді және теңшелетін назар аудару қозғалтқышы
Назар аудару тұзақтары бар тиімді ағынды тізбек үлгілері
OpenAI Harmony жауап пішімі | OpenAI Cookbook
Дәйексөз
@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}
}