K-Means прост. Сделать его быстрым на GPU — нет. Flash-KMeans — это реализация точного k-means, учитывающая ввод-вывод, которая переосмысляет алгоритм с учетом современных узких мест GPU. Нападая непосредственно на узкие места памяти, Flash-KMeans достигает: - Ускорения в 30 раз по сравнению с cuML - Ускорения в 200 раз по сравнению с FAISS Используя тот же самый алгоритм, просто адаптированный для современного оборудования. На миллионах данных Flash-KMeans может завершить итерацию k-means за миллисекунды. Вот почему это важно сегодня: K-means всегда был оффлайн-примитивом. Что-то, что вы запускаете один раз для предварительной обработки данных и переходите к следующему этапу. Эти ускорения меняют это. ↳ Векторные базы данных, такие как FAISS, используют k-means для построения поисковых индексов. Более быстрый k-means означает, что вы можете динамически переиндексировать по мере изменения данных, а не обрабатывать это за ночь. ↳ Методы квантизации LLM нуждаются в k-means для поиска оптимальных кодовых книг весов, для каждого слоя, многократно. То, что раньше занимало часы, теперь может занять минуты. ↳ Модели MoE нуждаются в быстром маршрутизации токенов во время вывода. Миллисекундный k-means делает возможным запуск этого внутри цикла вывода, а не только на этапе предварительной обработки. Ускорение в 200 раз по сравнению с FAISS — это число, которое нужно усвоить. FAISS — это отраслевой стандарт. Большинство производственных систем поиска векторов построены на его основе. Ссылка на статью и код в следующем твите!