K-Means jest prosty. Uczynienie go szybkim na GPU nie jest. Flash-KMeans to implementacja k-means, która uwzględnia IO i przemyśla algorytm w kontekście nowoczesnych wąskich gardeł GPU. Atakując bezpośrednio wąskie gardła pamięci, Flash-KMeans osiąga: - 30x przyspieszenie w porównaniu do cuML - 200x przyspieszenie w porównaniu do FAISS Używając tego samego algorytmu, po prostu zaprojektowanego dla dzisiejszego sprzętu. Na skali miliona, Flash-KMeans może zakończyć iterację k-means w milisekundach. Oto dlaczego to ma znaczenie dzisiaj: K-means zawsze był offline'owym prymitywem. Czymś, co uruchamiasz raz, aby wstępnie przetworzyć dane i przejść dalej. Te przyspieszenia to zmieniają. ↳ Bazy danych wektorowych, takie jak FAISS, używają k-means do budowy indeksów wyszukiwania. Szybszy k-means oznacza, że możesz dynamicznie ponownie indeksować, gdy dane się zmieniają, a nie przetwarzać je w nocy. ↳ Metody kwantyzacji LLM potrzebują k-means do znajdowania optymalnych kodów wagowych, na każdej warstwie, wielokrotnie. To, co zajmowało godziny, teraz może zająć minuty. ↳ Modele MoE potrzebują szybkiego routingu tokenów w czasie wnioskowania. Milisekundowy k-means sprawia, że możliwe jest uruchomienie tego w pętli wnioskowania, a nie tylko w wstępnym przetwarzaniu. 200x w porównaniu do FAISS to liczba, którą warto zapamiętać. FAISS to standard branżowy. Większość produkcyjnych systemów wyszukiwania wektorowego opiera się na nim. Link do artykułu i kodu w następnym tweecie!