Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GPUをつかってベクトル検索を 扱う手法のお話し ~NVIDIA cuVSとCAGRA~

Avatar for fshuhe fshuhe
October 30, 2025

GPUをつかってベクトル検索を 扱う手法のお話し ~NVIDIA cuVSとCAGRA~

2025/10/30に開催されたSearch Engineering Tech Talk 2025 Autumnでの登壇資料です。
https://search-tech.connpass.com/event/370754/

Avatar for fshuhe

fshuhe

October 30, 2025
Tweet

Other Decks in Technology

Transcript

  1. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. GPUをつかってベクトル検索を 扱う⼿法のお話し ~NVIDIA cuVSとCAGRA~ 深⾒修平(Shuhei Fukami)
  2. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 2 Name︓ 深⾒修平(Shuhei Fukami) Title︓ Analytics Specialist Solutions Architect OpenSearch Tokyo User Group Co-Organizer ⾃⼰紹介 ご興味あればぜひご参加ください︕ OpenSearch Con NorthAmerica 2025 https://youtu.be/uCbc7iFM3RE?si=9VMyPnELLS7D9m36 OpenSearch x Icebergの話
  3. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. • ⼀般的なベクトル検索の流れと課題 • cuVS と CAGRA • 性能について • CAGRAの利⽤例 • まとめ Agenda 3
  4. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⼀般的なベクトル検索の流れ 4 ソースデータ Embedding Model ベクトルエンジン indexing クエリ HNSW データ量が膨⼤になると グラフの構築時間が課題に
  5. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. cuVS と CAGRA 5 • Apache 2.0 License で提供されているOSS • K-NN/クラスタリングなどの⼿法をCUDA上 (GPU環境)で実⾏するためのライブラリ • かつては RAPIDS RAFTの⼀部だったのが 独⽴のライブラリとなった • PythonをはじめC++/Java/Rustなどの⾔語 から利⽤が可能 • Faiss/Lucene/ElasticSearch/OpenSearch/ Milvus/Weaviateなどにintegrationされて 利⽤が可能 https://github.com/rapidsai/cuvs
  6. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. cuVS と CAGRA 6 https://arxiv.org/pdf/2308.15136 Ootomo, Hiroyuki, et al. "Cagra: Highly parallel graph construction and approximate nearest neighbor search for gpus." 2024 IEEE 40th International Conference on Data Engineering (ICDE). IEEE, 2024. CAGRA: Highly Parallel Graph Construction and Approximate Nearest Neighbor Search for GPUs • HNSWをもとにGPUでの並列計 算に最適化したグラフの構築/ 探索⼿法 • 階層を持たないフラット構 造 • 距離ではなくランクベース オーダリング基準での計算 • CPU HNSWにコンバートが可能 CPUのHNSWと⽐較して、 ・グラフ構築: 2.2〜27倍⾼速 ・⼤規模バッチ: 33〜77倍⾼速 ・単⼀クエリ: 3.4〜53倍⾼速 ざっくりとした傾向として - 次元数が⼤きい時が顕著に⾼速 - 次元数ほどじゃないが データ数多い場合も差が⼤きくなる NVIDIAさんのブログや登壇では グラフの構築の⾼速化を推している
  7. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. GPU Faiss + cuVS 7
  8. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. で、コスパはいいの︖ 8 https://github.com/opensearch-project/k-NN/issues/2293 OpenSearch Project内のベンチマークを参考に Dataset Name Dimension Number of Vectors CPU Build Time (sec) GPU Build Time (sec) %age improvement s with GPU in Build Time (CPU/GPU) sift-128 128 1M 490.42 16.61 30 ms-marco- 384 384 1M 1098.01 35.68 31 cohere-768-ip 768 1M 3251.76 67.01 49 gist 960 1M 3146.3 68.64 46 open-ai 1536 5M 5647.2 181.17 32 bigann-10M 128 10M 9489.49 226.81 42 CPU: r6g.2xlarge (8 vCPU: 64 GiB : 0.4032 USD/hour) GPU : g5.2xlarge (8 vCPU: 32 GiB : 1.212 USD/hour) Recall と 検索クエリの時間が同じくらいになるような設定での計測 ※ GPU BuildではCPUにコンバートした際の性能が同じくらいになるものを基準にしている
  9. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. で、コスパはいいの︖ 9 https://github.com/opensearch-project/k-NN/issues/2293 OpenSearch Project内のベンチマークを参考に Dataset Name Dimension Number of Vectors CPU Build Time (sec) GPU Build Time (sec) %age improvement s with GPU in Build Time (CPU/GPU) sift-128 128 1M 490.42 16.61 30 ms-marco- 384 384 1M 1098.01 35.68 31 cohere-768-ip 768 1M 3251.76 67.01 49 gist 960 1M 3146.3 68.64 46 open-ai 1536 5M 5647.2 181.17 32 bigann-10M 128 10M 9489.49 226.81 42 CPU: r6g.2xlarge (8 vCPU: 64 GiB : 0.4032 USD/hour) GPU : g5.2xlarge (8 vCPU: 32 GiB : 1.212 USD/hour) Recall と 検索クエリの時間が同じになるような設定での計測 このケースをもとに考えると、 • グラフの構築についてはGPUの⽅がコスパが良さそう • さらにindexingについて利⽤する場合はGPUインスタンスを 常に⽴ち上げておく必要はない/他のワークロードと共有しやすそう • Search & recallを揃えてこの価格差なので、 常に⽴ち上げる必要があるSearch⽤にするのは あんまりコスパが良くないかも
  10. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. OpenSearchでのCAGRAの利⽤例 10 https://opensearch.org/blog/gpu-accelerated-vector-search-opensearch-new- frontier/ • CPUの通常のクラスタと別に GPUノードを⽤意 • CAGRAで構築したグラフを CPU HNSWに変換して通常の クラスタに送って検索クエリは そちらで処理 • インデクシングのみに利⽤するなら GPUノードはEmbeddingやTraining など別のワークロードと共有がしや すい
  11. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. まとめ 11 どのようなときに有効そう? そもそもindexing時間ってそんなに課題になってる︖ 他に考慮点がないか︖ などなどぜひお話しさせてください︕ cuVSで利⽤できるCAGRAはベクトルワークロードにおける データのインデクシングの⾼速化⼿法として注⽬されている