はじめに:なぜ今GPUベースのSQLエンジンなのか

大規模データ分析においてPrestoは広く使われる分散SQLエンジンです。しかしCPUベースのアーキテクチャでは、データセットの拡大とリアルタイム応答要求の高まりに限界が見え始めています。特にAIエージェントがデータに基づいて意思決定を行うシナリオでは、ミリ秒単位のレイテンシがサービス品質を左右します。

NVIDIAはこの課題を解決するために、cuDFベースのGPU高速化Prestoを発表しました。単にGPUを載せるという発想ではなく、クエリのパースから実行、結果返却まで全プロセスをGPUフレンドリーに再設計しています。本稿ではNVIDIAが公開したDGX B200およびGB200 NVL72環境でのベンチマーク結果を基に、GPU高速化Prestoがどのような性能を発揮するのか、そして実際の運用環境で注意すべき点を解説します。

本記事はNVIDIA Developer Blogの原文を分析し、日本のデータプラットフォームエンジニアの視点から実務適用ポイントを追加しています。

根拠資料

NVIDIA DGX B200 server rack with GPU-accelerated Presto for data analytics Development Concept Image

DGX B200単一ノード:CPU 8~10台クラスターを凌駕

最も印象的な結果は単一DGX B200ノードで得られました。このサーバ1台にB200 GPU 8基がNVLink 5.0で接続され、各GPUが1つのPrestoワーカーとして動作します。

TPC-H Scale Factor 1K(約1TBデータセット)

構成実行時間CPU比速度向上
CPU 8ノード (Intel Xeon 6642Y)基準 (1x)-
GPU 1基 (B200)0.4x2.5倍
GPU 8基 (B200)0.12x8.2倍

TPC-H Scale Factor 3K(約3TBデータセット)

構成実行時間CPU比速度向上
CPU 10ノード (Intel Xeon 6642Y)基準 (1x)-
GPU 3基 (B200)0.28x3.6倍
GPU 8基 (B200)0.13x7.8倍

注目ポイント:

  • GPU 1基だけでも8ノードCPUクラスターより2.5倍高速です。消費電力とラックスペースを考慮すると、TCO面で圧倒的です。
  • GPU数を増やすとほぼ線形に性能がスケールします。NVLink 5.0の1,800 GB/s双方向帯域がボトルネックを作らないためです。
  • ただしこのベンチマークはHot Cache状態(データが既にメモリに載っている状態)で測定されています。実運用ではコールドスタート時のI/Oボトルネックが発生し得るため、キャッシュウォーミング戦略が重要です。

💡 国内クラウド環境でのTips: 国内でもGPUクラスターをPresto専用に割り当てるのはまだ難しいケースが多いです。その場合はGPUインスタンスをスポットで起動し、ホットデータのみGPU Prestoにルーティングするハイブリッドアーキテクチャを検討してみてください。例えば日次バッチ系クエリはCPU Presto、リアルタイムダッシュボードはGPU Prestoと分岐すればコスト効率を高められます。

Data analyst monitoring GPU-accelerated Presto query performance on dashboard IT Technology Image

GB200 NVL72マルチノード:I/O最適化で64%性能向上

単一ノードの性能も印象的ですが、本当の焦点はマルチノードへのスケールアウトです。NVIDIA GB200 NVL72は18ノード(合計72基のB200 GPU)で構成され、全GPUがNVLinkで接続されます。

ベンチマークは8ノード(32GPU)を使用し、TPC-H Scale Factor 10K(約10TB)と30K(約30TB)を実行しました。特に興味深いのはI/O設定の最適化プロセスが段階的に公開された点です。

I/O最適化段階別性能比較(SF 10K)

最適化段階説明累積性能向上
BaselinePOSIX読み取り + デフォルトI/Oパラメータ0%(基準)
+ GDS + 16MiB I/OGPUDirect Storage有効化、I/Oタスクサイズ4MiB→16MiB~30%
+ 16 I/OスレッドI/Oスレッド4→16に増加~47%(追加17%)
+ Rebatching + Q11 Rewrite大容量バッチ転送、Q11 SELECT→INSERT変換~64%(追加35%)

Q11 Rewriteが示唆すること

Q11クエリはSELECT結果をCoordinatorに転送する過程でGPU利用率が5%未満に低下する問題がありました。HttpExchangeがボトルネックだったのです。これをINSERT INTOに変更し、GPUベースのParquet Writerで結果を直接Storageに保存するようにしたところ、実行時間が50秒から2秒に短縮しました。

この事例から得られる教訓:

  • GPU高速化環境ではデータ移動(Data Movement)が計算よりも大きなボトルネックになり得ます。
  • PrestoのデフォルトHttpExchangeはGPU間通信に最適化されていません。UcxExchangeを活用した高性能通信チャネル構成が必須です。
  • クエリパターンに応じて結果返却方式をSELECT vs INSERTで選択できるオプティマイザレベルの自動化が今後の課題です。

GPUDirect Storageの役割

GB200 NVL72 + IBM Storage Scaleの組み合わせにおいて、GPUDirect Storage(GDS)は性能の鍵です。GDSを使用するとストレージ→GPUメモリへデータが直接転送され、CPUメモリを経由するバウンスバッファコピーコストNUMA境界を越えるペナルティを排除します。

実際に2ノード8GPU環境でGDS Cold ReadはPOSIX Cold Readよりも約2倍高速な性能を示しました。コールド状態(キャッシュミス)でもこれだけの差があれば、運用環境ではGDS適用が必須と言えます。

NVIDIA GB200 NVL72 cluster network topology with NVLink and InfiniBand connections Software Concept Art

まとめ:GPU高速化Presto、導入前に必ず確認すべき3つのポイント

NVIDIAのベンチマーク結果は、GPU高速化PrestoがCPUベースクラスターを代替できる現実的な選択肢であることを証明しました。しかし実際の導入を検討するなら、以下の3つを必ず確認してください。

1. I/Oアーキテクチャ設計

  • GDSをサポートするストレージ(IBM Storage Scale、Lustreなど)とネットワーク(InfiniBand/RoCE)が整っている必要があります。
  • 国内クラウドではAWS EBSやAzure Managed DiskとのGDS互換性を事前に確認しましょう。オンプレミスでない場合はNVIDIA GPU Cloud(NGC)のリファレンスアーキテクチャを参照するのが良いでしょう。

2. クエリパターン分析

  • 全てのクエリがGPU高速化の恩恵を受けられるわけではありません。複雑な結合、ウィンドウ関数、大規模集計が多く含まれるワークロードに最も効果的です。
  • 単純なポイントクエリや単一行取得は、むしろGPUコンテキストスイッチングオーバーヘッドにより性能が低下する可能性があります。

3. 運用複雑度

  • GPU Prestoは既存のPrestoとは別クラスターで運用する必要があります。CPU PrestoとGPU Presto間のデータルーティングメタデータ同期戦略が必要です。
  • IBM watsonx.dataプラットフォームとの統合が進んでいるため、マネージドサービスを優先検討するのも一手です。

次のステップ

GPU高速化Prestoはまだテクニカルプレビュー段階ですが、データ分析のパラダイムを変える潜在能力は十分です。特にリアルタイム性が重要なAIエージェント時代にはなおさらです。国内でもNVIDIAのリファレンスアーキテクチャをベースにしたPoCが近々始まることが予想されますので、ご興味のある方はNVIDIA Developer Programに登録して最新情報を入手されることをお勧めします。

参考リンク(Qiitaコミュニティの議論より):

本コンテンツは、信頼性の高い情報源をもとにAIツールを活用して作成され、編集者によるレビューを経て公開されています。専門家によるアドバイスの代替となるものではありません。