نموذج GPT-OSS في اليوم 0
دعم اليوم صفر لنموذج GPT-OSS على H200 من خلال تكييف ROSE مع FP8 وانتباه التركيز وتحسينات MoE
تلتزم Perplexity بتوفير أفضل نماذج الذكاء الاصطناعي للأشخاص الفضوليين الذين يطلبون إجابات دقيقة وموثوقة وإجراءات ووكيلية. أعلنت شركة OpenAI مؤخراً عن نماذجها ذات الأوزان المفتوحة (gpt-oss-20b و gpt-oss-120b). وكما هو الحال مع العديد من النماذج الرائدة، تعد Perplexity من بين أوائل المؤسسات التي تقيم gpt-oss-20b و gpt-oss-120b.
في هذه المقالة، نشارك قرارات البنية التحتية لمكدس الاستدلال الداخلي لدينا والذي جعل دعم اليوم صفر ممكناً. نركز على خدمة هذه النماذج على وحدات معالجة الرسومات NVIDIA H200، مع تفصيل تغييرات النواة، وخيارات النشر، والمقايضات بين السرعة والتكلفة.
نموذج GPT-OSS على معمارية Hopper
يتم شحن نماذج الأوزان المفتوحة باستخدام تقليص الكمية MXFP4، مما يساعدها على التوافق مع الذاكرة على الأجهزة الاستهلاكية أو تحقيق أقصى إنتاجية على وحدات NVIDIA Blackwell. ومع ذلك، للتقييم الأولي، أردنا تشغيلها على مجموعات H200 Hopper الحالية مع الحد الأدنى من التغييرات في محرك الاستدلال. لا تحتوي معمارية Hopper على نوى موتر FP4 مخصصة، والتي تم تقديمها بواسطة Blackwell. ونتيجة لذلك، قررنا خدمة النماذج بدقة FP8 بدلاً من ذلك تقليلاً للحاجة إلى نوى مخصصة والاستفادة القصوى من الأجهزة المتاحة.
على مستوى عالٍ، تعتبر نماذج المحولات اللغوية الكبيرة (LLMs) بسيطة من الناحية الهيكلية:
تضمين الإدخال
تسلسل من طبقات المحولات. يحتوي كل منها على كتلة انتباه، وكتلة شبكة عصبية متعددة الطبقات (MLP) كثيفة أو كتلة خليط خبراء (MoE) متفرقة.
إسقاط اللوجيت الناتج
عند طرح نموذج محول جديد، نكون مهتمين في المقام الأول بمعرفة مدى مطابقتها للنماذج الحالية لتحديد التغييرات المطلوبة. قامت OpenAI بلطف بمشاركة نظرة عامة على نماذجها مسبقاً، مما سمح لنا بتعديل إعدادات الاستدلال الخاصة بنا وفقاً لذلك. ووجدنا أن النموذج تطلب بالفعل عددًا غير قليل من التغييرات الصغيرة.
الانتباه: الانتباه المجمّع المعمم (GQA) مع آليات التركيز (Attention Sinks)
يحتوي كل رأس انتباه على معلمة تركيز مدربة مسبقاً يتم حسابها في دالة Softmax
ترميز موضعي YaRN، مشابه لنموذج DeepSeek-V3
تتضمن إسقاطات QKV انحيازات، على غرار نموذج Qwen 2
إسقاط الإخراج يحتوي على انحياز
الشبكة العصبية المتعددة الطبقات (MLP): خليط الخبراء المتفرق (MoE)
دالة التنشيط SwiGLU، وهي تختلف عن معظم نماذج الأوزان المفتوحة
دالة Softmax بعد اختيار أعلى K (Top-K) لأوزان الخبراء
الخبراء لديهم انحيازات
مع توقع أن يكون عدد المعلمات بين 100 مليار و200 مليار، قررنا ما يلي:
توسيع FlashInfer لدعم آليات تركيز الانتباه (Attention Sinks)
إعادة استخدام تنفيذ خليط الخبراء (MoE) الذي تم إنشاؤه مسبقاً لعائلة نماذج DeepSeek-V3
اختيار نطاق مقياس كتل FP8 128x128 كمخطط لتقليص الكمية، مع توسيع نوى DeepGEMM لدعم مصطلح الانحياز.
محرك الاستدلال الداخلي
جهود الاستدلال لدينا مدعومة بمحرك الاستدلال الداخلي الخاص بنا، ROSE. نحن نعمل على تطوير ROSE ليكون إطار عمل مرناً يسمح بطرح النماذج الجديدة بسرعة. بالإضافة إلى ذلك، بمجرد أن نلتزم بخدمة نموذج على نطاق واسع، فإنه يوفر منصة لتحسين الأداء وتعزيزه للوصول إلى أحدث التقنيات.
يعرض ROSE محرك LLM، والذي يمكنه تحميل نموذج وتوليد رموز مفكوكة الشفرة له من خلال وحدات فك ترميز متعددة، بما في ذلك وحدات فك الترميز التكهنية ووحدات MTP. تتكون النماذج نفسها من مجموعة مخصصة من الطبقات، والتي تدعم معرفات تكوين مختلفة لتقليص الكمية والتوازي. وتحت الطبقات، يجمع محرك ROSE بين نوى Triton وCUDA التي تنفذ وتدمج الحسابات التي تنفذها الطبقات الفردية بكفاءة.
تم بناء ROSE بشكل أساسي بلغة Python ويعتمد على PyTorch لتعريفات النماذج. وفي حين أن Python تسمح لنا بالمرونة والتكيف مع النماذج الجديدة، فإننا نقوم بغالبية المكونات الحساسة للأداء، مثل الخدمة وجدولة الدفعات، بالانتقال إلى لغة Rust.
لإحضار نموذج جديد، نقوم أولاً بتعريف التسلسل الهرمي للنموذج وبناء محول أوزان له. وبعد حساب جميع الأوزان، نقوم بتعريف تمرير أمامي لحالة الاستخدام الأبسط TP=1 والتأكد من عمله من البداية إلى النهاية. وأخيراً، نقوم بتنفيذ واختبار الدعم لأشكال مختلفة من التوازي قبل إطلاق حاوية جديدة ونشر النموذج على مجموعة للتقييم. بعد ذلك، نكرر تحسين الأداء، مع الاعتماد على التعليقات الواردة من لوحات المعلومات والمقاييس الأكثر دقة.
يعمل ROSE على رموز رقمية، مع معرفة قليلة بتنسيقات الدردشة خارج اختبارات التكامل. بالتوازي مع ذلك، كان علينا البحث في ضبط البنية التحتية المحيطة لدعم أداة الرموز Harmony وتعيين الطلبات بدقة لتسلسلات رموز الإدخال.
مع نموذج GPT OSS، وجدنا أنه لم تكن هناك حاجة لأي تغييرات على وحدات فك التشفير لدينا، أو حزم رسومات CUDA، أو البنية التحتية المحيطة، مما سمح لنا تركيز جهودنا على ضبط النوى الداعمة للنموذج.
النوى لنموذج GPT-OSS
انتباه التركيز (Sink Attention)
يقدم انتباه التركيز معامل انحياز إضافي قبل دالة Softmax، يتم تراكمه مع حاصل ضرب Q و K:
attn = softmax(q @ k^T * sm_scale + sink) * Vفي حين أن التنفيذ البسيط يعد أمراً تافه إلى حد ما، إلا أن تطبيقات الانتباه الفعالة، مثل FlashInfer، تقوم بتهيئة حساب الانتباه بالتوازي عبر كل من الرؤوس المستقلة وعبر طول تسلسل KV. بالإضافة إلى ذلك، للاستقرار العددي، يتم حساب Softmax عبر الإنترنت مع طرح العنصر الأقصى أيضاً للاستقرار العددي:
softmax(x) = e^x / sum(e^x) = e ^ (x - max(x)) / sum(e ^ (x - max(x))تتبع التنفيذ عبر الإنترنت الحد الأقصى الجاري m الذي تم تهيئته إلى -inf والمقياس d إلى 1. من خلال تهيئة الحد الأقصى لقيمة التركيز للرأس الحالي، كنا نضمن تجميعه في Softmax بشكل صحيح. وكان علينا الحرص على ضمان تضمين هذا الحد الأقصى في الكتلة الأولى فقط إذا تم تقسيم الانتباه عبر كتل متعددة على طول تسلسل الطول.
لقد قمنا بتعديل قالب نواة FlashInfer FA2، المستخدم لكل من التعبئة المسبقة وفك التشفير، لتضمين معلمات التركيز.
خليط الخبراء (MoE)
الفرق الرئيسي بين طبقة خليط الخبراء (MoE) للنماذج المختلفة هو عادةً مخطط التوجيه. ومع توقع تباين كبير، ينفذ ROSE هذه النواة في Triton، مما يسمح لنا بتكييفها بسهولة مع النماذج الجديدة. وفي حالة GPT-OSS، كان علينا ضبط تسجيل الأوزان لإجراء دالة Softmax فقط عبر خبراء Top-K المحددين، على عكس بعض نماذج نمط DeepSeek التي تحسب Softmax عبر جميع الخبراء. لقد وجدنا أنه من الأهمية بمكان لل دقة حساب أوزان الخبراء بدقة bfloat16.
التحدي الذي واجهناه مع طبقة خليط الخبراء (MoE) كان بسبب قرارنا بإعادة استخدام نوى DeepGEMM الحالية، والتي كانت تفتقر إلى الدعم لشروط الانحياز. لحسن الحظ، قمنا بمرور الوقت بالتكامل معها بعمق، وإجراء تغييرات لربطها بشكل أفضل بنوى التوزيع المخصصة للجميع. لقد أضفنا دعم الانحياز إلى DeepGEMM عن طريق تهيئة مسجلات تراكم WGMMA لقيم الانحياز المحملة من الذاكرة. هذه عملية لمرة واحدة أثناء معالجة كتلة MN، وبالتالي فإن التكلفة تكاد تكون مهملة ويضمن ذاكرة التخزين المؤقت L2 الوصول بكفاءة إلى هذه القيم.
بما أن هذه النماذج لا تستفيد بشكل مباشر من التوازي المبياني (Data Parallelism)، فقد قمنا بإعادة استخدام نوى التوزيع والجمع المخصصة لتوازي الموترات (TP-only). يتم تكرار المدخلات الخاصة بالتوزيع عبر جميع الرتب، وبالتالي يقوم التوزيع بتحديد الرموز للخبراء المتاحين محلياً. يقوم الجمع بإجراء التراكم المرجح عبر NVLink.
تحسينات الأداء
على الرغم من أن هدفنا كان إحضار النماذج بسرعة، إلا أننا اردنا التأكد من أن الأداء لا يزال معقولاً. بعد التأكد من الصحة مقابل نموذج مرجعي توفره OpenAI، قمنا بتحليل تنفيذنا باستخدام محلل الأداء الافتراضي في PyTorch، مع الانتباه لتخصيصات الكتل والسلاسل عبر النوى. الوظيفة التي أعدنا استخدامها تم تصميمها لنماذج ذات أبعاد مخفية أكبر تبلغ 7168، وهي أكبر بكثير من 2880 لنموذج GPT-OSS. لقد قمنا بتخصيص مشغلات النوى لاختيار أبعاد شبكة أفضل، مما أدى إلى تعزيز الإنتاجية بشكل كبير.
الترميز والقنوات
يحتوي تنسيق الدردشة الخاص بـ Harmony على عدة مفاهيم مهمة لهيكلة المحادثات ومحتوى الاستدلال واستدعاءات الدوال. في هذا التنسيق، تتكون كل رسالة من ترويسة ومحتوى:
<|start|>{header}<|message|>{content}<|end|>تحمل الترويسة بيانات وصفية — والأهم من ذلك الدور (النظام، المطور، المستخدم، المساعد، الأداة)، والقناة، والمستلم مثل to=functions.<function-name> عند استدعاء أداة.
القنوات (مثل التحليل، والتعليق، والإجابة النهائية) تجعل مخرجات النموذج أكثر شفافية ومقسّمة. ونظراً لأن التنسيق يفرض هذا الفصل، يمكن للنموذج الاستدلال بشفافية (وفحصه لأغراض تصحيح الأخطاء) دون تسريب سلسلة التفكير إلى الإنتاج. تخبر علامات المستلم (ترويسات to=) وقت التشغيل بالضبط بالجهة الفاعلة التي يجب أن تتلقى الحمولة التالية — سواء كان ذلك دالة، أو النموذج نفسه، أو المستخدم النهائي.
محرك الاستدلال لدينا ROSE لا يتأثر بالتنسيق. فهو يتلقى دفعة من رموز الإدخال ويبث رموز الإخراج مرة أخرى. في مكدس الاستدلال الخاص بنا، يتم التعامل مع مهمة تنسيق المدخلات في موجه مُرمز وتحليل نتائج LLM مرة أخرى في رسائل منظمة بواسطة خدمة الواجهة الأمامية لـ JSON API المخصصة. لقد قمنا بتدمج Harmony عن طريق إضافة مُنسق/مُحلل جديد قابل للتوصيل بهذه الواجهة الأمامية، مما يسمح للواجهة الخلفية بالبقاء دون تغيير بينما تدير الواجهة الأمامية بقواعد تنسيق الدردشة واستدعاءات الأدوات والبث بشكل نظيف. يحافظ هذا الفصل بين الاهتمامات على البنية معيارية، مما يتيح التبني السريع للتنسيقات الجديدة وميزات الاستجابة بأقل قدر من تغييرات الواجهة الخلفية.
التكلفة والأداء
بالنظر إلى الحجم الصغير نسبياً لنماذج GPT-OSS، فإننا نقتصر نشر النسخة المتطابقة على عقدة واحدة لتجنب النفقات العامة للاتصالات بين العقد. يدعم تنفيذنا مجموعات مرنة من توازي الخبراء (EP)، والتوازي المبياني (DP)، وتوازي الموترات (TP). لتحديد إعداد النشر الأمثل، قمنا بتقييم جميع مجموعات استراتيجيات التقسيم عبر أحجام الدفعات من 1 إلى 128. بفضل فك ارتباط التعبئة المسبقة وفك التشفير (Prefill-Decode Disaggregation)، يمكننا مناقشة المفاضلة بين الأداء والتكلفة بشكل منفصل للتعبئة المسبقة وفك التشفير.
بالنسبة لتقديرات التكلفة، نفترض سعراً اسمياً في سوق H200 يبلغ 3.00 دولار/ساعة (ملاحظة: هذا ليس سعر وحدة معالجة الرسومات الفعلي الخاص بنا).
اكتشفنا أن تعيين 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 دولار |
زمن الكمون أثناء الـ prefill وتكلفة كل مليون رمز إدخال لنموذج GPT-OSS 120B بحسب إعداد التوازي وطول الإدخال.
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 دولار |
زمن الكمون أثناء الـ prefill وتكلفة كل مليون رمز إدخال لنموذج GPT-OSS 20B بحسب إعداد التوازي وطول الإدخال.
بالنسبة لفك التشفير، اكتشفنا أن EP4 DP1 TP4 هو التكوين الأفضل لمعظم الحالات. توضح المخططات الأربعة أدناه المفاضلة بين سرعة فك التشفير والتكلفة لكل مليون رمز إخراج لكل من نموذجي 120B و20B بأطوال تسلسل تبلغ 8192 و32768.
لقد نظرنا أيضاً في استخدام نموذج 20B الأصغر كنموذج مسودة لفك التشفير التكهني لنموذج 120B الأكبر. ومع ذلك، نظراً لأن عدد المعلمات المفعلة متشابه (3B مقابل 5B)، كانت التسريعات الناتجة ضئيلة.
المراجع
التعبئة المسبقة وفك التشفير المنفصلان
زمن انتقال أقل وإنتاجية أعلى مع نشر DeepSeek متعدد العقد
اتصال فعال وقابل للنقل لخليط الخبراء
FlashInfer: محرك انتباه فعال وقابل للتخصيص لخدمة استدلال نماذج LLM
نماذج لغة دفق فعالة مع آليات انتباه التركيز (Attention Sinks)
تنسيق استجابة OpenAI Harmony | كتاب طبخ OpenAI
اقتباس
@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}
}