Heim > Technologie-Peripheriegeräte > KI > Matmulfrei gegen Matmul LLMs: Geschwindigkeit und Speicherkonsum

Matmulfrei gegen Matmul LLMs: Geschwindigkeit und Speicherkonsum

William Shakespeare
Freigeben: 2025-03-05 10:18:10
Original
240 Leute haben es durchsucht

Großspracher (LLMs) stützen sich stark auf Matrix -Multiplikationen (MATMUL) für ihre Operationen, was zu erheblichen Anforderungen an den Rechen- und Spitzenspeicher führt. In einer kürzlich veröffentlichten Arbeit ist jedoch ein neuer Archetyp von matmulfreiem LLMs entstand

In diesem Artikel vergleichen ich matmulfreie LLMs mit ihren klassischen Gegenstücken. Ich werde ihre generativen Funktionen und den Ressourcenverbrauch in drei verschiedenen Modellgrößen untersuchen: 370 m, 1,3B und 2,7B -Parameter. Meine Analyse wird den Geschwindigkeits- und Spitzenspeicherverbrauch der Modelle abdecken und die potenziellen Vorteile von matmulfreien Architekturen in modernen NLP hervorheben.

Um mehr über matmulfreie LLMs zu erfahren, können Sie diesen Artikel lesen: matmulfreie LLMs: Schlüsselkonzepte erklärt.

Setup

Dieser Abschnitt wird das Setup durchlaufen, mit dem ich die Experimente durchgeführt habe.

Modelle zum Vergleichen

Die Autoren des Papiers erwähnen nicht ausdrücklich, mit welchen Modellen sie ihre matmulfreien Modelle verglichen haben. Sie geben nur an, dass sie „zwei Varianten unseres matmul-freien LM mit einer reproduzierten fortschrittlichen Transformatorarchitektur (Transformator, basierend auf LLAMA-2) über drei Modellgrößen: 370 m, 1,3B und 2,7B-Parameter vergleichen.“ Zusätzlich wurden alle Modelle auf dem Slimpajama -Datensatz trainiert.

Um einen fairen Vergleich zu gewährleisten, ist es ideal, Open-Source-Modelle zu verwenden, die auf demselben Datensatz trainiert wurden. Aufgrund der Nichtverfügbarkeit solcher Modelle vergleicht dieser Artikel jedoch den Spitzenspeicherverbrauch und die Geschwindigkeit der verfügbaren Modelle ähnlicher Größe mit den im Papier dargestellten Ergebnissen.

Dies sind die Modelle, mit denen wir sie vergleichen werden:

    370m -gpt2-medium, facebook/opt-350m
  1. 1.3b-microsoft/phi-1_5, openai-community/gpt2-xl
  2. 2.7b - Facebook/opt -2.7b
Es ist wichtig zu beachten, dass matmulfreie LLMs ternäre Gewichte und BF16-Aktivierungen verwenden, was sich erheblich auf ihre Speicher- und Geschwindigkeitseigenschaften auswirkt. Da keine anderen Modelle in unserem Vergleichssatz ternäre Gewichte und BF16-Aktivierungen verwenden, bieten diese Funktionen matmulfreie LLMs mit einzigartigen Vorteilen hinsichtlich der Speicherwirkungsgrad und der Verarbeitungsgeschwindigkeit. Diese Unterscheidung wird in unserer vergleichenden Analyse von entscheidender Bedeutung sein, um zu unterstreichen, wie diese Innovationen zur Gesamtleistung von matmulfreien Modellen beitragen.

Installieren der erforderlichen Bibliotheken

Um unsere Vergleiche durchzuführen, werden wir in einer Google Colab -Umgebung mit einer T4 -GPU -Laufzeit arbeiten. Dieses Setup bietet eine leistungsstarke und dennoch zugängliche Plattform für das Ausführen und Bewertung von großsprachigen Modellen.

Die primäre Bibliothek, die wir verwenden werden, ist die Transformers Library von Huggingface, da alle Modelle, die wir benötigen, dort verfügbar sind. Wir können es mit dem folgenden Befehl installieren:

pip install transformers
Nach dem Login kopieren

Wir müssen auch die matmulfreellm-Bibliothek installieren, damit unsere matmul-freien Modelle ausgeführt werden können. Die Bibliothek ist Open Source und erhältlich auf GitHub können wir sie installieren, indem wir:

pip install -U git+https://github.com/ridgerchu/matmulfreellm
Nach dem Login kopieren

Um den Spitzenspeicherverbrauch zu überwachen, werden wir Pytorch verwenden, der je nach hier beschriebener System- und Paketmanager mit einer Vielzahl verschiedener Befehle installiert werden kann. Wenn Sie in Google Colab arbeiten, sollte es vorinstalliert werden.

Ausführen von Experimenten

Hier ist, wie wir die Experimente durchführen. Zunächst müssen wir die erforderlichen Bibliotheken importieren:

import torch
import time
from transformers import AutoModelForCausalLM, AutoTokenizer
Nach dem Login kopieren

Dann definieren wir für jedes Experiment die Modellnamen in einer Liste - das Beispiel ist für die Modelle im Parameterbereich von 370 m.

model_names = ["gpt2-medium", "facebook/opt-350m", "ridger/MMfreeLM-370M"]
Nach dem Login kopieren

Dann laden wir die Modelle und Tokenizer in den Speicher. Wenn Ihr System nicht genug hat, können Sie die Experimente für jedes Modell separat ausführen. Hier stellen wir sicher, dass Sie die Halbprezisionsschwimmer mit der .half () -Methode verwenden.

models = [AutoModelForCausalLM.from_pretrained(name).half().cuda() for name in model_names]
tokenizers = [AutoTokenizer.from_pretrained(name) for name in model_names]
Nach dem Login kopieren

Wir müssen auch das PAD_Token für jeden Tokenizer festlegen:

for tokenizer in tokenizers:
    if tokenizer.pad_token is None:
        tokenizer.pad_token = tokenizer.eos_token
Nach dem Login kopieren

, um alle erforderlichen Beobachtungen zu machen, die Modelle auszuführen und die Ausgabe zu erhalten - ich werde die folgende Messung_performance () -Funktion verwenden:

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
Nach dem Login kopieren

Die Funktion bewertet die Leistung eines Sprachmodells durch Messung der Inferenzgeschwindigkeit und des Spitzenspeicherverbrauchs. Es tokenisiert zunächst die Eingabeaufforderung, um ordnungsgemäße Aufmerksamkeitsmasken und -polsterungen sicherzustellen, und überträgt die Eingänge an die GPU. Die Speicherverwendung wird durch das Zurücksetzen und dann die Peak -Speicherstatistik verfolgt - wir konvertieren sie vor der Rückkehr in MBS.

Ich denke, die Verwendung von Peak Memory ist die wichtigste Statistik, da das einen Überlauf verursacht. Die Funktion misst auch die Inferenzgeschwindigkeit, indem die Zeit vor und nach der Textgenerierung aufgezeichnet wird (dies ist die Standardmethode, um die Laufzeit in Python zu messen).

Die Hyperparameter, die wir für die Erzeugung verwenden, sind in der Methode .generate () festgelegt. Wir verwenden die maximale Länge von 128 Token und setzen die Wiederholungsstrafe (dies geschieht, weil das matmulfreie Modell mehrmals die gleiche Antwort zu generieren schien). Am Ende gibt die Funktion Zeit, Spitzenspeicherverbrauch und der generierte Text zurück.

Jetzt können wir die Eingabeaufforderung definieren und die Experimente ausführen. Ich werde auch die Daten sammeln und die Modelle auf verschiedenen Eingabeaufforderungen ausführen, um die Daten zu sammeln.

prompt = "What are the benefits of renewable energy?" #example prompt
results = {}
for name, model, tokenizer in zip(model_names, models, tokenizers):
	time_taken, memory_used, output = measure_performance(model, tokenizer,prompt)
	results[name] = {
	    "time_taken": time_taken,
	    "memory_used": memory_used,
	    "output": output
	}
	print(f"Model: {name}\nTime taken: {time_taken} seconds\nMemory used: {memory_used} MB\nOutput: {output}\n")
Nach dem Login kopieren

Die Ausgabe sieht so aus:

Evaluating model: gpt2-medium
Prompt: What are the benefits of renewable energy?
Time taken: 3.17 seconds
Peak memory used: 3521.02 MB
Output: What are the benefits of renewable energy?
 The answer is that it's cheaper than fossil fuels.    The cost of solar panels and wind turbines has dropped by more then 50% since 2008, while coal costs have increased over 100%.   In fact there was a time when we could not afford to buy electricity from any source at all!    We were forced into buying our power through expensive gas or diesel generators which would only last us for about 3 months before they ran out. Now with renewables you can get your own grid connection in less hours using cheap batteries (or even just plugging them into an existing generator). Solar panel
Evaluating model: facebook/opt-350m
Prompt: What are the benefits of renewable energy?
Time taken: 2.15 seconds
Peak memory used: 3452.84 MB
Output: What are the benefits of renewable energy?
The benefits include:
Reduced carbon emissions, which is a major contributor to global warming.
Increased energy efficiency and reduced energy consumption. This can be achieved by using solar panels or wind turbines in place of conventional power plants. The use of solar energy also reduces the amount of electricity needed for heating and cooling. Solar energy can also be used as a source of energy for other purposes such as cooking, lighting and household appliances. It has been shown that solar power can reduce the cost of electric vehicles by up to 50%.
Improved energy security. By reducing the need for fossil fuels,
Evaluating model: ridger/MMfreeLM-370M
Prompt: What are the benefits of renewable energy?
Time taken: 31.68 seconds
Peak memory used: 3788.36 MB
Output: What are the benefits of renewable energy?
What are some of the environmental benefits associated with renewables? What is the potential impact on our environment and people's health? How can we make our buildings more energy efficient? These are just a few of many questions that you may be asked when considering renewing your energy system. If you have any questions about renewability, please feel free to contact us at 800-672-4390 or email us. We look forward to hearing from you!
How much does it cost to install solar panels in my home? The average cost for installation
Nach dem Login kopieren

Vergleich: matmulfrei gegen matmul

Leider haben traditionelle Modelle ihre matmul-freien Gegenstücke sowohl bei Geschwindigkeit als auch bei Spitzenspeicher konsequent übertroffen.

370m Bereichsmodelle

Für den Bereich von 370 m haben wir das 370 m matmulfreie Modell mit GPT2-Medium und Facebook/OPT-350 m verglichen.

Matmulfrei gegen Matmul LLMs: Geschwindigkeit und Speicherkonsum

dauerte im Durchschnitt 16 Sekunden, bis alle Eingabeaufforderungen in allen Eingaben 16 Sekunden dauerte, um eine Antwort zu erzeugen, und verwendete 2900 MB Speicher. Andererseits dauerte GPT2-m 3 Sekunden, um eine Eingabeaufforderung und 2810 MB Speicher zu erzeugen (dies ist wahrscheinlich auf den Größenunterschied zurückzuführen, wobei GPT2-m 350 m-Parameter groß ist). In ähnlicher Weise dauerte OPT350-m 2,3 Sekunden, um eine Antwort und 2815 MB Speicher zu erzeugen.

Matmulfrei gegen Matmul LLMs: Geschwindigkeit und Speicherkonsum

1,3B Range Modelle

In diesem Bereich haben wir das matmulfreie Modell gegen Microsoft/Phi-1_5 und Openai-Community/GPT2-XL getestet.

Matmulfrei gegen Matmul LLMs: Geschwindigkeit und Speicherkonsum

Das GPT -Modell brauchte im Durchschnitt 5,3 Sekunden, um die Reaktion zu erzeugen, und hatte 12435 MB Spitzenspeicherverbrauch. Das Modell von Microsoft dauerte 2,9 Sekunden, um die Reaktion zu erzeugen, und hatte ungefähr 12033 MB Spitzenspeicherverbrauch. Schließlich dauerte das matmulfreie Modell im Durchschnitt 37 Sekunden, um die Reaktion zu erzeugen, und hatte 5470 MB Spitzenspeicherverbrauch!

Matmulfrei gegen Matmul LLMs: Geschwindigkeit und Speicherkonsum

2,7B Range Modelle

Für den letzten Vergleich haben wir das matmul-freie Modell gegen Facebook/opt-2.7b getestet.

Matmulfrei gegen Matmul LLMs: Geschwindigkeit und Speicherkonsum

Das Modell von

Das Facebook -Modell von Facebook dauerte durchschnittlich 6 Sekunden, um die Reaktion zu generieren, und hatte einen mittleren Spitzenspeicherverbrauch von 5200 MB. Andererseits dauerte das matmulfreie Modell 55,6 Sekunden, um die Eingabeaufforderung zu erzeugen, und hatte einen Spitzenspeicherverbrauch von 5501,3 MB. Dies macht nicht viel Sinn, aber ich habe das Experiment ein paar Mal neu gestaltet und die Ergebnisse sind gleich

Matmulfrei gegen Matmul LLMs: Geschwindigkeit und Speicherkonsum

Wie gut sind die matmul-freien Modelle?

Die matmul-freien Modelle waren in Bezug auf die Geschwindigkeit zu kurz. Wir können sie jedoch immer noch auf der Qualität des von ihnen erzeugten Textes bewerten. Wir werden dieses Experiment mit dem größten verfügbaren matmulfreien Modell durchführen. Um ein umfassendes Verständnis der Qualität des generierten Textes zu erhalten, sollten wir eine Vielzahl von Eingabeaufforderungen verwenden-sehen Sie meinen Code in diesem Github-Repository (Beachten Sie, dass die Beispiele zur Eingabeaufforderung-Antwort ein wenig variieren, weil ich den Code erneut ausgeführt habe und immer einige Zufälligkeit beteiligt sind).

Eingabeaufforderung: Verfassen Sie ein Gedicht über die sich ändernden Jahreszeiten.

Antwort: ** _ Das Gedicht _ **

* Der Dichter beginnt damit, dass er in dieser Eröffnungszeile seinen Namen gibt: "Ich bin ein Dichter." Es folgt eine Einführung, die einige Hintergrundinformationen über sein Leben und seine Arbeit sowie seine Beziehung zu seiner Frau liefert, die als "die schönste Frau, die ich je gesehen habe, beschrieben wurde. Dann beschreibt er seine Liebe zu ihr in den folgenden Zeilen:

* "Du bist mein Sonnenschein in einer Welt der Dunkelheit."

* Du bist "ein Stern für mich", der in dessen Augen ich das Licht sehe

Eingabeaufforderung: Erläutern Sie die Unterschiede zwischen überwachtem und unbeaufsichtigtem Lernen im maschinellen Lernen.

Antwort: 203: Was sind einige der Probleme, die Sie mit Aufsicht gesehen haben? Wie kann es gelöst werden?

Das Problem ist, dass wir in diesem Fall in einem sehr unsicheren Umfeld, in dem wir nicht wissen, was in diesem zukünftigen Zeitraum passieren wird, in Zukunft eine Vorhersage für einen unbekannten Wert machen. Wir haben diese große Menge an Daten in unserem Datensatz in Bezug auf viele verschiedene Dinge, die möglicherweise an diesem Tag oder in diesem bestimmten Monat in der Zeit passieren könnten, aber wir haben nur nicht

Eingabeaufforderung: Erklären Sie die Theorie der Relativitätstheorie.

Antwort: 2007-09-15 14:36:08-& gt; Sprachklasse initialisiert

13931638 24833432 -& gt; Konfigurationsklassen geladen. Die nächste Klasse wird automatisch ausgewählt. & lt;/pre & gt;

& lt; div & gt; & lt; p class = 'text-center' & gt;

& lt; stark & ​​gt; class & lt; /stark & ​​gt; & lt; br /& gt;

& lt; a href = "class/mage_core_model_config_abstract.html" & gt; magescoremodelconfig & lt;/a & gt; & lt;/

Eingabeaufforderung: Was ist eine geteilt durch null

Antwort: A: Es ist die Quadratwurzel von 0.

Das Quadrat einer negativen Zahl entspricht dieser Zahl, die von sich selbst in Basis 10 multipliziert wird, sodass es eine positive Zahl sein muss. Der Platz hat einen Wert von $ 2 $, daher ist dies ein eigenständiger Platz. Wenn Sie herausfinden möchten, was es mit den anderen Zahlen in Ihrer Liste ist, multiplizieren Sie sie einfach miteinander!

$ 2 mal 3 = 6 $, zum Beispiel. Dies bedeutet, dass es einen Wert von 0 $ bis 9 $ haben kann.

Insgesamt ist der generierte Text größtenteils nicht kohärent, was die Verwendung dieser Modelle unpraktisch macht. Ich habe mich entschlossen, auch verschiedene Hyperparameter zu testen: keine Wiederholungsstrafe und 512 maximale Länge. Hier produzierte das Modell immer noch Kauderwelsch; Zusätzlich wiederholte es die letzten Zeilen der Antwort, bis die Antwort 512 Token erreichte. Ich habe auch die Eingabeaufforderungen mit Temperatur und TOP_P -Hyperparametern getestet, und das Ergebnis war nicht besser.

Fühlen Sie sich gerne selbst mit diesen Modellen zu experimentieren!

Ergebnisse

Lassen Sie uns nun die Ergebnisse der Experimente überprüfen und deren Auswirkungen diskutieren.

Zusammenfassung der Ergebnisse

Die Experimente zielten darauf ab, die Leistung von matmulfreien LLMs im Vergleich zu herkömmlichen Modellen unter Verwendung verschiedener Metriken zu bewerten, einschließlich Inferenzgeschwindigkeit und Spitzenspeicherverbrauch. Wir haben Modelle über verschiedene Parametergrößen (370 m, 1,3B und 2,7B) hinweg getestet, um eine Vielzahl von Aufforderungen zu erhalten, um ihre Leistung in verschiedenen Szenarien zu bewerten.

Schlüsselbeobachtungen

Hier sind einige wichtige Beobachtungen:

  1. Inferenzgeschwindigkeit: Die traditionellen Modelle übertrafen das matmulfreie Modell in Bezug auf die Inferenzgeschwindigkeit konsistent. Das matmulfreie Modell zeigte über alle Eingabeaufforderungen längere Generationen.
  2. Speicherverbrauch: Das matmul-freie Modell von 1,3B-Parametergröße zeigte im Vergleich zu herkömmlichen Modellen eine signifikant niedrigere Spitzenspeicherverwendung!
  3. Ausgangsqualität: Das Modell scheint viel zu halluzinieren, und der Text ist größtenteils kaugerisch. Dies liegt wahrscheinlich an dem begrenzten Trainingssatz und der kleinen Modellgröße. Mit der Weiterentwicklung der matmulfreien Architektur werden wir jedoch definitiv mehr fähigere Modelle haben.

Erkenntnisse der Autoren

Nach der Überprüfung des Feedbacks der Autoren in einem der Github-Probleme wurde klar, dass die in ihrem Papier gemeldeten Leistungssteigerungen mit Bitblas erreicht wurden, eine spezielle Bibliothek, die für binäre und niedrige Voraussetzungen optimiert wurde. Bitblas ist jedoch noch nicht in die öffentlich verfügbaren Modelle integriert, und seine Installation ist komplex, was eine Neukompilierung des Pakets erfordert.

benutzerdefinierte Hardware -Lösungen

Das Papier unterstreicht auch die Verwendung eines benutzerdefinierten FPGA -Beschleunigers und optimierten GPU -Kernel, um signifikante Leistungsverbesserungen zu erzielen. Diese Hardware -Lösungen sind so konzipiert, dass sie sowohl die Schulung als auch die Inferenzeffizienz verbessern. Insbesondere die FPGA -Implementierung ist darauf zugeschnitten, ternäre Operationen effizient zu nutzen und die Speicherverwendung und -latenz während der Inferenz erheblich zu verringern. Diese benutzerdefinierten Hardwarekonfigurationen sind wichtig, um das vollständige Potenzial von matmulfreiem LLMs zu erkennen, wie die gemeldeten Verbesserungen der Geschwindigkeit und des Speichereffizienz gezeigt.

Schlussfolgerung

Die matmul-freien Modelle, die derzeit auf Umarmungsgesicht erhältlich sind, zeigen nicht die im Originalpapier hervorgehobenen Leistungsvorteile. Die mangelnde Integration mit Bitblas scheint ein wesentlicher Faktor zu sein, der zu dieser Diskrepanz beiträgt. Die potenziellen Vorteile von matmulfreien Architekturen, wie z. B. reduzierter Speicherverbrauch, werden in praktischen Szenarien ohne spezielle Hardware oder weitere Optimierung nicht realisiert. Die langsameren Geschwindigkeiten und die vergleichbare oder höhere Speicherverwendung in den meisten Fällen machen sie für reale Anwendungen weniger attraktiv im Vergleich zu herkömmlichen Modellen.

Das Verständnis der Nuancen und des Potenzials neuer Modellarchitekturen wie matmulfreier LLMs ist entscheidend, da sich das Feld der generativen KI weiterentwickelt. Wenn Sie mehr über die neueste in AI erfahren möchten, lesen Sie diese Artikel:

  • Samba Hybridsprachmodell: Schlüsselkonzepte
  • erklärt
  • Was ist Claude 3.5 Sonett? Wie es funktioniert, Anwendungsfälle und Artefakte
  • matmulfreie LLMs: Schlüsselkonzepte
erklärt

Das obige ist der detaillierte Inhalt vonMatmulfrei gegen Matmul LLMs: Geschwindigkeit und Speicherkonsum. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage