Gcore https://gcore.com/ja/blog/feed/ Official Gcore CDN and Cloud Blog Fri, 07 Feb 2025 11:13:04 +0000 ja hourly 1 https://wordpress.org/?v=6.7.2 AIにおけるGPUアクセラレーション: グラフィックスプロセッシングユニットが深層学習を推進する方法 https://gcore.com/ja/blog/deep-learning-gpu/ Tue, 19 Sep 2023 08:06:52 +0000 https://gcore.com/blog/deep-learning-gpu/ この記事では、AIトレーニングで最も一般的なサブセットである深層学習において、GPUがどのように新しい現実を形成しているかについて説明します。 GPUアーキテクチャとそれがAIワークロードにどのように適合するか、深層学習モデルのトレーニングにCPUよりもGPUのほうが適している理由、最適なGPU構成を選択する方法について説明します。

GPUが深層学習を推進する仕組み

深層学習を推進する主要なGPU機能は、並列処理機能と、この機能の基盤となるコア (プロセッサ) アーキテクチャです。

並列処理

深層学習 (深層学習) は行列計算に依存しています。行列計算は、GPUが行う並列処理を使用して効果的に行えます。 この相互関係をより深く理解するために、深層学習モデルの簡略化されたトレーニングプロセスについて考えてみましょう。 このモデルでは相関行列を使用して画像などの入力データの画像内の特定のオブジェクトを認識します。 マトリックスはデータセットを要約してパターンを識別し、それに応じて結果を返します。オブジェクトが認識された場合、モデルはそれに「真」というラベルを付け、そうでない場合「偽」というラベルを付けます。 以下にはこのプロセスを簡略化して示しています。

深層学習のトレーニングプロセスの簡略図

平均的深層学習モデルには数十億のパラメーターがあり、それぞれのパラメーターが行列処理で使用される行列の重みのサイズに影響します。 数十億のパラメータをそれぞれ考慮する必要があるため、真・偽の認識プロセスでは同じ行列処理を何十億回も繰り返す必要があります。 処理は相互に繋がっておらず、並列して実行されます。 GPUは並列処理機能が優れているため、この種の処理に最適です。 これは、より多くのトランジスタをデータ処理に割り当てることで可能になります。

コアアーキテクチャ: Tensorコア

NVIDIA Tensorコアは、ハードウェアアーキテクチャが深層学習とAIにどのように効果的に適応できるかを示す一例です。 Tensorコア (特殊な種類のプロセッサ) は、深層学習に必要な数学的計算専用に設計されていますが、従来のコアはビデオレンダリングや3Dグラフィックスにも使用されていました。 「Tensor」とは、行列計算であるテンソル計算を指します。 テンソルは数学的なオブジェクトです。テンソルが2次元の場合、行列となります。 以下は、Tensorコアが行列を計算する方法を視覚化したものです。

Volta Tensorコアの行列処理。 出典: NVIDIA

640個のTensorコアを備えたTesla V100などのNVIDIA Voltaベースのチップは、初のAI専用GPUとなり、深層学習開発業界に大きな影響を与え発展を促進させました。 NVIDIAは、2017年にVoltaアーキテクチャに基づいたGPUチップにTensorコアを追加しました。

マルチGPUクラスター

深層学習トレーニングを促進するもう1つのGPU機能は、多くのGPUが同時に処理を行うマルチGPUクラスターを構築することで処理能力を向上させる機能です。 これは、数十億、数兆のパラメーターを含む大規模でスケーラブルな深層学習モデルをトレーニングする場合に特に役立ちます。 このようなトレーニングに対する最も効果的なアプローチは、NVLinkやInfiniBandなどのインターフェイスを使用してGPUを水平にスケーリングすることです。 これらの高速インターフェイスにより、GPUはCPUのボトルネックを回避してデータを直接交換できます。

NVLink GPU-to-GPU接続を備えたNVIDIA H100。 出典: NVIDIA

例えば、NVLinkスイッチシステムを使用すると、クラスタ内で256個のNVIDIA GPUを接続し、57.6 Mbpsの帯域幅を実現できます。 このサイズのクラスターでは、大規模な深層学習モデルのトレーニングに必要な時間を大幅に短縮できます。 市場にはAIに重点を置いたGPU製造者がいくつかありますが、NVIDIAは圧倒的なリーダーであり、深層学習に最大の貢献をしています。 これが、GcoreがAI GPUインフラストラクチャにNVIDIAチップを使用する理由の1つです。

GPU対CPUの比較

CPUはタスクを順次実行します。 命令は先入れ先出し (FIFO) ベースで実行されます。 CPUは単一のコアを使用してタスクを次々に実行できるため、順次処理に適しています。 また、CPUはGPUよりも実行可能な命令の範囲が広く、より多くのタスクを実行できます。 また、CPUは、ROM、RAM、BIOS、入出力ポートなどのより多くのコンピュータコンポーネントと対話できます。

GPUは並列処理を行います。つまり、タスクを複数のコアに分割して処理します。 GPUは一種の高度な計算機です。限られた命令セットのみを受け取り、行列の乗算などのグラフィックスおよびAI関連のタスクのみを実行できます (CPUもそれらを実行できます) 。GPUはディスプレイとメモリのみと対話します。 より多くのコアをこれらの処理に対してのみに専念させられるため、並列処理においては利点となります。 この特化により、並列タスクの実行におけるGPUの効率が向上します。

平均的なコンシューマグレードのGPUには、単純な操作を迅速かつ並列で実行するのに適した数百のコアが搭載されているのに対し、平均的なコンシューマグレードのCPUには、複雑な順次処理に適した2~16個のコアが搭載されています。 したがって、迅速処理を実行するのに必要な多くのコアがCPUよりも搭載されているため、GPUのほうが深層学習に向いているのです。

平均的なCPUには2–16個のコアがあり、平均的なGPUには数百個のコアがあります

GPUの並列処理機能は、より多くのトランジスタをデータ処理専用に割り当てることで可能になります。 GPUは、大規模なデータキャッシュや複雑なフロー制御に依存するのではなく、CPUと比較して計算で発生するメモリアクセスの遅延を削減できます。 これにより、長いメモリアクセス遅延をなくして処理に必要なトランジスタの数を減らし、最終的には高度な並列処理に役立ちます。

GPUは、CPUよりも多くのトランジスタをデータ処理に割り当てます。 出典: NVIDIA

また、GPUではビデオDRAMであるGDDR5とGDDR6が使用されています。 これらはCPU DRAMであるDDR3およびDDR4よりもはるかに高速です。

深層学習トレーニングでGPUがCPUよりも優れたパフォーマンスを発揮する仕組み

深層学習では、メモリとコアの間で大量のデータを転送する必要があります。 これに対処するためにGPUは特別に最適化されたメモリアーキテクチャを備えています。そのおかげで、GPUのメモリ容量がCPUのメモリ容量以下であっても、CPUよりも高いメモリ帯域幅を実現します。 For example, a GPU with just 32 GB of HBM (high bandwidth memory) can deliver up to 1.2 Tbps of memory bandwidth and 14 TFLOPS of computing. 一方で、CPUは数百GBのHBMを搭載していても、帯域幅は100 Gbpsで処理能力は1 TFLOPSにすぎません。

深層学習におけるほとんどの使い方でGPUの方が高速であるため、より安価にレンタルできます。 深層学習トレーニングに費やすおおよその時間が分かっている場合は、クラウドプロバイダーの価格を確認するだけで、CPUの代わりにGPUを使用することでどれくらいの費用を節約できるかを見積もることができます。

構成、モデル、フレームワークによっては、深層学習トレーニングではGPUがCPUよりも優れたパフォーマンスを提供することがよくあります。 以下にはいくつかの直接比較を示しています。

  • Azureは、サイズの異なる5つの深層学習モデルに対してTensorFlowとKerasフレームワークを使用して、さまざまなクラウドCPUとGPUクラスターをテストしました。 いずれの場合も、GPUクラスターのスループットは一貫して186%から804%の範囲でCPUクラスターの処理能力を上回ました。
  • Deciは、EfficientNet-B2モデルを使用してNVIDIA Tesla T4 GPUとIntel Cascade Lake CPUを比較しました。 その結果、GPUはCPUよりも3倍高速であることが明らかになりました。
  • IEEEは、Intel i5第9世代CPUとNVIDIA GeForce GTX 1650GPUでのさまざまなタイプのニューラルネットワークの実行に関する調査結果を発表しました。 並列処理に適したCNN (畳み込みニューラルネットワーク) をテストした際、GPUはCPUよりも4.9-8.8倍高速でした。 しかし、ANN (人工ニューラルネットワーク) をテストした際は、CPUの実行時間のほうがGPUの実行時間よりも1.2倍高速でした。 ただし、NNアーキテクチャに関係なく、データサイズが増加するにつれGPUのパフォーマンスはCPUを上回りました。

深層学習トレーニングにおけるCPUの使用

最後の比較では、CPUが深層学習トレーニングに使用できる場合があることが示されています。 これについてさらにいくつかの例を示します。

  • コンシューマー向けGPUよりも高速に一部のAIワークロードを処理できる128 コアのCPUがあります。
  • 一部のアルゴリズムでは、CPUのほうが最適化深層学習モデルのトレーニングをより効果的に実行できます。 例えば、ライス大学ブラウン工学院では、一部のAIタスクでCPUをGPUより15倍高速にするアルゴリズムが作られました
  • ノイズや干渉のない理想に近い条件下での音声認識など、深層学習モデルの精度が重要ではない場合があります。 このような場合は、浮動小数点の重み (FP16、FP32) を使用して深層学習モデルをトレーニングし、整数に四捨五入することができます。 CPUはGPUよりも整数の処理に優れているため、GPUより高速な場合があります。ただし、GPUに比べ精度は劣ります。

しかし、深層学習トレーニングにCPUを使用することは依然として珍しいです。 ほとんどの深層学習モデルは、並列処理、つまりGPUハードウェアに適合しています。 したがって、CPUベースの深層学習プラットフォームの構築は、困難な上に不必要な作業でしょう。 マルチコアCPUインスタンスを選択し、CPUに適応したアルゴリズムを構成してモデルをトレーニングさせるには、予測できない時間がかかる場合があります。 GPUインスタンスを選べば深層学習モデルをすぐに構築、トレーニング、実行できます。

深層学習に最適なGPU構成を選択する方法

最適なGPU構成の選択は、基本的に2段階のプロセスです。

  1. 実行する必要がある深層学習の段階を決めて、
  2. それに合わせたGPUサーバー仕様を選択します。

注: 深層学習トレーニング用の仕様基準のみを考慮します。なぜなら、後程示す通り、深層学習推論 (トレーニングされた深層学習モデルの実行) はトレーニングほど処理能力を必要としていないからです。

深層学習のどの段階が必要かを判断します

最適なGPU構成を選択するには、まず、深層学習の2つの主要な段階 (深層学習トレーニングまたは深層学習推論) のどちらをGPUで実行するかを理解する必要があります。 ディープラーニングでまず直面する課題は学習です。これは、膨大な数 (兆まで) の行列係数 (重み) を調整する必要があるためです。 このプロセスは、最良の結果を得るために最適な組み合わせを探す総当り検索に近いものです (ただし、確率的勾配降下法アルゴリズムなど、計算数の削減に役立つ手法もあります) 。 したがって、学習には最高性能のハードウェアが必要であり、ベンダーはこの作業専用のGPUを製造しています。 例えば、NVIDIA A100およびH100 GPUは、推論用ではなく、深層学習トレーニング用のデバイスとして位置付けられています。

必要な行列係数をすべて計算すると、モデルがトレーニングされ、推論の準備が整います。 この段階では、深層学習モデルは入力データと行列係数を1回乗算するだけで1つの結果を生成できます。例えば、テキストから画像へのAI生成器がユーザーのプロンプトに従って画像を生成する場合などです。 したがって、数学的計算と必要な計算リソースの点において、推論は常にトレーニングよりも簡単です。 場合によっては、深層学習推論はデスクトップGPU、CPU、スマートフォン上で実行できます。 顔認識を備えたiPhoneはその1つの例です。深層学習推論には、性能が比較的控えめな4~5コアのGPUで十分です。

深層学習トレーニング用のGPU仕様を選択します

深層学習トレーニング用のGPUサーバーまたは仮想GPUインスタンスを選択するにあたり、時間、日、月など、どのようなトレーニング時間の単位が適切かを理解することが重要です。これを達成するには、モデルを作成するか、報告されたトレーニング時間とGPUモデルのパフォーマンスに関する情報を使用します。 次に、必要なリソースを決めます。

  • メモリサイズは重要な機能です。 少なくとも深層学習モデルのサイズと同じ量のGPU RAMを指定する必要があります。 製品化までの締め切りに追われていない場合はこれで十分ですが、時間に余裕がない場合は、予備のメモリを指定することをお勧めします。
  • Tensorコアの数は、処理速度にのみ影響するため、GPUメモリのサイズほど重要ではありません。 ただし、モデルをより迅速にトレーニングする必要がある場合は、コアが多いほど良いです。
  • メモリ帯域幅は、GPUを水平方向にスケーリングする必要がある場合に重要です。例えば、トレーニング時間が長すぎる場合、データセットが巨大である場合、またはモデルが非常に複雑な場合などです。 このような場合は、GPUインスタンスが NVLinkやInfiniBandなどの相互接続をサポートしているかどうかを確認してください。

したがって、深層学習モデルをトレーニングする際はメモリサイズが最も重要です。メモリが足りない場合、トレーニングは実行できません。 例えば、70億のパラメータを含むLLaMAモデルを最高精度で実行するには、Hugging Face技術チームはGPU RAMを28 GB使用することをおすすめします  。 これは7×4という乗算の結果です。ここで、7はテンソルのサイズ (7B) 、4はFP32 (完全精度フォーマット) の4ビットです。 FP16 (半精度) の場合は、14 GB (7×2) で十分です。 完全精度フォーマットにより、より高い精度が得られます。 半精度フォーマットでは精度は低くなりますが、トレーニングが高速になりメモリの効率が向上します。

Kubernetesを深層学習推論を改善するためのツールとして使用

深層学習推論を改善するには、モデルをコンテナ化し、GPUインスタンスをワーカーノードとして使用するマネージドKubernetesサービスを使用できます。 これにより、拡張性や回復力機能を向上でき、コストを削減できます。 Kubernetesを使用すると、必要に応じてリソースを自動的に拡大できます。 例えば、モデルに対するユーザープロンプトの数が急増すると、推論のためにより多くのコンピューティングリソースが必要になります。 その場合、必要なときにのみ深層学習推論に追加のGPUが割り当てられるため、アイドル状態のリソースや金銭的な無駄がなくなります。

マネージドKubernetesは運用オーバーヘッドも削減し、クラスターのメンテナンスの自動化にも役立ちます。 プロバイダーはマスターノード (コントロールプレーン) を管理します。 あなたはモデルをデプロイするワーカーノードのみを管理し、モデルの開発に集中できます。

GPUで深層学習を強化するAIフレームワーク

ディープニューラルネットワークのトレーニングに役立ち、GPUインスタンスで実行されるように特別に設計されているさまざまな無料のオープンソースAIフレームワークがあります。 また、次のフレームワークはすべて、NVIDIAのCompute Unified Device Architecture (CUDA) をサポートしています。 これは、ディープラーニングモデルを含むGPU高速化アプリケーションの開発を可能にする並列処理プラットフォームおよびAPIです。 CUDAを使用するとパフォーマンスを大幅に向上できます。

TensorFlowは、深層学習モデルのトレーニングと推論に焦点を当てた機械学習とAIのライブラリです。 TensorFlowを使用すると、開発者はデータフロー グラフを作成できます。 各グラフノードは行列演算を表し、ノード間の各接続は行列 (テンソル) です。 TensorFlowは、Python、C++、JavaScript、Javaなどのいくつかのプログラミング言語で使用できます。

PyTorchは、Torchライブラリに基づく機械学習フレームワークです。 このフレームワークは、GPUによる強力なアクセラレーションを備えたテンソルコンピューティングと、テープベースの自動微分システム上に構築されたディープニューラルネットワークという2つの高レベルの機能を提供します。 PyTorchは、開発者がモデルアーキテクチャをより詳細に制御できるため、TensorFlowよりも柔軟性が高いと考えられています。

MXNetは、GPUだけでなくCPUや TPU (テンソルプロセッシングユニット) 上でも深層学習トレーニングと推論に使用できる、ポータブルで軽量の深層学習フレームワークです。

PaddlePaddleは、MXNetと同様に、さまざまなデバイス上でディープニューラルネットワークをトレーニングおよび展開するために使用できる、強力かつスケーラブルで柔軟なフレームワークです。 PaddlePaddleは、迅速な深層学習開発を促進するために500を超えるアルゴリズムと事前トレーニングされたモデルを提供します。

GcoreのクラウドGPUインフラストラクチャ

Gcoreはクラウドプロバイダーとして、NVIDIAチップを搭載したAI GPUインフラストラクチャを提供しております。

  • コンシューマーグレードおよびエンタープライズグレードのGPUを搭載した仮想マシンとベアメタルサーバー
  • A100および H100GPUを搭載したサーバーに基づくAIクラスター
  • ワーカーノードとして使用できる仮想および物理GPUインスタンスを備えたマネージドKubernetes

GcoreのGPUインフラストラクチャを使用すると、あらゆる種類とサイズの深層学習モデルをトレーニングさせてデプロイできます。 弊社のクラウドサービスと、クラウドサービスがAIへの取り組みにどのように役立つかについて詳しくは、弊社のチームにお問い合わせください

まとめ

GPUは、並列処理と効率的な行列演算に重点を置いた独自の設計により、深層学習を含む現在および将来のAIの課題に最適です。 CPUに対する大きな利点は計算効率、メモリ帯域幅、およびスループット能力によってさらに強調されます。

GPUを選ぶときは、具体的な深層学習の目標、時間、予算を考慮してください。 これらの項目は、最適なGPU構成を選択する際に役立ちます。

GPUインスタンスをオーダーする

]]>