Transcript
00:00:00Das ist ein Sprachmodell mit 28,9 Millionen Parametern, das gerade Wort für Wort Text generiert –
00:00:08auf einem Chip, der etwa acht Dollar kostet. Es gibt kein WLAN, nichts wird an einen Server gesendet,
00:00:14alles passiert auf einem ESP32S3, einem Mikrocontroller mit weniger RAM als ein Computer
00:00:22aus den 90er Jahren. Das ist verrückt. Wie ist das überhaupt möglich? Was ist die Magie dahinter und wie können
00:00:29wir etwas Ähnliches bauen? Das sind alles gute Fragen, die wir uns im heutigen
00:00:34Video ansehen werden. Es wird viel Spaß machen, also legen wir los. Der ESP32S3 ist ein Chip, der
00:00:46512 Kilobyte SRAM bietet, und das ist der schnelle Speicher, mit dem dieser Chip rechnen kann. Normalerweise,
00:00:54wenn man versuchen würde, ein LLM darauf auszuführen, müsste das gesamte Modell genau dort hineinpassen.
00:01:00Das letzte Sprachmodell, das jemand auf so einem Chip zum Laufen gebracht hat, hatte maximal 260.000 Parameter. Dieses
00:01:08hier hat also etwa 110-mal mehr, und die Person, die das geschafft hat, ist der ukrainische Entwickler Slava S. Aber
00:01:16was ist der Zaubertrick? Wie hat er das gemacht? Wie passt ein Modell mit 28,9 Millionen Parametern auf einen 8-Dollar-Chip?
00:01:24Nun, die Lösung stammt von einer Idee, die Google in Gemma verwendet hat: Per-Layer Embeddings. Die meisten
00:01:31Parameter eines Sprachmodells berechnen gar nichts. Sie liegen in einer Embedding-Tabelle, aus der nur gelesen wird.
00:01:37Wenn die meisten Parameter nur nachgeschlagen werden, brauchen sie keinen schnellen Speicher. Man kann also
00:01:44diese Tabelle in einem langsamen, günstigen Flash-Speicher belassen und nur die Zeilen abrufen, die der aktuelle Token benötigt. Und der
00:01:52kleine Teil, der tatsächlich rechnet und über den nächsten Token nachdenkt – der Attention Head und Feed Forward – bleibt im SRAM.
00:01:59Okay, das ist der Rechenteil. Aber die Frage bleibt: Wie passen wir ein so großes Modell auf einen so winzigen Chip?
00:02:05Die Tabelle mit 25 Millionen Zeilen liegt im Flash-Speicher. Das ist der größte Teil der gesamten
00:02:1228,9 Millionen Parameter des Modells. Und Flash ist auf diesem speziellen Chip günstig und riesig: Er hat 16 Megabyte davon.
00:02:20Anstatt also zu versuchen, diese Tabelle in dieselben 512 Kilobyte SRAM zu quetschen,
00:02:26bleibt sie einfach im Flash. Wir holen etwa sechs Zeilen heraus, eine für jede der sechs Schichten des Modells.
00:02:33Das sind insgesamt nur etwa 450 Byte. Bevor Sie sich nun zu sehr freuen, muss ich noch anmerken, dass
00:02:40dies ein sehr einfaches, dummes Modell ist. Es ist kein typisches GPT-Sprachmodell. Es wird keinen Code
00:02:47generieren oder Fragen zu schwierigen Themen beantworten. Wenn man versuchen würde, ein normales Modell dieser Größe
00:02:53auf einem normalen Datensatz zu trainieren, würden 28 Millionen Parameter nur Kauderwelsch liefern. Aber dieses Modell wurde auf
00:03:01Tiny Stories trainiert, einem Datensatz von Microsoft-Forschern, der bewusst so einfach gehalten ist, dass
00:03:08selbst ein winziges Modell mit wenigen Millionen Parametern lernen kann, zusammenhängende Geschichten zu schreiben. Und die Ausführung in reinem C
00:03:15auf einem Chip ohne Betriebssystem und ohne Python-Interpreter – diese Idee stammt aus dem berühmten
00:03:22Llama2.c-Projekt von Andrei Karpathy, das gezeigt hat, dass man ein kleines Sprachmodell trainieren und
00:03:28die Inferenz mit nur wenigen Hundert Zeilen portablem C-Code ausführen kann. Das ist die Blaupause, auf der dieses ganze
00:03:35Projekt aufbaut. Ohne Karpathy wäre das wahrscheinlich gar nicht möglich gewesen. So funktioniert es also kurz
00:03:40zusammengefasst. Versuchen wir nun, es selbst zu bauen und auf dem Chip auszuführen, um die Leistung zu sehen.
00:03:47Um das selbst zu bauen, braucht man als Erstes die richtige Hardware, speziell einen ESP32S3
00:03:54mit 16 Megabyte Flash und 8 Megabyte PSRAM. Das ist die N16R8-Variante. Und das ist wirklich
00:04:03wichtig, denn erinnern Sie sich an die 25 Millionen Zeilen große Tabelle im Flash? Nun, allein
00:04:10nach dem Training und Export ist sie etwa 15 Megabyte groß. Boards mit 4 oder 8 Megabyte Flash
00:04:17bieten einfach nicht genug Platz. Wenn Sie also ein Board zum Nachbauen kaufen, sollten Sie diese Spezifikation
00:04:22zuerst prüfen. Als ich die eigentlichen Anleitungen des Projekts durchging, war das Setup auf
00:04:28verschiedene Dateien verteilt und setzte einiges an Vorwissen voraus, das ich nicht hatte. Anstatt
00:04:34es Ihnen also genau wie beschrieben zu zeigen, habe ich ein einfaches All-in-One-Skript zusammengestellt,
00:04:40das alles erledigt: Board prüfen, Toolchain installieren, Daten vorbereiten, trainieren, exportieren, verifizieren,
00:04:47bauen und flashen – alles in einem Durchgang. Führen wir dieses Skript also aus. Ein kurzer Hinweis:
00:04:55Wenn Sie mitmachen, dauert das gesamte Skript etwa 25 Minuten. Das ist ungefähr die gleiche Zeit,
00:05:00die man auch Schritt für Schritt benötigen würde, da es so viele einzelne Befehle gibt,
00:05:05die man beaufsichtigen muss. Die meiste Zeit entfällt dabei auf das Training des Tiny-Stories-Modells.
00:05:11Das dauert auf meinem MacBook etwa 13 Minuten. Nach dem Training beginnen die LEDs auf dem Board
00:05:18zu blinken. Das ist das Zeichen, dass das Modell gleich geladen wird. Und sobald es geladen ist,
00:05:24sehen wir hier das erste einfache Beispiel einer Geschichte über ein kleines Mädchen. Und tatsächlich
00:05:29erreichen wir diese neun Token pro Sekunde. Aber Sie werden merken, dass es ab einem bestimmten Punkt
00:05:33die Geschichte wieder von vorne startet. Das Modell befindet sich also in einer Art Schleife. Wenn Sie
00:05:39einen eigenen Prompt eingeben möchten, habe ich auch ein Beispielskript beigefügt, mit dem Sie eigene
00:05:44Prompts ausführen können. Beginnen wir für dieses Beispiel eine Geschichte über einen Roboter. Beachten Sie auch,
00:05:50dass Sie den ESP32 erneut flashen müssen, wenn Sie den Prompt ändern. Das ist eine Einschränkung dieser Methode:
00:05:56Es kann immer nur ein vorgeflashtes Prompt abgespielt werden. Wie Sie sehen können,
00:06:02wird der Roboter in der Geschichte erwähnt, und die Geschichte unterscheidet sich diesmal tatsächlich etwas.
00:06:08Aber achten Sie darauf, was nach dem Ende des Absatzes passiert: Wir kehren wieder zur Geschichte des kleinen
00:06:13Mädchens zurück. Ich habe keine Ahnung, warum das passiert, aber das Modell tendiert offenbar dazu, zu dieser einen
00:06:19spezifischen Geschichte über das kleine Mädchen zurückzukehren. Machen wir noch ein Beispiel, und diesmal nehmen wir den
00:06:24berühmten Satz, der ganz am Anfang jedes Star-Wars-Films steht, und schauen wir,
00:06:30wohin uns das führt. Das ist interessant: Wir sehen, dass das Modell sofort wieder zur
00:06:36Erzählung des kleinen Mädchens driftet. Ich nehme an, dass ein Modell dieser Größe gar nicht versteht,
00:06:42was eine Galaxie ist. Wahrscheinlich ignoriert es deshalb in diesem Fall unseren speziellen Prompt. Und
00:06:47wieder beginnt der nächste Absatz mit derselben Geschichte. Obwohl dieses Experiment also
00:06:53beeindruckend ist und es wirklich umwerfend ist, ein Modell mit neun Token pro Sekunde auf einem Mikrochip zu sehen,
00:06:59bleibt es ein sehr eingeschränkter Proof of Concept. Egal was man das Modell fragt, es wird
00:07:06immer wieder zum Geschichtenerzählen zurückkehren, weil es darauf trainiert wurde. Wenn Sie diesen Test
00:07:11interessant fanden: Ich habe ein weiteres Video in einem ähnlichen Bereich gemacht, in dem ich getestet habe, ob ein Raspberry
00:07:18Pi der ersten Generation tatsächlich ein echtes LLM lokal ausführen kann. Schauen Sie sich das Video an, wenn es Sie interessiert.
00:07:24Da haben Sie es, Leute! So führt man ein Sprachmodell mit 28,9 Millionen Parametern auf einem ESP32-Chip aus. Wir haben es
00:07:32getestet, es funktioniert. Ein großes Lob an Slava für dieses Projekt. Aber was denken Sie über dieses Experiment?
00:07:38Sehen Sie reale Anwendungsbeispiele, bei denen eine solche Implementierung nützlich sein könnte? Schreiben Sie uns Ihre
00:07:43Meinung unten in die Kommentare. Und wenn Ihnen diese Art von technischen Analysen gefällt,
00:07:48lassen Sie es mich wissen, indem Sie auf den Like-Button unter dem Video klicken. Vergessen Sie auch nicht,
00:07:53unseren Kanal zu abonnieren. Das war Andres von Betterstack, und wir sehen uns in den nächsten Videos.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video