Forum Washington Maria Strona Główna Washington Maria
Maria Washington
 
 POMOCPOMOC   FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Przyspieszanie wyszukiwania wektorowego: NVIDIA cuVS IVF-PQ

 
Napisz nowy temat   Odpowiedz do tematu    Forum Washington Maria Strona Główna -> cheworkcertu
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
ayshakhatun9365



Dołączył: 12 Lis 2024
Posty: 1

PostWysłany: Wto Lis 12, 2024 04:59    Temat postu: Przyspieszanie wyszukiwania wektorowego: NVIDIA cuVS IVF-PQ Odpowiedz z cytatem

W pierwszej części serii przedstawiliśmy przegląd algorytmu IVF-PQ i wyjaśniliśmy, w jaki sposób opiera się on na algorytmie IVF-Flat, wykorzystując technikę Product Quantization (PQ) w celu kompresji indeksu i obsługi większych zbiorów danych.

W tej drugiej części posta IVF-PQ omawiamy praktyczne aspekty dostrajania wydajności IVF-PQ. Warto ponownie zauważyć, że IVF-PQ wykorzystuje stratną kompresję, która wpływa na jakość wyników (mierzoną w kategoriach przywoływania ). Badamy hiperparametry algorytmu, które kontrolują wykorzystanie pamięci i wydajność wyszukiwania, aby dostroić się do szerokiego zakresu pożądanych poziomów przywoływania. Omawiamy również technikę ponownego rankingu udoskonalenia, która może być ważnym krokiem w celu osiągnięcia wysokiego przywoływania przy użyciu kompresji PQ, szczególnie podczas pracy z zbiorami danych o skali miliarda.

Wszystkie parametry kompilacji indeksu i wyszukiwania opisane w tym wpisie na blogu są opisane w dokumentacji referencyjnej API cuVS ( C, C++, Python i Rust ). Pomocny jest również notatnik samouczka cuVS IVF-PQ i projekty , aby zacząć.

Parametry dostrajania do budowy indeksu
Ponieważ IVF-PQ należy do tej samej rodziny metod IVF co IVF-Flat, niektóre parametry są współdzielone, takie jak indeksowanie na poziomie zgrubnym i hiperparametry wyszukiwania. Zapoznaj się z naszym wcześniejszym wpisem na blogu na temat IVF-Flat , aby uzyskać wprowadzenie i przewodnik po dostrajaniu tych parametrów. Chociaż te parametry mają takie same nazwy, istnieje kilka szczegółów specyficznych dla IVF-PQ, które warto wziąć pod uwagę podczas ich ustawiania. Oprócz tych współdzielonych parametrów IVF-PQ dodaje kilka dodatkowych parametrów, które kontrolują kompresję.

n_listy
Parametr n_listsma takie samo znaczenie jak w IVF-Flat: liczba partycji (odwróconych list), w których ma być klasteryzowany zbiór danych wejściowych. Podczas wyszukiwania algorytm skanuje niektóre listy. Zarówno liczba przebadanych list, jak i ich rozmiary wpływają na wydajność.

Rysunek 1 przedstawia krzywe QPS/odwołania dla zestawu danych DEEP-100M dla szerokiego zakresu partycji ( n_lists). Każda krzywa reprezentuje liczbę zapytań na sekcję (QPS) i wartości odwołania przy różnych parametrach wyszukiwania. W tym przypadku zmieniamy liczbę list sondowanych w zakresie od 10 do 5000. Zazwyczaj decyduje się z wyprzedzeniem o pożądanym poziomie odwołania i szuka kombinacji hiperparametrów, która daje najwyższy QPS. Często nie ma pojedynczej kombinacji parametrów, która daje najlepszy QPS dla wszystkich poziomów odwołania. Krzywe QPS/odwołania są dobrym sposobem na wizualizację kompromisu i wybranie odpowiedniej konfiguracji dla pożądanego zakresu odwołania.

wykresy pokazujące krzywe QPS/recall dla kilku wartości n_lists.
Rysunek 1. Wpływ n_listsna kompromis QPS/recall.
W zależności od pożądanego przywołania, modele z klastrami 10K i 20K mogą być najbardziej pożądane, ponieważ mają najlepszą przepustowość dla szerokiego zakresu wartości przywołania. n_lists = 5KKrzywa ma znacznie niższą przepustowość niż inne ustawienia w całym zakresie przywołania, a krzywe 200K i 500K mają również bardzo niską przepustowość w porównaniu z innymi.

Powyższy eksperyment sugeruje, że wartości n_listsw zakresie od 10 tys. do 50 tys. prawdopodobnie zapewnią dobrą wydajność na wszystkich poziomach przywoływania, choć dobre ustawienie tego parametru często będzie zależało od zestawu danych.

pq_dim, pq_bity
Kompresję kontroluje się głównie za pomocą pq_dimparametru. Często dobrą techniką dostrajania tego parametru jest rozpoczęcie od jednej czwartej liczby obiektów w zestawie danych i stopniowe jej zwiększanie.

Ciekawostką dotyczącą wyszukiwania IVF-PQ jest to, że jego główny komponent, krok dokładnego wyszukiwania, nie zależy od pierwotnej wymiarowości danych. Z jednej strony skanuje skwantowane, zakodowane wektory bazy danych, które zależą tylko od pq_bitsi pq_dim. Z drugiej strony wektory wyszukiwania są przekształcane do pq_dim·pq_lenreprezentacji przy użyciu stosunkowo taniej operacji mnożenia macierzy (GEMM) na wczesnym etapie procesu wyszukiwania. Pozwala nam to na swobodne eksperymentowanie z pq_dimzakresem parametrów. Można również ustawić pq_dimwartość większą niż dim, chociaż prawdopodobnie nie poprawi to wywołania.

Wykresy kodowane kolorami pokazujące krzywe QPS/recall dla kilku wartości pq_dim. Wszystkie linie są dość blisko siebie i opadają w prawo.
Rysunek 2. Wpływ pq_dimna kompromis QPS/recall. Zwróć uwagę na skalę logarytmiczną osi pionowej.
Rysunek 2 pokazuje efekty ustawienia zakresu pq_dimwartości dla modelu IVF-PQ na 10-milionowej podpróbce wektorowej zbioru danych DEEP-1B. Ten zbiór danych ma tylko 96 wymiarów, a gdy pq_dimjest ustawiony na wartość większą niż liczba wymiarów, przeprowadzana jest losowa transformacja w celu zwiększenia przestrzeni cech. Należy zauważyć, że w praktyce nie ma to większego sensu, poza testowaniem QPS modelu, ale w tym eksperymencie zdecydowaliśmy się nadal używać zbioru danych DEEP lub zachować spójność z resztą tego wpisu na blogu.

Rysunek 2 ilustruje znaczące spadki QPS, które występują z kilku powodów i nie można ich wyjaśnić wyłącznie rosnącą przepustowością. Przyjrzymy się bliżej krzywym w miarę pq_dimwzrostu.

Po pierwsze, Lista e-maili krajowych zmiana pq_dimz 128 na 256 lub 384 skutecznie podwaja lub potraja ilość pracy obliczeniowej i rozmiar wymaganej pamięci współdzielonej na blok CUDA . Prawdopodobnie prowadzi to do mniejszego zajętości GPU, a w rezultacie QPS spada o współczynnik trzy lub więcej.

Po drugie, zmiana pq_dimna 512 lub więcej prawdopodobnie uruchamia umieszczenie tabeli wyszukiwania ( LUT ) w pamięci globalnej. W przeciwnym razie nie ma wystarczającej ilości pamięci współdzielonej na blok CUDA, aby uruchomić jądro. Prowadzi to do kolejnego 4-krotnego spowolnienia.

Parametrem pq_bitsjest liczba bitów używanych w każdym indywidualnym kodzie PQ. Steruje on rozmiarem książki kodowej ( ), czyli liczbą możliwych wartości, jakie może mieć każdy kod. IVF-PQ obsługuje rozmiary książki kodowej od 16 do 256, co oznacza, że ​​może mieścić się w zakresie .2pq_bitspq_bits[4, 8]

pq_bitsma również wpływ na kompresję. Na przykład indeks z pq_bits = 4będzie dwa razy mniejszy niż z pq_bits = 8. Chociaż znacznie silniejszy pq_bits wpływa na rozmiar LUT, ponieważ jest proporcjonalny do . Ma to drastyczny wpływ na przywołanie. Aby uzyskać więcej szczegółów na temat wzoru, zobacz sekcję Kwantyzacja produktu w pierwszej części tego posta. 2pq_bitslut_size

Kilka rzeczy, które warto wziąć pod uwagę pq_bits:

Należy pamiętać, że ( pq_dim * pq_bits) należy podzielić równomiernie przez 8. Zasadniczo przechowywanie pq_dimpotęg liczby dwa poprawia wyrównanie danych, a tym samym wydajność wyszukiwania.
Użycie pq_dim * pq_bits >= 128i podzielenie równania ( pq_dim * pq_bits) przez 32 maksymalizuje wykorzystanie przepustowości pamięci GPU.
Ogólnie rzecz biorąc, dobrym punktem wyjścia jest ustalenie wartości pq_bits = 8i jej zmniejszenie.
Stratę wynikającą z mniejszego rozmiaru pq_bitsmożna zrekompensować, wykonując krok udoskonalania (więcej na ten temat w części Udoskonalanie ).
W przypadku danych o wyjątkowo dużej liczbie wymiarów (więcej niż kilkaset wymiarów) pq_dimsniższe pq_bitsustawienie może przynieść drastyczne przyspieszenie wyszukiwania, ponieważ dane LUTmożna zmniejszyć na tyle, aby zmieściły się w pamięci współdzielonej.
Niewielka pq_bitswartość może zmniejszyć konflikty współdzielonych banków pamięci , co może poprawić QPS.
Alternatywnie, jak zobaczymy później w tym blogu , ustawienie parametru wyszukiwania lut_dtypena liczbę zmiennoprzecinkową o obniżonej precyzji ( fp8) może również wystarczyć, aby zachować LUTpamięć współdzieloną.
rodzaj_książki_kodowej
Parametr codebook_kindokreśla sposób konstruowania książek kodowych dla kwantyzatora drugiego poziomu. Kwantyzatory drugiego poziomu są trenowane albo dla każdej podprzestrzeni, albo dla każdego klastra:



subspacetworzy pq_dimkwantyzatory drugiego poziomu, po jednym dla każdego wycinka danych wzdłuż przestrzeni cech (kolumn).
clustertworzy n_listskwantyzatory drugiego poziomu, po jednym dla każdego klastra pierwszego poziomu.
W obu ustawieniach centroidy są znajdowane za pomocą klastrowania k-means, interpretując dane jako mające pq_lenwymiary. Nie ma definitywnego sposobu, aby z góry określić, która z dwóch opcji przyniesie lepszą wydajność dla konkretnego przypadku użycia, ale poniższe wytyczne mogą pomóc:

Wytrenowanie książki kodowej na klaster zajmuje zazwyczaj więcej czasu i n_listsjest zazwyczaj znacznie wyższe niż pq_dim(więcej książek kodowych do wytrenowania).
Wyszukiwanie z kodownikiem per-cluster zwykle lepiej wykorzystuje pamięć współdzieloną GPU niż z kodownikiem per-subspace. Może to skutkować szybszym wyszukiwaniem, gdy LUT jest duży i zajmuje znaczną część pamięci współdzielonej GPU.
W praktyce książka kodowa dla każdej podprzestrzeni zapewnia nieco lepsze zapamiętanie.
kmeans_n_iters, kmeans_trainset_fraction
Te parametry są przekazywane do algorytmu k-means zarówno w IVF-Flat, jak i IVF-PQ w celu grupowania danych podczas tworzenia indeksu. Ponadto kmeans_n_iterssą przekazywane do tego samego algorytmu k-means podczas konstruowania książek kodowych. W praktyce odkryliśmy, że kmeans_n_itersparametr rzadko wymaga dostosowania.
_________________
Lista e-maili krajowych
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
Reklama






Wysłany: Wto Lis 12, 2024 04:59    Temat postu:

Powrót do góry
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Washington Maria Strona Główna -> cheworkcertu Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

Washington Maria  

To forum działa w systemie phorum.pl
Masz pomysł na forum? Załóż forum za darmo!
Forum narusza regulamin? Powiadom nas o tym!
Powered by Active24, phpBB © phpBB Group