大規模言語モデルの高速推論:Habana Gaudi2アクセラレータ上のBLOOMZ
Fast Inference of Large Language Models BLOOMZ on Habana Gaudi2 Accelerator
この記事では、🤗 Optimum Habanaを使用してHabana® Gaudi®2上のBLOOMのような数千億のパラメータを持つ大規模な言語モデルを簡単に展開する方法を紹介します。これは、この記事で示されたベンチマークに示されているように、市場で現在利用可能などのどのGPUよりも高速な推論を実行することを可能にします。
モデルがますます大きくなるにつれて、プロダクション環境に展開して推論を実行することはますます困難になっています。ハードウェアとソフトウェアの両方には、これらの課題に対処するための多くのイノベーションが見られますので、効率的にこれらの課題を克服する方法を見てみましょう!
BLOOMZ
BLOOMは、テキストのシーケンスを完了するためにトレーニングされた1760億のパラメータの自己回帰モデルです。46の異なる言語と13のプログラミング言語を扱うことができます。BigScienceイニシアチブの一環として設計され、トレーニングされたBLOOMは、世界中の多くの研究者とエンジニアが関わったオープンサイエンスプロジェクトです。最近では、同じアーキテクチャの別のモデルがリリースされました:BLOOMZは、BLOOMのいくつかのタスクで微調整されたバージョンであり、より良い汎化およびゼロショット[^1]の機能を持っています。
このような大規模なモデルは、トレーニングおよび推論の両方においてメモリと速度の新たな課題を提起します。16ビット精度でも、1インスタンスには352 GBのメモリが必要です!現時点では、そのような多くのメモリを持つデバイスはおそらく見つけることが難しいでしょうが、Habana Gaudi2のような最先端のハードウェアを使用すると、BLOOMとBLOOMZモデルで低い待ち時間で推論を実行することができます。
- 🤗 Transformersを使用してTensorFlowとTPUで言語モデルをトレーニングする
- ビジョン言語モデルの高速化:Habana Gaudi2上のBridgeTower
- チューリングテスト、中国の部屋、そして大規模言語モデル
Habana Gaudi2
Gaudi2は、Habana Labsによって設計された第2世代のAIハードウェアアクセラレータです。1つのサーバーには8つのアクセラレータデバイス(Habana Processing UnitsまたはHPUsと呼ばれる)があり、それぞれ96GBのメモリを提供し、非常に大きなモデルを収める余地があります。ただし、モデルをホストするだけでは非常に興味深くありません。幸いにも、Gaudi2はその点で優れています:そのアーキテクチャは、アクセラレータが並列で一般行列乗算(GeMM)およびその他の操作を実行できるようにするため、深層学習ワークフローを高速化します。これらの特徴により、Gaudi2はLLMのトレーニングおよび推論の優れた候補となります。
HabanaのSDKであるSynapseAI™は、LLMトレーニングおよび推論を高速化するためにPyTorchとDeepSpeedをサポートしています。SynapseAIグラフコンパイラは、グラフに蓄積された操作の実行を最適化します(例:オペレータの統合、データレイアウトの管理、並列化、パイプライニングとメモリ管理、およびグラフレベルの最適化)。
さらに、HPUグラフとDeepSpeed-inferenceのサポートは、最近SynapseAIに導入され、以下のベンチマークに示すようにレイテンシに敏感なアプリケーションに適しています。
これらの機能は、🤗 Optimum Habanaライブラリに統合されており、Gaudiにモデルを展開することは非常に簡単です。こちらのクイックスタートページをご覧ください。
Gaudi2にアクセスしたい場合は、Intel Developer Cloudにアクセスし、このガイドに従ってください。
ベンチマーク
このセクションでは、BLOOMZをGaudi2、第1世代Gaudi、およびNvidia A100 80GBでの早期ベンチマークを提供します。これらのデバイスはかなり多くのメモリを持っていますが、モデルは非常に大きいため、単一のデバイスではBLOOMZの単一のインスタンスを含めるのに十分ではありません。この問題を解決するために、DeepSpeedを使用します。DeepSpeedは、モデルを加速し、デバイスに適合させるための多くのメモリと速度の改善を可能にするディープラーニング最適化ライブラリです。特に、ここではDeepSpeed-inferenceに依存しています。これにより、モデル(またはパイプライン)の並列処理などの機能が追加され、利用可能なデバイスを最大限に活用します。Gaudi2では、HabanaのHPUsをサポートするDeepSpeedフォークを使用しています。
レイテンシ
2つの異なるサイズのBLOOMZ(どちらも数十億のパラメータを持つ)のレイテンシ(1つのサンプルのバッチ)を測定しました:
- 1760億のパラメータ
- 70億のパラメータ
これらの実行は、DeepSpeed-inferenceを使用し、16ビット精度で8つのデバイスを使用し、キー値キャッシュを使用して行われました。なお、CUDAグラフは現在DeepSpeedのモデルパラレリズムと互換性がありません(DeepSpeed v0.8.2、こちらを参照)が、HabanaのDeepSpeedフォークではHPUグラフがサポートされています。すべてのベンチマークは、100トークンの出力の貪欲な生成を行っています。入力のプロンプトは以下の通りです:
“DeepSpeedは機械学習のフレームワークです”
BLOOMのトークナイザを使用して7つのトークンで構成されています。
推論のレイテンシの結果は、以下のテーブルに表示されます(単位は秒です)。
更新:Optimum Habana 1.6およびSynapseAI 1.10のリリースにより、BLOOMZ with Gaudi2ではA100に比べて1.42倍の高速化が実現されました。
Habanaチームは最近、SynapseAI 1.8でDeepSpeed-inferenceのサポートを導入し、100億以上のパラメータモデルの推論を迅速に可能にしました。1760億パラメータのチェックポイントでは、Gaudi2はA100 80GBに比べて1.42倍の速度があります。より小さなチェックポイントでも興味深い結果が得られます。 Gaudi2はBLOOMZ-7Bに対してA100よりも2.89倍速いです! また、A100は単一のデバイスで高速ですが、Gaudi2はモデルの並列処理から利益を得ることができるという興味深い点もあります。
また、これらのモデルを第1世代のGaudiでも実行しました。 Gaudi2よりも遅いですが、AWSのDL1インスタンスでは1時間あたり約13ドルの価格という観点から興味深いです。 BLOOMZ-7Bのレイテンシは第1世代のGaudiでは2.387秒です。したがって、第1世代のGaudiは7億のチェックポイントにおいてA100よりも価格パフォーマンス比が優れています。 A100の価格は1時間あたり30ドル以上です!
Habanaチームは、これらのモデルのパフォーマンスを今後のSynapseAIリリースで最適化すると予想されます。たとえば、前回のベンチマークでは、Gaudi2はA100に比べてStable Diffusion推論を2.2倍高速に実行することがわかりましたが、Habanaの最新の最適化により、この数値は2.37倍に向上しました。 Optimum Habanaで新しいバージョンのSynapseAIがリリースおよび統合されると、これらの数値を更新します。
完全なデータセットでの推論の実行
私たちが作成したスクリプトは、モデルを使用してデータセット全体で文章を完成させることができます。これは、Gaudi2でのBLOOMZ推論を独自のデータで試すために便利です。
tldr_newsデータセットを使用した例を以下に示します。これには、いくつかの記事の見出しと内容が含まれています(Hugging Face Hubで視覚化できます)。私たちはコンテンツの列のみを保持し、各サンプルを最初の16トークンに切り詰めました。その後、モデルが残りのシーケンスを50の新しいトークンで生成します。最初の5つのサンプルは次のようになります:
バッチn°1
入力: ['Facebook has released a report that shows what content was most widely viewed by Americans between']
出力: ['Facebook has released a report that shows what content was most widely viewed by Americans between January and June of this year. The report, which is based on data from the company’s mobile advertising platform, shows that the most popular content on Facebook was news, followed by sports, entertainment, and politics. The report also shows that the most']
--------------------------------------------------------------------------------------------------
バッチn°2
入力: ['A quantum effect called superabsorption allows a collection of molecules to absorb light more']
出力: ['A quantum effect called superabsorption allows a collection of molecules to absorb light more strongly than the sum of the individual absorptions of the molecules. This effect is due to the coherent interaction of the molecules with the electromagnetic field. The superabsorption effect has been observed in a number of systems, including liquid crystals, liquid crystals in']
--------------------------------------------------------------------------------------------------
バッチn°3
入力: ['A SpaceX Starship rocket prototype has exploded during a pressure test. It was']
出力: ['A SpaceX Starship rocket prototype has exploded during a pressure test. It was the first time a Starship prototype had been tested in the air. The explosion occurred at the SpaceX facility in Boca Chica, Texas. The Starship prototype was being tested for its ability to withstand the pressure of flight. The explosion occurred at']
--------------------------------------------------------------------------------------------------
バッチn°4
入力: ['Scalene is a high-performance CPU and memory profiler for Python.']
出力: ['Scalene is a high-performance CPU and memory profiler for Python. It is designed to be a lightweight, portable, and easy-to-use profiler. Scalene is a Python package that can be installed on any platform that supports Python. Scalene is a lightweight, portable, and easy-to-use profiler']
--------------------------------------------------------------------------------------------------
バッチn°5
入力: ['With the rise of cheap small "Cube Satellites", startups are now']
出力: ['With the rise of cheap small "Cube Satellites", startups are now able to launch their own satellites for a fraction of the cost of a traditional launch. This has led to a proliferation of small satellites, which are now being used for a wide range of applications. The most common use of small satellites is for communications,']
次のセクションでは、Hugging Face Hubからこのベンチマークを実行する方法、または任意のデータセットに適用する方法を説明します。
これらの結果を再現する方法
BLOOMZのベンチマークに使用したスクリプトはこちらで入手できます。実行する前に、最新バージョンのSynapseAIとGaudiドライバがHabanaの指示に従ってインストールされていることを確認してください。
次に、以下を実行します:
git clone https://github.com/huggingface/optimum-habana.git
cd optimum-habana && pip install . && cd examples/text-generation
pip install git+https://github.com/HabanaAI/[email protected]
最後に、次のようにスクリプトを起動できます:
python ../gaudi_spawn.py --use_deepspeed --world_size 8 run_generation.py --model_name_or_path bigscience/bloomz --use_hpu_graphs --use_kv_cache --max_new_tokens 100
マルチノード推論の場合、Optimum Habanaのドキュメンテーションからこのガイドに従うことができます。
Hugging Face Hubから任意のデータセットをロードして、生成に使用されるプロンプトを取得するには、引数--dataset_name my_dataset_name
を使用できます。
このベンチマークはTransformers v4.28.1、SynapseAI v1.9.0、Optimum Habana v1.5.0で実行されました。
GPUの場合、このブログ投稿で以前に紹介された結果につながったスクリプトは次のとおりです(使用方法の指示はこちらです)。CUDAグラフを使用するには、静的な形状が必要であり、これは🤗 Transformersでサポートされていません。Habanaチームが作成したこのリポジトリを使用して、それらを有効にすることができます。
結論
この記事では、Habana Gaudi2はNvidia A100 80GBよりも高速なBLOOMZ推論を実行します。🤗 Optimum Habanaは、HPUsでの数十億パラメータモデルの推論を実行するための使いやすいツールを提供するため、複雑なスクリプトを書く必要はありません。HabanaのSynapseAI SDKの将来のリリースではパフォーマンスが向上することが期待されており、SynapseAI上のLLM推論最適化が進んでいくにつれて、このベンチマークを定期的に更新する予定です。また、Gaudi2でのFP8推論によるパフォーマンスの恩恵も期待しています。
また、第一世代のGaudiで達成した結果も紹介しました。小さなモデルでは、価格の三分の一でA100と同等またはそれ以上のパフォーマンスを発揮することができます。BLOOMZのような大規模なモデルでの推論を実行するために、GPUを使用する代わりの良い選択肢です。
最新のAIハードウェアアクセラレータとソフトウェアライブラリを使用して、マシンラーニングトレーニングと推論ワークフローを高速化することに興味がある場合は、Expert Acceleration Programをご覧ください。Habanaのソリューションについて詳しくは、パートナーシップについて読み、こちらから連絡してください。AIハードウェアアクセラレータを使いやすくするためのHugging Faceの取り組みについて詳しくは、Hardware Partner Programをご覧ください。
関連トピック
- 高速なトレーニングと推論:Habana Gaudi-2 vs Nvidia A100 80GB
- Hugging FaceとHabana Labs Gaudiを使用して、DeepSpeedを活用して高速かつ安価な大規模トランスフォーマーモデルをトレーニングする方法
お読みいただきありがとうございます!ご質問がありましたら、GitHubまたはフォーラムを通じてお気軽にお問い合わせください。LinkedInでもつながることができます。
[^1]: 「ゼロショット」とは、モデルが新しいまたは見たことのない入力データでタスクを完了する能力を指します。つまり、この種のデータのトレーニング例を提供することなく、モデルにプロンプトとタスクの説明を自然言語で与えます。ゼロショット分類は、目的のタスクの完了例を除外します。これは、選択されたタスクの単一または一部の例を含む単一または少数のショット分類とは異なります。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles