🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
الصفحة الرئيسية
  • المفاهيم
  • Home
  • Docs
  • المفاهيم

  • مؤشر المتجهات

  • فهرس وحدة معالجة الرسومات

فهرس وحدة معالجة الرسومات

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

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

performance الأداء

يساهم فريق Nvidia RAPIDS في دعم وحدة معالجة الرسومات في ميلفوس. فيما يلي أنواع فهرس GPU المدعومة حاليًا من قبل Milvus.

GPU_CAGRA

GPU_CAGRA هو فهرس قائم على الرسم البياني مُحسَّن لوحدات معالجة الرسوم البيانية، ويمكن أن يكون استخدام وحدات معالجة الرسومات الاستدلالية لتشغيل إصدار Milvus GPU أكثر فعالية من حيث التكلفة مقارنةً باستخدام وحدات معالجة الرسومات باهظة الثمن من فئة التدريب.

  • معلمات بناء الفهرس

    المعلمةالوصفالقيمة الافتراضية
    intermediate_graph_degreeتؤثر على الاستدعاء ووقت الإنشاء من خلال تحديد درجة الرسم البياني قبل التقليم. القيم الموصى بها هي 32 أو 64.128
    graph_degreeتؤثر على أداء البحث والاستدعاء من خلال تحديد درجة الرسم البياني بعد التقليم. ينتج عن الفرق الأكبر بين هاتين الدرجتين وقت بناء أطول. يجب أن تكون قيمته أصغر من قيمة intermediate_graph_degree.64
    build_algoيحدد خوارزمية إنشاء الرسم البياني قبل التقليم. القيم الممكنة:
    IVF_PQ: توفر جودة أعلى ولكن وقت بناء أبطأ.
    NN_DESCENT: يوفر إنشاء أسرع مع احتمال استرجاع أقل.
    IVF_PQ
    cache_dataset_on_deviceيقرر ما إذا كان سيتم تخزين مجموعة البيانات الأصلية مؤقتًا في ذاكرة وحدة معالجة الرسومات. القيم الممكنة:
    “true”: تخزين مجموعة البيانات الأصلية مؤقتًا لتحسين الاستدعاء من خلال تحسين نتائج البحث.
    “false”: عدم تخزين مجموعة البيانات الأصلية مؤقتًا لحفظ ذاكرة وحدة معالجة الرسومات.
    “false”
    adapt_for_cpuيقرر ما إذا كان سيتم استخدام وحدة معالجة الرسومات لإنشاء الفهرس ووحدة المعالجة المركزية للبحث.
    يتطلب ضبط هذه المعلمة على true وجود المعلمة ef في طلبات البحث.
    “false”
  • معلمات البحث

    المعلمةالوصفالقيمة الافتراضية
    itopk_sizeتحدد حجم النتائج الوسيطة التي يتم الاحتفاظ بها أثناء البحث. قد تؤدي القيمة الأكبر إلى تحسين الاستدعاء على حساب أداء البحث. يجب أن تكون مساوية على الأقل للقيمة النهائية لأعلى k (الحد الأعلى) وعادةً ما تكون قوة 2 (على سبيل المثال، 16، 32، 64، 128).فارغة
    search_widthيحدد عدد نقاط الدخول إلى الرسم البياني CAGRA أثناء البحث. يمكن أن تؤدي زيادة هذه القيمة إلى تحسين الاستدعاء ولكنها قد تؤثر على أداء البحث (على سبيل المثال 1، 2، 4، 8، 16، 32).فارغة
    min_iterations / max_iterationsيتحكم في عملية تكرار البحث. بشكل افتراضي، يتم ضبطها على 0 ، وتحدد CAGRA تلقائيًا عدد التكرارات بناءً على itopk_size و search_width. يمكن أن يساعد ضبط هذه القيم يدويًا في تحقيق التوازن بين الأداء والدقة.0
    team_sizeيحدد عدد خيوط CUDA المستخدمة لحساب المسافة المترية على وحدة معالجة الرسومات. القيم الشائعة هي قوة 2 حتى 32 (على سبيل المثال 2، 4، 8، 16، 32). لها تأثير طفيف على أداء البحث. القيمة الافتراضية هي 0 ، حيث يقوم Milvus تلقائيًا بتحديد team_size بناءً على بُعد المتجه.0
    efيحدد مفاضلة وقت/دقة الاستعلام. تؤدي القيمة الأعلى ef إلى بحث أكثر دقة ولكن أبطأ.
    هذه المعلمة إلزامية إذا قمت بتعيين adapt_for_cpu على true عند إنشاء الفهرس.
    [top_k, int_max]
  • حدود البحث

    المعلمةالنطاق
    limit (أعلى-ك)<= 1024
    limit (أعلى-ك)<=ماكس((itopk_size + 31)// 32، search_width) * 32

GPU_IVF_FLAT

على غرار IVF_FLAT، يقسم GPU_IVF_FLAT أيضًا بيانات المتجه إلى nlist وحدة عنقودية، ثم يقارن المسافات بين متجه الإدخال الهدف ومركز كل مجموعة. اعتمادًا على عدد المجموعات التي تم تعيين النظام للاستعلام عنها (nprobe)، يتم إرجاع نتائج بحث التشابه بناءً على المقارنات بين المدخلات المستهدفة والمتجهات في المجموعة (المجموعات) الأكثر تشابهًا فقط - مما يقلل وقت الاستعلام بشكل كبير.

من خلال ضبط nprobe ، يمكن إيجاد توازن مثالي بين الدقة والسرعة لسيناريو معين. توضح نتائج اختبار أداء IVF_FLAT أن وقت الاستعلام يزداد بشكل حاد مع زيادة عدد متجهات الإدخال المستهدفة (nq)، وعدد المجموعات المطلوب البحث عنها (nprobe).

يعد GPU_IVF_FLAT هو فهرس IVF الأساسي، وتكون البيانات المشفرة المخزنة في كل وحدة متسقة مع البيانات الأصلية.

عند إجراء عمليات البحث، لاحظ أنه يمكنك تعيين أعلى K حتى 256 لأي بحث مقابل مجموعة مفهرسة GPU_IVF_FLAT.

  • معلمات بناء الفهرس

    المعلمةالوصفالنطاقالقيمة الافتراضية
    nlistعدد وحدات المجموعة[1, 65536]128
    cache_dataset_on_deviceيقرر ما إذا كان سيتم تخزين مجموعة البيانات الأصلية مؤقتًا في ذاكرة وحدة معالجة الرسومات. القيم الممكنة:
    “true”: تخزين مجموعة البيانات الأصلية مؤقتًا لتحسين الاستدعاء من خلال تحسين نتائج البحث.
    “false”: عدم تخزين مجموعة البيانات الأصلية مؤقتًا لحفظ ذاكرة وحدة معالجة الرسومات.
    "true" "flase""false"
  • معلمات البحث

    • بحث شائع

      المعلمةالوصفالنطاقالقيمة الافتراضية
      nprobeعدد الوحدات المطلوب الاستعلام عنها[1، ن ليست]8
  • حدود البحث

    المعلمةالنطاق
    limit (أعلى-ك)<= 2048

GPU_IVF_PQ

PQ (التكميم الكمي للمنتج) تحلل بشكل موحد الفضاء المتجه الأصلي عالي الأبعاد إلى نواتج ديكارتية من m مساحات متجهة منخفضة الأبعاد، ثم تقوم بتكميم المساحات المتجهة منخفضة الأبعاد المتحللة. وبدلاً من حساب المسافات بين المتجه الهدف ومركز جميع الوحدات، يتيح التكميم الكمي للمنتج حساب المسافات بين المتجه الهدف ومركز التجميع لكل فضاء منخفض الأبعاد ويقلل بشكل كبير من تعقيد الوقت وتعقيد المساحة للخوارزمية.

يقوم IVF_PQ بإجراء تجميع فهرس IVF قبل تكميم حاصل ضرب المتجهات. ملف الفهرس الخاص به أصغر من IVF_SQ8، لكنه يتسبب أيضًا في فقدان الدقة أثناء البحث عن المتجهات.

تختلف معلمات بناء الفهرس ومعلمات البحث باختلاف توزيع Milvus. حدد توزيع ميلفوس الخاص بك أولاً.

عند إجراء عمليات البحث، لاحظ أنه يمكنك تعيين أعلى K حتى 8192 لأي بحث مقابل مجموعة مفهرسة GPU_IVF_FLAT.

  • معلمات بناء الفهرس

    المعلمةالوصفالنطاقالقيمة الافتراضية
    nlistعدد وحدات المجموعة[1, 65536]128
    mعدد عوامل تكميم المنتج,dim mod m or = 00
    nbits[اختياري] عدد البتات التي يتم تخزين كل متجه منخفض الأبعاد فيها.[1, 16]8
    cache_dataset_on_deviceيقرر ما إذا كان سيتم تخزين مجموعة البيانات الأصلية مؤقتًا في ذاكرة وحدة معالجة الرسومات. القيم الممكنة:
    “true”: تخزين مجموعة البيانات الأصلية مؤقتًا لتحسين الاستدعاء من خلال تحسين نتائج البحث.
    “false”: عدم تخزين مجموعة البيانات الأصلية مؤقتًا لحفظ ذاكرة وحدة معالجة الرسومات.
    "true" "false""false"
  • معلمات البحث

    • بحث شائع

      المعلمةالوصفالنطاقالقيمة الافتراضية
      nprobeعدد الوحدات المطلوب الاستعلام عنها[1، ن ليست]8
  • حدود البحث

    المعلمةالنطاق
    limit (أعلى-ك)<= 1024

gpu_brute_FORCE

تم تصميم GPU_BRUTE_FORCE للحالات التي يكون فيها الاستدعاء العالي للغاية أمرًا بالغ الأهمية، مما يضمن استدعاء 1 من خلال مقارنة كل استعلام مع جميع المتجهات في مجموعة البيانات. يتطلب فقط نوع المقياس (metric_type) و top-k (limit) كمعلمات بناء الفهرس والبحث.

بالنسبة إلى GPU_BRUTE_FORCE، لا يلزم إضافة معلمات بناء الفهرس أو معلمات البحث.

الخلاصة

في الوقت الحالي، يقوم Milvus بتحميل جميع الفهارس في ذاكرة وحدة معالجة الرسومات لعمليات بحث فعالة. يعتمد مقدار البيانات التي يمكن تحميلها على حجم ذاكرة وحدة معالجة الرسومات:

  • GPU_CAGRA: يبلغ استخدام الذاكرة حوالي 1.8 ضعف استخدام البيانات المتجهة الأصلية.
  • GPU_IVF_FLAT و GPU_BRUTE_FORCE: يتطلب ذاكرة مساوية لحجم البيانات الأصلية.
  • GPU_IVF_PQ: يستخدم بصمة ذاكرة أصغر، والتي تعتمد على إعدادات معلمة الضغط.

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟