Command Palette
Search for a command to run...
اقترحت أكاديمية بكين للذكاء الاصطناعي (BAAI) امتداد لغة Triton-TLE متعدد الطبقات وحققت تسريعًا تلقائيًا بمقدار مائة ضعف من خلال تحسين تجميع FlagTree.

في الأول من أغسطس، عُقدت الدورة التاسعة من صالون "لقاء مع مُترجمات الذكاء الاصطناعي" التقني في بكين. ركز هذا الحدث على أحدث التطورات في تكنولوجيا ترجمة الذكاء الاصطناعي، حيث شارك العديد من الخبراء من الصناعة والمؤسسات البحثية رؤاهم حول لغات البرمجة، وتطوير المُعاملات، وتحسين الترجمة، وتنفيذ الاستدلال، مُسلطين الضوء على التطور التعاوني لمُترجمات الذكاء الاصطناعي من التعبير اللغوي عالي المستوى إلى التنفيذ على الأجهزة.
في،قدم كل من غو هوي وشياو هانغ، الباحثان في BAAI AI Compiler، عرضًا بعنوان "FlagTree: Triton-TLE Language Extension, Tile IR Backend and Compiler Optimization Practices"، حيث عرضا سلسلة من الاستكشافات التي أجراها فريق FlagTree حول Triton.


في مواجهة بنى الأجهزة المعقدة بشكل متزايد ومعاملات النماذج غير المنتظمة، اقترح الفريق امتداد لغة تريتون (TLE) لمحاولة إنشاء قناة تدريجية بين لغة المجال الخاصة عالية المستوى والتحكم في الأجهزة منخفضة المستوى؛ وفي الوقت نفسه، قاموا بإجراء تحسينات على تجميع FlagTree، مع التركيز على الواجهة الخلفية TileIR، والضبط التلقائي، وتخطيط البيانات، وجدولة التعليمات، وجوانب أخرى.
يتمثل الهدف الأساسي لهذا العمل في السماح للمطورين بالتعمق أكثر في تفاصيل الأجهزة حسب الحاجة، مع الحفاظ على سهولة استخدام Triton ونظامها البيئي المجتمعي، وتغطية تحسين المشغل السريع، والضبط الواعي بالبنية، والتحسين على مستوى الكود الأصلي من خلال نظام تطوير موحد نسبيًا.

انخرط المعلمان في حوارات معمقة مع الجمهور.

انخرط المعلمان في حوارات معمقة مع الجمهور.
قامت شركة HyperAI بتجميع وتلخيص المحتوى المشترك دون تغيير معناه الأصلي.
تابع حساب WeChat الرسمي "HyperAI" وقم بالرد باستخدام الكلمة المفتاحية "" في الخلفية.0801 مُجمِّع الذكاء الاصطناعييمكنك الحصول على عرض تقديمي بصيغة PPT للمتحدث المعتمد بالنقر على "...".
بناءً على تريتون، إعادة التوازن بين التجريد والأداء.
في السنوات الأخيرة، واجهت برامج تجميع الذكاء الاصطناعي تناقضًا متزايدًا في بروزها:أصبحت بنى الأجهزة وعوامل تشغيل النماذج أكثر تعقيدًا، لكن المطورين ما زالوا يأملون في استخدام لغات برمجة خاصة بالمجال عالية المستوى لتحقيق أداء قريب من أداء النوى المكتوبة من قبل الخبراء.
إذا كان مستوى التجريد مرتفعًا جدًا، فقد لا يتمكن المترجم من الحصول على معلومات كافية لإكمال التحسين المتعمق؛ وإذا كان مستوى التجريد منخفضًا جدًا، فسيعود المطورون إلى وضع التطوير المعقد لـ CUDA أو لغات الملكية الخاصة بالبائع.
يكمن نجاح ترايتون في الارتقاء بتطوير عمليات تشغيل وحدة معالجة الرسومات من مستوى الخيوط إلى مستوى البلاطات.يستخدم المستخدمون لغة بايثون الخاصة بالمجال لوصف العلاقات الحسابية بين كتل البيانات، بينما يتم التعامل بشكل أساسي مع مهام مثل تعيين الخيوط، وتخصيص السجلات، وتخطيط البيانات، والتسلسل، والمزامنة بواسطة المترجم.
يُسهّل هذا النهج عملية تطوير الأنظمة عالية الأداء، كما أنه ساهم في بناء بيئة مجتمعية واسعة. مع ذلك، ومع التطور المستمر لوحدات معالجة الرسومات من الجيل التالي، والبنى المتخصصة في مجالات محددة، ورقائق الذكاء الاصطناعي المصنعة محليًا، بدأت البنية التجريدية الأصلية لـ "تريتون" تواجه بعض القيود.

من ناحية،إذا لم تدعم الواجهة الخلفية للمترجم بعد بنية التخزين أو آلية الاتصال أو وحدة الحوسبة الخاصة بالأجهزة الجديدة، فسيكون من الصعب على مطوري الواجهة الأمامية استخدام هذه الإمكانيات بمفردهم.على الجانب الآخر،يتطلب المزيد والمزيد من المشغلين المهمين تحكمًا دقيقًا في مستويات التخزين، والتوازي، والتعاون بين CTA، وتداخل الاتصال والحساب، ويواجه رمز Triton الأصلي أحيانًا صعوبة في التعبير عن هذه النوايا بشكل كامل.
إن ظهور لغات جديدة ولغات خاصة بالمجال مثل Gluon وTLX وTileLang يعكس نفس الاتجاه: لم يعد تطوير مشغل الذكاء الاصطناعي يتعلق فقط بكتابة نواة واحدة، بل يتعلق أيضًا بالتعبير عن تخطيط البيانات والتسلسل الهرمي المتوازي وخط الأنابيب وطوبولوجيا الاتصال وخصائص الأجهزة.
لا تحاول TLE استبدال Triton، بل توسيع بناء الجملة والنظام البيئي الخاص بها على شكل طبقات.يتكون من ثلاث طبقات: TLE-Lite و TLE-Struct و TLE-Raw، والتي تتوافق مع التلميحات الدلالية الخفيفة والتحكم الواعي بالبنية وتحسين مستوى الكود الأصلي، على التوالي.

تم تصميم TLE-Lite لمهندسي الخوارزميات وسيناريوهات التحسين السريع.لا يحتاج المطورون إلى الاهتمام بشكل مباشر بالأجهزة الأساسية؛ بدلاً من ذلك، يمكنهم تزويد المترجم بمعلومات هيكلية أكثر وضوحًا.على سبيل المثال، قد يتطلب الوصول إلى موتر ما استخدام وحدات فرعية، أو قد تُجرى عملية حسابية على شبكة موزعة، أو قد يستخدم تطبيق CTA مسار منتج-مستهلك. وبالنظر إلى عمليات الوحدات الفرعية كمثال، يمكن للمطورين استخراج كتلة فرعية منطقية مباشرة من موتر أكبر، وإجراء عمليات التنشيط أو التطبيع أو العمليات الإحصائية، ثم إعادة كتابتها، دون الحاجة إلى حساب الإزاحات يدويًا، أو إنشاء الأقنعة، أو التعامل مع الحدود.
بما أن المُصرّف قادر على تمييز أن هذا وصول عادي إلى البلاطة، فإنه يستطيع تحسين تخطيط البيانات، والتحويل إلى متجهات، وحل تعارضات البنوك، وإعادة استخدام السجلات. يُعدّ هذا النهج مناسبًا بشكل خاص لآليات الانتباه المتفرق، والتطبيع المحلي، وإحصائيات الكتل، وعوامل التوجيه. في البيئات الموزعة، يستخدم TLE شبكة الأجهزة لوصف مستويات مختلفة مثل العُقد، ووحدات معالجة الرسومات، ومجموعات الكتل، والكتل، مُنظّمًا إياها في بنية متعددة الأبعاد موحدة.
يكتب المطورون برامجهم باستخدام منهجية الشبكة، ثم يقوم المترجم ووقت التشغيل بربط البنية المنطقية بالأجهزة الفعلية وآليات الاتصال. ونتيجةً لذلك، لم يعد اتصال الحلقة، ومزامنة الحاجز، والوصول المجزأ مجرد رتب ومجموعات اتصال متناثرة في الكود، بل أصبحت دلالات هيكلية قابلة للتحليل. وبمجرد التعبير عن علاقات الاتصال بشكل صريح، تتاح للمترجم فرصة إجراء جدولة واعية بالبنية، وتداخل الاتصال والحساب، ودمج الحاجز، وفحص حالات الجمود.
يُجرّد TLE-Lite أيضًا التعاون الداخلي لـ CTA إلى نموذج منتج-مستهلك من خلال عناصر خط الأنابيب. يصف المطورون بشكل أساسي من ينتج البيانات ومن يستهلكها، بينما يتولى المُصرّف معالجة آليات الحاجز وإعادة استخدام المخزن المؤقت والمزامنة الأساسية.هذا لا يعني حجب القدرات الأساسية، بل تحويلها إلى بنية برنامج يمكن تحليلها والتحقق منها وتحسينها.
بدءًا من الدلالات الخفيفة وصولًا إلى التمرير الأصلي، تغطي مستويات مختلفة من عمق التحسين.
إذا كان TLE-Lite يعالج بشكل أساسي التمثيل الدلالي عبر المنصات،أما برنامج TLE-Struct، من ناحية أخرى، فيركز بشكل أكبر على الوعي المعماري والضبط الدقيق.

تختلف وحدات معالجة الرسومات (GPUs) ووحدات معالجة البيانات (DSAs) ومسرعات الذكاء الاصطناعي بشكل كبير في مستويات التخزين ووحدات التنفيذ وآليات المزامنة والشبكات الموجودة على الشريحة. وبالتالي، فإن TLE-Struct يكشف عن بنية تخزين متوازية هرمية للمطورين، مما يسمح لهم بتحديد تخطيط البيانات وتعيين الحسابات والتسلسل الهرمي للذاكرة بشكل صريح، دون الحاجة إلى الارتباط المباشر بواجهة خاصة بالبائع.
على سبيل المثال، يمكن ربط نفس المخزن المؤقت المحلي بالذاكرة المشتركة في وحدة معالجة الرسومات، وبذاكرة التخزين المؤقت أو ذاكرة الوصول العشوائي الثابتة المدمجة في وحدة معالجة الإشارات الرقمية. يُحدد المستخدم غرضًا مهيكلًا للذاكرة، ويتولى المُترجم مسؤولية ترجمته إلى مساحة عناوين وتعليمات وصول إلى الذاكرة مناسبة للأجهزة المستهدفة.
يُعدّ عدّ الخبراء في MoE سيناريو نموذجيًا. يقوم هذا المشغل أساسًا بحساب عدد الرموز المميزة الموجهة إلى خبراء مختلفين، ويتأثر بسهولة بعوامل مثل تخطيط الذاكرة المشتركة، والتحديثات المتزامنة، وتعارضات البنوك، والتجميع عبر الكتل.
باستخدام TLE-Struct، يمكن للمطورين تنظيم تخطيط العداد بشكل صريح، وتعيين الخبراء أو الرموز المختلفة لمناطق مختلفة من التخزين المحلي؛ بعد أن يحصل المترجم على هذه المعلومات الهيكلية، فإنه يقوم بإنشاء طرق الوصول والمزامنة المناسبة.

تم تصميم TLE-Raw خصيصًا لخبراء تحسين الأداء، مع الحفاظ على واجهات التعليمات البرمجية الأصلية للبائع.
تتطلب بعض مسارات الأداء استخدام CUDA أو لغة التجميع أو وظائف داخلية مخصصة بشكل مباشر. وقد يؤدي إجبارها على إعادة تجميعها في لغة برمجة خاصة بالمجال (DSL) ذات مستوى أعلى إلى الحد من الأداء أو زيادة تكاليف الترحيل. يتيح TLE-Raw للمطورين تضمين التعليمات البرمجية الأصلية ضمن بنية Triton/TLE أو الوصول مباشرةً إلى مسارات تجميع البرامج الخاصة بالموردين.
لنأخذ نموذج GEMM للتجميع الشامل كمثال،تتضمن هذه العملية الاتصال، وحساب المصفوفات، والتخزين المؤقت، وإدارة التزامن. يمكن للمطورين إعادة استخدام إمكانيات الاتصال الأساسية مع الاستمرار في استخدام الموترات والبلاطات المهيكلة للتعبير عن العمليات الحسابية، وأخيرًا، تعمل سلسلة تجميع موحدة على تنظيم الأجزاء المختلفة في عمليات قابلة للاستدعاء.
يسمح هذا التصميم متعدد الطبقات لمهندسي الخوارزميات ومطوري المشغلين وخبراء الأداء باختيار أعماق تحسين مختلفة داخل نفس النظام، دون الحاجة إلى البدء بأدنى مستوى من البرمجة.
كما تُظهر اختبارات الأداء أنيمكن التحكم في إجمالي عبء التجريد لـ TLE.
في اختبار Radix Select، نجح TLE في محاكاة خوارزمية TensorRT-LLM، محققًا أداءً يتراوح بين 85% و97% عبر أشكال متعددة. بالنسبة للفرق التي تتطلب صيانة متعددة المنصات وتطويرًا سريعًا، فإن تحقيق أداء قريب من مستوى الخبراء مع كود موحد يُعد ذا قيمة هندسية كبيرة.

في سيناريو SparseMLA مع سياق 128 كيلوبايت،يستخدم TLE عناصر Pipeline الأساسية للتعبير عن التعاون بين أدوار التنفيذ المختلفة، مما يحقق أداءً يقارب 90%، وهو الأساس لـ FlashMLA.

اختبر الفريق أيضًا تقنية All-Gather على عقدة واحدة مزودة بثمانية معالجات NVIDIA H100، وتعمق في دراسة تكامل GEMM مع All-Gather. لا يقتصر التركيز على استبدال مكتبة الاتصال فحسب، بل يتعداه إلى دمج الاتصال في تعابير مستوى المشغل وتحسينات التجميع، مما يتيح نقل البيانات، والحساب المحلي، والمزامنة، والاستخدام اللاحق لتشكيل مسار معالجة متكامل.

بالنسبة لأنظمة الاستدلال، فإن هذا النوع من دمج الاتصالات والحسابات غالباً ما يكون أكثر أهمية من تحسين الأداء الأقصى لنموذج GEMM منفرد بمعزل عن غيره، لأن ما يدركه المستخدمون في النهاية هو زمن الوصول من البداية إلى النهاية.

ممارسات تحسين تجميع Flagtree
بالإضافة إلى امتدادات لغة TLE، قام فريق FlagTree أيضاً بمهمتين أخريين:أولاً، قمنا بالتكامل مع الواجهة الخلفية لـ CUDA Tile IR؛ ثانياً، قمنا بتنفيذ العديد من تحسينات تجميع Triton لأحمال عمل النماذج الواقعية.

يتمثل المفهوم الأساسي لـ CUDA Tile IR في السماح للبرامج بالتعبير عن البلاطات، بدلاً من تحديد تعيين الخيوط الأساسية مسبقًا.يتكون مدخلها من برنامج تجانب وشبكة تجانب ثلاثية الأبعاد. داخل لغة Dialect، يتم التعبير عن الحساب وعرض البيانات والتبعيات الضرورية من خلال حساب التجانب وعرضها وعملية ترتيب الرموز (TKO).
ومن بينها، يصف TensorView المؤشر العام والشكل والخطوة؛ ويضيف PartitionView إمكانيات تعيين الكتل فوق هذا؛ ويتم استخدام Token لتقييد التبعيات بين TKOs ذات الصلة؛ ويحدد نموذج الذاكرة دلالات الذاكرة ونطاقها بشكل منفصل.

لا يستبدل FlagTree واجهة Triton NVIDIA الأصلية بالكامل، بل يضيف مسار TileIR إلى النظام الحالي ويتجاوز واجهات TileIR View وToken باستخدام عناصر TLE الأساسية. يمكن للنوى التي تستوفي المتطلبات الوصول إلى واجهة TileIR، بينما ستعتمد النوى غير المدعومة حاليًا على CUDA الأصلية. يمكن لكلا المسارين التعايش في المُصرّف.
فيما يتعلق بالتحسين التلقائي،اقترح الفريق برنامج FlagOSTune لحل التعارض بين التغطية والتكلفة في النماذج الواقعية لبرنامج Triton Autotune.
في عملية الاستدلال النموذجي الفعلية، قد يتوافق نفس المؤثر مع عدد كبير من الأشكال المختلفة. تُظهر إحصائيات الفريق وجود 1994 شكلًا فريدًا من أشكال MM في ستة نماذج وأربعة أنواع من سيناريوهات الاستدلال، وهو عدد يفوق بكثير نطاق التغطية في المعايير اليومية. إذا تم توسيع نطاق التكوين المرشح مباشرةً، فسيزداد نطاق البحث النظري بسرعة ليصل إلى ملايين المجموعات.

يحسّن FlagOSTune الأداء بتوسيع نطاق البحث، ويقلل تكاليفه من خلال الجمع بين التنبؤ بالنموذج واختبارات محدودة في بيئات واقعية. يستخدم النظام أولًا خوارزمية XGBoost لترتيب التكوينات المرشحة، ثم يرسل عددًا محدودًا من التكوينات الواعدة إلى عملية التجميع والاختبار على وحدة معالجة الرسومات، قبل مواصلة البحث باستخدام خوارزمية جينية.
تم تحسين أداء المشغلين المتعددين على أنظمة قوة الحوسبة المختلفة من NVIDIA و Moore Threads و Muxi، مما أدى إلى زيادة السرعة من 1.21 إلى 7.35 مرة.في تجارب الأشكال المتعددة باستخدام مشغل NVIDIA H20 MM، تم ضغط تكوينات مساحة البحث من أكثر من 620000 إلى 4070، مما أدى إلى تسريع كفاءة الضبط بمقدار 120 ضعفًا مع عدم وجود أي خسارة تقريبًا في الأداء.

فيما يتعلق بتصميم البيانات، ركز الفريق على تحسين الأداء الناتج عن تحويل تصميم البيانات.

في تريتون، تتضمن عملية `convert_layout` عادةً إعادة ترتيب البيانات عبر الخيوط، مما يستلزم الكتابة إلى الذاكرة المشتركة، والمزامنة، ثم القراءة مرة أخرى، وهي عملية ليست مجانية. بالنسبة للمشغلين الصغار أو المشغلين الذين يستهلكون ذاكرة كبيرة، حتى عدد قليل من تحويلات التخطيط يمكن أن يصبح عائقًا أمام الأداء.
تعمل FlagTree على تحسين آلية إزالة تحويلات التخطيط باستخدام تقنيات مثل نماذج التكلفة، والانتشار العكسي، والحلول المشتركة المحلية لتقليل تحويلات تخطيط البيانات غير الضرورية.في الاختبارات التي أجريت مع أكثر من 100 مشغل، كان معدل إزالة التحويل الصافي حوالي 68%–79%، مع تحسن في الأداء يصل إلى 71%.


من التحسينات الأخرى إعادة ترتيب التعليمات. فعملية فك الحلقات تنسخ جسم الحلقة فقط ولا تُشغّل عمليات تحميل متعددة مسبقًا. أما مع تفعيل إعادة ترتيب التعليمات من قِبل المُصرّف، فيمكن تنفيذ عمليات التحميل المستقلة مسبقًا، مما يُؤدي إلى تداخل العمليات الحسابية اللاحقة، وبالتالي الاستفادة من خط أنابيب الأجهزة لإخفاء زمن استجابة الوصول إلى الذاكرة.من بين المشغلين الثلاثة النموذجيين، يحقق هذا التحسين تسارعًا متوسطًا يتراوح بين 1.19 و 1.61 مرة، مع ذروة تسارع تبلغ 2 مرة.

كما قام الفريق بتحسين أداء مُعامل Fused Marlin MoE للأشكال الحقيقية في DeepSeek-V4-Flash، مما قلل من وقت تحميل البيانات من خلال دمج الأجزاء. بالإضافة إلى التحسينات على مستوى الخوارزمية،بالمقارنة مع vLLM CUDA، حقق FlagGems تحسينات في السرعة على جميع الأشكال الـ 53 التي تم اختبارها، مع تحسن متوسط يبلغ حوالي 1.208 مرة عند ترجيحها حسب تردد الشكل.
في اختبار DeepSeek-V4-Flash الشامل على NVIDIA H20،عندما يكون TP=4، ينخفض زمن انتقال الرمز المميز الأول بمقدار 20.221 TP3T، ويزداد إجمالي الإنتاجية بمقدار 12.631 TP3T؛ وعندما يكون TP=8، ينخفض زمن انتقال الرمز المميز الأول بمقدار 12.871 TP3T، ويزداد إجمالي الإنتاجية بمقدار 7.651 TP3T.

آفاق العمل المستقبلية
المرحلة التالية،سيركز مشروع FlagTree على تطوير نموذج برمجة NUMA ومترجم MegaKernel.
في الأنظمة متعددة العقد ووحدات معالجة الرسومات، وفي مجموعات وحدات معالجة الرسومات الداخلية وذاكرة الوصول العشوائي الثابتة المحلية، يختلف الوصول إلى البيانات اختلافًا كبيرًا من حيث التقارب. يهدف TLE إلى وصف كيفية تقسيم الموترات على طول الشبكة وكيفية انتقالها بين طرق التوزيع المختلفة، مما يمكّن المُصرّف من تحديد البيانات التي يجب تقريبها للحساب، والاتصالات التي يمكن دمجها أو تداخلها مع الحساب.
يسعى مُجمِّع ميجا كيرنل إلى توسيع نطاق التحسين من نواة واحدة إلى عملية تنفيذ نموذجية. يُحدِّد المُجمِّع العمليات الحسابية التي يُمكن تحسينها بشكل مشترك، ويُقسِّمها إلى مهام مُحدَّدة، ثم يُقرِّر بشكل موحد كيفية تخصيص هذه المهام وموازاتها ومعالجتها، ليُنتج في النهاية نواة ميجا كيرنل واحدة أو بضع نوى.
تعمل TLE كجسر بين دلالات الواجهة الأمامية وبنية الأجهزة. تسمح واجهات Tile وMesh وPipeline وMemory Layout والقدرات الأصلية للمترجم برؤية ليس فقط سلسلة من العمليات المستقلة، بل مخطط مهام يمكن جدولته ووضعه ومزامنته ودمجه.
من التلميحات الدلالية الخفيفة الوزن لـ TLE-Lite إلى التحكم الواعي بالبنية لـ TLE-Struct، وتمرير القدرات الأصلية لـ TLE-Raw، بالإضافة إلى تقنيات تحسين التجميع المختلفة، تحاول FlagTree إنشاء نظام متعدد الطبقات أكثر مرونة بين سهولة استخدام Triton، والهجرة عبر الأنظمة الأساسية، والأداء الأمثل، وتمكين تحويل قدرات الأجهزة الجديدة إلى الأداء الفعلي للنماذج والمشغلين بسرعة أكبر.








