Laporan Uji Coba Benchmark Milvus 2.2
Laporan ini menunjukkan hasil pengujian utama Milvus 2.2.0. Laporan ini bertujuan untuk memberikan gambaran kinerja pencarian Milvus 2.2.0, terutama dalam kemampuan untuk meningkatkan dan mengurangi.

Kami baru saja menjalankan benchmark terhadap Milvus 2.2.3 dan mendapatkan beberapa temuan penting berikut ini:
- Pengurangan latensi pencarian sebesar 2,5x lipat
- Peningkatan 4,5x dalam QPS
- Pencarian kemiripan skala miliaran dengan sedikit penurunan kinerja
- Skalabilitas linier saat menggunakan beberapa replika
Untuk detailnya, silakan merujuk ke whitepaper ini dan kode uji benchmark terkait.
Ringkasan
- Dibandingkan dengan Milvus 2.1, QPS Milvus 2.2.0 meningkat lebih dari 48% dalam mode cluster dan lebih dari 75% dalam mode mandiri.
- Milvus 2.2.0 memiliki kemampuan yang mengesankan untuk meningkatkan dan menurunkan skala:
- QPS meningkat secara linear ketika memperluas core CPU dari 8 menjadi 32.
- QPS meningkat secara linear ketika memperluas replika Querynode dari 1 hingga 8.
Terminologi
Klik untuk melihat detail istilah yang digunakan dalam pengujian
Istilah
Deskripsi
nq
Jumlah vektor yang akan dicari dalam satu permintaan pencarian
topk
Jumlah vektor terdekat yang akan diambil untuk setiap vektor (dalam nq) dalam permintaan pencarian
ef
Parameter pencarian khusus untuk indeks HNSW
RT
Waktu respons dari mengirim permintaan hingga menerima respons
QPS
Jumlah permintaan pencarian yang berhasil diproses per detik
Lingkungan pengujian
Semua pengujian dilakukan di bawah lingkungan berikut ini.
Lingkungan perangkat keras
Perangkat keras | Spesifikasi |
---|---|
CPU | Intel® Xeon® Gold 6226R CPU @ 2,90GHz |
Memori | RDIMM 16 * \ 32 GB, 3200 MT/s |
SSD | SATA 6 Gbps |
Lingkungan perangkat lunak
Perangkat lunak | Versi |
---|---|
Milvus | v2.2.0 |
Milvus GO SDK | v2.2.0 |
Skema penyebaran
- Instance Milvus (mandiri atau klaster) digunakan melalui Helm pada klaster Kubernetes berdasarkan mesin fisik atau virtual.
- Pengujian yang berbeda hanya bervariasi dalam jumlah inti CPU, ukuran memori, dan jumlah replika (node pekerja), yang hanya berlaku untuk cluster Milvus.
- Konfigurasi yang tidak ditentukan identik dengan konfigurasi default.
- Ketergantungan Milvus (MinIO, Pulsar, dan Etcd) menyimpan data pada SSD lokal di setiap node.
- Permintaan pencarian dikirim ke instance Milvus melalui Milvus GO SDK.
Kumpulan data
Pengujian ini menggunakan dataset sumber terbuka SIFT (128 dimensi) dari ANN-Benchmarks.
Pipeline pengujian
- Mulai instans Milvus dengan Helm dengan konfigurasi server masing-masing seperti yang tercantum dalam setiap pengujian.
- Hubungkan ke instance Milvus melalui Milvus GO SDK dan dapatkan hasil pengujian yang sesuai.
- Buat sebuah koleksi.
- Masukkan 1 juta vektor SIFT. Buat indeks HNSW dan konfigurasikan parameter indeks dengan mengatur
M
ke8
danefConstruction
ke200
. - Memuat koleksi.
- Cari dengan nomor konkuren yang berbeda dengan parameter pencarian
nq=1, topk=1, ef=64
, durasi setiap konkuren minimal 1 jam.
Hasil pengujian
Milvus 2.2.0 vs. Milvus 2.1.0
Cluster
Konfigurasi server (cluster)
yaml queryNode: replicas: 1 resources: limits: cpu: "12.0" memory: 8Gi requests: cpu: "12.0" memory: 8Gi
Kinerja pencarian
Milvus | QPS | RT (TP99) / ms | RT (TP50) / ms | gagal / s |
---|---|---|---|---|
2.1.0 | 6904 | 59 | 28 | 0 |
2.2.0 | 10248 | 63 | 24 | 0 |
Performa pencarian cluster
Mandiri
Konfigurasi server (mandiri)
yaml standalone: replicas: 1 resources: limits: cpu: "12.0" memory: 16Gi requests: cpu: "12.0" memory: 16Gi
Kinerja pencarian
Milvus | QPS | RT (TP99) / ms | RT (TP50) / ms | gagal / s |
---|---|---|---|---|
2.1.0 | 4287 | 104 | 76 | 0 |
2.2.0 | 7522 | 127 | 79 | 0 |
Performa pencarian mandiri
Peningkatan Skala Milvus 2.2.0
Perluas inti CPU dalam satu Querynode untuk memeriksa kemampuan peningkatan skala.
Konfigurasi server (cluster)
yaml queryNode: replicas: 1 resources: limits: cpu: "8.0" /"12.0" /"16.0" /"32.0" memory: 8Gi requests: cpu: "8.0" /"12.0" /"16.0" /"32.0" memory: 8Gi
Performa Pencarian
Inti CPU | Jumlah bersamaan | QPS | RT (TP99) / ms | RT (TP50) / ms | gagal / s |
---|---|---|---|---|---|
8 | 500 | 7153 | 127 | 83 | 0 |
12 | 300 | 10248 | 63 | 24 | 0 |
16 | 600 | 14135 | 85 | 42 | 0 |
32 | 600 | 20281 | 63 | 28 | 0 |
Performa pencarian berdasarkan inti CPU Querynode
Milvus 2.2.0 Peningkatan skala
Perluas lebih banyak replika dengan lebih banyak Querynode untuk memeriksa kemampuan untuk melakukan scale-out.
Catatan: jumlah Querynode sama dengan replica_number
saat memuat koleksi.
Konfigurasi server (cluster)
yaml queryNode: replicas: 1 / 2 / 4 / 8 resources: limits: cpu: "8.0" memory: 8Gi requests: cpu: "8.0" memory: 8Gi
Replika | Jumlah Serentak | QPS | RT (TP99) / ms | RT (TP50) / ms | gagal / s |
---|---|---|---|---|---|
1 | 500 | 7153 | 127 | 83 | 0 |
2 | 500 | 15903 | 105 | 27 | 0 |
4 | 800 | 19281 | 109 | 40 | 0 |
8 | 1200 | 30655 | 93 | 38 | 0 |
Performa pencarian dengan replika Querynode
Apa selanjutnya
- Coba lakukan pengujian benchmark Milvus 2.2.0 secara mandiri dengan mengacu pada panduan ini, kecuali Anda sebaiknya menggunakan Milvus 2.2 dan Pymilvus 2.2 dalam panduan ini.