nvidiaRoCE: Scaling Enterprise RAG with Accelerated Ethernet Networking and Networked Storage

はじめに:生成AI時代となって、RAG(Retrieval-Augmented Generation:検索拡張生成)が注目されている。RAGのワークフローはクエリと生成を行うLLMにとって実現されている。しかし、LLMのモデルはその時点で最新のデータドメインに特化した情報を持つわけでもない。RAGとはその企業の情報でクエリを拡張することでその問題に内応する。RAGを使用する際には高速なネットワークやストレージが必要になる。キーの1つはベクトルデータベースであり、ここに企業や業界独自のデータを入れることでRAGの回答をより有意義にできる。しかし、データセット管理・ユーザ管理また大きなネットワーク・ストレージなど強い分散アーキテクチャが必要なる。 従来の企業システムでも固有の情報を多量に蓄積する

スケーラブルで効率的なRAG推論を実現するには?

RAGにおいて重要になるのはマルチGPUのマルチノードを高速なネットワークで高速なストレージに繋ぐ、のような総合的なシステムである。さて、RAGの行うことを考える。まず1つはデータをベクトル情報に変換して、ベクトルデータベースに蓄積される。もう1つはユーザからの問い合わせをユーザからのプロンプトをベクトルデータベースのクエリに変換しデータベースへの問い合わせる。この結果はLLMに渡されてユーザのクエリの返信を生成する。

このための1つのシステム例を示そう。NWはSN3700, GPUサーバDGX A100, データストレージとして遠隔のS3互換DBを持つとしよう。この環境において、DGXのローカルストレージを用いるパターンとNemoを比較するとNemoを使った場合の方が高速であった。つまり、高速なネットワークが需要である。(ここ、よくわからないんだけど、DASよりNW越しのRDMAの方が早いm、ってことかね)

NVIDIA BlueField-3 DPUを使った場合、埋め込みのアップロード、インデックスの計算、ベクトルデータベースへの挿入などをDPUにオフロードできる。

また、単一ノードでローカルストレージを用いる場合と、分散ストレージのような環境で遠隔のストレージを用いるパターンを比較すると分散の方が早かった。

RAGアプリケーション向けのネットワーク・ストレージという選択肢

ローカルストレージを使うよりもネットワークストレージを使った場合が早いことを注意すべきである。RAGにおけるネットワークストレージのメリットを考えよう。

  • リアルタイムストリーミングデータの取り込み: DASで行うとデータの処理などにCPUリソースを使う。取り込み処理を分離できるNASの方が良い。
  • スケーラビリティ: DASは容量の限界がある。NASはDASに比べるとスケーラビリティが高い
  • メタデータアノテーション: DASは一般的にブロックストレージだろうが、NASはメタデータ(たとえばカテゴリなど)の情報を持つことができる。
  • 使用率: 置かれたデータがどれだけ参照されるかという視点で考える。DASに比べてNASの方があるデータが参照される頻度は高いだろう。
  • 信頼性: DASでそれぞれのノードが冗長の機能を持つよりNASで集中的に冗長性の仕組みを持った方が高い信頼性を持つストレージとなることがある。
  • 重複の排除: 複数のノードで同じデータを参照できるようにしたい場合、DASではノード間でデータコピーをする必要があり帯域を消費する。NASでは情報を共有するためこの必要はない。
  • データ保護と高度な機能: NASはデータのライフサイクルを指定できたり集中的に暗号化や圧縮をすることが可能である。DASでこれらを管理する場合、そのようなルールの分配や追加のソフトウェアのインストール(とメンテナンス)をする必要がある。

まとめ

RAGは企業内に高い利便性を生む期待があるが、大規模にRAGを傍流するためには高いネットワークの帯域やすNASの保持などをする必要がある。つまり、適切なデータセンタスタックが必要となる。

現在はテキストを中心としたデータであるがこれは音声や動画などのマルチメディアなコンテンツをサポートするように拡張するに従ってより高速なネットワークなどを要求するだろう。