AI Dev 25 | Jeff Huber: Teach Chroma how to play Doom

Deutschsprachiger Konferenzvortrag (Jeff Huber, Mitgründer von Chroma) über die Nutzung von Chroma (Open‑Source‑Vektordatenbank) als Speicher für KI‑Anwendungen. Huber stellt ein Code‑Golf‑Experiment vor, in dem ein Agent allein über gespeicherte Frame→Embedding→Action‑Paare (ohne umfangreiche interne Argumentation) versucht, das Spiel Doom zu spielen; er beschreibt das methodische Setup, Live‑Demoergebnisse, Fehlermodi und kündigt die Open‑Source‑Veröffentlichung des Codes an.
Chapters
Schön, Sie alle zu sehen. Es war bisher eine wunderbare Konferenz. Ich möchte mich bei den Organisatoren und Andrew bedanken, die diese Gruppe zusammengebracht haben. Die Qualität der Diskussionen und Gespräche am Stand und im gesamten Veranstaltungsort war unglaublich. Ich freue mich riesig, heute mit Ihnen zu sprechen. Falls Sie mich noch nicht kennen, ist das kein Problem. Mein Name ist Jeff Huber und ich bin Mitbegründer von Chroma. Chroma ist eine Open Source Vektordatenbank, die Speicher und Abruf für Ihre KI Anwendungen ermöglicht. Und heute dachte ich, wir hätten etwas mehr Spaß als vielleicht bei einer normalen Enterprise Rec Anwendung. Wir zeigen Chroma, wie man Doom spielt, OK, um etwas mehr Kontext zu schaffen. Wir möchten Chroma so weit wie möglich näher bringen, um KI und die Grundelemente, mit denen wir bauen können, zu verdeutlichen. Es war sehr interessant. Ich habe mir die Vortragsliste angesehen und da Sie heute viele Vorträge besucht haben, scheint Speicher das Thema zu sein, das mir natürlich sehr am Herzen liegt und das ich sehr gerne höre. Aber ich würde sagen, im Wesentlichen, wissen Sie, geht es im Diskurs zu Recht um die Argumentation. Ich denke, heute wird viel Wert darauf gelegt und Speicher ist so etwas wie eine Nebensache. Ich schaue mir meine PDFs an und beende das Ganze M und so Im Geiste von Code Golf möchte ich heute darüber diskutieren, wie wir das Denken einfach weglassen und uns nur auf den Speicher konzentrieren können. Wie weit kommen wir? Und es gibt echte Einschränkungen, nicht wahr? Also das ist CodeGolf. Der Zweck von Code Golf ist nicht, ein Lehrbuch darüber zu schreiben, wie alle Ihre Anwendungen erstellt werden sollten, sondern eine interessante Erkundung dessen, was möglich OK, wie könnten Sie Doom nur mit Speicher spielen? Lassen Sie uns Schritt für Schritt vorgehen. Um etwas näher darauf einzugehen, möchte ich zunächst mit der Frage beginnen, was KI eigentlich ist. Denn es gibt offensichtlich wieder viele Diskussionen, insbesondere aus den großen Modell Laboren darüber, dass KI das Allheilmittel für alle Probleme der Menschheit sei. Künstliche und Superintelligenz wird das Universum mit Büroklammern überziehen? Ich weiß nicht, vielleicht passiert das ja, aber ich halte es für viel wahrscheinlicher, dass KI eine neue Art der Softwareentwicklung ist. Ein LLM ähnelt stark einer CPU. Es ist eine Methode zur Datenverarbeitung. Tatsächlich ist es ein Informationsverarbeitungssystem, das unstrukturierte Daten auf eine allgemeingültige Weise verarbeitet. Ich halte es für unglaublich wichtig, darüber zu sprechen, was diese Dinge sind und wie man sie in der Fachsprache der Ingenieure beschreibt. Das ist so wichtig, weil es uns hilft zu überlegen, wie wir sie auf reale Geschäftsprobleme anwenden können. Und was ermöglicht uns KI? Wie bereits erwähnt, ermöglicht sie uns, neue Arten von Programmen zu schreiben, die vorher sehr schwierig gewesen wären. Viele von Ihnen im Publikum tun dies bereits. Ich verstehe, dass ich hier offene Türen einrenne. Aber um Ihnen ein theoretisches Modell zu geben, das verdeutlicht, warum Speicher ein nützliches Werkzeug für die Entwicklung nützlicher Dinge sein kann, hier ein theoretisches Modell. Wir haben hier also unseren Input, unser Kontextfenster. Das sind unsere unstrukturierten Informationen. Das ist natürlich der Input für unser LLM. Wie Sie wissen, LLMs haben sowohl die Funktion als auch den Fehler, dass das Kontextfenster sowohl die Anweisungen als auch die Benutzerdaten in einem großen Input enthält. Nicht ideal, aber so ist es nun einmal, So ist es heute. Und dann gibt es noch ein gewünschtes Ergebnis, das wir anhand dieser Inputs erreichen möchten. Und natürlich haben wir Menschen typischerweise unseren goldenen Datensatz und unseren Maßstab dafür, was genau das LLM tun soll. Und manchmal liegt es richtig. Es gibt viele Denksprünge, insbesondere in komplexen agentenbasierten Workflows, also in rekursiven Prozessen. Die Anzahl der Sprünge, die die Schlussfolgerung durchlaufen muss, ist recht hoch. Deshalb betreiben wir viel Prompt Engineering. Wir iterieren die Prompts. Wir Wenn du das nicht tust, wird meine Großmutter sterben. Manchmal funktioniert das und wird etwas besser. Das bringt uns näher ans Ziel. Es reduziert die Anzahl der Sprünge, die die Modelle durchlaufen müssen, um uns unserem gewünschten Ergebnis näher zu bringen. Ich würde behaupten, dass ein fortschrittlicherer Speicher, bei dem wir sowohl aus diesem Wissensspeicher lesen als auch zurückschreiben, uns noch näher an das gewünschte Ergebnis bringt. Vielen Dank, Harrison, für den direkten Einstieg. Ich denke, Harrison hat bereits gezeigt, dass die Möglichkeit, eigene Prompts zu bearbeiten, eine einfache Speicherfunktion ist, wenn man einen E Mail Agenten erstellen möchte. Und das bringt uns wiederum näher an die gewünschten Ergebnisse, also was wir tun werden. M Und auf den nächsten Folien hier werden wir das Denken komplett beiseite lassen und sehen, wie nah wir allein mit dem Gedächtnis herankommen. Noch Das soll nicht heißen, dass Sie nicht den besten Doom Spieler ihres Lebens sehen. Werden. Darum geht es nicht. Es geht um Code Golf, den Geist der Demo Szene. Wissen Sie, wie nah können wir etwas Interessantem kommen? Es lohnt sich, einen kurzen Exkurs zum Gedächtnis zu machen. Ich denke, es ist wichtig, die Begriffe noch einmal zu definieren. Sogar Dinge Was ist ein Agent? Wissen Sie, wir sind als Branche noch dabei, uns darauf zu konzentrieren. Aber unserer Ansicht nach ist Gedächtnis die Fähigkeit, sich Informationen zu merken, zu speichern und abzurufen. Der Wert liegt natürlich darin, dass es das Kontextfenster dynamisch an den Kontext anpasst und die reale Welt ist voller Randfälle. Und das ist ein attraktives Feature. Und natürlich wissen Sie im Vergleich zu Dingen wie Feinabstimmung, die ihre Berechtigung haben. Es ist in Echtzeit aktualisierbar und von Menschen interpretierbar. Das sind auch ganz praktische Funktionen, wenn man einen Menschen einbeziehen möchte. Wir haben ja schon mal gezeigt, wie wir irgendwann an den Punkt kommen, an dem diese Dinge einfach ewig von selbst laufen und wir keine Menschen mehr brauchen. Aber im Moment scheint es schon hilfreich zu sein, Menschen einzubeziehen. OK, ich bin jetzt sehr schnell. Vielleicht schauen wir uns den Code genauer an und machen ein paar Fragen und Antworten. Das wäre interessant. Zurück zu Doom. Unser Ziel ist es, ein System zu entwickeln, das das Spiel nur aus dem Gedächtnis lernt. Und wer möchte nicht, dass sich sein KI System selbst verbessert? Das klingt nach einer attraktiven Funktion. Wie könnten wir das also erreichen? Um auf das Beispiel von vorhin zurückzukommen? Wir wollen ein System entwickeln, das die nächste Aktion vorhersagt. Ausgehend von einem Videospielframe habe ich dieses Monster im Visier. Wir wollen das gewünschte Ergebnis erhalten. Diejenigen im Raum, die sich schon länger mit KI beschäftigen, vielleicht mehr als sieben Jahre, erinnern sich vielleicht daran, dass Reinforcement Learning mal der letzte Schrei war. Es erlebt gerade ein Comeback und ist echt cool. Aber diese Schleife ist sehr ähnlich, oder? Die Reinforcement Learning Schleife Beobachtet einen Zustand, wählt eine Aktion aus einer Richtlinie aus, führt diese Aktionen aus, erhält die Belohnung von der Belohnungsfunktion und aktualisiert die Richtlinie basierend auf dieser Belohnung. Ich denke, es besteht die Möglichkeit, eine Gedächtnisschleife zu erstellen, die einen sehr ähnlichen Workflow darstellt und für Menschen, die diese Systeme steuern, vollständig interpretierbar ist. Richtig. Noch die Schleife, um es klar zu sagen, dient der Zustandsbeobachtung. Was passiert in diesem Frame? Hey, da ist ein Bösewicht im Visier. Aktionen festlegen. Was habe ich bisher getan? Wenn ein Bösewicht im Fadenkreuz war? Wahrscheinlich abdrücken, diese Aktionen ausführen. Abdrücken, die Folgen beobachten. Ist der Bösewicht gestorben vermutlich. Und dann zukünftiges Verhalten anpassen. So eine Art selbstverbessernder Kreislauf. Das Ende davon habe ich noch nicht implementiert. Das wird also eine Hausaufgabe für alle anderen sein, das System zu vervollständigen. Um es noch einmal deutlich zu Schritt 1 ist, dass wir das Spiel spielen und Frame Aktionspaare aufzeichnen. Man könnte es sich wie ein Training vorstellen. Man gibt einen Frame ein und verknüpft ihn dann mit einer Aktion. Ich habe dieses Level, das wir gleich besprechen werden, acht Mal von vorne bis hinten gespielt, und zwar so nach dem Links Rechts Schießen, Türen öffnen und während das im Hintergrund lief, haben wir Frames aufgezeichnet. Wir haben diese Frames eingebettet und sie dann mit meinen Tastatur oder Mausaktionen verknüpft. Auch hier handelt es sich nicht um ein perfektes System. Einbettungen verfügen nicht unbedingt über die nötige Ausdruckskraft, um in einem so breiten und vielfältigen Bereich wie einem Videospiel hochintelligent zu sein. Hoffentlich werden wir aber sowohl gute als auch interessante Fehlermodi feststellen und ich denke, die Fehlermodi lehren uns auch etwas. Ich möchte auch darauf hinweisen, dass wenn Sie keinen Dune Videospiel Agenten entwickeln, ich bin mir sicher, dass niemand hier im Raum das heute professionell macht, Sie aber eine Art Chat Erlebnis über eine Reihe von Dokumenten erstellen. Richtig. Frame und Aktionspaare können auch als Abfrage und Antwortpaare betrachtet werden. Richtig. Im Grunde dasselbe Format. Das ist also ein guter Anhaltspunkt. OK, dann werden wir die aufgezeichneten Frame und Aktionspaare verwenden, um das Spiel tatsächlich zu spielen. Also quasi bei jedem Frame M oder alle paar Frames gehen wir zu Chroma. Wir schauen, welche visuell semantisch ähnlichen Frames es gibt. Haben wir aufgezeichnet M, welche Aktionen mit diesen Frames verknüpft sind M und dann wählen wir einen aus und führen ihn aus. Und dann machen wir einfach diese Schleife. Dieses System ist zwar kein Allheilmittel, hat aber auch viele Nachteile, die ich Ihnen aufzählen werde. Aber ich finde es an sich interessant und Schritt 3 ist hier auch nicht implementiert. Wenn jemand das als Hausaufgabe nehmen möchte, wäre das ziemlich cool. Der gesamte Code wird Open Source sein. Ich werde ihn morgen veröffentlichen. Der QR Code wird in einer Minute auf dem Bildschirm erscheinen. M aber das Ziel ist es, den Befehlssatz nun in Richtung einer Ziel oder Belohnungsfunktion zu iterieren. In diesem Beispiel wird insbesondere Doom verwendet, da Doom historisch gesehen ein Spielplatz für bestärkendes Lernen war. Sie können visdoom per PIP installieren. Es bietet Ihnen alle Python Funktionen zum Ziehen von Frames und Aufnehmen von Inhalten. Das ist also eine tolle Plattform für diese Demo. Es wäre aber auch recht einfach, verschiedene interessante Experimente zum Schließen dieser Feedbackschleife auszuprobieren. Nicht nur einen Frame nehmen und eine Aktion ausführen, sondern beobachten, ob wir das gewünschte Ergebnis erzielen und dann unseren Befehlshaber. OK, hier ist der QR Code. Ich werde den Code morgen veröffentlichen. Wenn Sie ihn sich also sichern möchten, ist jetzt Ihre Chance, falls Sie ihn verpassen, mein GitHub und mein GitHub ist Jessie Huber. Klicken Sie auf Ansehen auf GitHub, um eine E Mail zu erhalten. So funktioniert GitHub. Falls Sie ihn verpasst haben und es Ihnen leid tut, können Sie später wiederkommen. Ich schicke Ihnen dann den Link. OK, wechseln wir zur Demo. Super. Okay, das ist also eine Art kleiner Einblick in Chroma Cloud. Hier ist mein Team, meine Datenbank und meine Sammlung von Trainingsanweisungen. Ich habe hier 18 Seiten mit etwa Vektoren. Wenn ich auf einen dieser Vektoren klicke, missbrauchen wir Chroma. Das ist nicht unbedingt die empfohlene Art, Chroma zu verwenden, aber genau das macht den Spaß aus. Sie werden dieses lange, lange Dokument bemerken. Es enthält eine Menge Zahlen, Nullen und Einsen. Das entspricht einem Aktionsfeld. Nullen bedeuten, dass ich die Taste nicht drücke und Einsen, dass ich die Taste drücke. Die Einbettung, die Sie hier unten sehen, ist die eigentliche Einbettung. Ich glaube, sie verwendet OpenClip oder Clip. Das ist mit diesem Frame verknüpft. In den Metadaten können Sie dann einen Blick darauf werfen, wie das gemacht wurde. Richtig. Also Folge Nummer eins. Ich habe ja schon erzählt, dass ich das Spiel acht mal gespielt habe. Das ist Frame Nummer 64. Also es ist der 64. Den wir eingebettet haben. Und dann gibt es noch ein paar Metadaten, die einfach nur für die Buchhaltung verwendet werden. Und wenn man dadurch scrollt, bekommt man einen Eindruck von der geleisteten Arbeit. Es gibt noch etwas, das ich vielleicht am Ende demonstrieren werde. Ja, ich zeige es euch gleich. Ich zeige es euch gleich. OK, alle mitverfolgen. Mal sehen, was passiert. Die Hälfte der Zeit läuft es richtig gut, die andere Hälfte nicht. Aber ich verspreche, die Fehlermodi sind genauso interessant wie die Erfolgsmodi. Also mal sehen, was passiert. Also gut, hier ist unser Typ. Ich fasse die Tastatur nicht an. Das macht sich von selbst. Ich habe festgestellt, dass er gerne zu diesem Fenster geht und schießt. Ich bin mir nicht ganz sicher warum. Also ich werde es neu ausrichten und es auf den Weg bringen und es wird seinen Weg fortsetzen. Interessanterweise weiß es, dass es eine Tür gibt. Es wird also etwas verrückt, wenn es um die Tür geht. Es öffnet und schließt sie. Es ist völlig verwirrt. Wir führen es weiter in Richtung der Bösewichte. Okay, da ist ein Bösewicht. Ich bin mir ziemlich sicher, dass es schießen wird. Es sollte wissen, dass es ein Bösewicht ist. Na gut, nun, es hat daneben geschossen. Es sagt wieder, dass es Hilfe braucht. Es gibt da so ein System, das ich gleich demonstrieren werde. Das System erkennt, wenn es feststeckt und wenn es feststeckt, bittet es um Hilfe und bittet einen Menschen, die Kontrolle zu übernehmen. Das ist also wieder so eine Art Mensch in der Loop Erfahrung, bei der es wieder nicht so intelligent ist. Es steckt wieder, das ist okay. Wir helfen ihm ein wenig. Lass uns dem Kerl einfach mal über den Weg laufen und mal sehen, wie weit wir kommen. Und tatsächlich, während ich das Spiel für diese paar Sekunden spiele, bettet es in diesem Zeitrahmen auch diese Frames ein, fügt sie zurück in die Sammlung und verwendet sie dann beim nächsten Mal. Hoffentlich wird es also jedes Mal ein bisschen intelligenter. Jetzt haben wir wieder auf das Argumentieren verzichtet. Das war Absicht. Das war der Sinn dieses Code Golfs. Es gibt also eine Obergrenze dafür, wie gut es funktionieren kann. Es ist auch nicht super stabil. Es kann abstürzen wie gerade. Aber das ist die Demo. Lass es uns noch einmal machen. Lass es uns noch einmal machen. Ich möchte sehen, wie es an einer Wand hängen bleibt. Das kommt ziemlich häufig vor. Also das ist wirklich interessant. Beim ersten Mal habe ich es tatsächlich noch einmal aufgenommen. Es geht auf das Fenster zu. Es liebt das Fenster, Aber dieses Mal hat es sich selbst korrigiert. Das ist cool. Als ich das Spiel das erste Mal gespielt habe, acht Mal, war es ein super sauberes Spiel. Ich habe versucht, es so perfekt wie möglich zu spielen und okay, willst du jemanden alleine töten? Das wäre so cool. Ja, wir haben es geschafft. Unglaublich. Also gut, das sind keine geskripteten Demos. Das ist so. Wissen Sie, das ist live. Also das war ein bisschen Glück. Als ich das Spiel das erste Mal gespielt habe, habe ich es perfekt gespielt oder versucht es jedes Mal so perfekt wie möglich zu spielen. Aber was mir tatsächlich aufgefallen ist ah ja, das ist ein weiterer guter Fehlermodus. Was mir aufgefallen ist, ist, dass ich es hier auch beenden werde, weil ich darüber sprechen möchte. Perfektes Spielen zeigte die Randfälle nicht an und weil es die Randfälle nicht sehen konnte, wusste es nicht, was es tun sollte, wenn es in diesen Randfällen hängenblieb. Wenn es also an einer Wand hängenblieb, blieb es einfach an der Wand hängen. Und ich hatte nie gelehrt, dass man sich, wenn man vor einer Wand steht, wahrscheinlich umdrehen und dann weitergehen sollte. Also beim zweiten Mal, als ich das Training wieder aufnahm, spielte ich das Spiel absichtlich etwas verrückter. Ich wollte sozusagen auf eine Wand zugehen und mich dann wegdrehen. Und ich merkte, dass das tatsächlich viel besser war. M. Also ich denke, die Intuition hier ist, dass die reale Welt ein chaotischer Ort ist und ihre Benutzer verrückte Dinge in ihre Anwendungen einbauen. Konzentrieren Sie sich also nicht nur auf den Happy Path. Wissen Sie? Auch der Umgang mit degenerierten Fällen ist sehr wichtig. Noch etwas, das ich gerade erwähnen mö Sie haben bemerkt, M. Vielleicht haben Sie es nicht bemerkt, aber der Typ ging wieder in die falsche Richtung. Er ging also sozusagen im Level zurück in die falsche Richtung. So wie das System derzeit konfiguriert ist, gibt es keine Belohnungsfunktion. Es gibt also kein Gefühl dafür, dass ich Fortschritte mache oder im Level aufsteige. M. Es weiß Hey, ich sehe einen Flur, ich gehe den Flur entlang, ich sehe eine Tür, ich renne auf die Tür zu und öffne sie. Also wissen Sie, es ist immer noch ziemlich dumm. Aber das ist, wie ich finde, ein wirklich Interess und natürlich gibt es viele Möglichkeiten, das zu verbessern. Spielen wir es noch einmal durch, einfach weil es jedes Mal wieder wirklich interessant ist, was für verrückte Sachen es macht. Und dann denke ich, haben wir auch Zeit für ein paar Fragen, was Spaß machen sollte. OK, ähnlich wie beim letzten Mal, als es korrigiert wurde. Es hebt sich von den Wänden ab, Das ist gut. Die Tür, sehen Sie, das wäre ein interessanter Fall zum Nachdenken. Ich wette, was hier passiert, ist das M Entweder die Art und Weise, wie das Modell angeschlossen ist. Es drückt sozusagen die Leertaste, wenn es eine Tür sieht, und es tut das schnell genug, sodass es nicht wirklich darauf warten muss, dass die Tür ganz aufgeht. Und so schließt es Sie wieder. Und wissen Sie, das wäre konzeptionell ein ziemlich großer Raum, um in unseren Einbettungsraum einzudringen. Und wissen Sie, diese Präferenzdaten mit einem Zeitkonzept zu bearbeiten. M Wissen Sie, wenn Sie in den letzten 10 Sekunden etwas getan haben, sollten Sie es vielleicht nicht noch einmal tun, so etwas in der Artikel. Also dieser Typ spielt das durch und sieht, was sonst noch Interessantes passiert und oh, wir hängen an einem Laternenpfahl fest, das habe ich noch nie gesehen. Das ist cool. Ja, vielleicht OK, durch den giftigen Schleim zu gehen, nicht gerade der beste Weg. Das ist OK. Vielleicht, vielleicht, vielleicht. Also gut. Nun, der letzte Lauf war ein Selbstmordlauf und das ist OK. Also zurück zu den Folien. Also was ich heute demonstrieren wollte, war offensichtlich eine ziemlich verrückte Idee. Wissen Sie, können wir den Abruf, können wir den Speicher antreiben, um etwas Interessantes und Neues zu tun, wie zum Beispiel ein Videospiel zu spielen? Aber ich denke, Videospiele sind vielen ihrer Anwendungen nicht unähnlich. Sie haben einen unbegrenzten Benutzerraum und verschiedene Agenten, die Dinge tun können. Es ist nicht ganz vorhersehbar, was sie tun werden. Denken Sie darüber nach, ein System zu entwickeln, das dynamisch auf die dynamischen Eingaben der realen Welt reagiert kann sowohl der Happy Path als auch die Degenerationsfälle und die Betrachtung verschiedener Szenarien, in denen Sie Dinge wie EWAL einsetzen können. Sie haben heute natürlich von anderen Leuten wie Harrison gehört, wie man Dinge wie Telemetrie und Ewals nutzen kann, um Fehlermodi zu analysieren und diese dann hoffentlich zu diagnostizieren und zu verbessern. Und wenn man KI Systeme als eine neue Art der Softwareentwicklung betrachtet, ist das meiner Meinung nach sehr sinnvoll, denn viele von Ihnen sind Softwareentwickler. Softwareentwicklung war schon immer eine Herzensangelegenheit, bei der wir ständig Fehler beheben und Funktionen hinzufügen. Und ich denke, das Gleiche gilt für die Entwicklung von Software mit KI, wo wir ständig neue Funktionen hinzufügen und Fehler beheben. Es passiert einfach, dass viel mehr interessante und verrückte Dinge passieren können, wenn nicht alle Typen stark typisiert sind. Das war also meine Präsentation. Vielen Dank fürs Zuhören.










