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
)
في هذا التكوين
params: خيارات التكوين الإضافية للبحث على الفهرس. لمعرفة المزيد من معلمات البحث المتوفرة للفهرسGPU_CAGRA، راجع بارامترات البحث الخاصة بالفهرس.
تمكين البحث بوحدة المعالجة المركزية في وقت التحميل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 عند إنشاء فهرس.
المعلمة |
الوصف |
القيمة الافتراضية |
|---|---|---|
|
تؤثر على الاستدعاء ووقت الإنشاء من خلال تحديد درجة الرسم البياني قبل التقليم. القيم الموصى بها هي |
|
|
تؤثر على أداء البحث والاستدعاء من خلال تحديد درجة الرسم البياني بعد التقليم. ينتج عن الفرق الأكبر بين هاتين الدرجتين وقت بناء أطول. يجب أن تكون قيمته أصغر من قيمة |
|
|
يحدد خوارزمية إنشاء الرسم البياني قبل التقليم. القيم الممكنة:
|
|
|
يقرر ما إذا كان سيتم تخزين مجموعة البيانات الأصلية مؤقتًا في ذاكرة وحدة معالجة الرسومات. القيم الممكنة:
|
|
|
يقرر ما إذا كان سيتم استخدام وحدة معالجة الرسومات لبناء الفهرس ووحدة المعالجة المركزية للبحث. يتطلب ضبط هذه المعلمة على |
|
بارامترات البحث الخاصة بالفهرس
يسرد الجدول التالي المعلمات التي يمكن تكوينها في search_params.params عند البحث في الفهرس.
المعلمة |
الوصف |
القيمة الافتراضية |
|---|---|---|
|
تحدد حجم النتائج الوسيطة التي يتم الاحتفاظ بها أثناء البحث. قد تؤدي القيمة الأكبر إلى تحسين الاستدعاء على حساب أداء البحث. يجب أن تكون مساوية على الأقل للقيمة النهائية لأعلى k (الحد الأعلى) وعادةً ما تكون قوة 2 (على سبيل المثال، 16، 32، 64، 128). |
فارغة |
|
يحدد عدد نقاط الدخول إلى الرسم البياني CAGRA أثناء البحث. يمكن أن تؤدي زيادة هذه القيمة إلى تحسين الاستدعاء ولكنها قد تؤثر على أداء البحث (على سبيل المثال 1، 2، 4، 8، 16، 32). |
فارغة |
|
يتحكم في عملية تكرار البحث. بشكل افتراضي، يتم ضبطها على |
|
|
يحدد عدد خيوط CUDA المستخدمة لحساب المسافة المترية على وحدة معالجة الرسومات. القيم الشائعة هي قوة 2 حتى 32 (على سبيل المثال 2، 4، 8، 16، 32). لها تأثير طفيف على أداء البحث. القيمة الافتراضية هي |
|
|
يحدد مفاضلة وقت/دقة الاستعلام. تؤدي القيمة الأعلى هذه المعلمة إلزامية إذا قمت بتعيين |
|