K-Means est simple. Le rendre rapide sur GPU ne l'est pas. Flash-KMeans est une implémentation sensible aux entrées/sorties de k-means exact qui repense l'algorithme autour des goulets d'étranglement modernes des GPU. En s'attaquant directement aux goulets d'étranglement de la mémoire, Flash-KMeans atteint : - 30x d'accélération par rapport à cuML - 200x d'accélération par rapport à FAISS En utilisant le même algorithme exact, juste conçu pour le matériel d'aujourd'hui. À l'échelle du million, Flash-KMeans peut compléter une itération de k-means en millisecondes. Voici pourquoi cela compte aujourd'hui : K-means a toujours été un primitive hors ligne. Quelque chose que vous exécutez une fois pour prétraiter les données et passer à autre chose. Ces accélérations changent cela. ↳ Les bases de données vectorielles comme FAISS utilisent k-means pour construire des indices de recherche. Un k-means plus rapide signifie que vous pouvez réindexer dynamiquement à mesure que les données changent, et non pas le faire par lots pendant la nuit. ↳ Les méthodes de quantification LLM ont besoin de k-means pour trouver des codebooks de poids optimaux, par couche, de manière répétée. Ce qui prenait des heures pourrait maintenant prendre des minutes. ↳ Les modèles MoE ont besoin d'un routage rapide des tokens au moment de l'inférence. Un k-means en millisecondes rend viable son exécution à l'intérieur de la boucle d'inférence, et pas seulement lors du prétraitement. Le 200x par rapport à FAISS est le chiffre à internaliser. FAISS est la norme de l'industrie. La plupart des systèmes de recherche vectorielle en production reposent dessus. Lien vers l'article et le code dans le prochain tweet !