Die Zeit, in der man programmieren kann, indem man einfach spricht, ist da. Die Highlights eines 40-minütigen Vortrags von AI-Guru Karpathy
Nachrichten von Zhidx vom 21. Juni: Am 18. Juni hielt der ehemalige Mitbegründer von OpenAI und Deep-Learning-Experte Andrej Karpathy auf der Veranstaltung der AI Startup School von Y Combinator (YC) im Moscone Convention Center in San Francisco, USA, einen 40-minütigen Keynote-Vortrag mit dem Titel "Software Is Changing (Again)", in dem er systematisch erklärte, wie Large Language Models die Softwareentwicklung von "Code schreiben/Parameter einstellen" hin zu "AI mit natürlicher Sprache steuern" verlagern.
Karpathy enthüllte in seinem Vortrag, dass die Softwareentwicklung in die Phase von "Software 3.0" eingetreten sei. Er stellte fest, dass die Zeit des traditionellen handgeschriebenen Codes, also Software 1.0, sowie die Zeit von Software 2.0, bei der man die Gewichte von neuronalen Netzen trainierte, von Software 3.0 mit dem Konzept "Prompt ist Programm" abgelöst werde. Natürliche Sprache werde zur neuen Programmierschnittstelle zur direkten Steuerung von Computern.
Zur gleichen Zeit definierte Karpathy die drei Kernattribute von Large Language Models: Large Language Models hätten sowohl die Eigenschaft eines Infrastrukturdienstes wie ein Stromnetz, die Eigenschaft einer Kapitalintensität im Milliardenbereich wie ein Chip-Waferwerk sowie die Eigenschaft des Aufbaus einer komplexen Ökosystem und der schichtweisen Verwaltung wie ein Betriebssystem.
Als er auf die kognitiven Defizite von Large Language Models eingeing, sagte Karpathy, dass Large Language Models hauptsächlich zwei kritische kognitiven Defizite hätten: Erstens "Jagged Intelligence", was sich darin äußere, dass sie hervorragende Fähigkeiten bei der Bearbeitung komplexer Aufgaben hätten, aber bei einfachen logischen Aufgaben wie Zahlenvergleichen und Rechtschreibung häufig Fehler machen würden; zweitens würden Informationen, die außerhalb des festgelegten Kontextfensters lagen, nicht gespeichert werden können.
Angesichts der Herausforderungen bei der Autonomiekontrolle von Large Language Models schlug Karpathy ein dynamisches Steuerungsframework nach dem Vorbild der Iron Man-Armbrust vor. Der Kern dieses Frameworks bestehe darin, durch einen Autonomieregler eine ähnliche L1-L4-Stufenentscheidungsgewichtung wie bei Tesla Autopilot zu realisieren.
Genau wie die Iron Man-Armbrust könne man je nach Komplexität und Risikograd der Aufgabe die Autonomie des KI-Systems dynamisch einstellen, von einfachen Hilfsempfehlungen bis hin zu vollständigen eigenständigen Entscheidungen, so dass der Mensch stets die endgültige Kontrolle über das System behalte.
Nachfolgend ist die vollständige Übersetzung von Karpathys Vortrag (Zhidx hat zur Verbesserung der Lesbarkeit unter Beibehaltung der ursprünglichen Bedeutung einige Ergänzungen, Löschungen und Änderungen vorgenommen):
01 Der Evolutionspfad der Software: Von Code schreiben, Computern beibringen bis hin zu "Sprechen" zur Steuerung von AI
Ich bin heute sehr aufgeregt, hier mit Ihnen über Software in der Ära der KI zu sprechen. Ich habe gehört, dass viele von Ihnen Studenten sind, Bachelor-, Master- und Doktoranden usw., die bald in diese Branche eintreten werden. Derzeit ist es ein äußerst einzigartiger und sehr interessanter Zeitpunkt, in die Branche einzusteigen.
Der grundlegende Grund dafür ist, dass die Software eine grundlegende Veränderung durchmacht. Ich sage "wieder", weil es ständig drastische Veränderungen gibt, was es mir immer wieder ermöglicht, neue Vorträge mit neuem Material zu halten.
Großzügig gesagt, denke ich, dass die Software auf der grundlegenden Ebene in 70 Jahren nicht stark verändert hat, aber in den letzten Jahren zweimal schnell verändert hat. Dies hat eine enorme Menge an Softwareentwicklung und -erneuerung verursacht. Vor einigen Jahren bemerkte ich, dass sich die Software veränderte und eine neue Art von Software auftauchte, die ich Software 2.0 nannte.
Meine Überlegung war: Software 1.0 ist der von Ihnen geschriebene Computer-Code; Software 2.0 besteht im Wesentlichen aus den Gewichten von neuronalen Netzen. Sie schreiben es nicht direkt, sondern erstellen diese Parameter, indem Sie Datensätze anpassen und Optimierer ausführen.
Damals wurden neuronale Netze oft als eine andere Art von Klassifikator angesehen, aber ich denke, dass dieses Framework passender ist; heute gibt es im Bereich von Software 2.0 etwas wie GitHub, und ich denke, dass Hugging Face das GitHub im Bereich von Software 2.0 ist, und sein Model Atlas spielt auch eine wichtige Rolle dabei.
Als eine äußerst einflussreiche Plattform bietet Hugging Face Entwicklern reichhaltige Ressourcen und bequeme Werkzeuge, ähnlich wie GitHub in der traditionellen Softwareentwicklung. Es fördert den technologischen Austausch und die innovative Entwicklung im Bereich von Software 2.0. Der Model Atlas ist wie ein riesiges Modellressourcenarchiv, das die Ökosystem der Plattform weiter bereichert und es Entwicklern ermöglicht, verschiedene Modelle leichter zu erhalten und zu nutzen, um die Entwicklung und Implementierung verschiedener Projekte zu unterstützen. Der Model Atlas ist ein Open-Source-Tool zur visuellen Darstellung von Modell-Repositories, das für Software 2.0 entwickelt wurde.
Zum Beispiel repräsentiert der große zentrale Kreis die Parameter des Flux-Bildgenerators. Jedes Mal, wenn man darauf aufbaut und anpasst, entspricht dies einem git commit und erstellt einen neuen Bildgenerator.
Also wird bei Software 1.0 ein Computer durch das Schreiben von Code programmiert, während bei Software 2.0 ein neuronales Netz durch die Gewichte von Netzwerken wie AlexNet programmiert wird.
Bis vor kurzem waren diese neuronalen Netze mit festen Funktionen. Ich denke, dass eine grundlegende Veränderung darin besteht, dass neuronale Netze durch Large Language Models programmierbar geworden sind. Ich denke, dass dies sehr neu und einzigartig ist und eine neue Art von Computer darstellt, die es lohnt, Software 3.0 zu nennen.
Bei Software 3.0 ist Ihr Prompt das Programm zur Programmierung von Large Language Models. Interessanterweise werden diese Prompts in Englisch geschrieben, was eine sehr interessante Programmiersprache ist.
Nehmen Sie zum Beispiel an, Sie möchten, dass der Computer eine Sentiment-Klassifizierung vornimmt und entscheidet, ob ein Kommentar lobend oder kritisch ist. Es gibt verschiedene Methoden.
Die alte Methode von Software 1.0: Sie müssen wie ein alter Handwerker selbst eine Menge Code schreiben und dem Computer sagen, welche Wörter als Lob und welche als Kritik gelten; die weiterentwickelte Methode von Software 2.0: Sie sind wie ein Trainer und suchen eine Menge kommentarexemplare, die mit "lobend" oder "kritisch" markiert sind, und lassen den Computer die Regeln selbst herausfinden; Software 3.0: Sie sind wie ein Chef und geben direkt an das Large Language Model den Befehl: "Schau, ob dieser Kommentar lobend oder kritisch ist! Antworte nur mit 'lobend' oder 'kritisch'!" Mit nur einem Satz versteht die KI und gibt Ihnen sofort die Antwort. Wenn Sie den Befehl ändern zu "Analysiere, ob dieser Kommentar positiv oder negativ ist", ändert sich auch die Art ihrer Antwort.
Wir sehen, dass der Code auf GitHub nicht nur aus Code besteht, sondern auch Englisch enthält. Dies ist eine neue Art von Code, die immer mehr verbreitet wird. Dies ist nicht nur ein neues Paradigma, sondern es überrascht mich auch, dass Englisch verwendet wird. Dies hat mich vor einigen Jahren so überrascht, dass ich einen Tweet dazu veröffentlichte.
Als ich am Tesla Autopilot arbeitete, beobachtete ich: Anfangs waren am unteren Ende des Stacks die Sensor-Eingaben, die durch eine Menge C++ (1.0) und neuronale Netze (2.0) verarbeitet wurden, um Fahrbefehle auszugeben. Mit der Verbesserung des Autopilots wuchsen die Fähigkeiten und die Größe der neuronalen Netze, und der C++-Code wurde entfernt. Viele Funktionen, die ursprünglich von 1.0 realisiert wurden, wurden auf 2.0 übertragen. Der Software 2.0-Stack "verschlang" tatsächlich den 1.0-Stack.
▲ Beobachtung des Verschlangens des traditionellen Code-Stacks durch 2.0 bei der Entwicklung von Tesla Autopilot
Wir sehen jetzt wieder das Gleiche passieren: Software 3.0 "verschlang" den gesamten Stack. Jetzt haben wir drei völlig verschiedene Programmierparadigmen. Ich denke, es ist klug, wenn man bei der Eintritt in die Branche alle drei beherrscht, da sie jeweils Vor- und Nachteile haben. Sie müssen entscheiden: Soll eine bestimmte Funktion mit 1.0, 2.0 oder 3.0 realisiert werden? Soll man ein neuronales Netz trainieren oder ein Large Language Model ansprechen? Soll es expliziter Code sein? Wir müssen diese Entscheidungen treffen und möglicherweise reibungslos zwischen den Paradigmen wechseln.
02 Large Language Models werden zum neuen Betriebssystem, und die Berechnung erfolgt im Zeit-Sharing-Modus
Die Software durchmacht eine grundlegende Veränderung, die in den letzten 70 Jahren nie so drastisch war. Ungefähr 70 Jahre lang hat sich das zugrunde liegende Paradigma der Software kaum verändert, aber in den letzten Jahren hat es zweimal strukturelle Veränderungen gegeben. Jetzt stehen wir vor einer Welle der Softwareerneuerung, und es gibt eine Menge Arbeit zu tun, eine Menge Software zu entwickeln und sogar neu zu schreiben.
Vor einigen Jahren bemerkte ich, dass sich die Software zu einer neuen Form entwickelte, und ich nannte es damals Software 2.0. Software 1.0 ist der traditionell von uns handgeschriebene Code, während Software 2.0 die Parameter von neuronalen Netzen bezeichnet. Wir schreiben nicht direkt "Code", sondern passen Daten an und führen Optimierer aus, um Parameter zu generieren.
Heute gibt es im Welt von Software 2.0 auch etwas wie GitHub, wie Hugging Face und der Model Atlas. Sie speichern verschiedene Modelle wie Code-Repositories. Jedes Mal, wenn jemand auf dem Flux-Modell aufbaut und anpasst, entspricht dies einer Code-Commit in diesem Raum.
Und jetzt bringt die Entstehung von Large Language Models eine noch grundlegendere Veränderung. Ich denke, dass dies eine völlig neue Art von Computer ist, die es sogar lohnt, Software 3.0 zu nennen. Ihr Prompt ist jetzt das Programm zur Programmierung von Large Language Models, und diese Prompts werden in Englisch geschrieben. Dies ist eine sehr interessante Programmiersprache.
Andrew Ng sagte einmal: "KI ist der Strom der neuen Ära". Dies trifft den Kernpunkt. Unternehmen wie OpenAI, Google und Anthropic investieren Kapital in das Training von Modellen und "liefern Intelligenz" an Entwickler über die API mit Betriebskosten. Die Modelle werden nach Token abgerechnet und wie Strom "gemessen und genutzt". Unsere Anforderungen an diese Modelle sind auch sehr ähnlich wie an "Infrastruktur": geringe Latenz, hohe Verfügbarkeit und stabile Ausgabe.
▲ Unternehmen wie OpenAI, Gemini und Anthropic investieren Kapital in das Training von Modellen, ähnlich wie beim Aufbau eines Stromnetzes
Aber Large Language Models haben nicht nur die Eigenschaft eines öffentlichen Dienstes, sondern sind eher wie komplexe Software-Betriebssysteme. OpenAI und Anthropic sind wie Windows und macOS, während Open-Source-Modelle eher wie Linux sind. Die Aufgabe eines Betriebssystems ist nicht, "eine bestimmte Funktion auszuführen", sondern einen "Plattform" aufzubauen, um mehr Funktionen zu unterstützen.
▲ Geschlossene Anbieter wie Windows und Mac OS haben Open-Source-Alternativen wie Linux
Genauer gesagt, führen Large Language Models keine Aufgaben unabhängig aus, sondern fungieren als "Laufzeitsystem", das Prompts, Werkzeuge und Agenten aufnimmt. Diese Komponenten werden wie Plugins in das Framework von Large Language Models eingebettet und koordinieren über die Inferenzfähigkeit des Modells, um komplexe Aufgaben zu verarbeiten.
Betrachtet man das Berechnungsmodell, befinden wir uns derzeit in der Phase der 1960er Jahre bei der Berechnung von Large Language Models. Die Inferenzkosten von Large Language Models sind immer noch hoch, und die Modellberechnung wird zentral in der Cloud durchgeführt. Wir greifen wie dünne Clients (Thin Client) über das Netzwerk remote zu.
Dies ist wie