OWN NEWS GATHER
← 戻る
NVIDIA Technical Blog

PythonからGPUメモリへ直接データを転送する「NVIDIA KvikIO」の仕組みと検証手法が公開

要点

  • 米NVIDIAが、GPUDirect Storage(GDS)を用いてPythonからGPUメモリへ直接データを読み込む手法を技術ブログで解説した。

  • 高水準ライブラリ「NVIDIA KvikIO」がcuFile C APIの上位に位置し、Python向けの高効率なファイルI/Oを提供する。

  • データ転送経路はKvikIOとcuFileの2段階で独立して判断され、高速パスかCPU経由の互換パスかが決まる。

  • ランタイム設定や設定ファイルにより並列I/Oやデータサイズのしきい値を制御でき、転送の実態はツール「gds_stats」で確認できる。

  • KvikIOはcuDFやPrestoなど、科学計算や分散データ分析の多様なワークロードですでに高速化に活用されている。

  • 米NVIDIAは2026年10月22日、同社の公式技術ブログ「NVIDIA Technical Blog」において、GPUDirect Storage(GDS)を利用してPython環境からGPUメモリへ直接データを読み込む手法に関する解説記事を公開した。

  • 記事では、C言語APIであるcuFileをラップしてPython向けの高水準インターフェースを提供するライブラリ「NVIDIA KvikIO」を取り上げ、そのアーキテクチャや設定パラメータ、データ転送経路の確認方法を詳述している。

AIモデル急拡大に伴うデータ転送の課題とPython対応

記事ではまず、現代のAIワークロードにおいてストレージI/Oの高速化が急務となっている背景が提示された。同社が引用した「2025 Stanford AI Index」の報告によると、注目すべきAIモデルの計算量は約5か月ごとに倍増しており、大規模言語モデル(LLM)の学習用データセット規模も約8か月ごとに倍増しているという。
アクセラレータの処理能力とデータセットの双方が急速に拡大するなか、計算資源に滞りなくデータを供給するためには、ストレージからメモリへのデータ移動効率を高めることが不可欠となっている。
さらに、2025年8月時点でGitHub上の新規AIプロジェクトのほぼ半数がPythonを中心に構築されている実態がある。高効率なハードウェア性能を活かすためには、開発者が日常的に用いるPython環境から直接ストレージアクセラレーションを制御できる仕組みが求められていた。

GPUDirect StorageとcuFileの基本構造

ストレージとGPU間のボトルネックを解消する技術として、NVIDIAは「Magnum IO GPUDirect Storage(GDS)」を提供している。GDSは対応するストレージとGPUメモリの間に直接のデータパスを確立し、ホストであるCPUメモリを介した不要なステージング処理を省略することで、遅延の削減とシステム全体のCPU使用率低減を図る技術である。主要ストレージベンダーによるサポートも広がっている。
ファイルシステムを介したストレージアクセスにおいて、アプリケーションやフレームワークがGDSを利用するための主要インターフェースとなってきたのが「cuFile」C APIである。しかし、cuFileはC言語向けAPIであるため、Pythonアプリケーションから容易に扱うには一段階の仲介が必要となっていた。

KvikIOの橋渡しと「二段階のパス選択」

このcuFileの上に位置し、PythonおよびC++向けの扱いやすいインターフェースを提供するのが「NVIDIA KvikIO」である。I/Oリクエストの実行方法を細かく制御できる機能も備えている。
KvikIOを経由したデータ読み込みでは、転送経路の判定が「KvikIO」と「cuFile」という2つの独立したレイヤーで行われる点が特徴となっている。
第1段階として、アプリケーションからファイルシステムパスとGPUバッファが渡された際、KvikIO自身がcuFileを呼び出すか、あるいはホストメモリを経由するPOSIX互換パスを使うかを判断する。cuFileが選択された場合、KvikIOは対象ファイルを登録した上でGPUバッファに向けたI/Oを発行する。
続いて第2段階として、呼び出されたcuFile側がシステムの対応状況やファイルシステムの種類、設定ファイルの内容に基づいて実際の転送経路を決定する。ここで、専用のnvidia-fsカーネルモジュールを用いた高速なGDSパスが使われるか、あるいはCPUメモリを経由する互換パスが使われるかが分かれる。
このため、アプリケーションの処理がcuFile APIに到達した事実だけでは、高速なGDSパスが実際に有効化されていることの証明にはならず、後段の検証が重要になると説明されている。

挙動を制御する設定パラメータと統計ツールによる検証

KvikIOとcuFileの挙動は、各種のランタイム設定や設定ファイルによって細かく調整できる。
KvikIO層においては、互換モードを指定する環境変数「KVIKIO_COMPAT_MODE」や、GDS転送を適用する最小サイズを定義する「KVIKIO_GDS_THRESHOLD」といった設定が存在する。
一方のcuFile層では、設定ファイル「cufile.json」を通じて制御が行われる。例えば、並列I/Oを制御する「execution.parallel_io」や、最小I/Oしきい値を設定する「execution.min_io_threshold_size_kb」といったパラメータが、リクエストの分割やスケジューリングの挙動を左右する。
実行されたデータ転送が実際にどの経路を通ったかを確認するため、cuFileにはプロセス単位の統計収集機能が備わっている。環境変数「CUFILE_STATS_LEVEL=3」を指定して統計情報を収集し、診断ツール「gds_stats」で検査することで、処理の内訳を確認できる。転送がnvidia-fsを用いた高速パスを通過した場合は「nvfsカウンタ」が増加し、CPUステージングを伴う互換パスを通過した場合は「posixカウンタ」に記録されるため、意図したアクセラレーションが機能しているかを正確に判別することが可能である。

CUDA-Xライブラリ群における活用実績

KvikIOは、NVIDIAのデータサイエンス向けライブラリ群「NVIDIA CUDA-X」の一部として組み込まれており、すでに多岐にわたるデータ処理基盤でI/Oアクセラレーションの実装に用いられている。
具体的には、GPUデータフレームライブラリ「cuDF」をはじめ、デジタル病理画像ワークフロー向けの「cuCIM」、科学画像解析ツールの「cuPhoton」などに採用されている。さらに、分散SQLクエリエンジン「Presto」のGPU高速化分析ワークロードにおいてもI/O高速化に寄与しているという。
なお、GPUDirect Storageを活用した高速データ転送の運用には、対応するストレージやプラットフォーム構成を満たす必要がある。

元URL