K-Means è semplice. Renderlo veloce su GPU non lo è. Flash-KMeans è un'implementazione consapevole dell'IO dell'algoritmo k-means esatto che ripensa l'algoritmo attorno ai colli di bottiglia delle moderne GPU. Attaccando direttamente i colli di bottiglia della memoria, Flash-KMeans ottiene: - 30 volte più veloce rispetto a cuML - 200 volte più veloce rispetto a FAISS Utilizzando lo stesso algoritmo esatto, solo ingegnerizzato per l'hardware di oggi. A scala di milioni, Flash-KMeans può completare un'iterazione k-means in millisecondi. Ecco perché questo è importante oggi: Il k-means è sempre stato un primitivo offline. Qualcosa che esegui una volta per preprocessare i dati e poi procedere. Questi miglioramenti cambiano tutto. ↳ I database vettoriali come FAISS utilizzano il k-means per costruire indici di ricerca. Un k-means più veloce significa che puoi riindicizzare dinamicamente mentre i dati cambiano, non solo in batch durante la notte. ↳ I metodi di quantizzazione LLM necessitano del k-means per trovare codici di peso ottimali, per strato, ripetutamente. Ciò che richiedeva ore ora potrebbe richiedere minuti. ↳ I modelli MoE necessitano di un routing veloce dei token al momento dell'inferenza. Un k-means in millisecondi rende possibile eseguire questo all'interno del ciclo di inferenza, non solo nel preprocessing. Le 200 volte rispetto a FAISS sono il numero da interiorizzare. FAISS è lo standard del settore. La maggior parte dei sistemi di ricerca vettoriale in produzione si basa su di esso. Link al documento e al codice nel prossimo tweet!