MaskLLM

MaskLLM

NVIDIA Research · Coding · Sonstiges

MaskLLM ist eine Open-Source-Pruning-Methode von NVIDIA Research, die N:M-Sparsity-Masken lernt, um Sprachmodelle zu verkleinern und Inferenzkosten zu senken, ohne viel Genauigkeit zu verlieren.

Vorschau der Oberfläche von MaskLLM

Über MaskLLM

What Is MaskLLM

MaskLLM ist eine Forschungsmethode zum Komprimieren großer Sprachmodelle. Sie gehört zur Familie der Pruning-Werkzeuge, die Parameter entfernen, die das Modell nicht braucht, und nutzt dafür halbstrukturierte Sparsity, auch N:M-Sparsity genannt. Die Idee ist einfach: In jedem Block von M aufeinanderfolgenden Gewichten bleiben nur N erhalten. Ein 2:4-Muster behält zwei von vier Gewichten, was das Volumen halbiert, das die Hardware bewegen muss.

Was MaskLLM abhebt, ist die Wahl der Gewichte. Ältere Verfahren stützen sich auf eine feste Regel, etwa die kleinsten Gewichte zu verwerfen oder eine statistische Schätzung zu nutzen. MaskLLM behandelt die Maskenwahl als etwas, das das Modell lernt. Es modelliert die N:M-Muster als Wahrscheinlichkeitsverteilung und trainiert sie mit einer Sampling-Technik namens Gumbel Softmax, sodass das Modell auf einem großen Datensatz bessere Masken findet. Die Gewichte bleiben eingefroren, während die Masken gelernt werden, und genau das macht die 2:4-Sparsity für eine bestimmte Aufgabe "verlustfrei".

Der praktische Reiz steckt in den Zahlen. Laut NVIDIA erreicht das dichte Modell LLaMA-2 7B eine Perplexität von 5,12 auf Wikitext, während frühere Pruning-Methoden sie über 10 treiben. MaskLLM landet bei 6,72 bis 6,78, allein indem es die Masken lernt, mit eingefrorenen Gewichten. Das Projekt ist Open Source unter einer NVIDIA-Lizenz, also können Forscher und Entwickler es selbst ausführen. Es braucht trotzdem echte GPU-Hardware und Kenntnisse im maschinellen Lernen.

Getting Started

  1. Installieren Sie die Python-Pakete und starten Sie das Skript, das eine bereits berechnete Maske von Hugging Face herunterlädt
  2. Laden Sie das Zielmodell, etwa LLaMA-2 7B oder LLaMA-3 8B, in PyTorch
  3. Wenden Sie die heruntergeladene Maske an und messen Sie die Genauigkeit mit dem mitgelieferten Perplexitäts-Skript
  4. Für eigene Arbeit richten Sie die Megatron-LM-Umgebung ein, bereiten die Daten vor und trainieren eine neue Maske für Ihre Domäne

Produktinformationen

Ein kurzer Überblick über Preise, unterstützte Plattformen und die Leistung von MaskLLM.

Kostenloser TarifJa
Bezahlte TarifeFree (open-source)
PlattformPython, PyTorch, Hugging Face Transformers, Megatron-LM, NVIDIA GPUs
EntwicklerNVIDIA Research
KategorieCoding · Sonstiges
VeröffentlichungsdatumSep 2024
Zuletzt aktualisiertDec 2024
Website-BesucheN/A
Globales Website-RankingN/A
API-VerfügbarkeitNein

Am besten für

Die Nutzer, Aufgaben und Szenarien, für die dieses Tool am besten passt.

Nutzer

  • Forscher im maschinellen Lernen
  • ML-Entwickler, die Modelle ausrollen
  • Studierende und Forschende
  • Entwickler von Frameworks und Werkzeugen

Aufgaben

  • Pruning großer Sprachmodelle
  • Komprimierung in einem Schritt
  • Domänenspezifische Sparsity
  • Übertragung der Sparsity
  • Vergleich von Pruning-Methoden

Szenarien

  • Ein Team, das ein 7B-Modell auf wenigen GPUs betreibt
  • Forschung, die veröffentlichte Zahlen reproduzieren muss
  • Ein Modell, das allgemein gut ist, aber in einer Nische schwächelt
  • Eine Komprimierungs-Pipeline für eine Modellfamilie bauen
  • Lizenz- oder Datenschutzgrenzen prüfen

Wichtigste Funktionen

Lernbares Pruning mit N:M-Masken

Statt jedes Gewicht von Hand zu bewerten, lernt MaskLLM die Maske selbst. Es behandelt die Menge gültiger N:M-Muster als Verteilung und zieht während des Trainings Stichproben, sodass das Modell zu den besten Masken für einen Datensatz konvergiert. Dieser lernbare Schritt ist der eigentliche Unterschied zu Einmal-Verfahren, die eine Maske einmal wählen und dann aufhören.

Gumbel-Softmax-Sampling

Die Methode leiht sich eine Technik aus dem diskreten Sampling, damit sich die Maskenwahl durchgängig trainieren lässt. Gumbel Softmax lässt Gradienten durch das fließen, was sonst eine harte Entscheidung nach dem Alles-oder-nichts-Prinzip wäre. Erst dadurch lässt sich die Verteilung über die N:M-Masken mit echten Daten optimieren, statt sie zu schätzen.

Fertig berechnete Masken für Hugging-Face-Modelle

Das Projekt liefert fertige Masken, sodass Sie ohne Training ausprobieren können. Veröffentlicht sind Masken für LLaMA-2 7B, LLaMA-3 8B und LLaMA-3.1 8B, jede auf einem C4-Ausschnitt trainiert. Ein Skript lädt sie von Hugging Face und wendet sie zur Bewertung auf die offiziellen Modelle an.

Halbstrukturierte 2:4-Sparsity

MaskLLM zielt auf N:M-Sparsity, meist auf das 2:4-Muster, das zwei Werte ungleich null in jedem Block von vier aufeinanderfolgenden Gewichten behält. Dieses Format ist wichtig, weil es zur Hardware-Beschleunigung passt: Das kleinere Modell braucht nicht nur weniger Platz, es kann auf der passenden GPU auch schneller laufen.

Übertragung der Sparsity-Muster

Dasselbe Wahrscheinlichkeitsmodell, das eine Maske lernt, kann sie von einer Domäne in eine andere tragen. Diese Musterübertragung lässt sich mit weniger Aufwand als ein Neustart an eine neue Aufgabe oder einen neuen Datensatz anpassen, sobald eine Maskenverteilung einmal trainiert ist. Das nennen die Autoren Übertragbarkeit, und es hilft, wenn ein Modell in mehr als einem Kontext scharf bleiben soll.

Trainings-Pipeline mit Megatron-LM

Für vollständige Trainingsläufe enthält MaskLLM einen Megatron-LM-Ablauf, der ein LLaMA-Modell über mehrere GPUs verteilt. Das Repository bietet Skripte, um Checkpoints zu konvertieren, Daten zu tokenisieren, mit SparseGPT, Wanda oder Magnitude-Pruning eine vorab erzeugte Maske zu gewinnen, die Maske zu trainieren und den Checkpoint vor der Veröffentlichung zu kürzen.

Vor- und Nachteile

Vorteile

  • Lernt die Masken aus den Daten, statt sich auf eine feste Wichtigkeitsregel zu stützen, was die Genauigkeit bei gleicher Sparsity erhöht
  • Veröffentlicht Code, Gewichte und fertig berechnete Masken unter offener Lizenz, sodass Ergebnisse reproduzierbar sind
  • Unterstützt Transferlernen, sodass eine Maskenverteilung für mehrere Aufgaben und Domänen dient
  • Läuft mit bekannten Modellen wie LLaMA-2, LLaMA-3 und LLaMA-3.1 über Hugging Face und Megatron-LM
  • Hält die Gewichte eingefroren, sodass die gelernte 2:4-Sparsity für die Aufgabe, auf die sie abgestimmt wurde, verlustfrei ist

Nachteile

  • Eine neue Maske zu trainieren verlangt eine Multi-GPU-Maschine, und das Repository nennt rund 40 GB Speicher pro GPU für volle Läufe
  • Es ist ein Forschungsartefakt, kein Produkt: kein Support, kein gehosteter Dienst, keine API
  • Die fertigen Masken gibt es für wenige LLaMA-Modelle, andere Architekturen erfordern also eigene Trainingsläufe
  • Der Nutzen zeigt sich auf Hardware mit 2:4-Beschleunigung, was den Vorteil auf älteren oder Nicht-NVIDIA-GPUs begrenzt

Häufige Fragen

MaskLLM ist eine lernbare Pruning-Methode, die großen Sprachmodellen N:M-Sparsity hinzufügt. Statt jedes Gewicht zu bewerten, lernt sie, welche erhalten bleiben, indem sie die Masken als Wahrscheinlichkeitsverteilung modelliert. NVIDIA Research hat sie auf der NeurIPS 2024 vorgestellt, und der MaskLLM-Code ist auf GitHub offen.