NVIDIAは9月30日、cuObjectのクライアント・サーバーライブラリを一般提供すると発表した。cuObjectは、GPUメモリやシステムメモリとS3互換のオブジェクトストレージの間でRDMAによりデータを直接移すライブラリだ。

RDMA(Remote Direct Memory Access)は、サーバーのCPUが管理するメモリを経由せずにネットワークカードがデータを直接移す方式だ。cuObjectでは、S3のGET・PUTの制御リクエストはHTTPS/TCPで送られ、データ本体だけがRDMAで移動する。

クライアントライブラリはCUDA Toolkit 13.1.1以降に含まれ、ストレージ側のサーバーライブラリは別にダウンロードする。クライアントのS3 SDKとサーバーのストレージソフトウェアの両方に手を入れる必要があるということだ。

同じ発表ではSCADA(Scaled Accelerated Data Access)Server SDKも紹介された。ストレージ事業者が、GPUが開始したリクエストに応答するサーバーを作れるようにするツールだ。

注意点:試作品の統合とネットワーク要件

発表にあるIBM Storage Scaleとの統合はSCADA Server SDKで作った試作品であり、すべてのオブジェクトストレージへの対応を示す例ではない。

文書によると、現在のcuObjectの実装はDC(Dynamic Connection)転送を必要とし、DCはInfiniBandとRoCEv2で動作する。ストレージサーバーの互換性とRDMAネットワークがそろっている必要がある。

ここに書いた内容はNVIDIAによる構造と提供状況の説明であり、ハードウェアや統合の試験、処理量の独立した測定の結果ではない。

ボトルネックの位置から確かめる導入手順

まず、ボトルネックがオブジェクトリクエストのコスト、転送、前処理、GPUの消費速度のどれにあるかを探す。データ本体の移動が実際に作業を止めているときにだけ、より速い移動が役に立つ。

次に、対応するストレージとネットワーク経路をそろえてから、学習全体の処理量を比べる。なじみのあるS3インターフェースであるという事実だけでは、この経路が使えるかは分からない。

cuObjectが減らすのはオブジェクト本体のCPU経由であり、その効果はストレージとネットワークが一緒に対応したときにだけ表れる。