Начало работы с Milvus на базе GPU: раскрытие производительности в 10 раз выше
Готовы улучшить свой векторный поиск с помощью GPU-ускорения? Milvus 2.3, последняя версия Milvus, официально поддерживает GPU NVIDIA A100, обеспечивая 10-кратное увеличение пропускной способности и значительное снижение задержки. В этой статье блога мы рассмотрим мотивы этой стратегической инновации и покажем, как начать работу с GPU-версией Milvus.
Почему Milvus вводит поддержку GPU?
Векторные базы данных играют решающую роль в крупномасштабном поиске данных и поиске по сходству. Однако традиционным стратегиям индексирования на основе CPU трудно поспевать за растущим спросом на высокую производительность и низкую задержку, особенно с ростом популярности больших языковых моделей (LLM), таких как GPT-3. Осознавая потенциальную синергию между Milvus и GPU NVIDIA, команда Milvus решила внедрить поддержку GPU в Milvus 2.3.
Благодаря поддержке команды NVIDIA (особая благодарность @wphicks и @cjnolet из NVIDIA за их ценный вклад в код RAFT), поддержка GPU в Milvus стала реальностью, что позволяет быстро и эффективно выполнять поиск по массивным наборам данных и расширять ландшафт AI.
Начало работы с GPU-версией Milvus
Давайте рассмотрим шаги, которые помогут вам начать работу с GPU-версией Milvus.
Установка драйвера CUDA
Прежде всего убедитесь, что ваша хост-машина распознает ваш GPU NVIDIA. Это можно проверить, выполнив следующую команду:
lspci
Можно продолжать, если вы видите поле "NVIDIA" в выводе устройств. Ниже приведен результат для моего устройства, которое распознает графическую карту NVIDIA T4.
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)00:03.0 VGA compatible controller: Amazon.com, Inc. Device 111100:04.0 Non-Volatile memory controller: Amazon.com, Inc. Device 806100:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA)00:1e.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)00:1f.0 Non-Volatile memory controller: Amazon.com, Inc. NVMe SSD Controller
Затем установите необходимые драйверы CUDA. Подходящий драйвер для вашей системы можно найти на сайте NVIDIA.
Например, если вы используете операционную систему (OS) Ubuntu Linux 20.04, вы можете скачать и установить драйвер, выполнив следующие команды:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.debsudo dpkg -i cuda-keyring_1.1-1_all.debsudo apt-get update
Примечание:
Вы можете пропустить шаг установки CUDA, если вашей хост-машине не требуются драйверы CUDA.
Требуемая минимальная версия драйвера зависит от типа вашего GPU:
Профессиональные GPU серии NVIDIA Tesla: >=450.80.02
Игровые GPU: >=520.61.05
После установки драйвера необходимо перезагрузить систему, чтобы изменения вступили в силу. После завершения перезагрузки можно продолжить, введя следующую команду:
nvidia-smi
Примечание: Образ Milvus GPU поддерживает графические карты NVIDIA с Compute Capability 6.1, 7.0, 7.5 и 8.0.
Чтобы узнать Compute Capability вашего GPU, посетите NVIDIA GPU Compute Capability.
Инструкции по установке NVIDIA Container Toolkit см. в документации NVIDIA.
Конфигурация Milvus GPU
Версия Milvus GPU по умолчанию поддерживает только один процесс Milvus и один GPU. Вы можете запускать несколько процессов или контейнеров Milvus и задавать переменную окружения CUDA_VISIBLE_DEVICES, чтобы использовать несколько GPU.
- В контейнере вы можете задать эту переменную окружения с помощью
-e:
sudo docker run --rm -e NVIDIA_VISIBLE_DEVICES=3 milvusdb/milvus:v2.3.0-gpu-beta
- Вы можете задать эту переменную окружения в Docker Compose с помощью поля
device_ids. Для получения дополнительной информации см. GPU access with Docker Compose Documentation.
Примечание:
Даже если вы настроите несколько видеокарт для одного процесса или контейнера Milvus, Milvus сможет использовать только одну.
Вы можете тонко настроить производительность, изменяя переменные окружения, такие как
KNOWHERE_STREAMS_PER_GPU(для параллелизма потоков CUDA) иKNOWHERE_GPU_MEM_POOL_SIZE(для размера пула памяти GPU).Мы настоятельно рекомендуем настроить переменную окружения, если вы разворачиваете два процесса Milvus на одной видеокарте. В противном случае Milvus может аварийно завершаться из-за конкуренции за память.
Локальная сборка версии Milvus GPU
Перед локальной сборкой Milvus убедитесь, что у вас установлены необходимые зависимости.
- CUDA Toolkit
sudo apt install --no-install-recommends cuda-toolkit
- Python 3, pip, libopenblas-dev, libtbb-dev и pkg-config:
sudo apt install python3-pip libopenblas-dev libtbb-dev pkg-config
- Conan, менеджер пакетов C/C++:
pip3 install conan==1.59.0 --userexpoprt PATH=$PATH:~/.local/bin
CMake (>=3.23): подробности см. в Kitware APT Repository.
Golang: подробности см. в Go documentation.
После установки всех необходимых инструментов соберите версию Milvus GPU с помощью следующей команды:
make milvus-gpu
Запуск Milvus
Запустите Milvus в автономном режиме, выполнив следующую команду:
cd binsudo ./milvus run standalone
Если вы предпочитаете контейнеризацию, для развертывания можно использовать предоставленный файл docker-compose.yml.
docker-compose up -d
Заключение
Появление поддержки GPU в Milvus 2.3 открывает захватывающие возможности для ускорения производительности векторной базы данных. Имея в распоряжении GPU NVIDIA A100, вы можете добиться значительного повышения как пропускной способности, так и снижения задержки, что делает это решение привлекательным выбором для приложений, интенсивно использующих данные, и рабочих нагрузок ИИ.
Читать далее

A Developer's Guide to Exploring Milvus 2.6 Features on Zilliz Cloud
Milvus 2.6 marks a shift from “vector search + glue code” to a more advanced retrieval engine, and it is now Generally Available (GA) on Zilliz Cloud (a managed Milvus service).

Legal Document Analysis: Harnessing Zilliz Cloud's Semantic Search and RAG for Legal Insights
Enhance legal document analysis with Zilliz Cloud’s Semantic Search and RAG. Improve accuracy, efficiency, and scalability for contracts, case law, and compliance.

Introducing DeepSearcher: A Local Open Source Deep Research
In contrast to OpenAI’s Deep Research, this example ran locally, using only open-source models and tools like Milvus and LangChain.



