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

<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">大規模モデルのトレーニングは、できれば1サーバーあたり多数のGPUを搭載したマシンのクラスターで行われることが知られています。前回の記事<a href="https://qiita.com/FScom_Japan/items/741ebd283622c54628f8">「GPUコンピューティングの基礎-1」</a>では、GPUネットワークにおける一般的な用語と概念を紹介しました。今回は、引き続き一般的なGPUアーキテクチャについて説明します。</p>
<h2 class="community-restructure-h2">8x NVIDIA A100 GPUノード/8x NVIDIA A800 GPUノード</h2>
<p><img title="標準的な8カードA100ホスト・ハードウェア・トポロジー" src="https://media.fs.com/images/community/erp/drDHH_4hSbRk.jpg" alt="標準的な8カードA100ホスト・ハードウェア・トポロジー" width="100%" /></p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">上記のA100 GPUのトポロジー図に示されているように、8個のA100 GPUのトポロジーには以下のコンポーネントが含まれます：</p>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p><strong>CPUチップ2枚（および両側の関連メモリ、NUMA）</strong>：中央演算処理装置は、汎用コンピューティングタスクを担当します。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p><strong>ストレージネットワークカード2枚（分散ストレージへのアクセス用、インバンド管理など）</strong>：これらのネットワークカードは、分散ストレージへのアクセスに使用されています。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p><strong>PCIe Gen4スイッチチップ4枚</strong>：PCIe Gen4はPCIeインターフェイスの第4世代で、より高速なデータ転送レートを提供します。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p><strong>NVSwitchチップ6枚</strong>：NVSwitchは、大規模なディープラーニング・ノーデルや並列コンピューティング・タスクの効率的な運用に不可欠な、極めて高速なGPU間直接通信を容易にします。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p><strong>GPU8個</strong>：A100 GPUは、並列化された計算を実行する主要な処理ユニットで、特にAIやディープラーニングのワークロードに適しています。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p><strong>GPU専用ネットワークカード8枚</strong>：各GPUには専用のネットワークカードがあり、GPU間の通信を最適化し、並列処理タスクの全体的なパフォーマンスを向上させます。</p>
</li>
</ul>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">これらの構成要素については、以下のセクションで詳しく説明します。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">次の図は、参考のためにより詳細なトポロジー情報を示しています。</p>
<p><img title="NVIDIA DGX A100ホスト（公式8カードマシン）のハードウェアトポロジー" src="https://media.fs.com/images/community/erp/6EEPF_1kRKRh.jpg" alt="NVIDIA DGX A100ホスト（公式8カードマシン）のハードウェアトポロジー" width="100%" /></p>
<h3 class="community-restructure-h3">ストレージ・ネットワークカード</h3>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">GPUアーキテクチャにおけるストレージネットワークカードの位置付けは、主にPCIeバスを介した中央処理装置（CPU）への接続と、分散ストレージシステムとの通信を促進する役割を担っています。以下は、GPUアーキテクチャにおけるストレージネットワークカードの主な目的です：</p>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>分散ストレージデータの読み書き ストレージ・ネットワーク・カードの主な機能の1つは、分散ストレージ・システムからのデータの読み書きを効率的に行うことです。これは、分散ストレージからトレーニングデータに頻繁にアクセスし、トレーニング結果をチェックポイント・ファイルに書き込むことが不可欠な、ディープラーニング・モデルのトレーニング・プロセスにおいて極めて重要です。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>ノード管理タスク：ストレージ・ネットワーク・カードはデータ転送に限らず、ノード管理タスクも含まれています。これには、SSH（Secure Shell）によるリモート・ログイン、システム・パフォーマンスの監視、関連データの収集などのタスクが含まれます。これらのタスクは、GPUクラスタの運用状態の監視と維持に貢献します。</p>
</li>
</ul>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">公式にはBF3 DPUが推奨されているが、実際には帯域幅の要件を満たす限り、代替ソリューションを選択することができます。例えば、費用対効果を考えるのであればRoCEを、性能を最大化するのであればInfiniBandを選択することが推奨されます。</p>
<h3 class="community-restructure-h3">NVSwitch ファブリック</h3>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">フルメッシュネットワークトポロジでは、各ノードは他のすべてのノードに直接接続されています。通常、8個のGPUが、NVSwitchファブリックとも呼ばれる6個のNVSwitchチップを介してフルメッシュ構成で接続されます。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">フルメッシュ構造では、各ラインの帯域幅は、n * bw-per-nvlink-laneで表されるNVLinkレーンあたりの帯域幅に依存します。1レーンあたり50GB/秒の帯域幅を持つNVLink3テクノロジーを利用するA100 GPUの場合、フルメッシュ構造における各ラインの合計帯域幅は、12 * 50GB/s = 600GB/秒となります。この帯域幅は双方向であり、データ送受信の両方をサポートするため、単方向の帯域幅は300GB/秒になることに注意する必要があります。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">対照的に、A800 GPUはNVLinkレーン数を12から8に減らしています。その結果、フルメッシュ構造では、各ラインの合計帯域幅は8 * 50GB/s = 400GB/sとなり、一方向帯域幅は200GB/sとなります。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">以下は、8*A800マシンのnvidia-smiトポロジーです。</p>
<p><img title="8*A800マシン用nvidia-smiトポロジー" src="https://media.fs.com/images/community/erp/n6Kbn_2SkP4D.jpg" alt="8*A800マシン用nvidia-smiトポロジー" width="100%" /></p>
<ul class="new_community_blog_detail_ul">
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>GPU間の接続（左上領域）：</p>
</li>
</ul>
</ul>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">すべてNV8と表記され、8つのNVLink接続を表しています。</p>
<ul class="new_community_blog_detail_ul">
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>NICコネクタ：</p>
</li>
</ul>
</ul>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">同じCPUダイ上にある：NUMAを横断する必要はないが、PCIeスイッチチップを横断する必要があることを表しています。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">異なるCPUダイ上： SYSと指定され、NUMAをトラバースする必要があることを表しています</p>
<ul class="new_community_blog_detail_ul">
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>GPUとNICの接続：</p>
</li>
</ul>
</ul>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">同じCPUダイ上で、同じPCIeスイッチチップの下にある：NODEとして識別され、PCIeスイッチチップのみを交差させる必要があることを表しています。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">同じCPUダイ上にあるが、同じPCIeスイッチチップの下にはない： NNODEとして指定され、PCIeスイッチチップとPCIeホストブリッジの両方を横断する必要があることを表しています。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">異なるCPUダイ上：NUMA、PCIeスイッチチップを横断し、最長距離をカバーする必要があることを表しています。</p>
<h3 class="community-restructure-h2">IDC GPU ファブリック</h3>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">次の図は、GPUノードの相互接続アーキテクチャを示しています：</p>
<p><img title="GPUノード相互接続アーキテクチャ" src="https://media.fs.com/images/community/erp/3GCEh_5MBtWw.jpg" alt="GPUノード相互接続アーキテクチャ" width="100%" /></p>
<h4 class="community-restructure-h4">コンピュート・ネットワーク</h4>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">コンピュート・ネットワークは、主にGPUノード間の接続に使用され、並列コンピューティング・タスクの連携をサポートします。これには、複数のGPU間でのデータ転送、計算結果の共有、大規模並列計算タスクの実行調整などが含まれます。</p>
<h4 class="community-restructure-h4">ストレージ・ネットワーク</h4>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">ストレージ・ネットワークはGPUノードとストレージ・システムを接続するために使用され、大規模データの読み書きをサポートします。これには、ストレージシステムからGPUメモリへのデータのロードや、計算結果のストレージシステムへの書き戻しが含まれます。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">AIに求められる高性能を実現するためには、RDMA（Remote Direct Memory Access）がコンピュート・ネットワークとストレージ・ネットワークの両方に不可欠です。2つのRDMAテクノロジーから選択 RoCEv2とInfiniBandの2つのRDMA技術の選択には、費用対効果と優れた性能のトレードオフが含まれ、各オプションは特定のユースケースと予算の考慮事項に対応しています。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">パブリック・クラウド・サービス・プロバイダーは、8台のGPUインスタンスにそれぞれ8 * 100Gbpsを搭載したCX構成のように、RoCEv2ネットワークを構成に利用することが多いのです。他のオプションと比較すると、RoCEv2 は、性能要件を満たしていれば、比較的コスト効率に優れています。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">RoCEとInfinibandの違いについては、<a href="../../../../jp/article/infiniband-vs-roce-how-to-choose-a-network-for-ai-data-center.html">InfiniBand vs. RoCE: AIデータセンターのネットワークを選択する方法</a>をご覧ください。</p>
<h4 class="community-restructure-h4">データリンク接続における帯域幅のボトルネック</h4>
<p><img title="シングルマシン8カードA100 GPUホスト帯域幅ボトルネック解析" src="https://media.fs.com/images/community/erp/sGda8_6Q85cG.jpg" alt="シングルマシン8カードA100 GPUホスト帯域幅ボトルネック解析" width="100%" /></p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">この図では、主要リンクの帯域幅仕様を紹介しています：</p>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>同一ホスト上のGPU間の通信：NVLinkを利用することで、双方向の帯域幅は600GB/秒を達成し、一方向の帯域幅は300GB/秒に達します。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>同一ホスト上のGPUとそれぞれのネットワークインターフェイスカード（NIC）間の通信：PCIe Gen4スイッチチップを使用し、双方向帯域幅は64GB/秒、一方向帯域幅は32GB/秒に達します。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>異なるホスト間のGPU間の通信： データ転送はNICに依存し、帯域幅は使用するNICに依存します。現在、中国のA100/A800モデルで一般的に使用されているNICの主流帯域幅は、片方向で100Gbps（12.5GB/秒）です。そのため、ホスト間通信はホスト内通信に比べてパフォーマンスが大幅に低下することになります。</p>
</li>
</ul>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">200Gbps (25GB/s) はPCIe Gen4の一方向帯域幅に近い値を示します。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">400Gbps（50GB/秒）はPCIe Gen4の一方向帯域幅を上回ります。</p>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">したがって、このタイプの構成で400Gbps NICを使用しても、400Gbps帯域幅を完全に利用するにはPCIe Gen5の性能が必要なため、大きなメリットは得られません。</p>
<h2 class="community-restructure-h2">8x NVIDIA H100/8x NVIDIA H800ホスト</h2>
<h3 class="community-restructure-h3">H100ホスト内のハードウェアトポロジー</h3>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">H100ホストの全体的なハードウェアトポロジーは、A100 8カードマシンとよく似ていますが、主にNVSwitchチップの数と帯域幅のアップグレードに見られます。</p>
<p><img title="H100ホスト内のハードウェアトポロジー" src="https://media.fs.com/images/community/erp/tKHex_78sPzT.jpg" alt="H100ホスト内のハードウェアトポロジー" width="100%" /></p>
<ul class="new_community_blog_detail_ul">
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>各H100ホスト内には4つのチップがあり、A100構成より2つ数が少ないのです。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>H100チップは4ナノメートルプロセスで製造され、最下段に18個のGen4 NVLink接続を備え、双方向合計900GB/秒の帯域幅を提供します。</p>
</li>
</ul>
<h3 class="community-restructure-h3">H100 GPUチップ</h3>
<p><img title="シングルチップH100 GPU内部論理レイアウト" src="https://media.fs.com/images/community/erp/eFD3a_36rnBK.jpg" alt="シングルチップH100 GPU内部論理レイアウト" width="100%" /></p>
<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>チップの最下段は18個のGen4 NVLink接続で構成され、18レーン×25GB/レーン＝900GB/秒の双方向総帯域幅を提供します。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>中央の青い部分がL2キャッシュで、一時データの保存に使われる高速キャッシュです。</p>
</li>
<li><span class="new_community_blog_detail_ul_circle"></span>
<p>チップの左側と右側には、グラフィックス・メモリとして機能するHBMチップが搭載されており、グラフィックス処理に必要なデータを格納します。</p>
</li>
</ul>
<h3 class="community-restructure-h3">ネットワーキング</h3>
<p class="blog_p padding_top_none community_blog_detail_p community_blog_detail_p1">ネットワークに関しては、H100はA100に似ているが、唯一の違いは、標準構成に<a href="https://www.fs.com/jp/products/177272.html">400GbpsのCX7ネットワークカード</a>が含まれていることです。</p>