Milvus
Zilliz
الصفحة الرئيسية
  • دليل المستخدم
  • Home
  • Docs
  • دليل المستخدم

  • الفهارس

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

  • GPU_CAGRA

GPU_CAGRA

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

بناء الفهرس

لإنشاء فهرس GPU_CAGRA على حقل متجه في Milvus، استخدم طريقة add_index() ، مع تحديد index_type و metric_type ومعلمات إضافية للفهرس.

from pymilvus import MilvusClient

# Prepare index building params
index_params = MilvusClient.prepare_index_params()

index_params.add_index(
    field_name="your_vector_field_name", # Name of the vector field to be indexed
    index_type="GPU_CAGRA", # Type of the index to create
    index_name="vector_index", # Name of the index to create
    metric_type="L2", # Metric type used to measure similarity
    params={
        "intermediate_graph_degree": 64, # Affects recall and build time by determining the graph’s degree before pruning
        "graph_degree": 32, # Affets search performance and recall by setting the graph’s degree after pruning
        "build_algo": "IVF_PQ", # Selects the graph generation algorithm before pruning
        "cache_dataset_on_device": "true", # Decides whether to cache the original dataset in GPU memory
        "adapt_for_cpu": "false", # Decides whether to use GPU for index-building and CPU for search
    } # Index building params
)

في هذا التكوين

  • index_type: نوع الفهرس المراد إنشاؤه. في هذا المثال، اضبط القيمة على GPU_CAGRA.

  • metric_type: الطريقة المستخدمة لحساب المسافة بين المتجهات. للحصول على التفاصيل، راجع أنواع المقاييس.

  • params: خيارات التكوين الإضافية لبناء الفهرس. لمعرفة المزيد من معلمات البناء المتوفرة للفهرس GPU_CAGRA ، راجع بارامز بناء الفهرس.

بمجرد تكوين معلمات الفهرس، يمكنك إنشاء الفهرس باستخدام الأسلوب create_index() مباشرةً أو تمرير بارامترات الفهرس في الأسلوب create_collection. لمزيد من التفاصيل، راجع إنشاء مجموعة.

البحث في الفهرس

بمجرد إنشاء الفهرس وإدراج الكيانات، يمكنك إجراء عمليات بحث عن التشابه على الفهرس.

search_params = {
    "params": {
        "itopk_size": 16, # Determines the size of intermediate results kept during the search
        "search_width": 8, # Specifies the number of entry points into the CAGRA graph during the search
    }
}

res = MilvusClient.search(
    collection_name="your_collection_name", # Collection name
    anns_field="vector_field", # Vector field name
    data=[[0.1, 0.2, 0.3, 0.4, 0.5]],  # Query vector
    limit=3,  # TopK results to return
    search_params=search_params
)

في هذا التكوين

تمكين البحث بوحدة المعالجة المركزية في وقت التحميلCompatible with Milvus 2.6.4+

لتمكين البحث في وحدة المعالجة المركزية ديناميكيًا في وقت التحميل، قم بتحرير التكوين التالي في milvus.yaml:

# milvus.yaml
knowhere:
  GPU_CAGRA:
    load: 
      adapt_for_cpu: true

السلوك

  • عندما يتم تعيين load.adapt_for_cpu على true ، يقوم Milvus بتحويل فهرس GPU_CAGRA إلى تنسيق قابل للتنفيذ في وحدة المعالجة المركزية (مثل HNSW) أثناء التحميل.

  • يتم تنفيذ عمليات البحث اللاحقة على وحدة المعالجة المركزية، حتى لو تم إنشاء الفهرس في الأصل لوحدة معالجة الرسومات.

  • في حالة الحذف أو الخطأ، يبقى الفهرس على وحدة معالجة الرسومات ويتم تنفيذ عمليات البحث على وحدة معالجة الرسومات.

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

بارامترات الفهرس

يقدم هذا القسم نظرة عامة على المعلمات المستخدمة لبناء الفهرس وإجراء عمليات البحث على الفهرس.

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

يسرد الجدول التالي المعلمات التي يمكن تكوينها في params عند إنشاء فهرس.

المعلمة

الوصف

القيمة الافتراضية

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"

بارامترات البحث الخاصة بالفهرس

يسرد الجدول التالي المعلمات التي يمكن تكوينها في search_params.params عند البحث في الفهرس.

المعلمة

الوصف

القيمة الافتراضية

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]

جرب Managed Milvus مجاناً

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

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

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