تحسين البحث المتجهي المُسرّع بـ GPU في Faiss باستخدام NVIDIA cuVS
مع تزايد كميات البيانات غير المهيكلة واستخدام نماذج لغة كبيرة (LLMs)، أصبحت أنظمة البحث الفعّالة أكثر ضرورة، خاصة في تطبيقات مثل التوليد المدعوم بالاسترجاع (RAG) التي قد تستغرق ساعات أو أيامًا لمعالجة تيرابايتات من البيانات. كما تواجه تطبيقات البحث الحية، مثل أنظمة توصية الإعلانات، صعوبات في تقديم نتائج فورية على وحدات المعالجة المركزية (CPU)، ما يستدعي مئات الوحدات ويزيد من تكاليف البنية التحتية. لحل هذه التحديات، تقدم NVIDIA حلاً مُسرّعًا باستخدام مكتبة cuVS المُدمجة مع Faiss، وهي مكتبة شهيرة للبحث في المتجهات الكثيفة. تُسهم cuVS في تسريع عملية بناء فهارس البحث وعمليات الاستعلام من خلال استغلال قوة وحدات المعالجة الرسومية (GPU)، مع الحفاظ على التوافق السلس بين CPU وGPU. منذ الإصدار 1.10.0، أصبحت Faiss تدعم cuVS بشكل مدمج، مما يتيح استخدام إصدارات مُحسّنة من خوارزميات الفهارس مثل IVF-PQ، IVF-Flat، Flat (البحث القائم على القوة الغاشمة)، وCAGRA، وهي فهرس مبني خصيصًا للـGPU باستخدام بنية رسومية عالية الأداء. أحد أبرز المزايا هو التكامل السلس بين CPU وGPU: يمكن بناء فهارس على GPU باستخدام cuVS، ثم نقلها إلى CPU للبحث، مما يسمح بتسريع عملية البناء دون التضحية بالبنية الحالية للبحث على CPU. على سبيل المثال، يُبنى فهرس HNSW على CPU ببطء شديد عند الحجم الكبير، بينما يمكن بناء فهرس CAGRA على GPU بسرعة تصل إلى 12 مرة أسرع، ثم تحويله إلى تنسيق HNSW لاستخدامه في البحث على CPU مع جودة وسرعة مماثلة. أُجريت اختبارات أداء على مجموعتي بيانات: Deep100M (100 مليون متجه بـ96 بعدًا) ومتجهات النص من OpenAI (5 ملايين متجه بـ1536 بعدًا)، باستخدام وحدة H100 ووحدة Xeon Platinum. أظهرت النتائج أن cuVS يحقق تحسينات كبيرة في: - زمن البناء: تقليل زمن بناء الفهارس بشكل ملحوظ. - الاستجابة الفورية (latency): تقليل زمن الاستجابة بنسبة تصل إلى 4.7 مرة مقارنة بـHNSW على CPU. - الإنتاجية في المعالجة الجماعية (throughput): تحقيق معدلات تصل إلى ملايين الاستعلامات في الثانية، خاصة في حالات المعالجة الجماعية. هذه التحسينات تأتي من تحسينات في التجميع على GPU (مثل خوارزمية k-means المتوازنة)، ودعم معلمات أوسع (مثل عدد أكبر من المُقسّمات في IVF-PQ)، بالإضافة إلى تحسينات على مستوى الكود. لبدء الاستخدام، يمكن تثبيت Faiss مع دعم cuVS عبر حزمة Conda أو عبر بناء المشروع محليًا. يُوصى باستخدام RMM لإدارة الذاكرة على GPU لتحسين الأداء. تتيح الكودات البسيطة إنشاء فهارس باستخدام IVF-PQ أو CAGRA مباشرة عبر واجهة Faiss، مع إمكانية تحويل فهارس CAGRA إلى HNSW للاستخدام على CPU دون تعقيد. باختصار، يُعد دمج cuVS مع Faiss خطوة مهمة نحو بناء أنظمة بحث أسرع، أكثر كفاءة، وأقل تكلفة، سواء في بيئات الإنتاج أو التجريب. وهو حل مثالي لمن يبحث عن تحسين الأداء في مشاريع مبنية على المتجهات، من تطبيقات الذكاء الاصطناعي إلى أنظمة التوصية.
