大規模な言語モデル(LLMS)は、マトリックス乗算(MATMUL)に操作に大きく依存しており、大幅な計算およびピークメモリ要件につながります。ただし、最近の論文では、MatmulのないLLMSの新しいアーキタイプが登場し、リソースの使用量が減少する可能性があると同等のパフォーマンスが有望です。 この記事では、MatmulのないLLMを古典的な対応物と比較します。 370m、1.3b、および2.7bパラメーターの3つの異なるモデルサイズで、それらの生成機能とリソース消費を調べます。私の分析では、モデルの速度とピークメモリの消費をカバーし、最新のNLPにおけるMatmulのないアーキテクチャの潜在的な利点を強調しています。
Matmul Free LLMSの詳細については、この記事を読むことができます:Matmul-Free LLMS:Key Concepts説明。セットアップ
このセクションは、実験を実施するために使用したセットアップを紹介します。
モデルを比較するモデルこれらは、それらを比較するモデルです。
1.3b-Microsoft/Phi-1_5、openai-community/gpt2-xl
2.7b -Facebook/opt -2.7b
MATMULフリーLLMSが3成分重みとBF16の活性化を使用していることに注意することが重要です。これは、メモリと速度の特性に大きな影響を与えます。比較セットの他のモデルは、三元重みとBF16のアクティベーションを利用していないため、これらの機能は、メモリ効率と処理速度の観点からマットフリーLLMSに独自の利点を提供します。この区別は、私たちの比較分析で重要であり、これらのイノベーションがMatmulのないモデルの全体的なパフォーマンスにどのように貢献するかを強調します。 必要なライブラリのインストール
pip install transformers
ピークメモリ使用量を監視するには、ここで説明するシステムとパッケージマネージャーに応じて、さまざまな異なるコマンドを使用してインストールできるPytorchを使用します。 Google Colabで作業している場合は、プリインストールする必要があります。
pip install -U git+https://github.com/ridgerchu/matmulfreellm
これが実験の実行方法です。まず、必要なライブラリをインポートする必要があります:
次に、各実験について、リスト内のモデル名を定義します。必要な例は、370mパラメーター範囲のモデル用です。
import torch import time from transformers import AutoModelForCausalLM, AutoTokenizer
また、各トークナイザーのPAD_TOKENを設定する必要があります。
必要なすべての観測を行うには、モデルを実行して出力を取得するために、次の測定_performance()関数を使用します:model_names = ["gpt2-medium", "facebook/opt-350m", "ridger/MMfreeLM-370M"]
関数は、推論速度とピークメモリ消費を測定することにより、言語モデルのパフォーマンスを評価します。最初に入力プロンプトをトークン化し、適切な注意マスクとパディングを確保し、GPUへの入力を転送します。メモリの使用量は、最初にリセットされてからピークメモリ統計を記録することで追跡されます。戻る前にMBSに変換します。
models = [AutoModelForCausalLM.from_pretrained(name).half().cuda() for name in model_names] tokenizers = [AutoTokenizer.from_pretrained(name) for name in model_names]
生成に使用するハイパーパラメーターは、.generate()メソッドで設定されます。 128トークンの最大長を使用して、繰り返しペナルティを設定します(これは、Matmulのないモデルが同じ応答を複数回生成するように見えるために行われます)。最終的に、関数は時間、ピークメモリ消費、および生成されたテキストを返します。
次に、プロンプトを定義して実験を実行できます。また、データを収集し、さまざまなプロンプトでモデルを実行してデータを収集します。for tokenizer in tokenizers: if tokenizer.pad_token is None: tokenizer.pad_token = tokenizer.eos_token
出力は次のようになります:
def measure_performance(model, tokenizer, prompt): inputs = tokenizer(prompt, return_tensors="pt", padding=True) input_ids = inputs.input_ids.cuda() attention_mask = inputs.attention_mask.cuda() torch.cuda.reset_peak_memory_stats() # Measure speed start_time = time.time() with torch.no_grad(): outputs = model.generate( input_ids, attention_mask=attention_mask, max_length=128, pad_token_id=tokenizer.eos_token_id, repetition_penalty=1.1, no_repeat_ngram_size=2 ) end_time = time.time() # Measure memory after inference peak_memory = torch.cuda.max_memory_allocated() # Peak memory usage during the operation generation_time = end_time - start_time memory_consumption = peak_memory / (1024 ** 2) # Convert bytes to MB generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True) return generation_time, memory_consumption, generated_text
比較:Matmul-Free vs. Matmul
残念ながら、従来のモデルは、速度とピークのメモリ使用の両方で、一貫してマットフリーのカウンターパートを上回っていました。
370m範囲モデル370mの範囲では、370mのMATMULフリーモデルをGPT2-MEDIUMおよびFacebook/OPT-350Mと比較しました。
平均して、すべてのプロンプトで、Matmulのないモデルが16秒かかり、応答を生成し、2900 MBのメモリを使用しました。一方、GPT2-Mは3秒かかり、プロンプトと2810 MBのメモリを生成します(これはおそらくサイズの違いによるもので、GPT2-Mは350mパラメーターが大きいためです)。同様に、OPT350-Mは2.3秒かかり、応答と2815 MBのメモリを生成しました。
GPTモデルは、平均して5.3秒かかり、応答を生成し、12435 MBのピークメモリ消費量を獲得しました。 Microsoftのモデルは、応答を生成するのに2.9秒かかり、約12033 MBのピークメモリ消費量がありました。最後に、MATMULフリーモデルは平均37秒かかり、応答を生成し、5470MBのピークメモリ消費量を獲得しました!
2.7b範囲モデル
Facebookのモデルは、平均6秒かかり、応答を生成し、平均ピークメモリ消費量は5200 MBでした。一方、Matmulフリーモデルのプロンプトを生成するのに55.6秒かかり、5501.3 MBのピークメモリ消費量がありました。これはそれほど意味がありませんが、私は実験を数回再びなくし、結果は同じです
Matmulのないモデルはどれくらい良いですか?
速度の点では、マットフリーモデルは不足していました。ただし、生成するテキストの品質についてそれらを評価できます。この実験は、利用可能な最大のMatmul Freeモデルで実行されます。生成されたテキストの品質を包括的に理解するには、多様なプロンプトのセットを使用する必要があります。このgithubリポジトリのコードを参照してください(プロンプト応答の例は、コードを再度実行し、常にランダム性が関係しているため、少し異なることに注意してください)。
プロンプト:変化する季節についての詩を作成します
*「あなたは暗闇の世界で私の太陽です。」
*あなたは「私の星」です、その目の目は光を見ます
プロンプト:機械学習における監視されていない学習と監督されていない学習の違いを説明してください。
回答:203:監督で見た問題は何ですか?どうすれば解決できますか?問題は、その将来の期間に何が起こるかわからない非常に不確実な環境で、将来この場合に未知の値を予測しようとしていることです。この特定の日またはこの時期に発生する可能性のある多くの異なることの観点から、この膨大なデータをデータセットに持っていますが、私たちは
を持っていません。
プロンプト:相対性理論の理論を説明してください応答:2007-09-15 14:36:08->言語クラス初期化
13931638 24833432->構成クラスが読み込まれました。次のクラスは自動的に選択されます。 </pre>
< div> < p class = 'text-center'>
< strong> class< /strong>< br />
< a href = "class/mage_core_model_config_abstract.html"> magescoremodelconfig</a> </
プロンプト:ゼロで分割されたものは何ですか
応答:A:それは0の平方根です。
負の数の二乗は、その数がそれ自体をベース10で掛けたものと同じであるため、正の数でなければなりません。広場には2ドルの値があるため、これはそれ自体が正方形です。リスト内の他の数字でそれが何であるかを知りたい場合は、それらを掛けるだけです!
たとえば、$ 2回3 = 6 $。これは、$ 0 $から$ 9 $までの価値を持つことができることを意味します。 全体として、生成されたテキストはほとんどの場合一貫性がなく、これらのモデルの使用を非現実的にしています。また、さまざまなハイパーパラメーターをテストすることにしました。繰り返しペナルティなしと512の最大長です。ここでは、モデルはまだ意味のないものを生成しました。さらに、回答が512トークンに達するまで、応答の最後の行を繰り返しました。また、温度とTOP_Pハイパーパラメーターでプロンプトをテストしましたが、結果は良くありませんでした。
これらのモデルを自分で試してみてください!results
ここで、実験の結果を確認し、それらの意味を議論しましょう。 調査結果の概要
概要
ここにいくつかの重要な観察結果があります:
このペーパーでは、カスタムFPGAアクセラレータと最適化されたGPUカーネルの使用を強調して、パフォーマンスの大幅な改善を実現しています。これらのハードウェアソリューションは、トレーニングと推論効率の両方を強化するように設計されています。特に、FPGAの実装は、3成分操作を効率的に活用するように調整され、推論中のメモリの使用と遅延を大幅に削減します。これらのカスタムハードウェア構成は、速度とメモリ効率の報告された改善によって実証されているように、MatmulのないLLMの可能性を最大限に発揮するために不可欠です。
結論生成AIの分野が進化し続けるにつれて、MatmulのないLLMのような新しいモデルアーキテクチャのニュアンスと可能性を理解することは重要です。最新のAIの詳細については、これらの記事をご覧ください。
Claude 3.5ソネットとは何ですか?それがどのように機能するか、ユースケース、およびアーティファクト
Matmul-Free LLMS:説明された重要な概念
以上がMatmulフリーとMatmul LLMS:速度とメモリの消費の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。