لماذا لا يجب أن تقوم GPU بمعالجة Prefill و Decode معًا
تُظهر الأدلة التقنية أن تشغيل مرحلتي "الملء الأولي" (Prefill) و"الفك" (Decode) لنماذج اللغات الكبيرة على نفس مجموعة وحدات معالجة الرسومات هو سبب رئيسي في هدر الموارد وارتفاع التكاليف. في المرحلة الأولى، يقوم النموذج بقراءة المدخلات بالكامل في وقت واحد، وهو عملية تركز على حسابات المعالجة (Compute-Bound) حيث تصل استغلاليات المعالجات إلى 92%. أما في المرحلة الثانية، حيث يتم توليد الرموز كلمة بكلمة، تصبح العملية مقيدة بعرض النطاق الترددي للذاكرة (Memory-Bound)، مما يؤدي إلى هبوط الاستغلال إلى 28% فقط. هذا التباين الحاد يعني أن بنية التشغيل التقليدية تجبر الشركات على دفع ثمن موارد غير مستخدمة. فلو تم تجهيز الوحدات للمرحلة الأولى، فإنها ستكون مكلفة جدًا وغير فعالة أثناء المرحلة الثانية التي تستغرق معظم وقت الطلب، والعكس صحيح. الحل الأمثل الذي تبنته شركات كبرى مثل Perplexity وMeta وNVIDIA هو فصل مرحلتي التشغيل على مجموعتين منفصلتين من الأجهزة، وهو أسلوب يُعرف بـ "التشغيل المفكك" (Disaggregated Inference). في هذا النظام، تتخصص مجموعة الوحدات في مرحلة الملء الأولي، وتتميز بتركيزها على قوة المعالجة الحسابية، بينما تتخصص المجموعة الثانية في مرحلة الفك، وتتميز بسعة ذاكرة عالية وعرض نطاق ترددي واسع لاستيعاب البيانات المتدفقة. يتم نقل البيانات المخزنة مؤقتًا (KV-cache) عبر شبكة سريعة بين المجموعتين باستخدام تقنيات مثل RDMA. هذا الفصل يسمح بموازنة الموارد بدقة، مما يقلل التكاليف الإجمالية بنسبة تتراوح بين 15% و40%، ويحسن زمن الاستجابة بشكل ملحوظ عن طريق إزالة الازدحام الناتج عن تداخل المرحلتين على نفس الجهاز. ومع ذلك، لا يناسب هذا الحل جميع السيناريوهات. إذا كانت الطلبات قصيرة جدًا (أقل من 512 رمزًا) أو إذا كانت معدلات استخدام ذاكرة التخزين المؤقت (Prefix Cache) عالية، فقد يفوق وقت نقل البيانات عبر الشبكة الفوائد المكتسبة من الفصل، مما يؤدي إلى تدهور الأداء. كما يتطلب هذا النظام عددًا كافيًا من الوحدات (عادة أكثر من 32) وشبكة عالية السرعة لضمان جدوى التكاليف. يُنصح بإجراء تحليل دقيق لحجم البيانات المنقولة ومقارنة نسب الوقت بين المرحلتين قبل تبني هذا البنية، لضمان تحقيق التوازن الصحيح بين الكفاءة والتكلفة.
