🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
  • Home
  • Blog
  • Apa yang dimaksud dengan Ekstensi Vektor Lanjutan?

Apa yang dimaksud dengan Ekstensi Vektor Lanjutan?

  • Engineering
November 10, 2020
milvus

Mesin cerdas yang sadar dan ingin mengambil alih dunia adalah hal yang biasa dalam fiksi ilmiah, tetapi pada kenyataannya komputer modern sangat patuh. Tanpa diberitahu, mereka jarang tahu apa yang harus dilakukan dengan diri mereka sendiri. Komputer melakukan tugas berdasarkan instruksi, atau perintah, yang dikirim dari program ke prosesor. Pada tingkat paling rendah, setiap instruksi adalah urutan angka satu dan nol yang menggambarkan operasi yang harus dijalankan oleh komputer. Biasanya, dalam bahasa rakitan komputer, setiap pernyataan bahasa mesin berhubungan dengan instruksi prosesor. Unit pemrosesan pusat (CPU) bergantung pada instruksi untuk melakukan perhitungan dan sistem kontrol. Selain itu, kinerja CPU sering kali diukur dalam hal kemampuan eksekusi instruksi (misalnya, waktu eksekusi).

Apa yang dimaksud dengan Ekstensi Vektor Lanjutan?

Advanced Vector Extensions (AVX) adalah set instruksi untuk mikroprosesor yang mengandalkan arsitektur set instruksi keluarga x86. Pertama kali diusulkan oleh Intel pada bulan Maret 2008, AVX mendapat dukungan luas tiga tahun kemudian dengan peluncuran Sandy Bridge-mikroarsitektur yang digunakan pada prosesor Intel Core generasi kedua (misalnya, Core i7, i5, i3) dan mikroarsitektur pesaing AMD yang juga diluncurkan pada tahun 2011, yaitu Bulldozer.

AVX memperkenalkan skema pengkodean baru, fitur baru, dan instruksi baru. AVX2 memperluas sebagian besar operasi bilangan bulat hingga 256 bit dan memperkenalkan operasi penggabungan banyak-akumulasi (FMA). AVX-512 memperluas operasi AVX hingga 512-bit menggunakan pengkodean awalan ekstensi vektor yang disempurnakan (EVEX).

Milvus adalah basis data vektor sumber terbuka yang dirancang untuk pencarian kemiripan dan aplikasi kecerdasan buatan (AI). Platform ini mendukung set instruksi AVX-512, yang berarti dapat digunakan dengan semua CPU yang menyertakan instruksi AVX-512. Milvus memiliki aplikasi yang luas yang mencakup sistem rekomendasi, visi komputer, pemrosesan bahasa alami (NLP), dan banyak lagi. Artikel ini menyajikan hasil kinerja dan analisis database vektor Milvus pada AVX-512 dan AVX2.

Performa Milvus pada AVX-512 vs AVX2

Konfigurasi sistem

  • CPU: Intel® Platinum 8163 CPU @ 2.50GHz24 core 48 thread
  • Jumlah CPU: 2
  • Kartu grafis, GeForce RTX 2080Ti 11GB 4 kartu
  • Mem: 768GB
  • Disk: SSD 2TB

Parameter milvus

  • cahce.cahe_size: 25, Ukuran memori CPU yang digunakan untuk menyimpan data dalam cache untuk kueri yang lebih cepat.
  • nlist: 4096
  • nprobe: 128

Catatan: nlist adalah parameter pengindeksan yang dibuat dari klien; nprobe parameter pencarian. Baik IVF_FLAT maupun IVF_SQ8 menggunakan algoritme pengelompokan untuk mempartisi sejumlah besar vektor ke dalam beberapa ember, nlist adalah jumlah total ember yang akan dipartisi selama pengelompokan. Langkah pertama dalam kueri adalah menemukan jumlah ember yang paling dekat dengan vektor target, dan langkah kedua adalah menemukan vektor k teratas dalam ember ini dengan membandingkan jarak vektor. nprobe mengacu pada jumlah ember pada langkah pertama.

Dataset Kumpulan data SIFT10M

Pengujian ini menggunakan dataset SIFT10M, yang berisi satu juta vektor 128 dimensi dan sering digunakan untuk menganalisis kinerja metode pencarian tetangga terdekat yang sesuai. Waktu pencarian 1 teratas untuk nq = [1, 10, 100, 500, 1000] akan dibandingkan antara dua set instruksi.

Hasil berdasarkan jenis indeks vektor

Indeks vektor adalah struktur data yang hemat ruang dan waktu yang dibangun di atas bidang vektor dari sebuah koleksi dengan menggunakan berbagai model matematika. Pengindeksan vektor memungkinkan kumpulan data yang besar dicari secara efisien ketika mencoba mengidentifikasi vektor yang mirip dengan vektor masukan. Karena sifat pengambilan yang akurat yang memakan waktu, sebagian besar jenis indeks yang didukung oleh Milvus menggunakan pencarian tetangga terdekat (ANN).

Untuk pengujian ini, tiga indeks digunakan dengan AVX-512 dan AVX2: IVF_FLAT, IVF_SQ8, dan HNSW.

IVF_FLAT

Inverted file (IVF_FLAT) adalah jenis indeks berdasarkan kuantisasi. Ini adalah indeks IVF yang paling dasar, dan data yang disandikan yang disimpan di setiap unit konsisten dengan data asli. Indeks ini membagi data vektor ke dalam sejumlah unit klaster (nlist), dan kemudian membandingkan jarak antara vektor input target dan pusat setiap klaster. Bergantung pada jumlah klaster yang diatur oleh sistem untuk melakukan kueri (nprobe), hasil pencarian kemiripan dikembalikan berdasarkan perbandingan antara input target dan vektor dalam klaster yang paling mirip saja - secara drastis mengurangi waktu kueri. Dengan menyesuaikan nprobe, keseimbangan ideal antara akurasi dan kecepatan dapat ditemukan untuk skenario tertentu.

Hasil kinerja IVF_FLAT.pngIVF_FLAT.png

IVF_SQ8

IVF_FLAT tidak melakukan kompresi apa pun, sehingga file indeks yang dihasilkannya memiliki ukuran yang kurang lebih sama dengan data vektor mentah yang tidak diindeks. Ketika sumber daya memori disk, CPU, atau GPU terbatas, IVF_SQ8 adalah pilihan yang lebih baik daripada IVF_FLAT. Jenis indeks ini dapat mengonversi setiap dimensi vektor asli dari angka floating-point empat byte menjadi bilangan bulat tidak bertanda tangan satu byte dengan melakukan kuantisasi skalar. Hal ini mengurangi konsumsi memori disk, CPU, dan GPU sebesar 70-75%.

Hasil kinerja IVF_SQ8.pngIVF_SQ8.png

HNSW

Hierarchical Small World Graph (HNSW) adalah algoritma pengindeksan berbasis grafik. Kueri dimulai dari lapisan paling atas dengan menemukan simpul yang paling dekat dengan target, kemudian turun ke lapisan berikutnya untuk putaran pencarian berikutnya. Setelah beberapa kali iterasi, algoritme ini dapat dengan cepat mendekati posisi target.

Hasil kinerja HNSW.pngHNSW.png

Membandingkan indeks vektor

Pengambilan vektor secara konsisten lebih cepat pada set instruksi AVX-512 daripada AVX2. Hal ini karena AVX-512 mendukung komputasi 512-bit, dibandingkan dengan komputasi 256-bit pada AVX2. Secara teoritis, AVX-512 seharusnya dua kali lebih cepat daripada AVX2, namun Milvus melakukan tugas-tugas lain yang memakan waktu selain perhitungan kesamaan vektor. Waktu pengambilan keseluruhan AVX-512 tidak mungkin dua kali lebih singkat daripada AVX2 dalam skenario dunia nyata. comparison.pngcomparison.png

Pengambilan secara signifikan lebih cepat pada indeks HNSW daripada dua indeks lainnya, sementara pengambilan IVF_SQ8 sedikit lebih cepat daripada IVF_FLAT pada kedua set instruksi. Hal ini kemungkinan besar karena IVF_SQ8 hanya membutuhkan 25% dari kebutuhan memori yang dibutuhkan oleh IVF_FLAT. IVF_SQ8 memuat 1 byte untuk setiap dimensi vektor, sedangkan IVF_FLAT memuat 4 byte per dimensi vektor. Waktu yang dibutuhkan untuk perhitungan kemungkinan besar dibatasi oleh bandwidth memori. Hasilnya, IVF_SQ8 tidak hanya membutuhkan lebih sedikit ruang, tetapi juga membutuhkan lebih sedikit waktu untuk mengambil vektor.

Milvus adalah basis data vektor serbaguna dan berkinerja tinggi

Pengujian yang disajikan dalam artikel ini menunjukkan bahwa Milvus menawarkan kinerja yang sangat baik pada set instruksi AVX-512 dan AVX2 dengan menggunakan indeks yang berbeda. Terlepas dari jenis indeksnya, Milvus memiliki performa yang lebih baik pada AVX-512.

Milvus kompatibel dengan berbagai platform deep learning dan digunakan dalam berbagai aplikasi AI. Milvus 2.0, versi desain ulang dari database vektor paling populer di dunia, dirilis di bawah lisensi sumber terbuka pada Juli 2021. Untuk informasi lebih lanjut tentang proyek ini, lihat sumber-sumber berikut:

  • Temukan atau berkontribusi ke Milvus di GitHub.
  • Berinteraksi dengan komunitas melalui Slack.
  • Terhubung dengan kami di Twitter.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Terus Baca