Heim >Technologie-Peripheriegeräte >KI >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.
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.
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.
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.
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.
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
EinstellungenIn diesem Kapitel wird hauptsächlich die Einstellung des Encoders, der Hyperparameter und der Parameter vorgestellt.
Was Sie zuerst tun müssen, ist, das Repository zu klonen:
Dann installieren Sie die Abhängigkeiten:
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:
wo gpt2.py von Grund auf implementiert werden muss, müssen Sie also zuerst gpt2.py löschen und eine leere Datei neu erstellen:
Kopieren Sie dann den folgenden Code zu gpt2 in .py:
Der obige Code enthält 4 Hauptteile:
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:
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. .).
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.
In jedem kleinen Teil gibt es Codebeispiele, zum Beispiel zeigt der Autor im linearen Teil die Standardmatrixmultiplikation + Bias:
Lineare Ebene aus a Vektorraum Der Code zum Projizieren in einen anderen Vektorraum lautet wie folgt:
GPT-Architektur
Dieser Teil stellt die Architektur von GPT selbst vor.
Die Transformatorarchitektur ist wie folgt:
Der Transformator verwendet nur den Decoder-Stack (rechter Teil des Diagramms):
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:
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:
Die Ausgabeergebnisse sind wie folgt:
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!