GPUを搭載したMilvusを使い始める:10倍の性能を引き出す
GPUアクセラレーションによるベクトル検索の強化の準備はお済みですか?Milvusの最新リリースであるMilvus 2.3は、NVIDIA A100 GPUを正式にサポートし、スループットを10倍向上させ、レイテンシを大幅に削減します。このブログポストでは、この戦略的革新の背後にある動機について掘り下げ、Milvus GPUバージョンで始める方法を紹介します。
なぜMilvusはGPUサポートを導入するのか?
ベクトルデータベースは、大規模なデータ検索や類似検索において重要な役割を果たしています。しかし、特にGPT-3のような大規模言語モデル(LLM)の台頭により、従来のCPUベースのインデックス作成ストラテジーは、高性能かつ低レイテンシへの要求の高まりに対応するための助けが必要です。Milvusチームは、MilvusとNVIDIA GPUの潜在的な相乗効果を認識し、Milvus 2.3でGPUサポートを導入することを決定しました。
NVIDIAチームのサポートのおかげで(RAFTコードに貴重な貢献をしてくれたNVIDIAの@wphicksと@cjnoletに感謝します)、MilvusのGPUサポートが現実のものとなり、膨大なデータセットを迅速かつ効率的に検索し、AIの展望を広げることが可能になりました。
Milvus GPUバージョンで始める
それでは、Milvus GPUバージョンであなたの旅を始めるためのステップに飛び込んでみましょう。
CUDA ドライバのインストール
何よりもまず、ホストマシンがNVIDIA GPUを認識していることを確認してください。以下のコマンドを実行することで確認できます:
lspci
デバイスの出力に "NVIDIA "フィールドがあればOKだ。下記は私のデバイスの結果で、NVIDIA T4グラフィックカードを認識している。
00:00.0 ホストブリッジ:Intel Corporation 440FX - 82441FX PMC [Natoma]00:01.0 ISA bridge:Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]00:01.3 非 VGA 非分類デバイス:Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)00:03.0 VGA 互換コントローラ:Amazon.com, Inc.デバイス 111100:04.0 不揮発性メモリコントローラ:Amazon.com, Inc.デバイス 806100:05.0 イーサネットコントローラ:Amazon.com, Inc.Elastic Network Adapter (ENA)00:1e.0 3Dコントローラ:NVIDIA Corporation TU104GL [Tesla T4] (rev a1)00:1f.0不揮発性メモリコントローラ:Amazon.com, Inc.NVMe SSDコントローラ
次に、必要なCUDAドライバをインストールします。お使いのシステムに適したドライバは、NVIDIA ウェブサイト で見つけることができます。
例えば、Ubuntu Linux 20.04 オペレーティング・システム (OS)を使用している場合、以下のコマンドを実行することで、ドライバをダウンロードしてインストールすることができます:
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タイプによって異なります:
NVIDIA TeslaシリーズプロフェッショナルGPU:>=450.80.02
ゲーミングGPU>=520.61.05
ドライバをインストールした後、有効にするにはシステムを再起動する必要があります。再起動が完了したら、以下のコマンドを入力して続行できます:
nvidia-smi
注意: Milvus GPU イメージは、Compute Capability 6.1、7.0、7.5、8.0 の NVIDIA グラフィックカードをサポートしています。
GPU Compute Capabilityについては、NVIDIA GPU Compute Capabilityをご覧ください。
NVIDIA Container Toolkitのインストール方法については、NVIDIA documentationを参照してください。
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フィールドで設定できます。詳細はDocker Compose Documentationを参照してください。
**注意
1つのMilvusプロセスまたはコンテナに複数のグラフィックカードを設定しても、Milvusは1つのグラフィックカードしか使用できません。
KNOWHERE_STREAMS_PER_GPU
(CUDAストリーム同時実行)やKNOWHERE_GPU_MEM_POOL_SIZE`(GPUメモリプールサイズ)などの環境変数を調整することで、パフォーマンスを微調整することができます。3.1枚のグラフィックカードに2つのMilvusプロセスをデプロイする場合、環境変数を調整することを強く推奨します。そうしないと、Milvusがメモリ競合によりクラッシュする可能性があります。
ローカルでのMilvus GPUバージョンのビルド
Milvusをローカルにビルドする前に、必要な依存関係がインストールされていることを確認してください。
- CUDAツールキット
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
結論
Milvus2.3におけるGPUサポートの導入は、ベクトル・データベースのパフォーマンスを加速するためのエキサイティングな可能性を開きます。NVIDIA A100 GPUを自由に使用することで、スループットとレイテンシの両方で顕著な向上を達成することができ、データ集約型のアプリケーションやAIワークロードにとって魅力的な選択肢となります。
読み続けて

Introducing Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud
We're announcing the general availability of Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud.

DeepSeek-OCR Explained: Optical Compression for Scalable Long-Context and RAG Systems
Discover how DeepSeek-OCR uses visual tokens and Contexts Optical Compression to boost long-context LLM efficiency and reshape RAG performance.

Vector Databases vs. NoSQL Databases
Use a vector database for AI-powered similarity search; use NoSQL databases for flexibility, scalability, and diverse non-relational data storage needs.
