シンガポール国立大学 You Yang 氏: 高性能 AI はどのようにして突破口を開くことができるのでしょうか?

出典:雷峰ネット

著者:黄南

AI モデルのパラメータはここ数年で劇的に変化しました。 You Yang氏は、2016年から2021年1月までAIモデルのパラメータ数が18か月ごとに40倍に増加し、2018年1月から2021年1月までAIモデルのパラメータ数が大幅に増加したと指摘した。言語モデルは 18 か月ごとに 340 回増加しました。対照的に、2016 年 1 月から 2021 年 1 月までの間では、GPU のメモリは 18 か月ごとに 1.7 倍しか増加しません。

高いトレーニング コストと長いサイクルが、大規模モデルの開発において克服すべき最も困難な問題であることがわかります。

この問題に対し、You Yang 氏は、同一の機器条件下でのデータ移動を最小限に抑えるために、高効率メモリシステム、N 次元並列システム、大規模最適化の 3 つのレベルから始まる Colossal-AI システムを提案しました。 GPU スループットを最大化し、最高点までスケールアップします。

You Yang氏はまた、現段階でのモデルパラメータの数は10万倍に拡張されているが、層の数はそれほど増えていないことを指摘した。これは、今日のAIの開発はもはやディープラーニングではなく、ディープラーニングに移行したことを意味しているのかもしれないと指摘した。幅広く学ぶ時代。モデルの範囲が広くなるにつれて、大規模かつ長期にわたる GPU トレーニング タスクに直面して、大規模モデル トレーニング システムの中核となるのは、GPU 並列コンピューティングを実装して、より高速でコスト効率の高い大規模モデルの目標を達成する方法です。トレーニング。

以下は、You Yang のライブスピーチの内容です。Leifeng.com が当初の意図を変えることなく編集、整理したものです。

AI 大規模モデルの機会と課題

まず写真を見せてください。グラフの横軸は時間、縦軸はAIモデルのパラメータ量です。

2016年から2021年1月まではAI大型モデルのパラメータ量が18か月ごとに約40倍、2018年1月から2021年1月まではAIモデルのパラメータ量が18か月ごとに340倍に増加します。

2016 年、当時の世界最高のモデルは ResNet-50 であり、現在の最高のモデルは GPT-4 です。アーキテクチャの観点から見ると、OpenAI は GPT-4 のアーキテクチャを発表していませんが、50 層のニューラル ネットワークである ResNet-50 や 100 層未満の GPT-3 のアーキテクチャと比較すると、近年のAIモデルの層数は制作されていないほど変化しすぎています。

ResNet-50からGPT-4まで、パラメータの数は約10万倍に増加しましたが、実際には各層の幅は広くなりました。 LLaMA-65B版も含めると数十層のネットワークでもあります。

したがって、私たちは深い学習ではなく、幅広い学習の時代に入ったかもしれません。

2019 年以降、Transformer アーキテクチャは AI 大規模モデル トラックを基本的に統一しており、現在最も効率的な AI 大規模モデルはすべて Transformer アーキテクチャであることがわかります。上図の 2 つの点線は、大規模モデルのパラメーターの変化傾向を示すだけでなく、GPU の変化傾向も示しています。

Nvidiaの株価は今では何度も上昇していますが、Nvidiaを含むメーカーのGPUメモリの成長率は大型モデルの開発スピードに大きく及ばないのです。

2016 年 1 月から 2021 年 1 月までの過去 6 年間のモデル パラメーターの成長率と比較すると、NVIDIA GPU のコンピューティング成長率は 18 か月ごとに 1.7 倍しか増加していません。

A100 80G を例として、GPT-3 トレーニングに必要なメモリ量を計算します。GPT-3 には約 1,750 億のパラメーターがあります。計算の便宜上、200 億の整数を使用します。これは、200 の 10 倍に等しいです。 9 乗、各単精度は 4 バイトを占有し、パラメータだけで 800G のメモリを占有し、勾配も 800G のメモリを占有します。現在の最適化手法では、第一瞬間、第二瞬間などの情報が800Gに格納される。言い換えれば、何も行わない大規模なモデルをトレーニングする場合、少なくとも数テラバイトのメモリが必要です。メモリが 80G しかない単一の A100 GPU では十分とは言えません。さらに、中間結果のバッチ サイズが大きくなるほど、 、メモリのオーバーヘッドが大きくなります。

メモリの観点から見ると、大規模なモデルをトレーニングするには最初に数千の GPU が必要になるのはこのためです。

定量化可能な例を挙げてください。 PaLM は 5,400 億の大型モデルであり、現在のクラウドコンピューティング市場価格によれば、トレーニング用 PaLM には少なくとも 1,000 個の GPU を契約する必要があり、コストは約 900 万ドル以上となります。 Meta は以前、LLaMA は 2,000 個の A100 GPU を使用する必要があり、トレーニング セッションを完了するには 3 週間かかると明確に述べていますが、この計算から、LLaMA の 1 回のトレーニング セッションのコストは 500 万米ドルであると結論付けることができます。

ただし、大規模モデルの改良は 1 回のトレーニング セッションに限定されないため、優れた大規模モデル製品を作成するには少なくとも 5 ~ 6 回の反復が必要になる場合があり、初期段階ではすべて試行錯誤が必要です。したがって、パブリック チャネルの分析によると、GPT-4 の 1 回のトレーニング セッションのコストは約 6,000 万米ドルで、トレーニングには少なくとも数か月かかります。そのため、ChatGPT が最新バージョンにアップグレードされても、その最下層は 2021 年 9 月バージョンのモデルのままです。つまり、2021 年 9 月から現在まで、OpenAI は本質的に製品をアップグレードしていませんが、その根本的な理由は、各モデルのトレーニングのコストが高いだけでなく、トレーニング サイクルも非常に長いため、大型モデルのトレーニングは非常に高度で深刻です。

問題を想像してください。現在、1 兆個のパラメータを持つ大規模なモデルと 1,000 億個のパラメータを持つ大規模なモデルがあります。1 兆個のパラメータを持つ大規模なモデルが 1,000 億個のパラメータを持つ大規模なモデルよりも優れているかどうかを検出する方法を使用できるでしょうか?つまり、モデルパラメータの数はどの程度増加するのでしょうか?

今日の時点では、当分の間、この質問に科学的に答えることはできないと感じています。理由はいくつかあります。

まず、ニューラルネットワークの学習における非凸最適化の問題ですが、現状では学習により収束する点の多くは大域最適解ではなく局所最適解となっています。したがって、既存の計算リソースでは検証できない、ニューラルネットワークがどの程度学習されているかを検証する必要があります。

2 番目の問題は、大規模モデルのトレーニングでは多くの場合、1 つまたは 2 つのエポックしかトレーニングしないことです。一方、前の CNN モデルでは、ResNet トレーニングには 90 エポックがあり、自己教師あり学習トレーニングでも 1000 エポックがあるため、大規模モデルは 1 つまたは 2 つのエポックしかトレーニングしないことです。この方法は、データセットを 1 回または 2 回処理するだけと同等であり、収束はさらに不十分です。したがって、このような高い学習コストの場合、パラメータが 1 兆個のモデルと 2 兆個のモデルのどちらが優れているのかを検証することは、実験によってその可能性が十分に発揮されていないため、困難です。したがって、今日のAI大型モデルは実験課題であり、この実験をいかに効果的に効率化してコストを削減するかが業界全体の普及の根幹となると考えています。

現実に戻って、なぜ今日誰もがビッグモデルを追い求めているのでしょうか?数理論理学の観点からは、モデルのパラメータが大きいほど効果は大きくなり、これは絶対的なものとなります。

同時に、コストも上昇し続けています。現在、大規模なモデルのトレーニングには数百、数千、さらには数万の GPU が必要ですが、数万の GPU のコストをさらに削減する方法は非常に大きな課題です。

20年前は当時の主流周波数に依存していたためプログラムはすべてシリアルでしたが、ハードウェアの速度が10倍になったと仮定すると、コードを1行も変更することなく動作速度も10倍に向上します。しかし今日、コードを 10 倍高速化したい場合、ハードウェアがすでに 10 倍高速であると仮定しますが、コードを最適化しないと、おそらく速度はむしろ遅くなるでしょう。その理由は、GPU 内部などのより大きなマシンの場合、GPU メモリと CPU 間のデータ移動、または GPU 間のデータ移動とサーバーによって実装されるデータ移動が大部分を占めるためです。システム全体の時間のほとんどがデータの移動に費やされ、モデルのスケーラビリティが低下します。

将来的には、優れた分散ソフトウェアと劣悪な分散ソフトウェアでは、数千の GPU、さらには 500 の GPU で 10 倍の速度差が生じる可能性があると思います。

**Colossal-AIはどのように機能しますか? **

上記の課題に基づいて、最適化手法を提供し、データ移動のコストを削減し、モデルのスケーラビリティの効率を最大化する大規模モデルトレーニングシステム Colossal-AI を提案します。

具体的なデータとしては、最も単純な PyTorch を使用して GPT-3 をトレーニングすると 1,000 万ドルかかるが、Nvidia を最適化した後、Megatron を使用するとコストを 300 万ドルに削減でき、Colossal-AI を使用するとコストを削減できます。 130万ドルまで。同じ機器条件下で、データ移動を最小限に抑えると、データ移動の割合が最低レベルに減り、GPU スループットが最高点まで拡張できることがわかります。

上記の問題に対応して、Colossal-AI は 3 つのレベルを提案します。他の同様のソフトウェアにもこれら 3 つのレベルが含まれています。

最初の層はメモリの最適化で、まず 1 つの GPU と 1 つのサーバーのメモリ効率が最高になるようにします。これが基礎です。

2 番目のレベルは N 次元並列処理です。現在、数千、数万の GPU を使用する場合、中核となるテクノロジーは Parallel Computing (並列コンピューティング) です。 1 GPU から 10 GPU では、規模が比較的小さいため、簡単に 7 倍の高速化が得られますが、10 GPU から 100 GPU では、並列規模が大きくなり、その通信のコストが下がったため、4 倍の高速化しか得られない可能性があります。上。また、100 GPU から 1000 GPU にすると、通信コストがさらに増加するため、2 倍の高速化しか得られない可能性があります。また、1,000 GPU から 10,000 GPU に移行すると、ソフトウェアの実行速度が低下すると、デバイスが高密度通信にすべての時間を費やすため、速度が上がらないだけでなく、速度が低下する可能性さえあります。

2 つ目は最適化問題です。今後の AI 大型モデルの開発方向には 2 つの層があると思います。最初の層は、モデルをよりインテリジェントにし、より良い構造を設計することです。たとえば、BERT からGPT、または ResNet から BERT など。モデル構造を常に変更しようとしています。

また、最適化手法の改善もあり、SGD から MOMENTUM、ADAGRAD、ADAM への移行が進んでいる現在、将来的には効率を 10 倍に高めることができる、より優れた最適化手法を導入することも非常に重要です。

実際に大規模なモデルをトレーニングする並列問題に特有のものです。

1 つ目はデータ並列処理です。これは、最も単純で効率的な並列方法です。データの並列性とは、ピクチャが 10,000 枚あるとすると、1 サイクルで 1,000 枚のピクチャを処理することを意味し、マシンが 10 台であれば、各マシンに 100 枚のピクチャが割り当てられ、10 サイクルですべてのピクチャを処理できます。

データ並列処理のプロセスでは、データを要約する必要があります。各マシンは、異なるデータを使用して、異なる勾配を取得します。マシンは、異なるデータに対する異なる変更を学習し、パラメーター勾配を更新し、最終的にグローバル勾配を計算します。現在、合計する方法は、平均化が使用されているため、その効果は非常に優れています。以前は、データ並列処理における Colossal-AI の LARS メソッドにより、Google、Meta、Tencent、Sony などの企業の ImageNet のトレーニング時間が 1 時間から 1 分に短縮されました。

データの並列処理は最も基本的であり、最も安定しています。データを分割した後、将来 GPU が 10,000 個になると仮定すると、数時間ごとに 4 ~ 5 個の GPU がクラッシュすることが起こりやすく、10,000 個の GPU のクラスターを運用および維持するのは困難ですが、データの並列性の安定性は高くなります。重要なのは、たとえ 10,000 個の GPU が十数個クラッシュしたとしても、勾配の合計と平均化が行われるため、一般的な結果は変わらないということです。

このように考えると、データ並列処理は基本的なインフラストラクチャであると考えられます。

もちろん、データ並列処理だけでは十分ではありません。その理由は、データ並列処理には、モデルを各 GPU またはサーバーにコピーする必要があり、サーバーまたは GPU が勾配を交換するという前提があるためです。しかし、GPU のメモリが 80G しかない場合、数兆個のパラメータを持つモデルには数十テラバイトのメモリが必要となり、GPU に格納しきれないため、モデルを異なる GPU に分割して結果をまとめる必要があります。このアプローチはモデル並列処理と呼ばれます。モデルの並列処理には 2 種類あり、1 つはテンソル並列処理、つまり層内のモデルの並列処理です。例えば GPT-3 の層数は 80 層か 90 層程度で、各層ごとにモデルを 1 回切り出し、その層での計算を複数回に分け、1 層の計算が終わると次の層の計算を行います。これがテンソル並列処理です。

もう 1 つの方法は、データ並列処理とテンソル並列処理の間のモデル並列処理であるパイプライン並列処理 (パイプライン並列処理) です。複数のデータ パイプ (パイプライン) を構築することで、各データ パイプのデータ ポイントが異なり、大きなサイズを複数の小さなサイズに分割することに相当し、パイプ計算が実行されます。 10 個のパイプがある場合、10 個のパイプは 10 個の異なるデータ セットを表し、最初のパイプは最初のレイヤーのデータを計算し、2 番目のパイプは 2 番目のレイヤーを計算します...このように並列して、私たちの建物と同様に、10 個のエンジニアリング最初のエンジニアリング チームが 1 番目のビルの 1 階を建設し、2 番目のエンジニアリング チームが 2 番目のビルの 2 階を建設する場合、チームは 1000 フロアを建設します。

建物の数が多いほど、建物とエンジニアリング チームの比率が高くなり、効率が向上します。これは、同時に 10 のエンジニアリング チームが稼働することに相当します。各エンジニアリング チームは GPU に相当し、各建物はパイプに相当し、建物の層数はパイプライン並列処理のコア ロジックであるニューラル ネットワークの層数に相当します。

現在、業界では関連する取り組みが行われており、Colossal-AI に加えて、NVIDIA の TensorRT と Microsoft の DeepSpeed も技術的障壁が最も高い 2 社です。

しかし、Colossal-AIがそれと異なるのは、Colossal-AIが将来の大規模モデルの開発方向に焦点を当てていることです。現在のモデルは依然として深くならずに広くなりつつあり、テンソル並列処理がより重要になることがわかりますが、その最大の欠点は、層全体をカットするため、通信のオーバーヘッドが大きすぎることです。これが、Nvidia の CEO が、GTC サミットで初めて 3D 並列処理を導入する際に、通信オーバーヘッドが大きすぎる問題と、それが 1 台のサーバーでしか実行できないことを具体的に説明した理由です。したがって、Colossal-AI は 2D テンソル並列処理と 2.5D テンソル並列処理に焦点を当てており、これにより計算コストが 1 桁削減されます。

これは、1 次元テンソル並列処理では、各マシンは 10,000 台のマシンのうち 9999 台のマシンを処理する必要があるのに対し、2D テンソル並列処理ではサブユニットに分割され、各マシンは 96 台のマシンを処理するだけで済むことを意味します。そのコア ロジックは、グローバル同期 (グローバル同期) をローカル同期 (ローカル同期) で置き換え、さらにローカルな通信でグローバル通信を置き換えることです。このプロセスでは、デザインのスケジューリングが最も困難です。

3D テンソル並列処理についても同様で、次元が上がるたびに設計の複雑さは一桁増加し、最終的には通信の複雑さは減少します。

メモリの最適化に関して言えば、現在の AI の大規模モデルのトレーニングには多くのメモリ オーバーヘッドが必要です。何もしなくても数テラバイトのメモリが必要です。手動介入を行わない場合、一度使用すると、場合によっては、数十、あるいは数百テラバイトのメモリが必要になる場合があります。

モデルの予測効果を高めるためには、長い系列のデータが必要になることがよくありますが、現在の大規模モデルの本質は、1 つの単語の出力を通じて次の単語の確率を予測することであり、長い系列のデータは単なるものです。必要です。これに関連して、Colossal-AI は Sequence Parallelism (シーケンス並列処理) も開始しました。

具体的には、シーケンスを切断した後、深刻な問題に直面します。アテンション スコアを実行するとき、各トークンはグローバル シーケンス内の他のトークンとともに評価される必要があり、分割後にサーバー上にあるのはトークンの一部だけであり、別のトークンが他のサーバーに分散されるため、各サーバーは実行するために他のサーバーを処理する必要があります。

つまり、今日部屋にいる 200 人がそれぞれスナックを 1 パックずつ摂取したと仮定すると、全員が他の全員のスナックを味わうことができることを望みます。全員が他の人のスナックを味わうことができるようにするには、少なくとも 200 平方の交換が必要です。おやつ。そうすると、一番簡単な方法は、全員で輪になって、食べたおやつを右側の人に渡し、左の人からおやつをもらうということを、n-1回だけ、つまり199回だけパスして終了です。これにより、全体的な通信コストが削減されます。

要約すると、AI 大規模モデルのトレーニング用の現在のコア テクノロジ スタックは、実際には並列コンピューティングです。これは、数十万の GPU コアを処理し、すべての GPU を並列で使用する必要があるためです。データ並列処理、テンソル並列処理、パイプライン並列処理、およびデータ シーケンス並列処理は、並列処理のコア モジュールです。

メモリの最適化に関しては、現時点では選択肢が少ない環境にあり、Nvidia GPU が最適であり、これに代わるより良いソリューションは他にないようです。しかし問題は、Nvidia GPU のメモリが限られているということです。この場合、CPU メモリと NVMe メモリをどのように使用するかを考えられますか? 核となるアイデアは、GPU メモリを保存できない場合は移動するということです。通常、建物を建てる場合、必要な原材料は階下の建設現場に置くことができないため、隣の工場に置きます。 。また、その技術の核心は、データ移動を最小限に抑えること、つまり、CPU と GPU 間のデータ移動を最小限に抑え、CPU と NVMe 間のデータ移動を強化することで、スループット速度を最高まで高めることです。

オープンソースへ

Colossal-AI はオープンソース ソフトウェアであると同時に、商用プラットフォームも構築しており、GPU を持たないユーザーのために、プラットフォーム上で独自の大規模モデルを直接トレーニングしてデプロイすることができます。モデルもLLaMA、PaLM、GPTなど多彩なモデルを用意しており、モデルの微調整は最速2~3日で完了します。ハードウェアやソフトウェアなどのインフラストラクチャの処理に数週間、場合によっては数か月を要していた以前のユーザーと比較して、効率が大幅に向上しました。同時に、Colossal-AI はユーザーのプライバシーも保護します。プラットフォームはユーザー データを保持したりアクセスしたりしません。これが Colossal-AI と OpenAI ChatGPT の本質的な違いです。 Google Cloud にデータをアップロードする場合、Google は多くの場合データには触れませんが、OpenAI GPT が分析するため、AI モデルが解釈できない、トレーニングが不完全であるなどのリスクが一般的です。したがって、将来的には、多くの企業が独自の大規模モデルをトレーニングすることになるでしょうが、Colossal-AI は、大規模モデルのトレーニング用のツールを提供しながら、ユーザーのプライバシーを最大限に保護することを目的としています。

パフォーマンスの点では、Colossal-AI は同じハードウェア上で 24 倍大きいモデルをトレーニングでき、これは DeepSpeed の 3 倍高速であり、ローエンド サーバーでも Colossal-AI を使用して対応するモデル トレーニングを完了できます。たとえば、LLaMA-65B のトレーニングの場合、Colossal-AI 上で同じコードを使用すると、約 50% の加速効率が直接得られます。

たとえば、簡単な例えで言えば、今の大きなモデルは金の採掘であり、Nvidia はシャベルを販売し、次に手袋や衣類を販売し、金の採掘の効率を最大化します。

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • コメント
  • 共有
コメント
0/400
コメントなし
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)