بحث فعال عن التشابه المتجه في سير عمل الموصي باستخدام ميلفوس مع إنفيديا ميرلين
نُشرت هذه التدوينة لأول مرة على قناة NVIDIA Merlin على موقع NVIDIA Merlin، وتم تحريرها وإعادة نشرها هنا بإذن. وقد شارك في كتابته كل من بورسين بوزكايا وويليام هيكس من NVIDIA وفيليب هالتماير ولي ليو من Zilliz.
مقدمة
تتألف أنظمة التوصية الحديثة (Recsys) من خطوط أنابيب التدريب/الاستدلال التي تتضمن مراحل متعددة من إدخال البيانات، والمعالجة المسبقة للبيانات، والتدريب على النموذج، وضبط المعلمات الفائقة لاسترجاع العناصر ذات الصلة وتصنيفها وترتيبها وتسجيلها. أحد المكونات الأساسية لخط أنابيب نظام التوصية هو استرجاع أو اكتشاف الأشياء الأكثر صلة بالمستخدم، خاصة في وجود كتالوجات عناصر كبيرة. تتضمن هذه الخطوة عادةً بحثًا تقريبيًا لأقرب جار (ANN) على قاعدة بيانات مفهرسة لتمثيلات متجهة منخفضة الأبعاد (أي تضمينات) لسمات المنتج والمستخدم التي تم إنشاؤها من نماذج التعلم العميق التي تتدرب على التفاعلات بين المستخدمين والمنتجات/الخدمات.
يتكامل إطار عملNVIDIA Merlin، وهو إطار عمل مفتوح المصدر تم تطويره لتدريب النماذج المتكاملة لتقديم توصيات على أي نطاق، مع فهرس قاعدة بيانات متجهية فعالة وإطار عمل بحث. أحد هذه الأطر التي حظيت باهتمام كبير في الآونة الأخيرة هو "ميلفوس"، وهو قاعدة بيانات متجهات مفتوحة المصدر أنشأتها شركة Zilliz. يوفر فهرسًا سريعًا وقدرات استعلام. أضافت Milvus مؤخرًا دعم تسريع GPU الذي يستخدم وحدات معالجة الرسومات NVIDIA GPU لدعم سير عمل الذكاء الاصطناعي. يعد دعم تسريع وحدة معالجة الرسومات خبرًا رائعًا لأن مكتبة البحث المتسارع في المتجهات تجعل الاستعلامات المتزامنة السريعة ممكنة، مما يؤثر إيجابًا على متطلبات زمن الاستجابة في أنظمة التوصية الحالية، حيث يتوقع المطورون العديد من الطلبات المتزامنة. لدى Milvus أكثر من 5 ملايين عملية سحب لـ docker، وحوالي 23 ألف نجمة على GitHub (اعتبارًا من سبتمبر 2023)، وأكثر من 5000 عميل من عملاء المؤسسات، ومكون أساسي للعديد من التطبيقات (انظر حالات الاستخدام).
توضح هذه المدونة كيفية عمل Milvus مع إطار عمل Merlin Recsys في وقت التدريب والاستدلال. نوضح كيف يكمل برنامج Milvus برنامج Merlin في مرحلة استرجاع العناصر من خلال بحث عالي الكفاءة في تضمين المتجهات من أعلى k وكيف يمكن استخدامه مع خادم الاستدلال NVIDIA Triton Inference Server (TIS) في وقت الاستدلال (انظر الشكل 1). تُظهر نتائجنا المعيارية تسريعًا مذهلًا يتراوح بين 37 ضعفًا و91 ضعفًا باستخدام Milvus المعزز بوحدة معالجة الرسومات الذي يستخدم NVIDIA RAFT مع التضمينات المتجهة التي تم إنشاؤها بواسطة Merlin Models. يتوفر هنا الكود الذي نستخدمه لإظهار تكامل Merlin-Milvus والنتائج المعيارية التفصيلية للمقارنة، إلى جانب المكتبة التي سهلت دراستنا المعيارية.
الشكل 1. نظام التوصية متعدد المراحل مع إطار عمل ميلفوس الذي يساهم في مرحلة الاسترجاع. مصدر الشكل الأصلي متعدد المراحل: منشور المدونة هذا.
التحديات التي تواجه الموصين
نظرًا لطبيعة نظام التوصيات متعدد المراحل وتوافر العديد من المكونات والمكتبات التي تدمجها، فإن التحدي الكبير هو دمج جميع المكونات بسلاسة في خط أنابيب متكامل. نهدف إلى إظهار أن التكامل يمكن أن يتم بأقل جهد ممكن في أمثلة دفاتر الملاحظات التي نقدمها.
التحدي الآخر لسير عمل التوصية هو تسريع بعض أجزاء خط الأنابيب. في حين أنه من المعروف أنها تلعب دورًا كبيرًا في تدريب الشبكات العصبية الكبيرة، إلا أن وحدات معالجة الرسومات ليست سوى إضافات حديثة لقواعد البيانات المتجهة والبحث في الشبكات العصبية الاصطناعية. مع تزايد حجم مخزون منتجات التجارة الإلكترونية أو قواعد بيانات الوسائط المتدفقة وعدد المستخدمين الذين يستخدمون هذه الخدمات، يجب أن توفر وحدات المعالجة المركزية الأداء المطلوب لخدمة ملايين المستخدمين في تدفقات عمل Recsys ذات الأداء العالي. أصبح تسريع وحدة معالجة الرسومات في أجزاء خط الأنابيب الأخرى ضروريًا لمواجهة هذا التحدي. يعالج الحل الوارد في هذه المدونة هذا التحدي من خلال إظهار كفاءة البحث في الشبكة العنكبوتية عند استخدام وحدات معالجة الرسومات.
المكدسات التقنية للحل
لنبدأ أولاً بمراجعة بعض الأساسيات اللازمة لإجراء عملنا.
NVIDIA Merlin: مكتبة مفتوحة المصدر مع واجهات برمجة تطبيقات عالية المستوى تسرّع من عمليات التوصية على وحدات معالجة الرسومات NVIDIA.
NVTabular: للمعالجة المسبقة للبيانات المجدولة المدخلة وهندسة الميزات.
نماذج Merlin Models: لتدريب نماذج التعلم العميق، وللتعلم، في هذه الحالة، متجهات تضمين المستخدم والعنصر من بيانات تفاعل المستخدم.
أنظمة Merlin: لدمج نموذج التوصية القائم على TensorFlow مع عناصر أخرى (على سبيل المثال، مخزن الميزات، والبحث في الشبكة الاصطناعية مع Milvus) ليتم تقديمها مع TIS.
خادم Triton Inference Server: لمرحلة الاستدلال حيث يتم تمرير متجه ميزة المستخدم، ويتم إنشاء توصيات المنتج.
الاحتواء: كل ما سبق متاح عبر الحاويات التي توفرها NVIDIA في كتالوج NGC. استخدمنا حاوية Merlin TensorFlow 23.06 المتوفرة هنا.
Milvus 2.3: لإجراء الفهرسة والاستعلام عن المتجهات المسرعة بوحدة معالجة الرسومات.
Milvus 2.2.11: نفس الإصدار2.2.11: كما هو مذكور أعلاه، ولكن لإجراء ذلك على وحدة المعالجة المركزية.
Pymilvus SDK: للاتصال بخادم Milvus، وإنشاء فهارس قاعدة بيانات المتجهات، وتشغيل الاستعلامات عبر واجهة Python.
Feast: لحفظ واسترجاع سمات المستخدم والعنصر في مخزن ميزات (مفتوح المصدر) كجزء من خط أنابيب RecSys الشامل.
يتم استخدام العديد من المكتبات والأطر الأساسية أيضًا تحت الغطاء. على سبيل المثال، يعتمد Merlin على مكتبات NVIDIA الأخرى، مثل cuDF و Dask، وكلاهما متاح ضمن RAPIDS cuDF. وبالمثل، يعتمد Milvus على NVIDIA RAFT للأوليات على تسريع وحدة معالجة الرسومات والمكتبات المعدلة مثل HNSW و FAISS للبحث.
فهم قواعد البيانات المتجهة وميلفوس
أقرب جار تقريبي (ANN) هي وظيفة لا تستطيع قواعد البيانات العلائقية التعامل معها. تم تصميم قواعد البيانات العلائقية للتعامل مع البيانات المجدولة ذات الهياكل المحددة مسبقًا والقيم القابلة للمقارنة المباشرة. وتعتمد فهارس قواعد البيانات العلائقية على ذلك لمقارنة البيانات وإنشاء هياكل تستفيد من معرفة ما إذا كانت كل قيمة أقل من أو أكبر من الأخرى. لا يمكن مقارنة المتجهات المضمنة ببعضها البعض مباشرةً بهذه الطريقة، حيث نحتاج إلى معرفة ما تمثله كل قيمة في المتجه. فلا يمكننا تحديد ما إذا كان أحد المتجهين أقل من الآخر بالضرورة. الشيء الوحيد الذي يمكننا فعله هو حساب المسافة بين المتجهين. إذا كانت المسافة بين المتجهين صغيرة، فيمكننا افتراض أن السمات التي يمثلانها متشابهة، وإذا كانت كبيرة، فيمكننا افتراض أن البيانات التي يمثلانها أكثر اختلافًا. ومع ذلك، فإن هذه الفهارس الفعّالة تأتي بتكلفة؛ فحساب المسافة بين متجهين مكلف حسابيًا، كما أن فهارس المتجهات غير قابلة للتكيف بسهولة وأحيانًا غير قابلة للتعديل. نظرًا لهذين القيدين، فإن دمج هذه الفهارس أكثر تعقيدًا في قواعد البيانات العلائقية، وهذا هو السبب في الحاجة إلى قواعد بيانات متجهات مصممة لهذا الغرض.
تم إنشاءMilvus لحل المشاكل التي تواجهها قواعد البيانات العلائقية مع المتجهات وتم تصميمه من الألف إلى الياء للتعامل مع هذه المتجهات المدمجة وفهارسها على نطاق واسع. ولتحقيق شارة السحابة الأصلية، تفصل Milvus بين الحوسبة والتخزين ومهام الحوسبة المختلفة - الاستعلام، ومعالجة البيانات، والفهرسة. يمكن للمستخدمين توسيع نطاق كل جزء من أجزاء قاعدة البيانات للتعامل مع حالات الاستخدام الأخرى، سواء أكان ذلك في حالة ثقل إدخال البيانات أو ثقل البحث. إذا كان هناك تدفق كبير لطلبات الإدخال، يمكن للمستخدم توسيع نطاق عقد الفهرس أفقياً وعمودياً بشكل مؤقت للتعامل مع الإدخال. وبالمثل، إذا لم يتم استيعاب أي بيانات، ولكن هناك العديد من عمليات البحث، يمكن للمستخدم تقليل عقد الفهرس وزيادة عقد الاستعلام بدلاً من ذلك لزيادة الإنتاجية. تطلب منا تصميم هذا النظام (انظر الشكل 2) التفكير بعقلية الحوسبة المتوازية، مما أدى إلى نظام محسّن للحوسبة مع وجود العديد من الأبواب المفتوحة لمزيد من التحسينات.
الشكل 2. تصميم نظام ميلفوس
يستخدم ميلفوس أيضًا العديد من مكتبات الفهرسة الحديثة لمنح المستخدمين أكبر قدر ممكن من التخصيص لنظامهم. ويحسنها بإضافة القدرة على التعامل مع عمليات CRUD، والبيانات المتدفقة، والتصفية. سنناقش لاحقًا كيف تختلف هذه الفهارس وما هي إيجابيات وسلبيات كل منها.
مثال على الحل: دمج ميلفوس وميرلين
يوضح مثال الحل الذي نقدمه هنا تكامل ميلفوس مع ميرلين في مرحلة استرجاع العناصر (عندما يتم استرجاع العناصر الأكثر صلة من خلال بحث الشبكة العنكبوتية). نستخدم مجموعة بيانات واقعية من تحدي RecSys، الموضح أدناه. نقوم بتدريب نموذج التعلّم العميق ثنائي الأبراج الذي يتعلم التضمينات المتجهة للمستخدمين والعناصر. يوفر هذا القسم أيضًا مخطط عملنا المعياري، بما في ذلك المقاييس التي نجمعها ونطاق المعلمات التي نستخدمها.
يتضمن نهجنا
استيعاب البيانات والمعالجة المسبقة
تدريب نموذج التعلّم العميق ثنائي الأبراج
بناء فهرس ميلفوس
البحث عن تشابه ميلفوس
نصف بإيجاز كل خطوة ونحيل القارئ إلى دفاتر ملاحظاتنا للحصول على التفاصيل.
مجموعة البيانات
توفر شركة YOOCHOOSE GmbH مجموعة البيانات التي نستخدمها في هذا التكامل والدراسة المعيارية لتحدي RecSys 2015 وهي متاحة على Kaggle. وهي تحتوي على أحداث نقر/شراء المستخدم من بائع تجزئة أوروبي عبر الإنترنت مع سمات مثل معرّف الجلسة والطابع الزمني ومعرّف العنصر المرتبط بالنقر/الشراء وفئة العنصر، وهي متاحة في ملف yoochoose-clicks.dat. الجلسات مستقلة، ولا يوجد أي تلميح للمستخدمين العائدين، لذلك نتعامل مع كل جلسة على أنها تنتمي لمستخدم مميز. تحتوي مجموعة البيانات على 9,249,729 جلسة فريدة (مستخدمين) و 52,739 عنصرًا فريدًا.
استيعاب البيانات والمعالجة المسبقة
الأداة التي نستخدمها في المعالجة المسبقة للبيانات هي NVTabular، وهي أداة هندسة ميزات قابلة للتطوير بشكل كبير ومكون المعالجة المسبقة في Merlin. نحن نستخدم NVTabular لقراءة البيانات في ذاكرة وحدة معالجة الرسومات، وإعادة ترتيب الميزات حسب الضرورة، وتصديرها إلى ملفات الباركيه، وإنشاء تقسيم تدريب-تحقق من صحة التدريب. ينتج عن ذلك 7,305,761 مستخدمًا فريدًا و49,008 عنصرًا فريدًا للتدريب عليها. نقوم أيضًا بتصنيف كل عمود وقيمه إلى قيم صحيحة. مجموعة البيانات جاهزة الآن للتدريب باستخدام نموذج البرجين.
تدريب النموذج
نستخدم نموذج التعلّم العميق ثنائي الأبراج لتدريب وتوليد تضمينات المستخدمين والعناصر، والتي ستُستخدم لاحقًا في فهرسة المتجهات والاستعلام. بعد تدريب النموذج، يمكننا استخراج تضمينات المستخدم والعنصر المكتسبة.
الخطوتان التاليتان اختياريتان: نموذج DLRM مدرب على ترتيب العناصر المسترجعة للتوصية ومخزن الميزات المستخدم (في هذه الحالة، Feast) لتخزين واسترجاع ميزات المستخدم والعنصر. نقوم بتضمينها لاكتمال سير العمل متعدد المراحل.
أخيرًا، نقوم بتصدير تضمينات المستخدم والعنصر إلى ملفات باركيه، والتي يمكن إعادة تحميلها لاحقًا لإنشاء فهرس متجه Milvus.
بناء فهرس ميلفوس والاستعلام عنه
يسهل Milvus فهرسة المتجهات والبحث عن التشابه عبر "خادم" يتم تشغيله على جهاز الاستدلال. في دفتر ملاحظاتنا رقم 2، قمنا بإعداد ذلك من خلال تثبيت خادم Milvus وPymilvus، ثم بدء تشغيل الخادم بمنفذ الاستماع الافتراضي الخاص به. بعد ذلك، نوضح بناء فهرس بسيط (IVF_FLAT) والاستعلام عنه باستخدام الدالتين setup_milvus
و query_milvus
، على التوالي.
قياس الأداء
لقد صممنا مقياسين معياريين لتوضيح حالة استخدام مكتبة فهرسة/بحث متجهية سريعة وفعالة مثل Milvus.
باستخدام Milvus لإنشاء فهارس متجهات باستخدام مجموعتين من التضمينات التي أنشأناها: 1) تضمينات مستخدمين ل 7.3 مليون مستخدم فريد، مقسمة كمجموعة تدريب بنسبة 85% (للفهرسة) ومجموعة اختبار بنسبة 15% (للاستعلام)، و2) تضمينات عناصر ل 49 ألف منتج (مع تقسيم 50-50 بين التدريب والاختبار). يتم إجراء هذا المعيار بشكل مستقل لكل مجموعة بيانات متجه، ويتم الإبلاغ عن النتائج بشكل منفصل.
استخدام Milvus لإنشاء فهرس متجه لمجموعة بيانات تضمين 49 ألف عنصر والاستعلام عن 7.3 مليون مستخدم فريد مقابل هذا الفهرس للبحث عن التشابه.
في هذه المعايير، استخدمنا في هذه المعايير خوارزميات فهرسة IVFPPQ و HNSW التي تم تنفيذها على وحدة معالجة الرسومات ووحدة المعالجة المركزية، إلى جانب مجموعات مختلفة من المعلمات. التفاصيل متاحة هنا.
تُعد المفاضلة بين جودة البحث والإنتاجية أحد الاعتبارات المهمة في الأداء، خاصةً في بيئة الإنتاج. يسمح Milvus بالتحكم الكامل في معلمات الفهرسة لاستكشاف هذه المفاضلة لحالة استخدام معينة لتحقيق نتائج بحث أفضل مع الحقيقة الأساسية. قد يعني هذا زيادة التكلفة الحسابية في شكل معدل إنتاجية منخفض أو استعلامات في الثانية (QPS). نحن نقيس جودة بحث الشبكة العصبية الاصطناعية باستخدام مقياس الاستدعاء ونقدم منحنيات QPS-الاستدعاء التي توضح المفاضلة. يمكن للمرء بعد ذلك تحديد المستوى المقبول لجودة البحث بالنظر إلى موارد الحوسبة أو متطلبات زمن الاستجابة/الإنتاجية لحالة العمل.
لاحظ أيضًا حجم دفعة الاستعلام (nq) المستخدم في معاييرنا. هذا مفيد في تدفقات العمل حيث يتم إرسال طلبات متزامنة متعددة إلى الاستدلال (على سبيل المثال، التوصيات غير المتصلة بالإنترنت المطلوبة وإرسالها إلى قائمة مستلمي البريد الإلكتروني أو التوصيات عبر الإنترنت التي تم إنشاؤها عن طريق تجميع الطلبات المتزامنة التي تصل ومعالجتها جميعًا مرة واحدة). واعتماداً على حالة الاستخدام، يمكن أن يساعد نظام معلومات النقل أيضاً في معالجة هذه الطلبات على دفعات.
النتائج
نقوم الآن بالإبلاغ عن النتائج للمجموعات الثلاث من المعايير على كل من وحدة المعالجة المركزية ووحدة معالجة الرسوميات، باستخدام أنواع الفهرس HNSW (وحدة المعالجة المركزية فقط) و IVF_PQ (وحدة المعالجة المركزية ووحدة معالجة الرسوميات) التي نفذها Milvus.
العناصر مقابل بحث تشابه متجه العناصر
باستخدام مجموعة البيانات الأصغر حجمًا هذه، يأخذ كل تشغيل لمجموعة معلمات معينة 50% من متجهات العناصر كمتجهات استعلام ويستعلم عن أفضل 100 متجه متشابه من البقية. يُنتج HNSW و IVF_PQ استرجاعًا عاليًا مع إعدادات المعلمات التي تم اختبارها، في النطاق 0.958-1.0 و 0.665-0.997 على التوالي. تشير هذه النتيجة إلى أن أداء HNSW أفضل من حيث الاستدعاء، لكن IVF_PQ مع إعدادات قائمة n الصغيرة ينتج عنه استدعاء مماثل إلى حد كبير. يجب أن نلاحظ أيضًا أن قيم الاستدعاء يمكن أن تختلف بشكل كبير اعتمادًا على معلمات الفهرسة والاستعلام. تم الحصول على القيم التي نبلغ عنها بعد إجراء تجارب أولية مع نطاقات معلمات عامة والتكبير أكثر في مجموعة فرعية مختارة.
يتراوح الوقت الإجمالي لتنفيذ جميع الاستعلامات على وحدة المعالجة المركزية باستخدام HNSW لمجموعة معلمات معينة بين 5.22 و5.33 ثانية (أسرع كلما زاد m، دون تغيير نسبيًا مع ef) ومع IVF_PQ بين 13.67 و14.67 ثانية (أبطأ كلما زاد nlist وnprobe). إن تسريع وحدة معالجة الرسومات له تأثير ملحوظ، كما هو موضح في الشكل 3.
يوضح الشكل 3 المفاضلة بين معدل الاسترجاع والإنتاجية على جميع عمليات التشغيل المكتملة على وحدة المعالجة المركزية ووحدة معالجة الرسومات باستخدام مجموعة البيانات الصغيرة هذه باستخدام IVF_PQ. وجدنا أن وحدة معالجة الرسومات توفر تسريعًا يتراوح بين 4 أضعاف إلى 15 ضعفًا عبر جميع مجموعات المعلمات التي تم اختبارها (تسريع أكبر كلما زاد nprobe). يتم حساب ذلك من خلال أخذ نسبة QPS من وحدة معالجة الرسومات على QPS من عمليات تشغيل وحدة المعالجة المركزية لكل مجموعة معلمات. وبشكلٍ عام، تمثل هذه المجموعة تحديًا بسيطًا لوحدة المعالجة المركزية أو وحدة معالجة الرسوميات، وتظهر احتمالات زيادة السرعة مع مجموعات البيانات الأكبر، كما هو موضح أدناه.
الشكل 3. تسريع وحدة معالجة الرسومات باستخدام خوارزمية Milvus IVF_PQ التي تعمل على وحدة معالجة الرسومات NVIDIA A100 (بحث تشابه عنصر-عنصر)
المستخدمون مقابل بحث تشابه متجه المستخدمين
مع مجموعة البيانات الثانية الأكبر حجمًا (7.3 مليون مستخدم)، قمنا بتخصيص 85% (حوالي 6.2 مليون) من المتجهات ك "تدريب" (مجموعة المتجهات المراد فهرستها)، وال 15% المتبقية (حوالي 1.1 مليون) "اختبار" أو مجموعة متجهات الاستعلام. يؤدي كل من HNSW و IVF_PQ أداءً جيدًا بشكل استثنائي في هذه الحالة، حيث تبلغ قيم الاسترجاع 0.884-1.0 و 0.922-0.999 على التوالي. ومع ذلك، فهي أكثر تطلبًا من الناحية الحسابية، خاصةً مع IVF_PQ على وحدة المعالجة المركزية. يتراوح إجمالي الوقت اللازم لتنفيذ جميع الاستعلامات على وحدة المعالجة المركزية مع HNSW من 279.89 إلى 295.56 ثانية ومع IVF_PQ من 3082.67 إلى 10932.33 ثانية. لاحظ أن أزمنة الاستعلام هذه تراكمية ل 1.1 مليون متجه تم الاستعلام عنها، لذلك يمكن القول إن الاستعلام الواحد ضد الفهرس لا يزال سريعًا جدًا.
ومع ذلك، قد لا يكون الاستعلام المستند إلى وحدة المعالجة المركزية قابلاً للتطبيق إذا كان الخادم الاستدلالي يتوقع عدة آلاف من الطلبات المتزامنة لتشغيل الاستعلامات مقابل مخزون من ملايين العناصر.
توفر وحدة معالجة الرسومات A100 سرعة فائقة تتراوح من 37 ضعفًا إلى 91 ضعفًا (بمتوسط 76.1 ضعفًا) عبر جميع مجموعات المعلمات مع IVF_PQ من حيث الإنتاجية (QPS)، كما هو موضح في الشكل 4. يتوافق هذا مع ما لاحظناه مع مجموعة البيانات الصغيرة، مما يشير إلى أن أداء وحدة معالجة الرسومات يتوسع بشكل معقول باستخدام Milvus مع ملايين من متجهات التضمين.
الشكل 4. تسريع وحدة معالجة الرسومات باستخدام خوارزمية Milvus IVF_PQ التي تعمل على وحدة معالجة الرسومات NVIDIA A100 (بحث التشابه بين المستخدم والمستخدم)
يوضح الشكل 5 التفصيلي التالي مفاضلة الاستدعاء-QPS لجميع مجموعات المعلمات التي تم اختبارها على وحدة المعالجة المركزية ووحدة معالجة الرسومات باستخدام IVF_PQ. توضح كل مجموعة نقاط (أعلى لوحدة معالجة الرسوميات وأسفل لوحدة المعالجة المركزية) في هذا الرسم البياني المفاضلة التي تمت مواجهتها عند تغيير معلمات فهرسة/استعلام المتجهات نحو تحقيق استرجاع أعلى على حساب انخفاض الإنتاجية. لاحظ الخسارة الكبيرة في QPS في حالة وحدة معالجة الرسومات عندما يحاول المرء تحقيق مستويات استدعاء أعلى.
الشكل 5. مفاضلة الاستدعاء-الإنتاجية لجميع مجموعات المعلمات التي تم اختبارها على وحدة المعالجة المركزية ووحدة معالجة الرسومات باستخدام IVF_PQ (المستخدمون مقابل المستخدمين)
المستخدمون مقابل بحث تشابه متجه العناصر
أخيرًا، نأخذ في الاعتبار حالة استخدام واقعية أخرى حيث يتم الاستعلام عن متجهات المستخدمين مقابل متجهات العناصر (كما هو موضح في المفكرة 01 أعلاه). في هذه الحالة، يتم فهرسة 49 ألف متجه عنصر، ويتم الاستعلام عن 7.3 مليون متجه مستخدم مقابل أكثر 100 عنصر تشابهًا.
هذا هو المكان الذي تصبح فيه الأمور مثيرة للاهتمام لأن الاستعلام عن 7.3 مليون على دفعات من 1000 مقابل فهرس مكون من 49 ألف عنصر يبدو مستهلكًا للوقت على وحدة المعالجة المركزية لكل من HNSW و IVF_PQ. يبدو أن وحدة معالجة الرسوميات تتعامل مع هذه الحالة بشكل أفضل (انظر الشكل 6). يتم احتساب أعلى مستويات الدقة بواسطة IVF_PQ على وحدة المعالجة المركزية عندما تكون nlist = 100 في حوالي 86 دقيقة في المتوسط، ولكنها تختلف بشكل كبير مع زيادة قيمة nprobe (51 دقيقة عندما تكون nprobe = 5 مقابل 128 دقيقة عندما تكون nprobe = 20). تعمل وحدة معالجة الرسومات NVIDIA A100 على تسريع الأداء بشكل كبير بمعامل 4 أضعاف إلى 17 ضعفًا (تسريع أعلى كلما زادت قيمة nprobe). تذكّر أن خوارزمية IVF_PQ، من خلال تقنية التكميم الخاصة بها، تقلل أيضًا من بصمة الذاكرة وتوفر حل بحث ANN قابل للتطبيق حسابيًا مع تسريع وحدة معالجة الرسومات.
الشكل 6. تسريع وحدة معالجة الرسومات باستخدام خوارزمية Milvus IVF_PQ التي تعمل على وحدة معالجة الرسومات NVIDIA A100 (بحث تشابه عنصر المستخدم)
على غرار الشكل 5، تظهر في الشكل 7 مفاضلة الاستدعاء-الإنتاجية لجميع مجموعات المعلمات التي تم اختبارها باستخدام IVF_PQ. هنا، لا يزال بإمكان المرء أن يرى كيف يمكن للمرء أن يتخلى قليلاً عن بعض الدقة في بحث الشبكة العنكبوتية الاصطناعية لصالح زيادة الإنتاجية، على الرغم من أن الاختلافات أقل وضوحًا، خاصة في حالة تشغيل وحدة معالجة الرسومات. يشير هذا إلى أنه يمكن للمرء أن يتوقع مستويات عالية نسبيًا من الأداء الحسابي مع وحدة معالجة الرسومات مع تحقيق استرجاع عالٍ في الوقت نفسه.
الشكل 7. مفاضلة الاستدعاء-الإنتاجية لجميع مجموعات المعلمات التي تم اختبارها على وحدة المعالجة المركزية ووحدة معالجة الرسومات باستخدام IVF_PQ (المستخدمون مقابل العناصر)
الخاتمة
يسعدنا مشاركة بعض الملاحظات الختامية إذا كنت قد وصلت إلى هذا الحد. نود أن نذكرك بأن تعقيدات Recsys الحديثة وطبيعتها متعددة المراحل تستلزم الأداء والكفاءة في كل خطوة. نأمل أن تكون هذه المدونة قد قدمت لك أسبابًا مقنعة للتفكير في استخدام ميزتين هامتين في خطوط أنابيب RecSys الخاصة بك:
تتيح لك مكتبة أنظمة Merlin Systems من NVIDIA Merlin من NVIDIA Merlin إمكانية توصيل Milvus بسهولة، وهو محرك بحث متجه فعال مسرّع بوحدة معالجة الرسومات.
استخدم وحدة معالجة الرسومات لتسريع العمليات الحسابية لفهرسة قاعدة البيانات المتجهة، والبحث في الشبكة العنكبوتية باستخدام تقنية مثل RAPIDS RAFT.
تشير هذه النتائج إلى أن التكامل بين Merlin-Milvus المقدم هو تكامل عالي الأداء وأقل تعقيدًا بكثير من الخيارات الأخرى للتدريب والاستدلال. كما أن كلا الإطارين يتم تطويرهما بنشاط، ويتم إضافة العديد من الميزات الجديدة (على سبيل المثال، فهارس قاعدة البيانات المتجهة الجديدة المسرعة بوحدة معالجة الرسومات من قبل Milvus) في كل إصدار. إن حقيقة أن البحث عن التشابه المتجهي هو عنصر حاسم في العديد من مهام سير العمل، مثل الرؤية الحاسوبية ونمذجة اللغات الكبيرة وأنظمة التوصية، يجعل هذا الجهد أكثر جدارة بالاهتمام.
في الختام، نود أن نشكر كل من ساهم في هذا الجهد في إنتاج هذا العمل ومنشور المدونة من فريقي Zilliz/Milvus وMerlin وفريق RAFT. نتطلع إلى الاستماع إليكم، إذا أتيحت لكم الفرصة لتطبيق Merlin وMilvus في نظامي Recsys أو سير العمل الآخر.
- مقدمة
- التحديات التي تواجه الموصين
- المكدسات التقنية للحل
- فهم قواعد البيانات المتجهة وميلفوس
- مثال على الحل: دمج ميلفوس وميرلين
- قياس الأداء
- الخاتمة
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word