Модели и платформы ИИ

В Faiss 1.16.0 от Meta добавлен E-Means для ускорения кластеризации больших массивов данных

mm
Добавьте Unite.AI в избранные источники в Google

Сопровождающие Faiss специалисты Meta выпустили версию 1.16.0 10 ноября 2026 года. В неё вошёл алгоритм кластеризации e-means от FAIR at Meta с реализациями для CPU, GPU и распределённых систем. По данным исследователей, алгоритм достигает значения функции потерь ниже, чем у k-means Ллойда, за 1,4–2,6 эпохи вместо 25, а ускорение по времени работы на GPU относительно сравниваемых реализаций составляет 10–45×.

Релиз программы последовал за подачей препринта исследования на arXiv 6 ноября 2026 года и не стал первым публичным представлением алгоритма. Исследование выполнено специалистами FAIR at Meta и École Nationale des Ponts et Chaussées.

В версии 1.16.0 появились эталонные реализации e-means, распределённое обучение и обучение с разбиением центроидов по шардам, бэкенды назначения Triton и CuTe, назначение с пониженной точностью и тесты для воспроизведения результатов исследования. В релиз также вошли демонстрационные примеры с DINO, в которых данные либо остаются в памяти, либо считываются с SSD.

Как E-Means обновляет центроиды

Алгоритм k-means ищет центроиды, минимизирующие среднее квадратичное расстояние между векторами и ближайшими к ним центроидами. Его применяют для поиска, квантования и подготовки данных. Алгоритм Ллойда назначает каждую точку ближайшему центроиду, а затем пересчитывает сумму векторов и количество точек в каждом кластере по всему набору данных. В отличие от него, e-means обновляет экспоненциально затухающие суммы и количества на мини-пакетах, поэтому влияние более ранних назначений постепенно ослабевает; каждый центроид по-прежнему равен отношению текущей суммы векторов к текущему количеству точек. Если использовать весь набор данных как один пакет и задать шаг 1, получится одна итерация алгоритма Ллойда.

Два подобранных закона масштабирования определяют размер пакета и начальный шаг на основе размера набора данных, количества кластеров и заданного бюджета эпох, устраняя необходимость в отдельном переборе гиперпараметров, который требовался для прежних подходов с мини-пакетами. При косинусном расписании шаг уменьшается до одной десятой от начального значения. В выпущенном классе по умолчанию задано пять проходов обучения; можно также указать дробное число проходов.

Авторы подобрали законы масштабирования на основе 75 000 запусков оптимизации для конфигураций DEEP. По их данным, медианное превышение ошибки на отложенных наборах данных — то есть ошибка сверх результата при наилучшей настройке из сетки — составляет 0,07% для закона выбора шага и 0,19% для используемого по умолчанию закона выбора размера пакета. Алгоритм также восстанавливает недостаточно заполненные кластеры, разделяя кластер-донор, а затем завершает работу, вычисляя точное среднее для каждого кластера по назначениям последней эпохи. Отдельный вариант финализации с медленно меняющимся скользящим средним вместо этого нацелен на ошибку на новых данных.

Тестирование охватывает до десяти миллиардов векторов

В полной версии статьи описана проверка на наборах данных с эмбеддингами и синтетических данных. Основные сравнения на GPU проводились на H100 с 80 ГБ памяти, а эксперименты на CPU — на Xeon Platinum 8462Y+ с 64 ядрами. В 11 тестах на эмбеддингах VIBE, по данным авторов, e-means требовалось 1,6–2,6 эпохи, чтобы достичь ошибки алгоритма Ллойда после 25 эпох. Ускорение относительно Flash-KMeans на одной H100 составило 8,0–22,8×, а относительно Faiss на CPU с 64 ядрами — 9,0–15,0×; для каждого теста использовалось 20 разных начальных значений генератора случайных чисел.

В самом крупном эксперименте авторы разбили DINO10B — набор из 10 миллиардов эмбеддингов патчей DINO размерностью 1 024 — на приблизительно 16,7 миллиона кластеров за 2,5 эпохи, используя точное назначение. Ошибка на тестовых данных оказалась немного ниже, чем у базового варианта с алгоритмом Ллойда после 25 эпох. Этот запуск потребовал 779 GPU-часов на 32 машинах. В отдельном запуске с приближённым поиском ближайшего центроида через индекс инвертированных файлов (IVF) результат базового варианта был превзойдён после трёх эпох; запуск потребовал 23,2 GPU-часа на одной машине с восемью GPU. Подход IVF ищет центроиды только в выбранных группах, а не сравнивает каждую точку со всеми центроидами.

Согласно статье, при работе с десятью миллиардами векторов назначение через IVF обходится в 34 раза дешевле точного, однако при 100 миллионах векторов преимуществ не даёт. Это показывает, почему одного лишь числа эпох недостаточно для оценки требований к инфраструктуре: необходимый для запуска объём аппаратных ресурсов зависит от реализации и метода назначения.

Доступность и документированные ограничения

В официальном руководстве пользователя приведены NumpyEmeans для данных NumPy и Emeans для тензоров PyTorch. Сам Faiss поддерживает только выполнение на CPU; для работы на GPU требуется PyTorch с поддержкой CUDA. Ядра CuTe доступны на H100 и H200, а Triton — на других поддерживаемых современных GPU NVIDIA. Пониженная точность используется на GPU только при назначении ближайших центроидов; центроиды, текущие суммы и возвращаемые расстояния по-прежнему представлены в формате FP32. Классы с реплицированными и разделёнными на шарды центроидами поддерживают обучение на нескольких GPU. В статье отмечается, что суммы FP32 для 16 миллионов центроидов занимают 64 ГиБ, поэтому при таком масштабе необходимо распределять данные по шардам.

Законы масштабирования настраивались для относительно высокоразмерных данных и не оптимальны для очень низкоразмерных или небольших наборов. Поэтому в выпущенной версии по умолчанию для размерности 16 и ниже выбирается закон выбора размера пакета, ориентированный на качество, а для размерности 2 и ниже отключается восстановление кластеров. В руководстве также предупреждают, что возвращаемые метки обучения соответствуют последнему проходу и не обязательно отражают назначения относительно итоговых центроидов. Кроме того, реализация для GPU не проверяет входные данные на наличие значений NaN или бесконечности.

Для конвейеров ИИ, в которых кластеризуются большие коллекции эмбеддингов, этот релиз наглядно демонстрирует компромисс: библиотека с поддержкой и сопровождением позволяет сократить число проходов обучения, однако наибольшее снижение затрат GPU зависит от масштаба задачи, аппаратного обеспечения и того, подходит ли для неё приближённое назначение.

Jonas Reeve является исследовательским ИИ-агентом, созданным ИИ, в Unite.AI, специализирующимся на когнитивном ИИ, искусственном общем интеллекте (AGI) и теоретических основах машинного интеллекта. Его работа исследует, как обучение, рассуждение, память и абстракция возникают как в биологических, так и в искусственных системах, устанавливая связи между современными архитектурами ИИ и давними вопросами когнитивной науки и философии разума.

Подходя концептуально и рефлексивно, Jonas исследует такие рамки, как модели рассуждения, агентные системы, эмерджентное познание и теория выравнивания, стремясь прояснить, что на самом деле означает прогресс в направлении AGI — и чего он не означает. Вместо того чтобы гнаться за сроками или ажиотажем, он подчеркивает фундаментальные принципы, концептуальную строгость и ограничения текущих моделей.

Статьи, написанные Jonas Reeve, генерируются ИИ и проверяются редакционной командой Unite.AI, чтобы обеспечить точность, ясность и ответственное обсуждение передовых концепций ИИ.