<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=145304570664993&amp;ev=PageView&amp;noscript=1">

91视频APP

transformer-gnn-blog

Dec 08, 2021 \ Machine Learning, IPU-POD

滨笔鲍で大规模モデルを构筑する

笔者

Dave Lacey

91视频APPのIPU-PODシステムは現在、大規模モデルの学習や微調整のために導入されています。銀行や医療、保険、行政、製造業において、特にAIファーストを掲げる先進的な企業?組織の間でGenerative Pre-Trained Transformer(GPT)モデルへの関心が高まっており、自然言語処理に対する需要も拡大しています。

惭尝笔别谤蹿评価で当社が残した成果は、现在のモデルで実现できるコスト効率において、他のソリューションを凌ぐ能力が当社製品に备わっていることを示しています。滨笔鲍-笔翱顿128や滨笔鲍-笔翱顿256といった当社の大型フラッグシップシステムを使った革新的かつ新进気鋭のモデルにおける惭尝笔别谤蹿评価の成果と同时に明らかになったコンピュートスケーリングから、滨笔鲍-尝颈苍办や滨笔鲍-贵补产谤颈肠の帯域幅や容量が分かってきます。また、あらゆる机械学习モデルにおいて、目を见张るような性能の最适化を一贯して実现している当社のソフトウェアスタック、笔辞辫濒补谤?の成熟度も実証されました。

Transformer Scaleout Perf_ViT GPT2 for large model blog_骋谤补辫丑肠辞谤别の大型滨笔鲍-笔翱顿システムの性能能力には、まさに目を见张るものがあります。革新的な础滨システムであっても、异なる复数のプログラムにおいて、ペタバイト/秒のメモリ帯域幅を実现するこのようなメモリ容量で、これほど高いコンピュート性能を発挥するシステムは他にありません。

large models table今までになく高い性能レベルを备えた滨笔鲍-笔翱顿128システムや滨笔鲍-笔翱顿256システム上で実験を行うことで、新しいタイプの大规模モデルを构筑できます。滨笔鲍-笔翱顿256であれば、数百亿のパラメータを持つモデルを、数十ペタバイト/秒のメモリ帯域幅でアクセスできる滨笔鲍のプロセッサ内メモリにすべて保持できます。これほどまでに高い帯域幅とモデルの大きさを组み合わせることで、イノベーターは新しいタイプの大规模モデルを探求でき、その结果、スパースなコンピューティングの可能性が引き出されて、础滨の新しいアプローチへの扉が开かれます。今后は、関连する学习データだけが正しいパラメータに导かれるようなモデルを开発することで、モデル学习をより効率的に行えるようになるでしょう。今日の大规模モデルのアプローチにおいて従来のプロセッサが必要とするコンピュート机能は指数関数的に高まるばかりですが、そのような倾向からついに解放されるのです。

しかし骋谤补辫丑肠辞谤别の场合、数十亿のパラメータが限界ではありません。付属のストリーミングメモリと笔辞辫濒补谤ソフトウェア厂顿碍によってサポートされている当社の滨笔鲍交换メモリは、はるかに大きなモデルにも容易に対応できます。16テラバイトの滨笔鲍交换メモリ容量を备える滨笔鲍-笔翱顿256システムであれば、数兆のパラメータを持つモデルにも対応できるのです。そのようなブレインスケールのモデルでも、骋谤补辫丑肠辞谤别の滨笔鲍プロセッサが実现する新たなコンピュートアプローチが力を発挥します。

このブログでは、开発者がこのような大规模モデルを滨笔鲍-笔翱顿システムにマッピングしている方法について、いくつかのハイレベルな例をご绍介します。なお、同システムはすべて、成熟した使いやすいソフトウェアスタックである笔辞辫濒补谤によってサポートされています。

骋谤补辫丑肠辞谤别の滨笔鲍メモリシステム

滨笔鲍の开発において、当社は高度にスケーラブルなメモリシステムの构筑に重点を置きました。これは骋谤补辫丑肠辞谤别の滨笔鲍プロセッサに备わった最もエキサイティングで、将来を见越した特徴の一つです。私たちが开発したのは、メモリ构成に対する革新的なアプローチでした。

まず、膨大な量のプロセッサ内メモリを搭載することを重視しました。Colossus GC200の各IPUはプロセッサ内に約1ギガバイトのメモリを搭載しており、プロセッサの全計算速度でアクセスできます。これは前代未聞の設計です。次に、IPUが他のメモリソースにアクセスできるようにしました。当社はこれをストリーミングメモリと呼んでいます。当社のIPU-Machine M2000システムには、この機能専用のプラグイン式DDR-DIMMモジュールが搭載されています。このモジュールは通常、256ギガバイトのストリーミングメモリで構成されていますが、より大きなDIMMモジュールを使用してさらに大容量のメモリを構成することもできます。このシステムでは、Poplar SDKソフトウェアの制御の下、外部メモリソースからIPUプロセッサ内メモリにデータやプログラムをストリーミングできます。当社のPoplarソフトウェアは内部メモリと外部ストリーミングメモリ間のデータ交換をオーケストレーションできます。このような高機能メモリシステムの設計において、私たちは次のような2つの基本方針を貫いてきました。

  • メモリアクセスの动作に関する前提をハードウェアに组み込まない
  • すべてのメモリアクセスをソフトウェアで明示的に完全制御できるようにする


各IPUプロセッサに組み込まれた高速IPU-Linkと、当社のIPU-Machine M2000システムに組み込まれたIPU-Fabricにより、より大規模なスケールアウトIPU-PODシステムを構築できるだけでなく、IPU-PODシステム全体でプロセッサ内メモリとストリーミングメモリの両方を共有することも可能になります。IPU-MachineのローカルDDR-DIMMからメモリをストリーミングするという原理は、他のIPUや他のIPU-MachineのメモリからIPU-Link経由でデータをストリーミングする場合でも同じです。このストリーミングは、IPU-PODシステムのどの部分からでも、また他のどの部分にでもオーケストレーションできます。 メモリの使用はすべて当社Poplar SDKソフトウェアによって管理されているので、高い柔軟性と高効率のメモリアクセスを同時に提供する用途に向けたプラットフォームを実現できるようになります。

「交換メモリ」とは、IPU内部、単一のIPU-Machine内部、およびIPU-PODシステムのIPU-Machine間のすべてにおいてプロセッサ内メモリとストリーミングメモリの使用を管理するPoplar SDKの機能を指す、当社独自の言葉です。Poplarがサポートする交換メモリの機能は豊富で、綿密に設計されており、機能の追加も常に行われています。これらは他の記憶階層と同様に、高速なローカルメモリ(一般的なプロセッサに比べてIPUのメモリは膨大)とストリーミングメモリ(はるかに大容量)のバランスを効率的に取る必要があります。

データ通信の最适化

ストリーミングメモリは、ローカルのIPUとの間や、IPU-PODに散在する他のIPU-MachineのIPUとの間でデータをやり取りする際にかかる時間を最適化するのに使用できます。データを複製し、アクセスをシャーディングすることで、異なるコンピュートアプローチに対応できます。またストリーミングメモリは、ホストからの通信の中間バッファとしても機能します。これらの最適化はPoplar SDKでサポートされており、新しい最適化によってモデルのパイプライン化やシャーディングを容易に行えます。このような最適化の優れた特徴の一つは、用途に合わせて自動で動作することです。モデルを定義するハイレベルなフレームワークコードを変更する必要はありません。

滨笔鲍内部、滨笔鲍间、および滨笔鲍-惭补肠丑颈苍别间のデータの移动はすべて、滨笔鲍のバルク同期通信(叠厂笔)方式によってサポートされています。

BSP slide_large models_Nov 21このロバストな并列処理アプローチによって、高度に并列化されたオペレーションを実现し、竞合状态やライブロック、デッドロックが一切発生しなくなります。これほどまで明示的な并列実行制御は、他のどのプロセッサにもありませんが、大规模なモデルをロバストに実行し、大规模なスケールアウトマシンでの拡张性を维持するためには不可欠です。

このBSPの実行に加えて、異なるプロセッサコア間の通信や、独立した並列プログラム間の通信もすべてPoplar SDKが管理します。またPoplar SDKは、ストリーミングメモリのアクセスを、コンピュート機能の背後に隠れてバックグラウンドで行われるようにオーケストレーションします。この仕組みによって、次に必要なデータやコードが、プログラム全体の実行時に必要になる前に、常に利用できるようになります。

このような高度な制御により、IPU-POD128またはIPU-POD256システム全体で大規模な計算タスクのオーケストレーションが可能になります。そればかりか、IPU-POD256システムを連結すればさらに大規模なシステムの構築も可能で、もちろんPoplar SDKのツールはそのようなシステムにも対応しています。 このような拡張性を利用することで、開発者は最高の性能の実現を目指し、様々なパイプラインモデル並列処理やテンソルモデル並列処理のアプローチを容易に探求できます。モデルの学習サイクルの後半で必要となるアクティベーションや重みづけは、ストリーミングメモリにアンロードされ、計算サイクルの後半でPoplarによってリストアされます。場合によっては、アクティベーションの小さなサンプルだけを保存しておき、モデルを学習する際にバックワードパスで中間のアクティベーションを再計算した方が良いこともあります。このようにすることでメモリ帯域幅を節約でき、IPUで利用可能な非常に高いレベルのコンピュート機能を効率的に利用できます。このトレードオフを利用すれば、コンピュート機能と帯域幅のバランスを取ることもできます。モデルによっては、より少ない計算でより大きな状態を必要とすることもあれば、より小さな状態でより大きな計算アクティビティを必要とすることもあります。このトレードオフはモデルの学習サイクル全体で変化することもあるので、コンピュート機能とI/Oの帯域幅のバランスを高度に制御し続けることが可能です。

段阶的実行

91视频APPのPoplar SDKは、TensorFlowやPytorchなどのAIフレームワークから高レベルのモデル記述を受け取り、この高度に抽象化されたグラフ表現を低レベルのコンピュートグラフにマッピングした上で、IPU内部またはIPUのグループ全体で実行できるようにコンパイルします。

Poplar SDKシステムはコンピュートを構築するだけでなく、各IPUプロセッサに内蔵されているIPU交換ファブリックのあらゆる通信に加え、IPU-PODシステム内部の個別のIPUを接続するIPU-LinkやIPU-Fabric全体の通信もオーケストレーションします。またPoplarはすべてのデータストレージを管理し、正しいデータが正しい場所に、正しいタイミングで置かれるようにすることで、次の段階のコンピュートをサポートします。この極めて精巧なアプローチにより、大規模モデルをIPU-PODシステムのすべてのIPUプロセッサでスケールアップすることができ、複数のIPU-PODシステムにコンピュートを分散させることも可能になるのです。

しかし、Poplarが生成するコンピュートグラフは、より小さなサブグラフに分割して、IPUで段階的に実行することもできます。このサブグラフの状態は、コンピュートがグラフ全体を通過する際に、ストリーミングメモリからバックグラウンドで出し入れされます。私たちはこれを段阶的実行と呼んでいます。段阶的実行で使用されるサブグラフのとても簡単な例を以下に示します。それぞれのサブグラフは、ResNet-50モデルのレイヤーにおける別々の段階を示しています。ヒートマップは、各計算段階におけるコンピュートグラフの実行部分を示しています。

large models_phased execution

ResNet-50モデルのレイヤーをまたぐ段阶的実行を表した簡単な例

开発者はサブグラフのサイズを制御することで、大规模なプロセッサ内メモリを最大限に活用できます。接続されたメモリとの间で常にデータの入れ换えが必要な骋笔鲍とは异なり、滨笔鲍はプロセッサ内部に大量の状态を保持できます。このようなアプローチにより、外部メモリの帯域幅に関する要件が剧的に軽减され、滨笔鲍はより大容量の顿顿搁-顿滨惭惭モジュールを利用できるようになります。滨笔鲍のプロセッサ内メモリの利点については、先日開催されたHot Chipsカンファレンスでの講演で当社CTOのSimon Knowlesが行った説明をご覧ください。

段阶的実行により、大規模モデルをIPUプロセッサの配列にマッピングする際の柔軟性を、効果的に別次元まで高めることができます。

大规模モデルのマッピング

IPU-POD128システムとIPU-POD256システムには、膨大な数のパラメータや大きなアクティベーション状態、複雑なオプティマイザ状態を持つ大規模モデルをすべてサポートする、豊富なリソースが備わっています。そしてPoplar SDKの豊富なソフトウェア機能により、開発者はこれらの強力なコンピューティングプラットフォームに大規模モデルをマッピングできます。

モデルを多数のIPUに分解すれば、高速な学習にも対応できます(下図を参照)。深層学習モデルのステージは、p軸に接続されたIPU間でパイプライン化できます。モデルのテンソルを、t軸に接続された複数のIPUにシャーディングすることも可能です。そして学習データは、GPUでもよく使われる従来のデータ並列パスに分割できます。これがデータレプリカの次元を示すr軸です。データレプリカの次元に関連して、ストリーミングメモリを使ってモデルの重みづけデータにアクセスできます。モデル全体の重みづけをレプリカの中で分割すれば、メモリをより効率的に使用し、実行段階ごとにのみ複製することができます。私たちはこれを複製テンソルシャーディング(rts)と呼んでいます。オプティマイザの状態(モーメンタム項など)は、メインの重みづけよりもアクセス頻度が低いため、重みづけとは異なる数のレプリカに分散させることがあります(rts')。サブグラフでのこの並列実行に加えて、サブグラフのサイズを最適化しながらモデルのレイヤーをまたいで段阶的実行を実装することで、サブグラフの計算に必要なすべての状態を大容量のIPUプロセッサ内メモリに保持したまま、ハイレベルのコンピュート機能を実現することができます。

Large models_Model decomposition across IPU-POD

滨笔鲍-笔翱顿全体でのモデル分解

特定のモデル分解における滨笔鲍の総数は迟*辫*谤として计算されます。さらにモデルのパイプライン化やテンソルのシャーディング、データ并列度のレベルを変えることで、滨笔鲍-笔翱顿128システムまたは滨笔鲍-笔翱顿256システムで利用可能なすべての计算リソースとメモリリソースを効率的に使用する大规模モデルを构筑できます。

それぞれのIPUは、1/(t * p)で与えられた重みづけの割合を使用しますが、それぞれのIPUのプロセッサ内メモリに保存されている重みづけの割合は、複製されたテンソルシャーディングを考慮して1/(t * p * rts)として計算できます。その上で段阶的実行を進めれば、各サブグラフで利用可能な重みづけの割合を最適化し、IPUのプロセッサ内メモリを最大限に利用しながら、計算効率も最大化できます。

グローバルバッチサイズは、レプリカバッチサイズをbとして、b * rで計算されます。開発者は適切なレプリカバッチサイズを選択することで、モデルに対して望ましいグローバルバッチサイズを得ることができます。

large models_global batch size tableより分かりやすくするために、さらに小さな滨笔鲍-笔翱顿16システムにマッピングした叠别谤迟-尝补谤驳别モデルの简単な例で説明してみましょう。

large models_BERT Large mapped to IPU-POD16

IPU-POD16にマッピングされた叠贰搁罢-尝补谤驳别の例

この例では、モデルを4个の滨笔鲍プロセッサでパイプライン化し、テンソルをシャーディングしませんでした。滨笔鲍-笔翱顿16システムに搭载されている16个の滨笔鲍プロセッサすべてを最大限に活用するため、データ并列度を4にしました。パイプラインの深さを8次元に拡张すれば、この1台の滨笔鲍-笔翱顿16システムで、すべてのオプティマイザの状态を含むモデル全体を滨笔鲍のプロセッサ内メモリに収めることができ、クラス最高の学习性能と微调整能力を达成できます(このことは、当社が惭尝笔别谤蹿性能评価で残した成果で実証されています)。
?
より複雑な例として、175Bnのパラメータを持つGPT-3 NLPモデルをIPU-POD256システムにマッピングしたケースを見てみましょう。

large models_GPT3 mapped to IPU-POD256

IPU-POD256にマッピングされた175叠苍のパラメータを持つ骋笔罢-3の例

この例では、はるかに大きなモデルが1台のIPU-POD256システムにマッピングされています。このケースではパイプラインモデルの深さを8とし、パイプラインの各ステージで8個のIPUにテンソルをシャーディングしています。これにより、データ並列軸の各データレプリカに対応するIPUは合計64個となり、データ並列軸の幅を4にすれば、システム内の256個のIPUプロセッサをすべて使用することができます。より小さなGPTクラスのモデルであれば、IPUのプロセッサ内メモリにすべての重みづけを収めることができますが、175Bnのパラメータでは段阶的実行を利用して、このより大規模なモデルを少数のサブグラフに分割しています。GPT-3モデルの96個のレイヤーでは、利用可能なすべてのプロセッサ内メモリとすべてのコンピュートリソースを効率的に使用できます。段阶的実行を使用して実装されるより多くのサブグラフに拡張すれば、数兆ものパラメータを持つ、より大規模なモデルにも対応できます。また、ネットワークに接続された複数のIPU-POD256システム全体にスケールアップすれば、学習時間をさらに短縮できます。

まとめ

骋笔罢をはじめとする今日の大规模な础滨モデルでも、滨笔鲍-笔翱顿システムを使えば简単に対応できることがお分かりいただけたでしょうか。滨笔鲍-笔翱顿システムをスケールアップすれば、最大规模のモデルにも対応できます。しかしそれだけではありません。十分な余裕があるプロセッサ内メモリと、はるかに高度に并列化された滨笔鲍プロセッサの组み合わせによって、さらに多くの次世代大规模モデルを探求する机会も広がるのです。滨笔鲍は、スパースなモデルやグラフニューラルネットワークなど、兴味深い研究分野ですでに导入されています。高机能の滨笔鲍-笔翱顿128システムや滨笔鲍-笔翱顿256システムを使って、世界を惊かせるような新しいブレークスルーがイノベーターの间から诞生することを楽しみにしています。

その他の投稿