GPU_CAGRA
Indeks GPU_CAGRA adalah indeks berbasis grafik yang dioptimalkan untuk GPU. Menggunakan GPU kelas inferensi untuk menjalankan versi GPU Milvus dapat lebih hemat biaya dibandingkan dengan menggunakan GPU kelas pelatihan yang mahal.
Membangun indeks
Untuk membangun indeks GPU_CAGRA pada bidang vektor di Milvus, gunakan metode add_index(), tentukan index_type, metric_type, dan parameter tambahan untuk indeks.
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
)
Dalam konfigurasi ini:
index_type: Jenis indeks yang akan dibangun. Dalam contoh ini, tetapkan nilainya keGPU_CAGRA.metric_type: Metode yang digunakan untuk menghitung jarak antara vektor. Untuk detailnya, lihat Jenis Metrik.params: Opsi konfigurasi tambahan untuk membangun indeks. Untuk mempelajari lebih lanjut parameter pembuatan yang tersedia untuk indeksGPU_CAGRA, lihat Parameter pembuatan indeks.
Setelah parameter indeks dikonfigurasi, Anda dapat membuat indeks dengan menggunakan metode create_index() secara langsung atau mengoper parameter indeks dalam metode create_collection. Untuk detailnya, lihat Membuat Koleksi.
Mencari di indeks
Setelah indeks dibuat dan entitas dimasukkan, Anda dapat melakukan pencarian kemiripan pada indeks.
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
)
Dalam konfigurasi ini:
params: Opsi konfigurasi tambahan untuk pencarian pada indeks. Untuk mempelajari lebih lanjut parameter pencarian yang tersedia untuk indeksGPU_CAGRA, lihat Parameter pencarian khusus indeks.
Mengaktifkan pencarian CPU pada saat pemuatanCompatible with Milvus 2.6.4+
Untuk mengaktifkan pencarian CPU secara dinamis pada saat pemuatan, edit konfigurasi berikut ini di milvus.yaml:
# milvus.yaml
knowhere:
GPU_CAGRA:
load:
adapt_for_cpu: true
Perilaku
Ketika
load.adapt_for_cpudiatur ketrue, Milvus mengubah indeks GPU_CAGRA menjadi format yang dapat dieksekusi CPU (seperti HNSW) selama pemuatan.Operasi pencarian selanjutnya dieksekusi di CPU, meskipun indeks tersebut pada awalnya dibuat untuk GPU.
Jika dihilangkan atau salah, indeks tetap berada di GPU dan pencarian dijalankan di GPU.
Gunakan adaptasi CPU waktu muat di lingkungan hibrida atau lingkungan yang sensitif terhadap biaya di mana sumber daya GPU dicadangkan untuk pembuatan indeks, namun pencarian dijalankan di CPU.
Parameter indeks
Bagian ini memberikan gambaran umum tentang parameter yang digunakan untuk membangun indeks dan melakukan pencarian pada indeks.
Parameter pembuatan indeks
Tabel berikut mencantumkan parameter yang dapat dikonfigurasi di params saat membangun indeks.
Parameter |
Deskripsi |
Nilai Default |
|---|---|---|
|
Mempengaruhi waktu pemanggilan dan pembangunan dengan menentukan derajat grafik sebelum pemangkasan. Nilai yang disarankan adalah |
|
|
Mempengaruhi kinerja pencarian dan pemanggilan dengan mengatur derajat grafik setelah pemangkasan. Perbedaan yang lebih besar antara kedua derajat ini menghasilkan waktu pembangunan yang lebih lama. Nilainya harus lebih kecil dari nilai |
|
|
Memilih algoritma pembuatan graf sebelum pemangkasan. Nilai yang mungkin:
|
|
|
Memutuskan apakah akan menyimpan dataset asli dalam memori GPU. Nilai yang mungkin:
|
|
|
Memutuskan apakah akan menggunakan GPU untuk pembuatan indeks dan CPU untuk pencarian. Mengatur parameter ini ke |
|
Parameter pencarian khusus indeks
Tabel berikut mencantumkan parameter yang dapat dikonfigurasi di search_params.params saat melakukan pencarian pada indeks.
Parameter |
Deskripsi |
Nilai Default |
|---|---|---|
|
Menentukan ukuran hasil perantara yang disimpan selama pencarian. Nilai yang lebih besar dapat meningkatkan daya ingat dengan mengorbankan kinerja pencarian. Setidaknya harus sama dengan nilai top-k (batas) akhir dan biasanya merupakan pangkat 2 (misalnya, 16, 32, 64, 128). |
Kosong |
|
Menentukan jumlah titik masuk ke dalam grafik CAGRA selama pencarian. Meningkatkan nilai ini dapat meningkatkan daya ingat tetapi dapat memengaruhi kinerja pencarian (misalnya 1, 2, 4, 8, 16, 32). |
Kosong |
|
Mengontrol proses iterasi pencarian. Secara default, nilai ini diatur ke |
|
|
Menentukan jumlah thread CUDA yang digunakan untuk menghitung jarak metrik pada GPU. Nilai yang umum adalah pangkat 2 hingga 32 (mis. 2, 4, 8, 16, 32). Hal ini berdampak kecil pada kinerja pencarian. Nilai defaultnya adalah |
|
|
Menentukan pertukaran waktu/akurasi kueri. Nilai Parameter ini wajib diisi jika Anda mengatur |
|