Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

PHPz
PHPznach vorne
2023-04-11 23:49:011269Durchsuche

Derzeit gelten große Sprachmodelle (LLM) als die Richtung für Durchbrüche in der künstlichen Intelligenz. Die Leute versuchen, sie für alle möglichen komplexen Dinge zu nutzen, wie zum Beispiel Fragen und Antworten, Kreation, mathematisches Denken und das Schreiben von Code. Die jüngste Explosion von ChatGPT ist das beste Beispiel.

Für Praktiker des maschinellen Lernens liegt die Schwelle für große Modelle jedoch sehr hoch: Da sie zu groß und schwer zu trainieren sind, wurde diese Richtung lange Zeit von großen Unternehmen monopolisiert. Allerdings gibt es in letzter Zeit immer mehr Möglichkeiten, das GPT-Modell zu vereinfachen. Mitte Januar veröffentlichte der ehemalige Tesla AI Senior Director Andrej Karpathy (jetzt zurück bei OpenAI) ein vollständiges Tutorial zum Aufbau eines GPT-Modells von Grund auf​. Im Vergleich zum trainierten GPT und dem GPT-3 von OpenAI beträgt der Größenunterschied zwischen beiden jedoch das 10.000- bis 1-Millionenfache. Vor Kurzem hat Jay Mody, ein Software-Engineering-Student an der McMaster University in Kanada, ein GPT-Modell von Grund auf mit nur 60 Codezeilen implementiert, indem er die NumPy-Bibliothek importierte und es PicoGPT nannte. Darüber hinaus hat er die trainierten GPT-2-Modellgewichte in seine Implementierung geladen und Text generiert. Nachfolgend werden 60 Codezeilen angezeigt.

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Dazu müssen Sie jedoch mit Python und NumPy vertraut sein und über grundlegende Erfahrungen im Training neuronaler Netze verfügen. Der Autor gab an, dass dieser Blog darauf abzielt, eine einfache, leicht verständliche und vollständige Einführung in GPT zu bieten. Daher verwendet der Autor nur die bereits trainierten Modellgewichte, um den Vorwärtspasscode zu implementieren.

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Code-Adresse:

​https://github.com/jaymody/picoGPT/blob/29e78cc52b58ed2c1c483ffea2eb46ff 6bdec785/gpt2_pico.py#L3-L58​

Für diese Recherche gab Andrej Karpathy vier Worte: spät, aber angekommen. Damals erforderten die von Karpathy erstellten minGPT und nanoGPT 300 Codezeilen.

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.Es ist erwähnenswert, dass dieses Tutorial nicht völlig nullschwellenwertig ist. Um den Lesern das Verständnis zu erleichtern, stellt der Autor zunächst ausführlich vor, was GPT ist, seine Eingabe, Ausgabe und andere Inhalte.

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Was genau GPT kann, nennt der Autor ein paar Beispiele. Es kann E-Mails schreiben, ein Buch zusammenfassen, Ihnen Ideen für Instagram-Untertitel geben und einem 5-Jährigen schwarze Löcher erklären. 1 Jahr alt, Code in SQL schreiben usw.

Wenn Sie diesen Teil sorgfältig lesen, können Sie einige Grundkenntnisse von GPT grob verstehen. Mit dieser Hintergrundeinführung ist der nächste Schritt die Einrichtung.

Projekteinführung

Einstellungen

In diesem Kapitel wird hauptsächlich die Einstellung des Encoders, der Hyperparameter und der Parameter vorgestellt.

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Was Sie zuerst tun müssen, ist, das Repository zu klonen:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar. Dann installieren Sie die Abhängigkeiten:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Hinweis: Wenn Sie ein M1-Macbook verwenden, müssen Sie tensorflow in „tensorflow-macos“ in „requirements.txt“ ändern, bevor Sie pip install ausführen. Zu den Dateien in diesem Projekt gehören Encoder.py, utils.py, gpt2.py, gpt2_pico.py:

  • encoder.py: Enthält den Code von OpenAI BPE Tokenizer, direkt aus dem gpt-2-Repo übernommen;
  • utils.py: Enthält den Code zum Herunterladen und Laden der GPT-2-Modellgewichte, Tokenizer und Hyperparameter;
  • gpt2.py: Enthält das GPT-Modell und den Generierungscode, der als Python-Skript ausgeführt werden kann;
  • gpt2_pico .py: Wie gpt2.py, aber mit weniger Codezeilen.

wo gpt2.py von Grund auf implementiert werden muss, müssen Sie also zuerst gpt2.py löschen und eine leere Datei neu erstellen:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Kopieren Sie dann den folgenden Code zu gpt2 in .py:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Der obige Code enthält 4 Hauptteile:

  • GPT2 -Funktion ist der tatsächliche Code, um GPT diesmal zu implementieren. autoregressiver Dekodierungsalgorithmus ;
  • Hauptfunktion ;
  • fire.Fire (Hauptfunktion) Konvertieren Sie die Datei in eine CLI-Anwendung, damit Sie den Code schließlich ausführen können: python gpt2.py „hier einige Eingabeaufforderungen“.
  • Die Hauptfunktion enthält die Parameter encode, hparams, params und führt den folgenden Code aus:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.Dann werden die erforderlichen Modell- und Tokenizer-Dateien in die Datei models/124M heruntergeladen.

Nachdem die Einstellungen abgeschlossen sind, beginnt der Autor mit der Einführung einiger Details des Encoders, der Hyperparameter und der Parameter. Am Beispiel des Encoders ist der Encoder in diesem Artikel derselbe wie der von GPT-2 verwendete BPE-Tokenizer. Hier sind einige Beispiele für Text, der von diesem Encoder kodiert und dekodiert wird:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.Der eigentliche Token sieht so aus:

Beachten Sie, dass der Token manchmal ein Wort ist (z. B. Nicht). , Manchmal sind es Wörter, denen jedoch ein Leerzeichen vorangestellt ist (z. B. Ġall, Ġ steht für ein Leerzeichen), manchmal sind sie Teil eines Wortes (z. B. ist capes in Ġcap und es aufgeteilt) und manchmal sind es Satzzeichen (z. B. .).

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Ein Vorteil von BPE besteht darin, dass es beliebige Zeichenfolgen codieren kann. Wenn es auf etwas stößt, das im Vokabular nicht vorhanden ist, wird es in Teilzeichenfolgen zerlegt, die es versteht:

Der detailliertere Inhalt wird nicht noch einmal beschrieben. Als nächstes stellen wir das grundlegende neuronale Netzwerk vor. Dieser Teil ist noch grundlegender und umfasst hauptsächlich GELU, Softmax-Funktion, Layer-Normalisierung und Linear.

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

In jedem kleinen Teil gibt es Codebeispiele, zum Beispiel zeigt der Autor im linearen Teil die Standardmatrixmultiplikation + Bias:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Lineare Ebene aus a Vektorraum Der Code zum Projizieren in einen anderen Vektorraum lautet wie folgt:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

GPT-Architektur

Dieser Teil stellt die Architektur von GPT selbst vor.

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Die Transformatorarchitektur ist wie folgt:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Der Transformator verwendet nur den Decoder-Stack (rechter Teil des Diagramms):

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Es ist zu beachten, dass durch die Abschaffung des Encoders auch die mittlere Queraufmerksamkeitsebene gelöscht wird. ​

Auf hoher Ebene besteht die GPT-Architektur aus den folgenden drei Teilen:

  • Text + Positionseinbettung;
  • Transformer-Decoder-Stack;
  • Der Code sieht so aus:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Screenshot des Codeabschnitts

Als nächstes wird jeder der oben genannten drei Teile detaillierter aufgeschlüsselt, was nicht der Fall ist hier entweder noch einmal.

Das Obige ist die GPT-Implementierung des Autors. Der nächste Schritt besteht darin, sie zu kombinieren und den Code auszuführen, um gpt2.py zu erhalten. Der gesamte Inhalt umfasst nur 120 Codezeilen (60 Zeilen, wenn Sie Kommentare und Leerzeichen entfernen).

Der Autor hat die Ergebnisse auf folgende Weise getestet:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Die Ausgabeergebnisse sind wie folgt:

Studenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.

Wie der Autor sagte: Dieses Experiment Es hat funktioniert.

Dieser Artikel stellt den Gesamtprozess nur kurz vor und folgt den Ideen des Autors. Freunde, die mehr wissen möchten, können auf den Originallink verweisen.

Originallink: https://jaykmody.com/blog/gpt-from-scratch/#basic-layers

Das obige ist der detaillierte Inhalt vonStudenten im Grundstudium lernen anhand von 60 Codezeilen, wie man ein großes GPT-Modell von Hand erstellt. Die technische Einführung ist mit einem Tutorial vergleichbar.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen