شعار زيفيرنت

كيف يقلل Roblox من تكاليف استعلام الانضمام إلى Spark باستخدام مرشحات Bloom المُحسّنة للتعلم الآلي - مدونة Roblox

التاريخ:

ملخص

كل يوم على roblox 65.5 يتفاعل مليون مستخدم مع ملايين التجارب، بإجمالي 14.0 مليار ساعة ربع سنوية يُنشئ هذا التفاعل بحيرة بيانات بحجم بيتابايت، والتي يتم إثراؤها لأغراض التحليلات والتعلم الآلي (ML). يعد الانضمام إلى جداول الحقائق والأبعاد في بحيرة البيانات الخاصة بنا عملية كثيفة الاستخدام للموارد، لذا لتحسين ذلك وتقليل خلط البيانات، قمنا بتبني Learned Bloom Filters [1] - هياكل البيانات الذكية باستخدام ML. ومن خلال التنبؤ بالتواجد، تقوم عوامل التصفية هذه بتقليص بيانات الانضمام إلى حد كبير، مما يؤدي إلى تحسين الكفاءة وتقليل التكاليف. وعلى طول الطريق، قمنا أيضًا بتحسين بنيات النماذج الخاصة بنا وأظهرنا الفوائد الكبيرة التي تقدمها لتقليل ساعات الذاكرة ووحدة المعالجة المركزية للمعالجة، فضلاً عن زيادة الاستقرار التشغيلي.

المُقدّمة

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

لمعالجتها، اكتشفنا تعلمت مرشحات بلوم، وهو حل قائم على التعلم الآلي يقلل من حجم مرشح Bloom مع الحفاظ على معدلات إيجابية كاذبة منخفضة. يعزز هذا الابتكار كفاءة العمليات المشتركة عن طريق تقليل التكاليف الحسابية وتحسين استقرار النظام. يوضح المخطط التالي عمليات الربط التقليدية والمحسنة في بيئة الحوسبة الموزعة لدينا.

تعزيز كفاءة الانضمام باستخدام مرشحات Learned Bloom

لتحسين الصلة بين جداول الحقيقة وجداول الأبعاد، اعتمدنا تطبيق Learned Bloom Filter. لقد أنشأنا فهرسًا من المفاتيح الموجودة في جدول الحقائق وقمنا بعد ذلك بنشر الفهرس لتصفية بيانات الأبعاد مسبقًا قبل عملية الربط. 

التطور من مرشحات بلوم التقليدية إلى مرشحات بلوم المستفادة

في حين أن مرشح Bloom التقليدي فعال، فإنه يضيف 15-25% من الذاكرة الإضافية لكل عقدة عاملة تحتاج إلى تحميلها للوصول إلى المعدل الإيجابي الخاطئ المطلوب. ولكن من خلال تسخير مرشحات Learned Bloom، حققنا انخفاضًا كبيرًا في حجم المؤشر مع الحفاظ على نفس المعدل الإيجابي الخاطئ. وذلك بسبب تحول مرشح بلوم إلى مشكلة تصنيف ثنائية. تشير التسميات الإيجابية إلى وجود قيم في الفهرس، بينما تعني التسميات السلبية أنها غائبة.

يؤدي إدخال نموذج تعلم الآلة إلى تسهيل الفحص الأولي للقيم، متبوعًا بفلتر Bloom الاحتياطي لإزالة السلبيات الكاذبة. ينبع الحجم المنخفض من التمثيل المضغوط للنموذج وانخفاض عدد المفاتيح التي يتطلبها مرشح Bloom الاحتياطي. وهذا ما يميزه عن نهج Bloom Filter التقليدي. 

وكجزء من هذا العمل، أنشأنا مقياسين لتقييم نهج Learned Bloom Filter الخاص بنا: حجم الكائن المتسلسل النهائي للفهرس واستهلاك وحدة المعالجة المركزية أثناء تنفيذ استعلامات الانضمام. 

التنقل في تحديات التنفيذ

كان التحدي الأولي الذي واجهنا هو معالجة مجموعة بيانات التدريب المتحيزة للغاية مع عدد قليل من مفاتيح جدول الأبعاد في جدول الحقائق. ومن خلال القيام بذلك، لاحظنا تداخلًا بنسبة واحد من كل ثلاثة مفاتيح تقريبًا بين الجداول. ولمعالجة هذه المشكلة، قمنا بالاستفادة من منهج Sandwich Learned Bloom Filter [2]. يدمج هذا مرشح Bloom التقليدي الأولي لإعادة التوازن إلى توزيع مجموعة البيانات عن طريق إزالة غالبية المفاتيح التي كانت مفقودة من جدول الحقائق، مما يؤدي بشكل فعال إلى إزالة العينات السلبية من مجموعة البيانات. بعد ذلك، تم فقط إعادة توجيه المفاتيح المضمنة في مرشح بلوم الأولي، إلى جانب الإيجابيات الكاذبة، إلى نموذج تعلم الآلة، والذي يشار إليه غالبًا باسم "أوراكل المستفادة". أدى هذا النهج إلى مجموعة بيانات تدريبية متوازنة بشكل جيد لأوراكل المستفادة، والتغلب على مشكلة التحيز بشكل فعال.

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

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

استعلام الانضمام المحدث الخاص بنا باستخدام مرشحات Bloom التي تم تعلمها هو كما هو موضح أدناه:

النتائج

فيما يلي نتائج تجاربنا مع مرشحات Learned Bloom في بحيرة البيانات الخاصة بنا. لقد قمنا بدمجها في خمسة أحمال عمل إنتاجية، كل منها يمتلك خصائص بيانات مختلفة. الجزء الأكثر تكلفة من الناحية الحسابية لأحمال العمل هذه هو الربط بين جدول الحقائق وجدول الأبعاد. تبلغ المساحة الرئيسية لجداول الحقائق حوالي 30% من جدول الأبعاد. في البداية، نناقش كيف تفوق Learned Bloom Filter على مرشحات Bloom التقليدية من حيث الحجم النهائي للكائن المتسلسل. بعد ذلك، نعرض تحسينات الأداء التي لاحظناها من خلال دمج Learned Bloom Filters في مسارات معالجة عبء العمل لدينا.

تعلم مقارنة حجم مرشح بلوم

كما هو موضح أدناه، عند النظر إلى معدل إيجابي كاذب معين، يعمل البديلان من مرشح Bloom الذي تم تعلمه على تحسين الحجم الإجمالي للكائن بنسبة تتراوح بين 17-42% مقارنة بمرشحات Bloom التقليدية.

بالإضافة إلى ذلك، باستخدام مجموعة فرعية أصغر من الميزات في نموذجنا القائم على الشجرة المعززة بالتدرج، فقد فقدنا نسبة صغيرة فقط من التحسين بينما جعلنا الاستدلال أسرع.

تعلمت نتائج استخدام مرشح بلوم 

في هذا القسم، نقوم بمقارنة أداء الصلات المستندة إلى Bloom Filter بأداء الصلات العادية عبر عدة مقاييس. 

يقارن الجدول أدناه أداء أحمال العمل مع وبدون استخدام Learned Bloom Filters. يوضح عامل تصفية Learned Bloom بإجمالي احتمالية إيجابية كاذبة بنسبة 1% المقارنة أدناه مع الحفاظ على نفس تكوين المجموعة لكلا النوعين من الروابط. 

أولاً، وجدنا أن تنفيذ Bloom Filter تفوق على الربط العادي بما يصل إلى 60% في ساعات وحدة المعالجة المركزية. لقد شهدنا زيادة في استخدام وحدة المعالجة المركزية لخطوة المسح لنهج Learned Bloom Filter بسبب الحوسبة الإضافية التي تم إنفاقها في تقييم Bloom Filter. ومع ذلك، أدت التصفية المسبقة التي تم إجراؤها في هذه الخطوة إلى تقليل حجم البيانات التي يتم خلطها، مما ساعد على تقليل وحدة المعالجة المركزية المستخدمة في الخطوات النهائية، وبالتالي تقليل إجمالي ساعات وحدة المعالجة المركزية.

ثانيًا، تحتوي مرشحات Learned Bloom على إجمالي حجم بيانات أقل بنسبة 80% تقريبًا وإجمالي وحدات البايت العشوائية المكتوبة بنسبة 80% تقريبًا مقارنة بالصلة العادية. يؤدي هذا إلى أداء انضمام أكثر استقرارًا كما هو موضح أدناه. 

لقد شهدنا أيضًا انخفاضًا في استخدام الموارد في أعباء عمل الإنتاج الأخرى قيد التجربة. على مدار فترة أسبوعين عبر جميع أعباء العمل الخمسة، حقق نهج Learned Bloom Filter متوسطًا وفورات في التكاليف اليومية of 25٪، والذي يمثل أيضًا التدريب النموذجي وإنشاء الفهرس.

نظرًا لانخفاض كمية البيانات التي تم خلطها أثناء إجراء عملية الربط، فقد تمكنا من تقليل التكاليف التشغيلية لمسار التحليلات الخاص بنا بشكل كبير مع جعلها أكثر استقرارًا أيضًا. يوضح الرسم البياني التالي التباين (باستخدام معامل التباين) في فترات التشغيل (الجدار وقت الساعة) لأعباء عمل الانضمام العادية وعبء العمل المستند إلى Learned Bloom Filter على مدار فترة أسبوعين لأحمال العمل الخمسة التي جربناها. كانت عمليات التشغيل باستخدام Learned Bloom Filters أكثر استقرارًا - وأكثر اتساقًا في المدة - مما يفتح إمكانية نقلها إلى موارد حوسبة عابرة أرخص وغير موثوقة. 

مراجع حسابات

[1] ت. كراسكا، أ. بيوتل، إي إتش تشي، ج. دين، ون. بوليزوتيس. حالة هياكل الفهرس المستفادة. https://arxiv.org/abs/1712.01208، 2017.

[2] م. ميتسنماخر. تحسين مرشحات بلوم المتعلمة عن طريق ساندويتش. 

https://arxiv.org/abs/1803.01474، 2018.


¹اعتبارًا من الثلاثة أشهر المنتهية في 3 يونيو 30

²اعتبارًا من الثلاثة أشهر المنتهية في 3 يونيو 30

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة