تمت ترجمة المحتوى الموجود على هذا الموقع باستخدام الذكاء الاصطناعي (AI) أو تقنية الترجمة الآلية، وقد تحتوي على أخطاء.

Skip to content

تسريع استدلال الذكاء الاصطناعي لإنشاء المحتوى ثلاثي الأبعاد على Roblox

إنشاء كائنات ثلاثية الأبعاد أسرع بـ 7.8 أضعاف وأكثر استجابة

SEO image for Accelerating AI Inference for 3D Creation on Roblox
  • قامت Roblox بتطبيق CUDA Graphs و KV caching لتسريع إنشاء الشبكات ثلاثية الأبعاد من أجل تكرار أكثر استجابة.
  • عند الإطلاق، كان نموذج Cube 3D قادرًا على إنشاء الرموز في 7.8 مللي ثانية (مقارنة بـ 60.5 مللي ثانية سابقًا) والكائنات الكاملة في 4 ثوانٍ (مقارنة بـ 31 ثانية سابقًا). 

في وقت سابق من هذا العام، شاركت Roblox أول إمكانيات نموذجنا الأساسي Cube 3D. باستخدام Cube 3D، يمكن للمبدعين إنشاء نماذج وبيئات ثلاثية الأبعاد مباشرةً من المطالبات النصية. منذ البداية، أعطينا الأولوية لتحسين زمن الاستجابة، إدراكًا منا أن أوقات الإنشاء البطيئة تعطل ما هو في الأساس عملية تكرارية. قبل إطلاق Cube 3D في مارس، كنا قد جعلنا خطوة الاستدلال أسرع بـ 7.8 مرة وأكثر استجابة لكل من المطورين والمستخدمين. 

منذ الإطلاق، تم إنشاء أكثر من 578,000 كائن عبر العديد من التجارب البارزة. كما أعرب المطورون عن اهتمامهم بتمكين المستخدمين من إنشاء كائنات ثلاثية الأبعاد داخل التجارب باستخدام أوامر نصية مثل "قطط" و"برغر" وما إلى ذلك. وأبرزها لعبة Mic Up، وهي لعبة تواصل اجتماعي شهيرة تستخدم الدردشة الصوتية، استفادت من Cube 3D لتزويد اللاعبين بطريقة ممتعة وتفاعلية لإنشاء الكائنات. في تطبيقهم، يمكن للاعبين فتح قائمة على اليسار تضم إمكانيات إضافية، بما في ذلك أيقونة الذكاء الاصطناعي. بعد النقر على تلك الأيقونة، يمكن للاعبين إدخال موجه نصي لإنشاء كائن ثلاثي الأبعاد. بالنسبة للمستخدمين، تؤدي أوقات الإنشاء الأطول إلى إحداث احتكاك، مما يحرمهم من سحر رؤية أفكارهم تتحول إلى صور ثلاثية الأبعاد في الوقت الفعلي. 

أردنا تحويل تجربة إنشاء الأشكال ثلاثية الأبعاد من تفاعل يتسم بالتوقف والانتظار إلى شيء يبدو سريع الاستجابة وطبيعيًا، مما يتيح إجراء التجارب بسرعة. تعد القدرة على إضافة كائنات بسرعة إلى مشهد ما أمرًا بالغ الأهمية للمطورين. لتسريع Cube 3D، قمنا أولاً بتحليل مسار الاستدلال لتحديد معوقات الأداء. على الرغم من استخدام وحدات معالجة رسومات (GPU) قوية، وجدنا وقتًا كبيرًا من الخمول بين العمليات.

حل مشكلة اختناق جدولة وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU)

تعتمد أطر العمل الحديثة للتعلم العميق على وحدة المعالجة المركزية (CPU) لجدولة وتشغيل العمليات (أو النوى) على وحدة معالجة الرسومات (GPU). تقوم وحدة المعالجة المركزية (CPU) بإعداد كل عملية، وإرسالها إلى وحدة معالجة الرسومات (GPU)، وانتظار التأكيد قبل إعداد العملية التالية. يؤدي هذا الانتظار إلى حدوث اختناق في الجدولة حيث قد تظل وحدة معالجة الرسومات (GPU) خاملة بينما تقوم وحدة المعالجة المركزية (CPU) بإعداد الدفعة التالية من العمل. من الناحية المثالية، نريد أن تعمل وحدة المعالجة المركزية (CPU) قبل وحدة معالجة الرسومات (GPU)، حيث تقوم بإعداد العمليات ووضعها في قائمة الانتظار بحيث يكون لدى وحدة معالجة الرسومات (GPU) دائمًا عمل لتقوم به.

وهذا يمثل مشكلة خاصة بالنسبة لمفككات الترميز التلقائية في النماذج من نوع المحولات مثل Cube 3D، التي تحتاج إلى معالجة المدخلات وإنشاء الرموز بالتسلسل. تتطلب هذه النماذج آلاف العمليات الفردية لإنشاء جيل واحد، وتتراكم الأعباء الحسابية مع كل خطوة في التسلسل.

قال أنوبام سينغ، نائب رئيس قسم الهندسة، موضحًا سبب اختيار Roblox لنهج التراجع الذاتي: "أردنا بناء شيء يتيح التفاعل رباعي الأبعاد. لا نريد فقط بناء السيارة؛ بل نريد أيضًا أن نتمكن من فتح باب السيارة والدخول إليها."

كل عملية استغرقت:

  • وقت وحدة المعالجة المركزية لإعداد كل نواة
  • التكلفة الإضافية الناتجة عن تشغيل النواة
  • وقت تنفيذ وحدة معالجة الرسومات (الحساب الفعلي)
  • التكاليف الإضافية للتزامن عند التحقق من اكتمال العملية

في حالة العمليات الصغيرة التي يتم تنفيذها بسرعة على وحدة معالجة الرسومات (GPU)، يمكن أن تهيمن هذه التكاليف الإضافية على وقت الاستدلال. قد تقوم وحدة معالجة الرسومات (GPU) بالحساب الفعلي لجزء صغير فقط من إجمالي وقت الاستدلال.

Overall timeline for a single token generation without any optimizations.
Timeline view of GPU execution for a nonoptimized model, showing high GPU idle time.
تنفيذ رسوم CUDA البيانية: التخلص من الوسيط

لمعالجة هذا العائق، استفدنا من CUDA Graphs — وهي ميزة تسمح بتسجيل وإعادة تشغيل تسلسلات عمليات وحدة معالجة الرسومات (GPU) دون تدخل وحدة المعالجة المركزية (CPU). يعالج مكون وحدة فك التشفير التلقائي التراجعي في بنية Cube 3D المطالبات النصية ويولد رموز الشكل من خلال متجه ذي طول ثابت. 

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

فكر في CUDA Graphs على أنها تسجيل ماكرو لوحدة معالجة الرسومات (GPU). بدلاً من إصدار وحدة المعالجة المركزية (CPU) لكل أمر على حدة، فإنها تسجل تسلسل كامل من عمليات وحدة معالجة الرسومات (الرسم البياني) وتطلق الرسم البياني بأكمله بتعليمات واحدة من وحدة المعالجة المركزية. يقلل هذا النهج بشكل كبير من عبء تشغيل النواة من خلال التخلص من حاجة وحدة المعالجة المركزية إلى جدولة كل عملية على حدة أثناء الاستدلال. بمجرد إطلاق الرسم البياني، تنفذ وحدة معالجة الرسومات التسلسل بأكمله بشكل مستقل، دون انتظار تعليمات أخرى.

تأتي CUDA Graphs مع بعض القيود. نظرًا لأن بنية الرسم البياني يجب تحديدها مسبقًا، فإنها تتطلب حجم دفعة ثابتًا وأبعاد إدخال ثابتة. وهذا يعني أنه يجب إنشاء رسوم بيانية منفصلة لكل حجم دفعة أو شكل إدخال. بالنسبة لحالة الاستخدام الخاصة بنا مع Cube 3D، كانت هذه القيود مقبولة، حيث كان بإمكاننا توحيد عملية الاستدلال حول أبعاد إدخال مشتركة.

كان علينا تكييف نهجنا لتنفيذ CUDA Graphs لنموذج Cube 3D الخاص بنا. في نماذج اللغة الكبيرة (LLMs) التقليدية، تُنفذ عمليات الانتباه دائمًا بنفس طول التسلسل، مما يوفر شكلًا ثابتًا للعمل عليه. ومع ذلك، في بنية التدفق المزدوج المخصصة لدينا، تعمل بعض طبقات الانتباه على طول التسلسل وحده، بينما تعمل طبقات أخرى على مزيج من طول التسلسل وطول الشرط.

على الرغم من هذه التحديات، شهدنا نتائج ملحوظة بعد تطبيق CUDA Graphs. نستخدم الوقت لكل رمز إخراج (TPOT) لقياس وقت التوليد لكل رمز أثناء الاستدلال. بعد تطبيق CUDA Graphs، تحسن معدل TPOT لدينا من 60.5 مللي ثانية إلى 20.5 مللي ثانية، وهو تحسن بمقدار 2.9 مرة. انخفض وقت التوليد الإجمالي بنسبة 66٪، من 31 ثانية إلى 10.5 ثانية.

KV Caching: البناء على نجاحنا

لتحسين زمن الاستجابة بشكل أكبر، قمنا بتطبيق التخزين المؤقت لـ KV، وهي ممارسة قياسية في استدلال نماذج اللغة الكبيرة (LLM) أثبتت فعاليتها العالية في جميع أنحاء الصناعة. 

في النماذج القائمة على المحولات مثل Cube 3D، يتطلب كل توليد رمز حساب مصفوفات المفتاح (K) والقيمة (V) بناءً على جميع الرموز التي تم إنشاؤها مسبقًا. ومع ازدياد طول التسلسل، يصبح إعادة حساب هذه المصفوفات لكل رمز غير فعال بشكل متزايد.

يحل التخزين المؤقت لـ KV هذه المشكلة من خلال:

  1. تخزين مصفوفات K و V لجميع الرموز التي تم إنشاؤها مسبقًا
  2. حساب مصفوفات K و V للرموز الجديدة فقط
  3. إلحاق هذه المصفوفات الجديدة بالقيم المخزنة مؤقتًا

يقلل هذا النهج من الحسابات الزائدة، مما يقلل من العمل المطلوب لكل رمز جديد. ويصبح هذا مؤثرًا بشكل خاص مع زيادة طول التسلسل الذي تم إنشاؤه.

كان نهجنا في دمج التخزين المؤقت لـ KV مع تنفيذ CUDA Graph مشابهًا للاستدلال التقليدي لـ LLM. أدت إضافة التخزين المؤقت لـ KV إلى تقليل TPOT إلى 7.8 مللي ثانية فقط. انخفض وقت الإنشاء الإجمالي بنسبة 87٪، من 31 ثانية في الأصل إلى 4 ثوانٍ فقط. هذا التخفيض الكبير في الوقت يجعله أكثر فعالية للمبدعين الذين يستخدمون هذه الأداة.

الجدول الزمني العام لتوليد رمز واحد باستخدام CUDA Graphs وذاكرة التخزين المؤقتة KV.
عرض زمني لتنفيذ GPU لإصدار CUDA Graph يظهر عدم وجود وقت خمول تقريبًا لـ GPU
تقييم التأثير الفعلي على المطورين والمستخدمين
تُترجم هذه التحسينات مباشرة إلى فوائد ملموسة للمطورين والمستخدمين. حتى مع المعالجة اللاحقة للشبكة، يبلغ زمن الوصول النهائي من طرف إلى طرف (E2E) سبع ثوانٍ. يمكن للمطورين الآن العمل في دورات تكرار أسرع، ويتمتع المستخدمون بتوليد ثلاثي الأبعاد أكثر استجابة.
*All latency measurements were performed on NVIDIA H100 GPUs.

نحن نستكشف تقنيات تقلل من زمن الاستجابة وتحسن تجربة المستخدم، بما في ذلك النوى المُحسّنة، وتكمية النماذج لاستنتاج أسرع، والتحسينات الخاصة بالأجهزة، وتوليد الرموز المتوازي.

يصبح هذا العمل أكثر تعقيدًا عندما نتوسع إلى إنشاء وفهم المشهد بالكامل، حيث يتعين على العديد من العناصر ثلاثية الأبعاد أن تعمل معًا في سياق واحد داخل تخطيط معين. نريد أيضًا أن تكون الكائنات والعوالم ثلاثية الأبعاد التي ننشئها تعمل بكامل وظائفها، بحيث تفتح الأبواب وتغلق، وتدور العجلات، وما إلى ذلك. للوصول إلى ذلك، نحتاج إلى إنشاء وتكرار سريعين للتوسع إلى مشاهد كاملة وكائنات تعمل بكامل وظائفها وأفاتار. نحن متحمسون لمشاركة المزيد من التحسينات والوظائف الجديدة مع توسيع نموذجنا الأساسي Cube 3D — ولرؤية العوالم الغامرة التي يبنيها مجتمع المبدعين لدينا باستخدامها.