GPU_CAGRA
مؤشر GPU_CAGRA هو مؤشر قائم على الرسوم البيانية ومُحسّن للاستخدام مع وحدات معالجة الرسومات (GPU). قد يكون استخدام وحدات معالجة الرسومات المخصصة للاستدلال لتشغيل إصدار Milvus المخصص لوحدات معالجة الرسومات أكثر فعالية من حيث التكلفة مقارنة باستخدام وحدات معالجة الرسومات المخصصة للتدريب والتي تكون باهظة الثمن.
إنشاء الفهرس
لبناء فهرس " 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، راجع معلمات البحث الخاصة بالفهرس.
تمكين البحث باستخدام وحدة المعالجة المركزية (CPU) عند التحميلCompatible with Milvus 2.6.4+
لتمكين البحث باستخدام وحدة المعالجة المركزية (CPU) ديناميكيًا عند التحميل، قم بتحرير التكوين التالي في milvus.yaml:
# milvus.yaml
knowhere:
GPU_CAGRA:
load:
adapt_for_cpu: true
السلوك
عندما يتم تعيين
load.adapt_for_cpuعلىtrue، يقوم Milvus بتحويل فهرس GPU_CAGRA إلى تنسيق قابل للتنفيذ على وحدة المعالجة المركزية (CPU) (شبيه بـ HNSW) أثناء التحميل.يتم تنفيذ عمليات البحث اللاحقة على وحدة المعالجة المركزية (CPU)، حتى لو كان الفهرس قد تم إنشاؤه في الأصل لوحدة معالجة الرسومات (GPU).
إذا تم حذفه أو تم تعيينه على "false"، يبقى الفهرس على وحدة معالجة الرسومات (GPU) ويتم تشغيل عمليات البحث على وحدة معالجة الرسومات (GPU).
استخدم التكييف مع وحدة المعالجة المركزية (CPU) في وقت التحميل في البيئات المختلطة أو الحساسة من حيث التكلفة، حيث يتم حجز موارد وحدة معالجة الرسومات (GPU) لإنشاء الفهرس، لكن عمليات البحث تُجرى على وحدة المعالجة المركزية (CPU).
معلمات الفهرس
يقدم هذا القسم نظرة عامة على المعلمات المستخدمة لإنشاء الفهرس وإجراء عمليات البحث عليه.
معلمات إنشاء الفهرس
يسرد الجدول التالي المعلمات التي يمكن تكوينها في params عند إنشاء الفهرس.
المعلمة |
الوصف |
القيمة الافتراضية |
|---|---|---|
|
يؤثر على معدل الاسترجاع ووقت الإنشاء من خلال تحديد درجة الرسم البياني قبل عملية التقليم. القيم الموصى بها هي |
|
|
يؤثر على أداء البحث ومعدل الاسترجاع من خلال تعيين درجة الرسم البياني بعد عملية التقليم. ويؤدي الفرق الكبير بين هاتين الدرجتين إلى زيادة وقت الإنشاء. ويجب أن تكون قيمته أصغر من قيمة |
|
|
يحدد خوارزمية إنشاء الرسم البياني قبل عملية التقليم. القيم الممكنة:
|
|
|
يحدد ما إذا كان سيتم تخزين مجموعة البيانات الأصلية مؤقتًا في ذاكرة وحدة معالجة الرسومات (GPU). القيم الممكنة:
|
|
|
يحدد ما إذا كان سيتم استخدام وحدة معالجة الرسومات (GPU) لإنشاء الفهرس ووحدة المعالجة المركزية (CPU) للبحث. يتطلب تعيين هذه المعلمة إلى " |
|
معلمات البحث الخاصة بالفهرس
يسرد الجدول التالي المعلمات التي يمكن تكوينها في search_params.params عند البحث في الفهرس.
المعلمة |
الوصف |
القيمة الافتراضية |
|---|---|---|
|
يحدد حجم النتائج الوسيطة التي يتم الاحتفاظ بها أثناء البحث. قد تؤدي القيمة الأكبر إلى تحسين معدل الاسترجاع على حساب أداء البحث. يجب أن تكون القيمة مساوية على الأقل للقيمة النهائية لـ top-k (الحد)، وعادةً ما تكون من قوى العدد 2 (على سبيل المثال، 16، 32، 64، 128). |
فارغ |
|
يحدد عدد نقاط الدخول إلى مخطط CAGRA أثناء البحث. يمكن أن تؤدي زيادة هذه القيمة إلى تحسين معدل الاسترجاع، ولكنها قد تؤثر على أداء البحث (على سبيل المثال: 1، 2، 4، 8، 16، 32). |
فارغ |
|
يتحكم في مقدار العينات العشوائية التي يقوم بها CAGRA عند اختيار نقاط الدخول الأولية للبحث في الرسم البياني. تمنح القيمة الأكبر CAGRA فرصًا أكثر للبدء من نقاط أفضل، مما يحسن الاسترجاع على حساب زيادة زمن استجابة البحث. يجب أن تكون القيمة على الأقل |
|
|
يتحكم في عملية تكرار البحث. بشكل افتراضي، يتم تعيينها على |
|
|
يحدد عدد خيوط CUDA المستخدمة لحساب المسافة المترية على وحدة معالجة الرسومات (GPU). القيم الشائعة هي قوى العدد 2 حتى 32 (على سبيل المثال: 2، 4، 8، 16، 32). وله تأثير طفيف على أداء البحث. القيمة الافتراضية هي |
|
|
يحدد التوازن بين وقت الاستعلام ودقته. تؤدي القيمة الأعلى لـ هذه المعلمة إلزامية إذا قمت بتعيين |
|