


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.
Beweis durch Widerspruch
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.
FAQ
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:
- Angenommen, dass die Zeit, die zum Berechnen einer großen Matrixmultiplikation benötigt wird, 0 im Verhältnis zur Zeit des Ladens von Parametern in jedem Vorwärtsdurchlauf ist;
- Annehmen, dass die GPU wird verwendet. Die für die Kommunikation benötigte Zeit ist ebenfalls 0. Wenn die für die Kommunikation und Matrixmultiplikation zwischen GPUs erforderliche Zeit nicht mit 0 angenommen wird, wird die maximale theoretische Anzahl an Token pro Sekunde des 175-Milliarden-Parameter-Modells reduziert.
- Angenommen, ChatGPT ist eine Variante, die auf der Transformer-Architektur basiert.
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Der Befehl centOS stilldown wird heruntergefahren und die Syntax wird von [Optionen] ausgeführt [Informationen]. Zu den Optionen gehören: -h das System sofort stoppen; -P schalten Sie die Leistung nach dem Herunterfahren aus; -r neu starten; -t Wartezeit. Zeiten können als unmittelbar (jetzt), Minuten (Minuten) oder als bestimmte Zeit (HH: MM) angegeben werden. Hinzugefügten Informationen können in Systemmeldungen angezeigt werden.

Backup- und Wiederherstellungsrichtlinie von GitLab im Rahmen von CentOS -System Um die Datensicherheit und Wiederherstellung der Daten zu gewährleisten, bietet GitLab on CentOS eine Vielzahl von Sicherungsmethoden. In diesem Artikel werden mehrere gängige Sicherungsmethoden, Konfigurationsparameter und Wiederherstellungsprozesse im Detail eingeführt, um eine vollständige GitLab -Sicherungs- und Wiederherstellungsstrategie aufzubauen. 1. Manuell Backup Verwenden Sie den GitLab-RakegitLab: Backup: Befehl erstellen, um die manuelle Sicherung auszuführen. Dieser Befehl unterstützt wichtige Informationen wie GitLab Repository, Datenbank, Benutzer, Benutzergruppen, Schlüssel und Berechtigungen. Die Standardsicherungsdatei wird im Verzeichnis/var/opt/gitlab/backups gespeichert. Sie können /etc /gitlab ändern

Vollständige Anleitung zur Überprüfung der HDFS -Konfiguration in CentOS -Systemen In diesem Artikel wird die Konfiguration und den laufenden Status von HDFS auf CentOS -Systemen effektiv überprüft. Die folgenden Schritte helfen Ihnen dabei, das Setup und den Betrieb von HDFs vollständig zu verstehen. Überprüfen Sie die Hadoop -Umgebungsvariable: Stellen Sie zunächst sicher, dass die Hadoop -Umgebungsvariable korrekt eingestellt ist. Führen Sie im Terminal den folgenden Befehl aus, um zu überprüfen, ob Hadoop ordnungsgemäß installiert und konfiguriert ist: Hadoopsion-Check HDFS-Konfigurationsdatei: Die Kernkonfigurationsdatei von HDFS befindet sich im/etc/hadoop/conf/verzeichnis, wobei core-site.xml und hdfs-site.xml von entscheidender Bedeutung sind. verwenden

Aktivieren Sie die Pytorch -GPU -Beschleunigung am CentOS -System erfordert die Installation von CUDA-, CUDNN- und GPU -Versionen von Pytorch. Die folgenden Schritte führen Sie durch den Prozess: Cuda und Cudnn Installation Bestimmen Sie die CUDA-Version Kompatibilität: Verwenden Sie den Befehl nvidia-smi, um die von Ihrer NVIDIA-Grafikkarte unterstützte CUDA-Version anzuzeigen. Beispielsweise kann Ihre MX450 -Grafikkarte CUDA11.1 oder höher unterstützen. Download und installieren Sie Cudatoolkit: Besuchen Sie die offizielle Website von Nvidiacudatoolkit und laden Sie die entsprechende Version gemäß der höchsten CUDA -Version herunter und installieren Sie sie, die von Ihrer Grafikkarte unterstützt wird. Installieren Sie die Cudnn -Bibliothek:

Docker verwendet Linux -Kernel -Funktionen, um eine effiziente und isolierte Anwendungsumgebung zu bieten. Sein Arbeitsprinzip lautet wie folgt: 1. Der Spiegel wird als schreibgeschützte Vorlage verwendet, die alles enthält, was Sie für die Ausführung der Anwendung benötigen. 2. Das Union File System (UnionFS) stapelt mehrere Dateisysteme, speichert nur die Unterschiede, speichert Platz und beschleunigt. 3. Der Daemon verwaltet die Spiegel und Container, und der Kunde verwendet sie für die Interaktion. 4. Namespaces und CGroups implementieren Container -Isolation und Ressourcenbeschränkungen; 5. Mehrere Netzwerkmodi unterstützen die Containerverbindung. Nur wenn Sie diese Kernkonzepte verstehen, können Sie Docker besser nutzen.

Die Installation von MySQL auf CentOS umfasst die folgenden Schritte: Hinzufügen der entsprechenden MySQL Yum -Quelle. Führen Sie den Befehl mySQL-server aus, um den MySQL-Server zu installieren. Verwenden Sie den Befehl mySQL_SECURE_INSTALLATION, um Sicherheitseinstellungen vorzunehmen, z. B. das Festlegen des Stammbenutzerkennworts. Passen Sie die MySQL -Konfigurationsdatei nach Bedarf an. Tune MySQL -Parameter und optimieren Sie Datenbanken für die Leistung.

Der Befehl zum Neustart des SSH -Dienstes lautet: SystemCTL Neustart SSHD. Detaillierte Schritte: 1. Zugriff auf das Terminal und eine Verbindung zum Server; 2. Geben Sie den Befehl ein: SystemCTL Neustart SSHD; 1. Überprüfen Sie den Dienststatus: SystemCTL -Status SSHD.

Pytorch Distributed Training on CentOS -System erfordert die folgenden Schritte: Pytorch -Installation: Die Prämisse ist, dass Python und PIP im CentOS -System installiert sind. Nehmen Sie abhängig von Ihrer CUDA -Version den entsprechenden Installationsbefehl von der offiziellen Pytorch -Website ab. Für CPU-Schulungen können Sie den folgenden Befehl verwenden: PipinstallTorChTorChVisionTorChaudio Wenn Sie GPU-Unterstützung benötigen, stellen Sie sicher, dass die entsprechende Version von CUDA und CUDNN installiert ist und die entsprechende Pytorch-Version für die Installation verwenden. Konfiguration der verteilten Umgebung: Verteiltes Training erfordert in der Regel mehrere Maschinen oder mehrere Maschinen-Mehrfach-GPUs. Ort
