章5 GPUベースの ストレージI/O最適化
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
AIワークロードにおいて、GPUへのデータ供給は計算処理そのものと同じくらい重要だ。100兆パラメータのモデルを数千台のGPUでトレーニングするシナリオを考えてみよう。このモデルはトークン、画像、音声、動画など、数十億ものトレーニングサンプルをプロセスする可能性がある。
これは、膨大な量のデータをストレージから読み取り、可能な限り迅速にGPUに供給しなければならないことを意味する。ストレージパイプラインが遅い場合、GPUはリソース不足に陥り、アイドル状態となる。その結果、これまで議論してきた洗練されたコミュニケーション最適化にもかかわらず、利用率が低下する。
本章ではストレージと入力パイプラインの最適化について扱う。具体的には、ディスクやリモートストレージから効率性と効率性の両立を実現するデータの読み込み、前処理、そしてそのI/OをGPU演算とオーバーラップさせる方法を示す。
高速ストレージとデータ局所性
大規模モデルトレーニングでは通常、 膨大なデータセットを読み込む必要がある。大規模言語モデルの場合、数十億から数兆ものトレーニングサンプルが一般的だ。言語モデルではテラバイト級のテキストデータ、視覚モデルではペタバイト級の画像データセットに相当する。
超大規模環境では、ストレージシステムは数千から数百万のGPUが数ヶ月間連続稼働する可能性に耐えうる、一貫した大規模スループットを提供しなければならない。ラック内にNVMe SSDを配置する、あるいはラックローカルスイッチトポロジーを用いたNVMe over Fabrics(NVMe-oF)を採用することで、ネットワークホップを最小化しパフォーマンスの一貫性を向上させる。
データがNFSサーバやクラウドオブジェクトストレージ(Amazon S3など)のようなネットワーク接続ストレージにある場合、全ての計算ノードからの集計読み取り帯域幅が十分であることを確認する必要がある。モデルとバッチサイズに基づき、各GPUが稼働を維持するために200 MB/sのトレーニングデータが必要なシナリオを想定する。GPUが合計8基の場合、必要な集計帯域幅は約1.6 GB/sとなる。BlackwellやRubinのような最新ハイエンドGPUは、飽和状態を維持するためさらに多くの帯域幅を要求する。
NVIDIA Grace Blackwell GB200/GB300 NVL72ラックは、72個のBlackwell GPUを1つのNVLinkドメインで接続している。各GPUが稼働状態を維持するために200 MB/sのトレーニングデータが必要な場合、72個のGPU全てを稼働させるには14~20 GB/sの合計ストレージスループットが必要となる。この種の超大規模ワークロードでは、ストレージ解決策もそれに応じて拡張可能でなければならない。
ワークロードが重いメディアやマルチモーダルサンプルをストリーミングする場合、測定したサンプルあたりのバイト数と秒あたりのサンプル数を用いてキャリブレーションする。こうしたケースでは、集計需要がはるかに高くなる可能性がある。
一つの解決策は、同一ラック内のNVMe SSDなどの高速ローカルストレージ、あるいはNVMe-oFネットワークトポロジーを利用することだ。別の解決策は、LustreやGeneral Parallel ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access