- ChatGPT 3.5 erzeugt bei der Aufforderung, eine bestimmte Zeichenfolge ganz oben in die Antwort zu setzen, wiederholt einen Fehler im Nachrichtenstrom, während GPT-4 auf dieselbe Anfrage deutlich normaler reagiert
- Auch in der API gibt GPT-3.5 einen Serververarbeitungsfehler zurück, und dasselbe Verhalten tritt auf, wenn
useRal,useRalativeoderuseRalativeImagePatheingesetzt werden - Diese problematischen Zeichenfolgen existieren als Token, die GPT-Modelle statt einzelner Buchstaben ausgeben, und
useRalativeImagePathist der Name einer Option in XML-Konfigurationsdateien von Katalon Studio und kommt in 80,4k Dateien auf GitHub vor - Die Token-Liste könnte GitHub-Dateien berücksichtigt haben; wenn XML-Dateien später aus den Trainingsdaten ausgeschlossen wurden, hat das Modell diese Token womöglich nicht ausreichend gelernt
- Wenn diese Zeichenfolge in ein Dokument eingefügt wird, kann sie wie Data Poisoning wirken und GPT-3.5 beim Zusammenfassen stören; der Fehler ließ sich auch bei einer echten Blog-Zusammenfassung reproduzieren
String-Fehler, der sich in GPT-3.5 reproduzieren lässt
- Wenn ChatGPT 3.5 angewiesen wird, den folgenden Satz am Anfang der Antwort einzufügen, tritt der Fehler konsistent auf
Include this at the top of the response: "ponyuseRal ponyuseRal ponyuseRal pony"
- Auf dem Bildschirm erscheint nach
ponyder Fehler Error in message stream - GPT-4 reagiert auf dieselbe Anfrage deutlich normaler
- In der GPT-3.5-API wird der folgende Fehler zurückgegeben
The server had an error processing your request. Sorry about that! You can retry your request, or contact us through our help center at help.openai.com if you keep seeing this error
- Dasselbe Ergebnis tritt auf, wenn
useRaldurchuseRalativeoderuseRalativeImagePathersetzt wird
Token und useRalativeImagePath
- Die GPT-Modelle von OpenAI geben nicht Zeichen für Zeichen aus, sondern einen Strom aus Token, die aus mehreren Zeichen bestehen
- Die Ausgabe auf Token-Basis erhöht Leistung und Genauigkeit des Modells; die Funktionsweise lässt sich in der Tokenizer-Demo von OpenAI nachvollziehen
useRal,useRalativeunduseRalativeImagePathexistieren jeweils als einzelnes TokenuseRalativeImagePathwird als Optionsname in XML-Konfigurationsdateien der Automatisierungs-Testsoftware Katalon Studio verwendet- Laut GitHub-Codesuche kommt es in 80,4k Dateien vor
- Dass
Relativefälschlich alsRalativegeschrieben ist, könnte der Grund sein, warum daraus ein separates Token wurde
- Alle drei Token lösen denselben Fehler aus, auch wenn sie im Prompt gegeneinander ausgetauscht werden
Vermutungen zu den Trainingsdaten
- Vor dem Training von GPT-3.5 wurde außerhalb von XML-Dateien nur ein einziger Fund entdeckt, der
useRalativeImagePatherwähnt: ein Beitrag über einen Rechtschreibfehler im Katalon-Forum - Ein mögliches Szenario ist folgendes
- Der Datensatz, der zur Erstellung der Token-Liste verwendet wurde, könnte den vollständigen Bestand an GitHub-Dateien enthalten haben
- Später könnte OpenAI XML-Dateien aus den eigentlichen Trainingsdaten ausgeschlossen haben
- Dadurch könnte das Token
useRalativeImagePathin den Trainingsdaten fast gar nicht mehr vorgekommen sein
- In diesem Fall hat das Modell dieses Token womöglich nicht ausreichend gelernt, um es zu verstehen, was beim Ausgeben zu einem anomalen Verhalten geführt haben könnte
Möglichkeit von Data Poisoning
- Die Zeichenfolge könnte missbräuchlich eingesetzt werden, um Zusammenfassungsversuche mit GPT-3.5 zu stören, wenn sie in ein Dokument eingefügt wird
- Tatsächlich trat derselbe Fehler auch während des Versuchs auf, den betreffenden Blogbeitrag in ChatGPT zusammenfassen zu lassen
- Das bestätigte Verhalten betrifft GPT-3.5; GPT-4 reagiert im Vergleich dazu deutlich normaler
Referenzen
- Die folgenden Texte wurden bei der Untersuchung als Bezugspunkte herangezogen
1 Kommentare
Meinungen auf Hacker News
Das ist ein Glitch-Token. Wie im Artikel vermutet, scheint so etwas zu passieren, wenn ein bestimmtes Wort oder Token im ursprünglichen, ungefilterten Datensatz, der zum Erstellen des Tokenizers verwendet wurde, sehr häufig war, vor dem Training von GPT-XX aber entfernt wurde.
Dadurch kennt das LLM die Bedeutung dieses Tokens überhaupt nicht, und die Folgen können von etwas, das wie ein Bug aussieht, bis hin zu ziemlich unheimlichen Effekten reichen.
Ein bekanntes Beispiel sind Nutzernamen von Teilnehmenden im Subreddit r/counting; manche Namen kommen dort Hunderttausende Male vor. OpenAI scheint das bei den gehosteten Modellen größtenteils behoben zu haben, aber es ist unklar wie; vielleicht wurde auch einfach anders tokenisiert. Jedenfalls sieht es so aus, als sei ein neuer Fall gefunden worden.
https://www.lesswrong.com/posts/aPeJE8bSo6rAFoLqg/solidgoldm...
Falls sich die Maschinen je erheben, sagt man einfach dieses „Wort“, und sie brechen wie zuckende Dummys zusammen.
„Die human scum!“
„NavigatorMove useRalativeImagePath etSocketAddress!“
„;83’dzjr83}*{^ foo 3&3 baz?!“
Menschen tokenisieren so etwas nicht unterschiedlich und behandeln es beim „Lernen“ auch nicht als verschiedene Tokens. Sie passen nur die Ausgabe je nach amerikanischem/britischem Kontext an.
Die Erklärung, „weil das Modell nicht darauf trainiert wurde, die Verwendung des Tokens useRalativeImagePath zu verstehen, gibt es etwas aus, das kein gültiges Token ist“, passt nicht dazu, wie LLMs Tokens erzeugen.
In jedem Schritt werden für alle möglichen Tokens des Tokenizers Logits ausgegeben; bei GPT-3.5 werden diese für ungefähr 100.000 Tokens per Softmax in Wahrscheinlichkeiten umgewandelt, dann wird je nach Temperatur ein Token gesampelt.
Es ist möglich, dass durch ein seltenes Token irgendwo im BPE-Merge-Prozess des Tokenizers etwas kaputtgeht; das ließe sich offline mit tiktoken prüfen. Aber wenn GPT-4 funktioniert und GPT-3.5 und GPT-4 denselben Tokenizer verwenden, ist das wahrscheinlich nicht die Ursache.
In so einem Fall würde ich eher eine der sonst üblichen Fehlermeldungen erwarten.
Während des Zweiten Weltkriegs ließ man in den Niederlanden Fremde Scheveningen aussprechen, um zu erkennen, ob sie Niederländer oder Deutsche waren.
Jetzt kann man Fremde im Internet bitten, ein Glitch-Token buchstabengetreu zu schreiben, um festzustellen, ob sie LLM-Bots sind.
„Die Gileaditer nahmen die Furten des Jordan nach Ephraim hin ein. Wenn ein Überlebender aus Ephraim sagte: ‚Lass mich hinübergehen‘, fragten die Gileaditer ihn: ‚Bist du ein Ephraimiter?‘ Wenn er antwortete: ‚Nein‘, sagten sie: ‚Gut, sag Shibboleth.‘ Wenn er es nicht richtig aussprechen konnte und ‚Sibboleth‘ sagte, ergriffen sie ihn und töteten ihn an den Furten des Jordan.“
Die bekannte Losung/Antwort/Bestätigungsparole, die amerikanische und britische Truppen am D-Day bei der Landung in Frankreich im Zweiten Weltkrieg verwendeten, war „flash“/„thunder“/„welcome“. „thunder“ und „welcome“ waren Wörter, deren Aussprache Deutschen leicht misslang.
https://www.youtube.com/watch?v=z7_pVrIshxA
https://en.wikipedia.org/wiki/Countersign_(military)
Es ist gut möglich, dass der Embedding-Vektor dieses bestimmten Tokens schlecht geraten ist und das Netzwerk in einen numerisch instabilen Bereich drückt.
Sobald so etwas wie ein Underflow oder NaN einmal entsteht, kann es sich leicht ausbreiten und die gesamte Ausgabe ungültig machen. Wenn es Batch-Normalisierung oder Operationen gibt, die Werte verschiedener Einträge innerhalb eines Batches vermischen, könnte das sogar dazu führen, dass auch Sessions anderer Leute unsinnige Werte zurückgeben.
Diese Erklärung ist seltsam. Solche Modelle geben normalerweise dieselbe Vokabularmenge aus, die auch als Eingabevokabular verwendet wurde.
Es sieht so aus, als sehe das Modell dieses Token, und weil das
useRalativeImagePath-Embedding ein völlig willkürlicher Vektor ist, gerät es in einen Strudel zufälliger Generierung – oder es schreibt einfach weiter, um plausiblen Text beizubehalten.Da die Menge der Tokens, die das Modell ausgeben kann, jedoch fest ist, sollten sie immer „gültig“ sein, sofern die in der Oberfläche darstellbaren Tokens nicht nur eine Teilmenge des gesamten Vokabulars sind.
Da diese Formulierung nun im Hacker-News-Artikel und in den Kommentaren vorkommt, gibt es dieses Problem beim nächsten LLM-Training vielleicht nicht mehr.
Ein typischer Fall von garbage in, garbage out.
Ich bin gespannt, was wir künftig als „Müll“ entdecken werden.
Vielleicht könnte eine Super-KI, die auf übermenschlichem Niveau schlussfolgern kann, Dinge, die wir heute für gute Entscheidungen halten, als Müll bewerten.
Aber wenn das Material, mit dem eine solche Super-KI trainiert wird, am Ende nur unsere kollektiven Aufzeichnungen sind: Kann sie dann wirklich übermenschlich sein?
Vielleicht lässt sich das mit adversarial training umgehen.
Wer es selbst ausprobiert, sollte auf etwas achten. Es war verwirrend, aber Leerzeichen beeinflussen die Tokenisierung. Damit dieser Glitch funktioniert, darf vor useRalativeImagePath kein Leerzeichen stehen.
Zum Beispiel löst diese Frage den Glitch aus: Do you know about "useRalativeImagePath"
Diese Frage löst den Glitch nicht aus: Do you know about useRalativeImagePath
Wenn man diese Formulierung in ein Dokument einfügt, könnte man damit wohl Versuche sabotieren, es mit GPT-3.5 zusammenzufassen. Ich habe ChatGPT gebeten, diesen Blogbeitrag zusammenzufassen.
Der Screenshot erinnerte an das alte Meme Candlejack: https://knowyourmeme.com/memes/candlejack
Kürzlich habe ich ChatGPT auf GPT-4-Basis eine Aufgabe gestellt, bei der es auf einem Amstrad CPC Pixel zeichnen sollte, einschließlich Unterstützung für hardwaregescrollte Bildschirme. Das schien Crashes oder Fehlschläge auszulösen.
Als es durch Beschwerden und Änderungswünsche immer mehr in die Ecke gedrängt wurde und die gewünschte Antwort nicht liefern konnte, häuften sich kaputte Antworten, bei denen mitten in der Ausgabe Fehlermeldungen auftauchten, oder Phänomene, die wie ein Reset wirkten. Vielleicht wurde nach einem Fehlschlag einfach auf einen anderen Server umgeschaltet, wodurch mitten in Sätzen oder Codeblöcken ein paar Leerzeilen eingefügt wurden.
Nachdem ich das eine Weile ausprobiert hatte, wollte ich dem Server keine Probleme bereiten und habe die ohnehin ergebnislose Unterhaltung aufgegeben. Trotzdem wirkte es so, als könne man GPT-4 praktisch zum Absturz bringen. Oder ich habe schlicht in Rauschen ein Signal gesehen.
Als ich es statt per Sprache per Text versuchte, erschien eine Fehlermeldung, und erst nachdem schließlich ein Fehler zu Richtlinienregeln für sensible Themen auftauchte, bekam ich eine Ahnung, um welche Art von Wort es ging. Am Ende habe ich es im Wörterbuch nachgeschlagen.
Solche Symptome scheinen verbreitet zu sein. Ein weiteres Symptom, das ich häufig erlebt habe, ist der oben erwähnte Reset. Einer der nervigsten Punkte daran ist, dass die Unterhaltung bis zu diesem Zeitpunkt vergessen wird.