ホームページ > テクノロジー周辺機器 > AI > MatmulフリーとMatmul LLMS:速度とメモリの消費

MatmulフリーとMatmul LLMS:速度とメモリの消費

William Shakespeare
リリース: 2025-03-05 10:18:10
オリジナル
240 人が閲覧しました

大規模な言語モデル(LLMS)は、マトリックス乗算(MATMUL)に操作に大きく依存しており、大幅な計算およびピークメモリ要件につながります。ただし、最近の論文では、MatmulのないLLMSの新しいアーキタイプが登場し、リソースの使用量が減少する可能性があると同等のパフォーマンスが有望です。 この記事では、MatmulのないLLMを古典的な対応物と比較します。 370m、1.3b、および2.7bパラメーターの3つの異なるモデルサイズで、それらの生成機能とリソース消費を調べます。私の分析では、モデルの速度とピークメモリの消費をカバーし、最新のNLPにおけるMatmulのないアーキテクチャの潜在的な利点を強調しています。

Matmul Free LLMSの詳細については、この記事を読むことができます:Matmul-Free LLMS:Key Concepts説明。

セットアップ

このセクションは、実験を実施するために使用したセットアップを紹介します。

モデルを比較するモデル

論文の著者は、どのモデルがマットフリーモデルを比較したかを明示的に言及していません。彼らは、「370m、1.3b、および2.7bパラメーターの3つのモデルサイズにわたって、私たちのMatmulフリーLMの2つのバリエーションを再現された高度な変圧器アーキテクチャ(トランス、Llama-2に基づいて変圧器)と比較しています。」さらに、すべてのモデルはSlimpajamaデータセットでトレーニングされました

公正な比較を確保するために、同じデータセットでトレーニングされたオープンソースモデルを使用することが理想的です。ただし、このようなモデルが利用できないため、この記事では、同様のサイズの利用可能なモデルのピークメモリ消費と速度を、論文で提示された調査結果と比較しています。

これらは、それらを比較するモデルです。

370m -gpt2-medium、facebook/opt-350m

1.3b-Microsoft/Phi-1_5、openai-community/gpt2-xl

2.7b -Facebook/opt -2.7b

MATMULフリーLLMSが3成分重みとBF16の活性化を使用していることに注意することが重要です。これは、メモリと速度の特性に大きな影響を与えます。比較セットの他のモデルは、三元重みとBF16のアクティベーションを利用していないため、これらの機能は、メモリ効率と処理速度の観点からマットフリーLLMSに独自の利点を提供します。この区別は、私たちの比較分析で重要であり、これらのイノベーションがMatmulのないモデルの全体的なパフォーマンスにどのように貢献するかを強調します。 必要なライブラリのインストール
  1. 比較を実行するために、T4 GPUランタイムを備えたGoogle Colab環境で作業します。このセットアップは、大規模な言語モデルを実行および評価するための強力でありながらアクセス可能なプラットフォームを提供します。
  2. 使用するプライマリライブラリは、必要なモデルのすべてがそこから利用できるため、Huggingfaceのトランスライブラリです。次のコマンドでインストールできます:
  3. pip install transformers
    ログイン後にコピー
    また、Matmulのないモデルが実行されるためにMatmulfreellmライブラリをインストールする必要があります。ライブラリはオープンソースで、GitHubで利用可能です。実行してインストールできます。

    ピークメモリ使用量を監視するには、ここで説明するシステムとパッケージマネージャーに応じて、さまざまな異なるコマンドを使用してインストールできるPytorchを使用します。 Google Colabで作業している場合は、プリインストールする必要があります。
    pip install -U git+https://github.com/ridgerchu/matmulfreellm
    ログイン後にコピー
    実験の実行

    これが実験の実行方法です。まず、必要なライブラリをインポートする必要があります:

    次に、各実験について、リスト内のモデル名を定義します。必要な例は、370mパラメーター範囲のモデル用です。

    import torch
    import time
    from transformers import AutoModelForCausalLM, AutoTokenizer
    ログイン後にコピー
    次に、モデルとトークンザーをメモリにロードします。システムが十分でない場合は、モデルごとに実験を個別に実行できます。ここでは、.half()メソッドを使用して、ハーフエシジョンフロートを使用してください。

    また、各トークナイザーの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]
    ログイン後にコピー
    それがオーバーフローを引き起こすものであるため、ピークメモリの使用が最も重要な統計であると思います。この関数は、テキスト生成前後の時間を記録することにより、推論速度も測定します(これは、Pythonでの実行時間を測定する標準的な方法です)。

    生成に使用するハイパーパラメーターは、.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のメモリを生成しました。

    MatmulフリーとMatmul LLMS:速度とメモリの消費

    1.3b範囲モデル

    この範囲では、Microsoft/Phi-1_5およびOpenai-Community/GPT2-XLに対してMatmul Freeモデルをテストしました。

    GPTモデルは、平均して5.3秒かかり、応答を生成し、12435 MBのピークメモリ消費量を獲得しました。 Microsoftのモデルは、応答を生成するのに2.9秒かかり、約12033 MBのピークメモリ消費量がありました。最後に、MATMULフリーモデルは平均37秒かかり、応答を生成し、5470MBのピークメモリ消費量を獲得しました!MatmulフリーとMatmul LLMS:速度とメモリの消費

    2.7b範囲モデルMatmulフリーとMatmul LLMS:速度とメモリの消費

    最後の比較では、Facebook/opt-2.7bに対してMatmulのないモデルをテストしました。

    Facebookのモデルは、平均6秒かかり、応答を生成し、平均ピークメモリ消費量は5200 MBでした。一方、Matmulフリーモデルのプロンプトを生成するのに55.6秒かかり、5501.3 MBのピークメモリ消費量がありました。これはそれほど意味がありませんが、私は実験を数回再びなくし、結果は同じです

    MatmulフリーとMatmul LLMS:速度とメモリの消費

    Matmulのないモデルはどれくらい良いですか?

    速度の点では、マットフリーモデルは不足していました。ただし、生成するテキストの品質についてそれらを評価できます。この実験は、利用可能な最大のMatmul Freeモデルで実行されます。生成されたテキストの品質を包括的に理解するには、多様なプロンプトのセットを使用する必要があります。このgithubリポジトリのコードを参照してください(プロンプト応答の例は、コードを再度実行し、常にランダム性が関係しているため、少し異なることに注意してください)。 MatmulフリーとMatmul LLMS:速度とメモリの消費プロンプト:変化する季節についての詩を作成します

    応答:** _詩_ **

    *詩人は、このオープニングラインで彼または彼女の名前を与えることから始めます:「私は詩人です」。これに続いて、彼の人生と仕事に関する背景情報と、「私が今まで見た中で最も美しい女性」と言われている彼の妻との関係を与える紹介が続きます。それから彼は次の行で彼女への彼の愛を説明します:

    *「あなたは暗闇の世界で私の太陽です。」

    *あなたは「私の星」です、その目の目は光を見ます

    プロンプト:機械学習における監視されていない学習と監督されていない学習の違いを説明してください。

    回答: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

    ここで、実験の結果を確認し、それらの意味を議論しましょう。 調査結果の概要

    概要

    実験は、推論速度やピークメモリ消費を含むさまざまなメトリックを使用した従来のモデルと比較して、MatmulのないLLMのパフォーマンスを評価することを目的としています。さまざまなプロンプトを使用して、さまざまなプロンプトを使用して、さまざまなシナリオでのパフォーマンスを評価するさまざまなパラメーターサイズ(370m、1.3b、および2.7b)にわたってモデルをテストしました。

    重要な観察

    ここにいくつかの重要な観察結果があります:

    1. 推論速度:従来のモデルは、推論速度の観点から一貫してMatmulのないモデルよりも優れていました。 Matmulのないモデルは、すべてのプロンプトでより長い発電時間を示しました。
    2. メモリ消費:1.3BパラメーターサイズのMATMULフリーモデルは、従来のモデルと比較してピークメモリ使用量が大幅に低いことを示しました!
    3. 出力の品質:モデルは多くの幻覚のように思われ、テキストはほとんどの場合は意味がありません。これはおそらく、トレーニングセットが限られており、モデルサイズが小さいためです。ただし、Matmulのないアーキテクチャの進歩により、私たちは間違いなくより有能なモデルを持っています。
    4. 著者からの洞察
    GitHubの問題の1つで著者からのフィードバックを確認すると、バイナリおよび低精度操作に最適化された専門ライブラリであるBitblasを使用して、論文で報告されたパフォーマンスブーストが達成されたことが明らかになりました。ただし、Bitblasはまだ公開されているモデルに統合されておらず、そのインストールは複雑であり、パッケージの再コンパイルが必要です。

    カスタムハードウェアソリューション

    このペーパーでは、カスタムFPGAアクセラレータと最適化されたGPUカーネルの使用を強調して、パフォーマンスの大幅な改善を実現しています。これらのハードウェアソリューションは、トレーニングと推論効率の両方を強化するように設計されています。特に、FPGAの実装は、3成分操作を効率的に活用するように調整され、推論中のメモリの使用と遅延を大幅に削減します。これらのカスタムハードウェア構成は、速度とメモリ効率の報告された改善によって実証されているように、MatmulのないLLMの可能性を最大限に発揮するために不可欠です。

    結論

    現在入手可能な顔で現在利用可能なMatmulのないモデルは、元の論文で強調されているパフォーマンスの利点を示していません。 Bitblasとの統合の欠如は、この矛盾に貢献する重要な要因であると思われます。メモリの使用量の減少など、Matmulのないアーキテクチャの潜在的な利点は、特殊なハードウェアやさらなる最適化なしに実際のシナリオでは実現されていません。ほとんどの場合、より遅い速度と比較可能なメモリ使用量は、従来のモデルと比較して、実際のアプリケーションにとって魅力的ではありません。

    生成AIの分野が進化し続けるにつれて、MatmulのないLLMのような新しいモデルアーキテクチャのニュアンスと可能性を理解することは重要です。最新のAIの詳細については、これらの記事をご覧ください。

    サンバハイブリッド言語モデル:説明された重要な概念

    Claude 3.5ソネットとは何ですか?それがどのように機能するか、ユースケース、およびアーティファクト

    Matmul-Free LLMS:説明された重要な概念

    以上がMatmulフリーとMatmul LLMS:速度とメモリの消費の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    著者別の最新記事
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート