🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • Представляем Milvus 2.3: знаковый выпуск, предлагающий поддержку GPU, Arm64, CDC и многие другие долгожданные функции

Представляем Milvus 2.3: знаковый выпуск, предлагающий поддержку GPU, Arm64, CDC и многие другие долгожданные функции

  • News
August 28, 2023
Owen Jiao, Fendy Feng

Захватывающие новости! После восьми месяцев согласованных усилий мы рады объявить о выпуске Milvus 2.3, знаковой версии, в которой появилось множество долгожданных функций, включая поддержку GPU, Arm64, upsert, захват данных об изменениях, индекс ScaNN и технологию MMap. Milvus 2.3 также предлагает улучшенную производительность запросов, более надежную балансировку нагрузки и планирование, а также улучшенную наблюдаемость и работоспособность.

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

Поддержка GPU-индекса, которая позволяет увеличить QPS в 3-10 раз

GPU-индекс - это долгожданная функция в сообществе Milvus. Благодаря отличному сотрудничеству с инженерами Nvidia, Milvus 2.3 поддерживает индексацию на GPU с помощью надежного алгоритма RAFT, добавленного в Knowhere, индексный движок Milvus. Благодаря поддержке GPU Milvus 2.3 работает в три раза быстрее в QPS, чем старые версии, использующие индекс CPU HNSW, и почти в десять раз быстрее для определенных наборов данных, требующих тяжелых вычислений.

Поддержка Arm64 для удовлетворения растущего спроса пользователей

Процессоры Arm становятся все более популярными среди поставщиков облачных услуг и разработчиков. Чтобы удовлетворить этот растущий спрос, Milvus теперь предоставляет образы Docker для архитектуры ARM64. Благодаря новой поддержке процессоров пользователи MacOS смогут создавать свои приложения с помощью Milvus более легко.

Поддержка Upsert для улучшения пользовательского опыта

В Milvus 2.3 появилось значительное усовершенствование - поддержка операции upsert. Эта новая функциональность позволяет пользователям беспрепятственно обновлять или вставлять данные и выполнять обе операции в одном запросе через интерфейс Upsert. Эта функция упрощает управление данными и повышает эффективность работы.

Примечание:

  • Функция Upsert не применяется к автоинкрементным идентификаторам.
  • Функция Upsert реализована в виде комбинации delete и insert, что может привести к некоторому снижению производительности. Мы рекомендуем использовать insert, если вы используете Milvus в сценариях с интенсивной записью.

Поиск по диапазону для получения более точных результатов

Milvus 2.3 позволяет пользователям указывать расстояние между входным вектором и векторами, хранящимися в Milvus, во время запроса. После этого Milvus возвращает все совпадающие результаты в заданном диапазоне. Ниже приведен пример указания расстояния поиска с использованием функции поиска по диапазону.

// add radius and range_filter to params in search_params
search_params = {"params": {"nprobe": 10, "radius": 10, "range_filter" : 20}, "metric_type": "L2"}
res = collection.search(
vectors, "float_vector", search_params, topK,
"int64 > 100", output_fields=["int64", "float"]
)

В этом примере пользователь требует, чтобы Milvus возвращал векторы на расстоянии от 10 до 20 единиц от входного вектора.

Примечание: Различные метрики расстояний отличаются друг от друга способом вычисления расстояний, что приводит к появлению различных диапазонов значений и стратегий сортировки. Поэтому перед использованием функции поиска по диапазону необходимо разобраться в их особенностях.

Индекс ScaNN для повышения скорости запросов

Milvus 2.3 теперь поддерживает индекс ScaNN, индекс приближенных ближайших соседей (ANN) с открытым исходным кодом, разработанный Google. Индекс ScaNN продемонстрировал превосходную производительность в различных бенчмарках, превосходя HNSW примерно на 20 % и будучи примерно в семь раз быстрее, чем IVFFlat. Благодаря поддержке индекса ScaNN, Milvus достигает гораздо более высокой скорости выполнения запросов по сравнению со старыми версиями.

Растущий индекс для стабильной и лучшей производительности запросов

Milvus включает в себя две категории данных: индексированные данные и потоковые данные. Milvus может использовать индексы для быстрого поиска индексированных данных, но может только грубо искать потоковые данные строка за строкой, что может повлиять на производительность. В Milvus 2.3 появился растущий индекс, который автоматически создает индексы в реальном времени для потоковых данных, чтобы повысить производительность запросов.

Итератор для пакетного поиска данных

В Milvus 2.3 компания Pymilvus представила интерфейс итератора, который позволяет пользователям извлекать более 16 384 сущностей в процессе поиска или поиска по диапазону. Эта функция удобна, когда пользователям необходимо экспортировать десятки тысяч или даже больше векторов в пакетном режиме.

Поддержка MMap для увеличения емкости

MMap - это системный вызов UNIX, используемый для отображения файлов и других объектов в памяти. Milvus 2.3 поддерживает MMap, который позволяет пользователям загружать данные на локальные диски и отображать их в память, тем самым увеличивая пропускную способность одной машины.

Результаты нашего тестирования показали, что с помощью технологии MMap Milvus может удвоить емкость данных, ограничив при этом падение производительности в пределах 20 %. Такой подход значительно снижает общую стоимость, что делает его особенно выгодным для пользователей с ограниченным бюджетом, не желающих жертвовать производительностью.

Поддержка CDC для повышения доступности системы

Захват данных об изменениях (CDC) - это широко используемая функция в системах баз данных, которая фиксирует и реплицирует изменения данных в назначенное место. С помощью функции CDC Milvus 2.3 позволяет пользователям синхронизировать данные между центрами обработки данных, создавать резервные копии инкрементных данных и легко переносить данные, повышая доступность системы.

В дополнение к вышеперечисленным функциям в Milvus 2.3 появился интерфейс подсчета для точного подсчета количества строк данных, хранящихся в коллекции в режиме реального времени, поддержка метрики Cosine для измерения векторного расстояния и дополнительные операции с массивами JSON. Дополнительные возможности и подробная информация приведены в примечаниях к выпуску Milvus 2.3.

Улучшения и исправления ошибок

Помимо новых функций, Milvus 2.3 содержит множество улучшений и исправлений ошибок для старых версий.

Улучшена производительность фильтрации данных

Milvus выполняет скалярную фильтрацию перед векторным поиском в гибридных скалярных и векторных запросах данных для достижения более точных результатов. Однако производительность индексирования может снизиться, если пользователь отфильтровал слишком много данных после скалярной фильтрации. В Milvus 2.3 мы оптимизировали стратегию фильтрации HNSW для решения этой проблемы, что привело к повышению производительности запросов.

Увеличение использования многоядерных процессоров

Приблизительный поиск ближайших объектов (ANN) - это задача с интенсивными вычислениями, требующая больших ресурсов процессора. В предыдущих версиях Milvus мог использовать только около 70 % доступных ресурсов многоядерного процессора. Однако в последней версии Milvus преодолел это ограничение и может полностью использовать все доступные ресурсы многоядерного процессора, что приводит к повышению производительности запросов и снижению потерь ресурсов.

Переработанный узел QueryNode

QueryNode - важнейший компонент Milvus, отвечающий за векторный поиск. Однако в старых версиях QueryNode имел сложные состояния, дублирующиеся очереди сообщений, неорганизованную структуру кода и неинтуитивные сообщения об ошибках.

В Milvus 2.3 мы модернизировали QueryNode, внедрив структуру кода без состояний и удалив очередь сообщений для удаления данных. Эти обновления привели к уменьшению потерь ресурсов и более быстрому и стабильному поиску векторов.

Усовершенствованные очереди сообщений на основе NATS

Мы построили Milvus на основе лог-архитектуры, и в предыдущих версиях использовали Pulsar и Kafka в качестве основных лог-брокеров. Однако эта комбинация столкнулась с тремя ключевыми проблемами:

  • Она была нестабильна в ситуациях с множеством тем.
  • Она потребляла ресурсы, когда простаивала, и с трудом справлялась с дедупликацией сообщений.
  • Pulsar и Kafka тесно связаны с экосистемой Java, поэтому их сообщество редко поддерживает и обновляет свои Go SDK.

Чтобы решить эти проблемы, мы объединили NATS и Bookeeper в качестве нового лог-брокера для Milvus, который лучше соответствует потребностям пользователей.

Оптимизированный балансировщик нагрузки

В Milvus 2.3 был применен более гибкий алгоритм балансировки нагрузки, основанный на реальных нагрузках системы. Этот оптимизированный алгоритм позволяет пользователям быстро обнаруживать сбои узлов и несбалансированную нагрузку и соответствующим образом корректировать расписание. Согласно результатам нашего тестирования, Milvus 2.3 может обнаруживать сбои, несбалансированную нагрузку, аномальное состояние узлов и другие события в течение нескольких секунд и оперативно вносить корректировки.

Более подробную информацию о Milvus 2.3 можно найти в примечаниях к выпуску Milvus 2.3.

Обновления инструментов

Вместе с Milvus 2.3 мы также обновили Birdwatcher и Attu, два ценных инструмента для работы и обслуживания Milvus.

Обновление Birdwatcher

Мы обновили Birdwatcher, отладочный инструмент Milvus, представив множество функций и улучшений, включая:

  • RESTful API для беспрепятственной интеграции с другими диагностическими системами.
  • Поддержка команды PProf для облегчения интеграции с инструментом Go pprof.
  • Возможности анализа использования хранилища.
  • Эффективная функциональность анализа журналов.
  • Поддержка просмотра и изменения конфигураций в etcd.

Обновление Attu

Мы запустили совершенно новый интерфейс для Attu, универсального инструмента администрирования векторных баз данных. Новый интерфейс имеет более простой дизайн и более понятен.

Более подробную информацию можно найти в примечаниях к выпуску Milvus 2.3.

Давайте поддерживать связь!

Если у вас есть вопросы или отзывы о Milvus, пожалуйста, свяжитесь с нами через Twitter или LinkedIn. Вы также можете присоединиться к нашему каналу Slack, чтобы пообщаться с нашими инженерами и сообществом напрямую, или посетить наши офисные часы по вторникам!

Like the article? Spread the word

Продолжить чтение