PyTorch チームは、大規模モデルの推論を10 倍高速化しました。 そして、純粋なネイティブ PyTorch コードは 1000 行未満しか使用しません。 このプロジェクトはGPT-fastと呼ばれ、加速効果は次のようになります。 滑らかですよ、本当に滑らかです! 重要な点は、チームがコードと詳細な「チュートリアル」を直接リリースしたことです。棒人間バージョンなので、とてもわかりやすいです。 開発チームのメンバーであるホレス・ヒー氏は次のように述べています。
ネットユーザーはすぐに衝撃を受けた。NvidiaのAI科学者ジム・ファン氏は次のようにコメントした。 これは、Andrej Karpathy が minGPT をリリースして以来、最高のチュートリアル スタイルのリポジトリの 1 つです。 オープンソースの世界には、minGPT や GPT-Fast のようなプロジェクトがさらに必要です。 では、GPT-fast はどのようにして大規模モデルを高速化するのでしょうか? 大型模型「アクセラレーターパック」開封一般的には、以下の方法が使用されます。
これらについて一つずつ詳しく説明しましょう。 開発チームは当初、シンプルな PyTorch を使用して実装しましたが、効果は良くありませんでした (25.5 tok/s)。 トレースを調べたところ、CPU の使用量が多すぎるために推論パフォーマンスが制限されていたことが原因の 1 つであることがわかりました。 それで、どうやって解決するのでしょうか? GPU が巨大な工場 (利用可能な計算能力が非常に大きい) であり、CPU が工場に「物資を運ぶ」小さなカートであるというシナリオを想像してみてください。 多くの場合、CPU は GPU に十分な速さでデータを「供給」することができません。 そのため、開発チームは、GPU にさらに多くのワークロードを与えるか、一度に処理するタスクの「チャンク」を大きくすることを推奨しています。 推論中にこれを行うには、 torch.compileをインポートできます。 torch.compile は、モデルのより大きな領域をキャプチャし、それらを単一のコンパイル済み領域にコンパイルすることができます。特に「オーバーヘッド削減」モードで実行する場合、CPU オーバーヘッドの削減に非常に効果的です。 効果はすぐに現れ、パフォーマンスは 25 tok/s から 107 tok/s へと 4 倍向上しました。 次に、開発チームは速度をさらに向上させたいと考えましたが、メモリ帯域幅のボトルネックが発生しました。 開発チームはモデルの帯域幅使用率を計算し、それが 72% に達することを発見しました。 つまり、速度をさらに向上させる余地は限られている可能性があるということです。 上記の式を再検討した結果、チームは、モデル パラメータの数や GPU のメモリ帯域幅を実際に変更することはできないものの (少なくとも、追加費用をかけずには)、各パラメータを格納するために使用されるバイト数を変更できることを発見しました。 つまり、モデルのサイズを変更したりハードウェアをアップグレードしたりしてもパフォーマンスは向上しませんが、モデル パラメータを保存するために必要なデータの量を減らすことで効率を高めることができます。 これは通常、各パラメータを表すために必要なビット数を削減する量子化技術によって実現されます。 その結果、開発チームは次の技術であるint8 量子化を導入しました。 int8 重み量子化を使用すると、メモリ負荷が軽減され、パフォーマンスがさらに向上します (157.4 tok/s)。 量子化を使用した後には別の問題が発生します。100 個のトークンを生成するには、モデルの重みを 100 回読み込む (または呼び出す) 必要があります。モデルの重みを頻繁にロードすると、非効率になる可能性もあります。 一見すると、自己回帰生成モデルには厳密なシリアル依存性があるため、解が存在しないように思えます。 しかし開発チームは、この厳密な順次依存性は投機的デコードを活用することで解消できると指摘しました。 別の例として、技術的な判断は常に正しいが、コードを書くのが比較的遅い、Verity という名前の上級エンジニアを想像してください。 同時に、Drake という名前のジュニア エンジニアがいます。Verity とは異なり、技術的な決定を下すのは得意ではありませんが、より速く、より低コストでコードを書くことができます。 では、さまざまな人々の強みを活用して全体的な効率を向上させるにはどうすればよいでしょうか? アプローチはシンプルです。まずは Drake にコードを書かせ、その過程で技術的な決定を下すのです。次に、コードはレビューのために Verity に引き渡され、間違いがあれば Drake がやり直します。 Transformer モデルの推論では、大規模な検証モデルは Verity ロールであり、Drake はテキストをより速く生成できる小規模なドラフト モデルです。 開発チームはドラフト モデルを使用して 8 つのトークンを生成し、検証モデルを使用してそれらを並列処理し、一致しないトークンを破棄しました。 これにより、シリアル依存性が解消され、速度が再び向上します。 投機的デコードでは出力の品質は変わらないことに留意してください。このアプローチは、トークンを生成し、ドラフト モデルを使用してそれらのトークンを検証するのに必要な時間が、それらのトークンを個別に生成するのに必要な時間よりも短い限り機能します。 実際、ネイティブ PyTorch を使用してこの手法を実装するのは非常に簡単で、実装プロセス全体で約 50 行のネイティブ PyTorch コードのみが必要です。 AMD は Triton と torch.compile バックエンドもサポートしているため、以前に Nvidia GPU に適用されたすべての最適化を AMD GPU にも再適用できます。 開発チームは、int8 量子化の速度が 22 tok/s から 102 tok/s に向上したことを確認しました。 その後、開発チームは int4 量子化を使用して速度をさらに向上させましたが、モデルの精度は低下しました。 したがって、重みサイズを削減するために、グループ量子化と GPTQ が使用されます。 最終的に、精度を確保しながら速度は 202.1 tok/s に増加しました。 上記のテクノロジーを組み合わせることで、244.7 tok/s というより高速な速度を実現できます。 これまで、R&D チームは単一の GPU 上でプロセスを高速化してきました。しかし、実際には、多くの場合、複数の GPU を使用できます。 複数の GPU を使用するとメモリ帯域幅が増加し、モデルの全体的なパフォーマンスが向上します。 並列処理戦略を選択する場合は、トークンの処理を複数のデバイスに分割する必要があるため、テンソル並列処理を使用する必要があります。 PyTorch は、torch.compile と組み合わせて使用できるテンソル並列処理用の低レベル ツールも提供します。 開発チームは、テンソル並列性を表現するためのより高レベルの API も開発中であることを明らかにしました。 ただし、高レベル API がなくても、テンソルの並列処理を追加するのは簡単で、150 行のコードで実現でき、モデルを変更する必要もありません。 前述のすべての最適化は、テンソル並列処理と組み合わせることができます。これらの最適化を組み合わせると、Llama-70B で 55 トークン/秒の int8 量子化が可能になります。 最後に、結果をまとめると、量子化を無視すると、高速推論、投機的デコード、テンソル並列処理を実現するために、わずか 766 行のコード (model.py 244 行のコード、generate.py 371 行のコード、tp.py 151 行のコード) が使用されています。 Llama-7B の場合、コンパイル + int4 量子化 + 投機的デコードを使用すると、速度は 241 tok/s に達します。 Llama-70B では、テンソル並列処理を追加することで 80 tok/s を達成します。 これらのパフォーマンスは、現在の SOTA に近いか、それを上回ります。 |
>>: 黄仁訓氏の予測: AGI は 5 年以内に実現される可能性があります。米国は中国のニーズを完全に満たして「サプライチェーンの独立」を達成するまでにまだ10年ある
教育分野では、人工知能(AI)の適応性が大きな注目を集めています。学習者、教育者、政策立案者はいずれ...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
序文音声認識の現在の開発状況をまとめると、DNN、RNN/LSTM、CNN が音声認識における主流の...
ChatGPTの一般公開の1か月前に、OpenAIはケニアの弁護士Boru Golloを雇い、AIモ...
将来の妻や夫がどんな人か分からないですか?さあ、まずはAIを使って予測してみましょう。 [[3123...
状況はますます明らかになりつつあります。 AIが直面している課題は、計算能力を高めたり、より多くのデ...
海外メディアの報道によると、1月22日、Google Cloudは、世界中の小売業者が電子商取引機能...
人工知能 (AI) 技術が職場に統合されることにより、仕事の性質が急速に変化し、人間と機械の関係が再...
ロボットが環境内を移動するための最も効率的な方法の 1 つは、比較的滑らかな地形上で車輪を動かすこと...
[[442368]] 1週間前、コンピュータービジョン分野の古典であるHe Kaiming氏のRe...
AIスタートアップは主に2つのスタイルに分けられます。本日の記事では、その両方を分析して見ていきます...
1. テアノ Theano は、カナダのケベック州モントリオール大学の LISA グループ (現在は...
OpenAIは最近、AIコミュニティに「地震」を引き起こしたDALL・E 2システムをリリースしま...