GPUコンピューティングの基本： 基本コンセプトの徹底解説-1

<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">大規模モデルトレーニングの領域では、多くの場合、8 A100、A800、H100、またはH800のようなモデルを搭載し、場合によっては{4, 8}のような今後のモデルを組み込んだ、シングルマシン8GPUユニットで構成されるクラスタが基盤となっています。L40S のようなモデルを組み込むことも可能です。以下は、8個のA100 GPUを搭載した典型的なホスト内のGPUコンピューティングのハードウェアトポロジーを示しています：</p>
<p><img title="GPUコンピューティングのハードウェアトポロジー" src="https://media.fs.com/images/community/erp/CZQ2i_1214_-1--2jFBnR.jpg" alt="GPUコンピューティングのハードウェアトポロジー" width="100%" /></p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">この記事では、描かれた図に基づき、基本的な概念と用語を掘り下げて説明します。</p>
<h2 class="community-restructure-h2 community_page_first_h2">PCIe スイッチチップ</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">高性能GPUコンピューティングの領域では、CPU、メモリモジュール、NVMeストレージ、GPU、ネットワークカードなどの重要な要素が、PCIe（Peripheral Component Interconnect Express）バスまたは専用のPCIeスイッチチップを介して流動的な接続を確立します。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">Gen5を最新とする5世代の進化を誇るPCIeは、デバイス間の効率的な相互接続性を保証します。この継続的な進化は、高性能コンピューティングの形成、データ転送速度の向上、最新のコンピューティング・クラスタにおける相互接続デバイスのシームレスな連携の促進において、PCIeが重要な役割を担っていることを強調しています。</p>
<h2 class="community-restructure-h2 community_page_first_h2">NVLink</h2>
<h3 class="community-restructure-h3">NVLinkの定義</h3>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">NVLinkは、Nvidiaが開発した高速、ワイヤベースのシリアルマルチレーン通信リンクで す。ウィキペディアにおけるNVLinkの定義は以下の通り：</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">NVLinkは、Nvidiaによって開発されたワイヤベースのシリアルマルチレーン近距離通信リンクで す。PCI Expressとは異なり、デバイスは複数のNVLinkで構成することができ、デバイスは中央ハブの代わりにメッシュネットワーキングを使用して通信します。このプロトコルは2014年3月に初めて発表され、独自の高速信号相互接続（NVHS）を使用しています。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">この技術は、同一ノード上のGPU間のフルメッシュ相互接続をサポートし、複数の世代を経て進化しており、ハイパフォーマンス・コンピューティング・アプリケーションの性能を向上させるために双方向の帯域幅を強化しています。</p>
<h3 class="community-restructure-h3">NVLink の進化：NVLink 1.0 から NVLink 4.0 へ</h3>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">下図に示すように、NVLinkは4世代をフォローしています。</p>
<p><img title="NVLinkの進化：1/2/3/4世代" src="https://media.fs.com/images/community/erp/hsbif_jakeyoptical-transceivers012-1dEeAb.png" alt="NVLinkの進化：1/2/3/4世代" width="100%" /></p>
<h4 class="community-restructure-h4">NVLink 1.0：</h4>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>接続方法：4チャンネル接続。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>総帯域幅：最大160GB/秒の双方向総帯域幅を実現。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>目的：主にGPU間のデータ転送を高速化し、協調コンピューティングのパフォーマンスを向上させるために設計された。</p>
</li>
</ul>
<h4 class="community-restructure-h4">NVLink 2.0：</h4>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>接続方法： 6チャンネル接続を採用。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>総帯域幅：双方向の総帯域幅が300GB/sに向上。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>パフォーマンスの向上：より高速なデータ転送を実現し、GPU間の通信効率を向上。</p>
</li>
</ul>
<h4 class="community-restructure-h4">NVLink 3.0：</h4>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>接続方法：12チャンネル接続を採用。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>総帯域幅：双方向総帯域幅600GB/sを達成。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>新機能：新しい技術とプロトコルを導入し、通信帯域幅と効率を向上。</p>
</li>
</ul>
<h4 class="community-restructure-h4">NVLink 4.0：</h4>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>接続方法： 18チャンネル接続を採用。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>総帯域幅：双方向の総帯域幅が900GB/sにさらに向上。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>パフォーマンス向上： チャネル数を増やすことで、より広い帯域幅を提供し、高性能コンピューティングや人工知能アプリケーションの高まる需要に対応します。</p>
</li>
</ul>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">NVLink 1.0、NVLink 2.0、NVLink 3.0、NVLink 4.0の主な違いは、接続方法、帯域幅、性能にあります。</p>
<h2 class="community-restructure-h2 community_page_first_h2">NVSwitch</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">NVSwitchはNVIDIAが開発したスイッチングチップで、ハイパフォーマンス・コンピューティングと人工知能アプリケーション向けに特別に設計されています。その主な機能は、同一ホスト内の複数のGPU間で高速かつ低レイテンシーの通信を提供することです。NVSwitchは、NVIDIAが開発したスイッチング・チップで、特にハイパフォーマンス・コンピューティングと人工知能アプリケーション向けに設計されています。その主な機能は、同一ホスト内の複数のGPU間で高速かつ低レイテンシーの通信を提供することです。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">下図は、8カードA100ホストの典型的なハードウェア・トポロジーを示しています。</p>
<p><img title="GPUコンピューティングのハードウェアトポロジー" src="https://media.fs.com/images/community/erp/CZQ2i_1214_-1--2jFBnR.jpg" alt="GPUコンピューティングのハードウェアトポロジー" width="100%" /></p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">下の写真は、Inspur NF5488A5 NVIDIA HGX A100 8 GPUアセンブリの側面図です。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">写真では、A100の8つのピースが見え、右側の6つの厚いヒートシンクの下にNVSwitchチップがあります。</p>
<p><img title="Inspur NF5488A5 NVIDIA HGX A100" src="https://media.fs.com/images/community/erp/tdZj3_4DZE55.jpg" alt="Inspur NF5488A5 NVIDIA HGX A100" width="100%" /></p>
<h2 class="community-restructure-h2 community_page_first_h2">NVLink スイッチ</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">NVLinkスイッチは、NVIDIAが開発した特殊なスイッチングデバイスで、異なるホスト間のGPUデバイス間の高性能通信と接続を促進するように設計されています。単一のホスト内のGPUモジュールに統合されるNVSwitchとは異なり、NVLinkスイッチは、分散コンピューティング環境内のGPUをリンクするために特別に設計されたスタンドアロンのスイッチとして機能します。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">NVLinkスイッチとNVSwitchを比較すると混乱するように聞こえるかもしれませんが、名前がスイッチを示唆しているように、実際にはNVSwitchはGPUモジュール上のスイッチングチップです。NVIDIAがこのチップを独立したスイッチとして開発し、NVLinkスイッチと正式に命名したのは2022年のことです。</p>
<h2 class="community-restructure-h2 community_page_first_h2">HBM</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">従来、GPUメモリは、従来のDDR（Double Data Rate）メモリと同様に、マザーボードに物理的に挿入され、PCIeインターフェイスを介してプロセッサ（CPU、GPU）に接続されていました。Gen4の帯域幅は64GB/sで、Gen5では128GB/sに増加します。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">この制限に対応するため、（NVIDIAに限らず）いくつかのGPUメーカーは革新的なアプローチを採用しました。複数のDDRチップを積み重ね、高帯域幅メモリ（HBM）として知られるものを形成し、GPUと統合するのです。H100に代表されるこの設計により、各GPUは専用メモリと接続する際にPCIeスイッチチップを通過する必要がなくなります。その結果、この戦略はデータ転送速度を大幅に向上させ、注目すべき桁違いの改善を達成する可能性があります。「高帯域幅メモリ」（HBM）という用語は、この先進的なメモリ・アーキテクチャを適切に表現しています。</p>
<h3 class="community-restructure-h3">HBMの進化：HBM 1からHBM3eへ</h3>
<p><img title="HBMの進化：HBM 1からHBM3eへ" src="https://media.fs.com/images/community/erp/NRshR_1214_-1-zPsAn.jpg" alt="HBMの進化：HBM 1からHBM3eへ" width="100%" /></p>
<h2 class="community-restructure-h2 community_page_first_h2">帯域幅単位</h2>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">大規模GPUコンピューティングトレーニングの領域では、性能はデータ転送速度に直接かかっており、PCIe帯域幅、メモリ帯域幅、NVLink帯域幅、HBM帯域幅、ネットワーク帯域幅などのさまざまな経路と複雑に関係しています。これらのデータレートを測定する際には、さまざまな帯域幅単位が使用されます。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">ネットワーキングの文脈では、データレートは一般的にビット/秒（b/s）単位で表され、送信と受信を区別するために単方向（TX/RX）で指定されることがよくあります。逆に、PCIe、メモリ、NVLink、HBM などの他のモジュールでは、帯域幅は通常、1 秒あたりのバイト数（B/s）または 1 秒あたりのトランザクション数（T/s）で表されます。これらの測定値は、多くの場合、アップストリームとダウンス トリームの両方のデータフローを考慮した双方向の総帯域幅を表しているこ とに注意することが重要です。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">したがって、多様なコンポーネントの帯域幅を比較・評価する場合、これらの単位を適切に見分け、変換することが極めて重要である。これにより、大規模GPUトレーニング性能の最適化に不可欠なデータ転送能力を包括的に理解することができます。</p>