Heim >Technologie-Peripheriegeräte >KI >ChatGPT-Modellparameter ≠ 175 Milliarden, jemand hat es durch Widerspruchsbeweis bewiesen
Die Popularität von
ChatGPT hält bis heute an und es tauchen immer wieder aktuelle Nachrichten und technische Interpretationen rund um das Thema auf. Bezüglich der Anzahl der Parameter wird allgemein davon ausgegangen, dass ChatGPT über die gleiche Anzahl von Parametern verfügt wie das im GPT-3-Papier eingeführte Modell mit 175 Milliarden Parametern. Menschen, die sich intensiv mit großen Sprachmodellen befassen, wissen jedoch, dass dies nicht stimmt. Durch die Analyse der Speicherbandbreite der A100-GPU stellen wir fest, dass die tatsächliche Inferenzgeschwindigkeit der ChatGPT-API viel schneller ist als die maximale theoretische Inferenzgeschwindigkeit des 175-Milliarden-Dense-Äquivalentmodells.
In diesem Artikel wird ein Widerspruchsbeweis verwendet, um das obige Argument zu beweisen und zu untermauern, wobei nur einige im College erworbene theoretische Kenntnisse verwendet werden. Beachten Sie auch, dass es auch das gegenteilige Problem gibt, nämlich dass einige Leute behaupten, dass ChatGPT nur X Milliarden Parameter hat (X ist viel niedriger als 1750). Diese Behauptungen können jedoch nicht überprüft werden, da die Personen, die sie aufstellen, in der Regel vom Hörensagen sprechen.
Der nächste Schritt ist der detaillierte Argumentationsprozess.
Nehmen Sie zunächst an, dass das ChatGPT-Modell 175 Milliarden Parameter hat und normalerweise zum Speichern von LLM-Gewichten für eine geringere Latenz, einen höheren Durchsatz und einen geringeren Speicherbedarf verwendet wird (als die Verwendung des Float16-Formats benötigt es doppelt so viel Speicher). speichern). Jeder INT8-Parameter benötigt 1 Byte zur Speicherung. Eine einfache Rechnung zeigt, dass das Modell 175 GB Speicherplatz benötigt. Bild aus dem INT8 SmoothQuant-Artikel unter: https://arxiv.org/abs/2211.10438 ist jederzeit „autoregressiv“ und sagt das nächstwahrscheinlichste Token voraus (für ein RLHF-Modell wie ChatGPT sagt es das nächste Token voraus, das seine menschlichen Annotatoren bevorzugen). Das bedeutet, dass 200 Token generiert werden, sodass 200 Vorwärtsdurchgänge durchgeführt werden müssen. Für jeden Vorwärtsdurchlauf müssen wir alle Gewichte des Modells aus dem Speicher mit hoher Bandbreite (HBM) in die Matrix-Recheneinheit (den Tensor-Rechenkern der GPU) laden, was bedeutet, dass wir für jeden 175 GB Gewichte laden müssen Vorwärtspass.
Auf der Microsoft Azure-Plattform beträgt die maximale Anzahl von A100, die einem Knoten zugewiesen werden können, 8. Dies bedeutet, dass die maximale Tensorparallelität pro Modellinstanz 8 beträgt. Anstatt also 175 GB Gewichte pro Vorwärtsdurchlauf zu laden, müssen Sie nur 21,87 GB pro GPU pro Vorwärtsdurchlauf laden, da Tensorparallelität die Gewichte und Berechnungen auf allen GPUs parallelisieren kann. 🔜 . Das bedeutet, dass bei Batchsize=1 (begrenzt durch die Speicherbandbreite) die maximale theoretische Vorwärtsdurchlaufgeschwindigkeit 91 Mal/Sekunde beträgt. Außerdem wird die meiste Zeit damit verbracht, die Gewichte zu laden, anstatt Matrixmultiplikationen zu berechnen.
Hinweis: Bei fp16/bfloat16 erreicht die maximale theoretische Vorwärtsdurchlaufgeschwindigkeit bei Begrenzung durch die Speicherbandbreite 45,5 Mal/Sekunde.
Wie hoch ist die tatsächliche Latenz von ChatGPT?
Führen Sie nachts ein in Python geschriebenes Skript aus (die nächtliche Ausführung ist günstiger), um die Latenz der Verwendung von ChatGPT über die OpenAI-API zu testen. Die maximale empirische Geschwindigkeit, die mit dem Vorwärtsdurchlauf erreicht wird, beträgt 101 Mal/Sekunde. In diesem Artikel werden die maximalen empirischen Ergebnisse der Experimente verwendet, da der geringste Overhead aus dem Backend und dem dynamischen Batch-System von OpenAI erzielt werden muss.
Fazit
Basierend auf den vorherigen Annahmen und Argumenten können wir feststellen, dass ein Widerspruch besteht, da die empirischen Ergebnisse viel schneller sind als die maximalen theoretischen Ergebnisse basierend auf der Speicherbandbreite der A100-Plattform. Daraus kann geschlossen werden, dass das von OpenAI zur Inferenz verwendete ChatGPT-Modell definitiv nicht einem dichten Modell mit 175 Milliarden Parametern entspricht.
1. Warum die Anzahl der Parameter des ChatGPT-Inferenzmodells vorhersagen, anstatt die Anzahl der Parameter des Trainingsmodells?
Verwendet die Speicherbandbreitenmethode zur Schätzung der Anzahl der Modellparameter, die nur für Inferenzmodelle verfügbar ist. Wir wissen nicht genau, ob OpenAI Techniken wie Destillation anwendet, um sein Inferenzmodell kleiner als sein Trainingsmodell zu machen.
Viele Insekten haben eine Larvenform, die darauf optimiert ist, der Umwelt Energie und Nährstoffe zu entziehen, und eine völlig andere adulte Form, die für ganz unterschiedliche Reise- und Fortpflanzungsanforderungen optimiert ist. ——Von Geoffrey Hinton, Oriol Vinyals, Jeff Dean, 2015.
2. Gibt es noch andere Annahmen?
Der Beweis umfasst tatsächlich drei Annahmen:
3. Was bedeutet Dichteäquivalent?
In den letzten Jahren haben Forscher Untersuchungen zu LLMs für Sparse-Mixing-Experten wie Switch Transformer durchgeführt. Das dichte Äquivalent gibt an, wie viele Parameter in jedem Vorwärtsdurchlauf verwendet werden. Mit den in diesem Artikel beschriebenen Methoden gibt es keine Möglichkeit zu beweisen, dass ChatGPT kein MoE-Modell mit 175 Milliarden Parametern und geringer Dichte ist.
4. Haben Sie über die Optimierung der KV-Cache-Transformer-Inferenz nachgedacht?
Selbst mit der KV-Cache-Optimierung muss bei jedem Vorwärtsdurchlauf immer noch das gesamte Modell geladen werden. Der KV-Cache spart nur FLOPs, verringert jedoch nicht den Speicherbandbreitenverbrauch (tatsächlich erhöht er sich, da jeder Vorwärtsdurchlauf beides erfordert). Durchläufe laden den KV-Cache).
5. Haben Sie über Flash Attention nachgedacht?
Obwohl Flash Attention hinsichtlich Speicherbandbreiteneffizienz und Echtzeitgeschwindigkeit besser abschneidet, erfordert jeder Vorwärtsdurchlauf immer noch das Laden des gesamten Modells, sodass das vorherige Argument weiterhin gilt.
6. Haben Sie über Pipeline-Parallelität/differenziertere Parallelstrategien nachgedacht?
Die Verwendung von Pipeline-Parallelität führt zur gleichen maximalen Anzahl von Vorwärtsdurchgängen. Durch die Verwendung von Mikrobatches und größeren Batchgrößen kann jedoch der Durchsatz (Tokens insgesamt/Sekunde) erhöht werden.
7. Haben Sie darüber nachgedacht, die Tensorparallelität über 8 hinaus zu erhöhen?
Die A100-Plattform unterstützt 16 A100 pro Knoten, Azure unterstützt diese Funktion jedoch nicht. Nur Google Cloud unterstützt diese Funktion, aber fast niemand nutzt sie. Es ist unwahrscheinlich, dass Azure einen Knoten mit 16 A100s für OpenAI individuell anfertigt und ihn nicht als öffentliche GA-Version veröffentlicht, um die Kosten für den Entwurf oder die Wartung neuer Knoten zu amortisieren. Was die Tensorparallelität zwischen Knoten betrifft, ist das nur eine Möglichkeit, aber es ist eine weniger kostengünstige Möglichkeit, Rückschlüsse auf dem A100 zu ziehen. Selbst NVIDIA empfiehlt keine parallele Verarbeitung von Tensoren zwischen Knoten.
8. Haben Sie darüber nachgedacht, INT4 zum Speichern von Gewichten zu verwenden?
Während sich die Verwendung von INT4 als effektiv erwiesen hat, unterstützt der GPU-Kernel-Compiler von OpenAI keine INT4-Ladevorgänge, -Speicherungen oder Matrixmultiplikationen, und es gibt keine Pläne, INT zu ihrer Technologie-Roadmap hinzuzufügen. Da INT4-Ladungen oder -Speicherungen nicht unterstützt werden, können Sie die Gewichte nicht einmal als INT4 speichern und sie dann wieder in ein hochpräzises Format (wie INT8, bfloat16 usw.) quantisieren.
Das obige ist der detaillierte Inhalt vonChatGPT-Modellparameter ≠ 175 Milliarden, jemand hat es durch Widerspruchsbeweis bewiesen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!