1 Punkte von GN⁺ 2023-09-25 | 1 Kommentare | Auf WhatsApp teilen
  • Jeremy Howard behandelt Sprachmodelle mit einem Code-first-Ansatz statt theoriezentriert und geht den praktischen Einsatzfluss von der OpenAI API bis zu lokalen Open-Source-Modellen durch
  • Sprachmodelle sagen nicht Wörter, sondern Token voraus und werden durch Pretraining, Instruction Tuning und RLHF besser für Fragebeantwortung und die Ausführung von Aufgaben geeignet
  • GPT-4 ist mit Stand September 2023 eine starke Wahl, ist aber schwach bei Informationen über sich selbst, URLs und Wissen nach dem Knowledge Cutoff, und custom instructions haben großen Einfluss auf die Antwortqualität
  • Die OpenAI API speichert keinen Gesprächszustand, daher muss jedes Mal der gesamte Gesprächsverlauf gesendet werden; über Function Calling lassen sich Werkzeuge wie die Ausführung von Python anbinden
  • Lokale Ausführung ist mit Hugging Face Transformers, Llama 2, GPTQ-Quantisierung, RAG, Axolotl-Fine-Tuning, MLC, llama.cpp usw. möglich, bringt aber auch GPU-Anforderungen, Prompt-Formate und Grenzen bei der Evaluierung mit sich

Sprachmodelle sind Kompressionssysteme, die Token vorhersagen

  • Sprachmodelle funktionieren, indem sie das nächste Wort in einem Satz vorhersagen oder fehlende Wörter ergänzen
    • Als Beispiel wird OpenAIs text-davinci-003 ein Satz mit „panda breeding facility“ und „live frogs“ gegeben, um den folgenden Satz erzeugen zu lassen
    • Auf nat.dev kann man mit verschiedenen Sprachmodellen experimentieren und die Wahrscheinlichkeiten der nächsten Token-Kandidaten sehen
  • Die tatsächliche Vorhersageeinheit ist nicht das Wort, sondern das Token
    • Ein Token kann ein ganzes Wort, ein Wortteil, Satzzeichen oder eine Zahl sein
    • Mit tiktoken lässt sich ein String mit einem Tokenizer wie bei GPT-Modellen in ein Array von Token-IDs kodieren und wieder dekodieren
    • Im Beispiel wird „they are splashing“ in Wortteile einschließlich Leerzeichen zerlegt
  • Pretraining ist der Prozess, bei dem ein neuronales Netz anhand von Internetdokumenten oder Wikipedia-Sätzen darauf trainiert wird, das nächste Wort vorherzusagen
    • Als Beispiel dient ein Wikipedia-Satz zu „The Birds“, in dem nach Alfred auf Hitchcock geschlossen werden soll
    • Um gute Vorhersagen für das nächste Wort zu treffen, muss das Modell intern Weltwissen über Dinge, Zeit, Filme, Regisseure und Personennamen lernen
  • Howard betrachtet die Vorhersage des nächsten Wortes als eine Form der Kompression
    • Viele Informationen müssen in den Parametern des neuronalen Netzes komprimiert werden, damit das nächste Wort gut vorhergesagt werden kann
    • Die Beziehung zwischen Kompression und Intelligenz ist schon lange Gegenstand von Diskussionen

Vom Pretraining über Instruction Tuning zu RLHF

  • Howard behandelt ULMFiT als grundlegende Idee dafür, wie Sprachmodelle genutzt werden können
    • ULMFiT ist ein Algorithmus, den Howard 2017 entwickelt und Anfang 2018 zusammen mit Sebastian Ruder in einem Paper beschrieben hat
    • Das ursprüngliche Beispiel war ein Sprachmodell, das mit Wikipedia vortrainiert wird
  • Der Trainingsablauf ist in drei Stufen gegliedert
    • Sprachmodell-Pretraining: Allgemeines Wissen wird durch die Vorhersage des nächsten Wortes gelernt
    • Sprachmodell-Fine-Tuning: Das Modell lernt erneut die Vorhersage des nächsten Wortes, diesmal auf Dokumenten, die näher an der Zielaufgabe liegen
    • Klassifikator-Fine-Tuning: Das Modell wird auf die endgültige Aufgabe angepasst
  • Bei modernen Sprachmodellen wird die zweite Stufe meist als Instruction Tuning umgesetzt
    • Das Modell wird mit Daten aus Fragen, Anweisungen, Anfragen und den dazugehörigen Antworten angepasst
    • Als Beispieldatensätze werden OpenOrca und die FLAN collection genannt
    • OpenOrca enthält rund 4 GB an Daten aus Fragen, Kontext und Antworten
  • In der dritten Stufe wird häufig RLHF eingesetzt
    • Menschen oder ein besseres Modell wählen aus mehreren Antworten die bessere aus
    • Als Beispiel wird der Vergleich zweier Antworten auf eine Frage wie „5 Ideen, um die Leidenschaft für die eigene Karriere wiederzufinden“ gezeigt
  • Der Ausdruck „Sprachmodell“ kann je nach Kontext sowohl ein nur vortrainiertes Modell als auch ein per Instruction Tuning oder sogar RLHF weiter angepasstes Modell bezeichnen
    • Ein rein vortrainiertes Modell ist für sich genommen meist wenig nützlich; durch Fine-Tuning steigt seine praktische Verwendbarkeit
    • Howard sagt, dass derzeit auch diskutiert wird, ob heutzutage bereits Instruction Tuning allein ausreichen kann

Wie man GPT-4 gut nutzt und wo die Grenzen liegen

  • Howard empfiehlt GPT-4 mit Stand September 2023 nachdrücklich als bestes Sprachmodell
    • In ChatGPT kann man für 20 US-Dollar pro Monat GPT-4 umfangreich nutzen
    • Die OpenAI API hat ein separates tokenbasiertes Abrechnungsmodell
  • Zur Behauptung, GPT-4 könne nicht schlussfolgern, meint er, dass viele Beispiele aus Papers oder dem Internet bei direkter Eingabe oft doch korrekt gelöst wurden
    • Als Beispiele werden das Problem mit Mabels Todeszeitpunkt, das Problem mit Sally und den Geschwistern sowie das Problem mit Tasse, Fingerhut und Diamant genannt
    • Howard sagt, dass sich bei vielen Internetbeispielen, in denen GPT-4 angeblich versagt, bei Überprüfung herausstellte, dass es die Aufgabe doch lösen konnte
  • Das Modell ist kein System, das darauf trainiert wurde, immer die richtige Antwort zu geben
    • Pretraining ist das Vorhersagen des plausibelsten nächsten Wortes, und im Internet gibt es auch Fiktion, Witze und falsche Aussagen
    • Bei RLHF könnten selbstbewusstere Antworten bevorzugt worden sein, und Bewertende konnten falsche Antworten womöglich nicht immer ausreichend erkennen
  • custom instructions können helfen, die Antwortqualität zu steigern
    • Anweisungen wie „du kannst gut schlussfolgern“, „sage, wenn es vielleicht keine richtige Antwort gibt“ oder „erkläre zuerst in ein paar Sätzen den Hintergrundkontext“ können jeder Anfrage vorangestellt werden
    • Das Modell erzeugt Wörter nacheinander und nimmt das bereits Erzeugte wieder in den Input auf, sodass es mit mehr erzeugten Wörtern auch mehr Rechenarbeit leisten kann
    • Als persönliches Kürzel wird auch das Beispiel genannt, mit VV eine knappe Antwort zu erzwingen
  • Auch GPT-4 hat klare Grenzen
    • Das Modell hatte beim Training keine Gelegenheit, Informationen darüber zu kennen, wie es selbst trainiert wurde oder wie lang sein Kontextfenster ist
    • Es kennt den Inhalt von URLs nicht gut und kann beim Nachfragen Dinge erfinden
    • Das Pretraining-Wissen von GPT-4 reicht bis September 2021
    • Wenn man vertraute klassische Rätsel leicht verändert, kann es sich von bekannten Mustern in die Irre führen lassen
      • Als Beispiel wird eine Variante des Rätsels mit Kohl, Ziege und Wolf beim Flussüberqueren verwendet, bei der die Bedingungen verändert wurden
      • Nach einer falschen Antwort kann das Modell sich trotz weiterer Unterhaltung weiter irren; dann ist es besser, frühere Prompts mit der Bearbeiten-Funktion des Chats zu ändern

Werkzeuge über die OpenAI API und Function Calling anbinden

  • Mit der OpenAI API lassen sich Sprachmodelle aus Programmen wie Python heraus aufrufen
    • Nach pip install openai wird mit ChatCompletion.create beispielhaft ein Modell wie gpt-3.5-turbo aufgerufen
    • Die system-Nachricht übernimmt eine ähnliche Rolle wie die custom instructions in ChatGPT
    • Im Beispiel wird ein System-Prompt für ein „Aussie-LLM mit Aussie-Slang und Metaphern“ gesetzt und dann „What is money?“ gefragt
  • Bei API-Gesprächen wird auf dem Server kein dauerhafter Zustand gespeichert
    • Für Folgefragen muss der gesamte Gesprächsverlauf erneut gesendet werden
    • Selbst wenn der Nutzer eine frühere Antwort des Assistants beliebig verändert einfügt, antwortet das Modell auf Basis genau dieses Gesprächsverlaufs weiter
    • Im Beispiel wird so getan, als hätte der Assistant gesagt „money is like kangaroos“, und das Modell wird gebeten, diese Metapher weiter auszuführen
  • Die Kosten hängen vom Modell und von der Anzahl der Token ab
    • Token sind im Durchschnitt etwas zahlreicher als Wörter; grob entsprechen etwa 1⅓ Token einem Wort
    • Im Beispiel wird ein Preisunterschied von etwa 0.0015 US-Dollar für GPT-3.5 gegenüber 0.03 US-Dollar für GPT-4 erwähnt
    • Eine Antwort mit etwa 150 Token wird bei GPT-3.5 mit ungefähr 0.0003 US-Dollar berechnet
    • Auf der OpenAI-Usage-Seite kann der Verbrauch überprüft werden
  • Bei neuen API-Konten kann das Rate Limit niedrig sein
    • Als Beispiel wird für Gratis- oder frisch zahlende Nutzer in den ersten 48 Stunden ein niedriges Limit wie 3 Anfragen pro Minute genannt
    • Bei Rate-Limit-Fehlern ist Python-Code nötig, der den Wert retry-after ausliest, wartet und dann erneut versucht
  • Mit Function Calling kann man dem Modell mitteilen, welche Werkzeuge verfügbar sind
    • Es wird nicht die Python-Funktion selbst übergeben, sondern ein JSON-Schema mit Funktionsname, Beschreibung und Parametern
    • Die Docstring der Funktion ist die entscheidende Information dafür, wie das Modell den Zweck des Werkzeugs beurteilt
    • Im Beispiel mit der Funktion sums gibt das Modell nicht selbst 6+3 aus, sondern liefert einen Funktionsaufruf mit Name und Argumenten zurück
    • Wenn man eine python-Funktion als Werkzeug bereitstellt, kann das Modell für die Berechnung von 12 Fakultät Code erzeugen, der nach Bestätigung durch den Nutzer ausgeführt und dann mit dem Ergebnis wieder in das Gespräch eingebracht wird
    • Auf diese Weise lässt sich in Jupyter ein einfacher Code Interpreter selbst bauen

Lokale Modelle, RAG und Fine-Tuning-Optionen

  • Für den Einsatz von Sprachmodellen lokal wird in der Regel eine GPU benötigt
    • Kaggle kann Notebooks mit zwei älteren GPUs bereitstellen
    • Colab kann bessere GPUs und mehr RAM bieten; mit einem Monatsabo gibt es mehr Auswahl
    • Genannt werden außerdem GPU-Mietoptionen wie RunPod, Lambda Labs und Vast.ai
    • Für sensible Aufgaben ist es nicht passend, auf „dem Computer einer fremden Person“ zu arbeiten
  • Bei der GPU-Auswahl sind Speichergeschwindigkeit und Speicherkapazität wichtiger als reine Rechenleistung
    • Eine gebrauchte GTX 3090 wird auf eBay mit etwa 700 US-Dollar angegeben
    • Die RTX 4090 ist zwar neuer, für Sprachmodelle aber nicht klar besser als die 3090
    • 24 GB können für viele Aufgaben nicht ausreichen; als Option werden zwei 3090er für rund 1.500 US-Dollar genannt
    • Eine A6000 mit 48 GB RAM liegt bei etwa 5.000 US-Dollar
    • Macs mit viel RAM, insbesondere der M2 Ultra, sind für das Ausführen vorhandener Modelle nicht schlecht, aber langsamer als Nvidia-Karten
  • Das Hugging-Face-Ökosystem ist das zentrale Werkzeug für lokale Experimente mit Modellen
    • Mit Transformers lassen sich auf Hugging Face veröffentlichte vortrainierte oder feinabgestimmte Modelle laden
    • Leaderboards sind als Referenz nützlich, passen aber nicht immer gut zur tatsächlichen Nutzbarkeit, und es kann Leakage geben, wenn Benchmark-Daten im Trainingssatz landen
    • In typischen privaten GPU-Umgebungen sind Modelle mit 13B oder 7B realistischer als 70B
  • Modelle der Llama-2-Familie und Quantisierung dienen als Hauptbeispiele
    • Llama 2 7B von Meta ist nur vortrainiert und ohne Instruction Tuning oder RLHF nicht direkt für Frage-Antwort-Szenarien geeignet
    • Lädt man ein 7B-Modell mit 16 Bit, benötigen allein die Gewichte etwa 14 GB
    • Eine Umwandlung auf 8 Bit spart Speicher, kann aber langsamer sein
    • bfloat16 ist schneller, benötigt aber mehr RAM
    • GPTQ-quantisierte Modelle sind auf geringere Präzision optimiert, wodurch weniger Daten bewegt werden müssen; im Beispiel läuft sogar ein 13B-GPTQ-Modell schneller als ein 7B-Modell
    • TheBloke wird als jemand erwähnt, der populäre Modelle GPTQ-optimiert auf Hugging Face veröffentlicht
  • Bei Instruction-Tuning-Modellen muss das Prompt-Format zwingend stimmen
    • Ein auf Llama 2 basierendes Instruction-Tuning-Modell wie Stable Beluga muss exakt mit dem Prompt-Format der Modellseite verwendet werden
    • Auch bei OpenOrca Platypus 13B GPTQ muss ein eigenes Prompt-Format geprüft und in einer Funktion umgesetzt werden
    • Mit dem richtigen Format bekommt man auf Fragen wie „Who is Jeremy Howard?“ bessere Antworten, auch wenn Halluzinationen weiterhin auftreten können
  • RAG ist ein Ansatz, um aktuelle Informationen oder eigene Dokumente zu nutzen
    • Es werden Dokumente gesucht, die bei einer Frage helfen, und dem Modell als Kontext mitgegeben, damit es darauf basierend antwortet
    • Wenn man die 613 Wörter lange Wikipedia-Seite zu Jeremy Howard als Kontext einfügt, entsteht eine Antwort, die näher an einer präzisen 100-Wörter-Kurzbiografie liegt
    • sentence-transformers wandelt Dokumente und Fragen in Embedding-Vektoren um und berechnet Ähnlichkeiten, um relevante Dokumente auszuwählen
    • Bei Tausenden oder Millionen Dokumenten wird eine Vektordatenbank verwendet, in der Embeddings vorab gespeichert sind
    • H2O GPT wird als Open-Source-Beispiel genannt, das lokal PDFs hochladen und RAG ausführen kann
    • Bei Folgefragen ist Vorsicht nötig, weil das Suchmodell ohne den bisherigen Kontext leicht irrelevante Dokumente finden kann
  • Fine-Tuning ist ein Weg, das Verhalten des Modells selbst zu verändern
    • Der Beispieldatensatz enthält Datenbankschema, natürlichsprachige Frage und die korrekte SQL-Antwort
    • Der Datensatz wird mit der Hugging-Face-Bibliothek datasets geladen
    • Mit Axolotl wird ein Llama-2-Beispiel kopiert und eine YAML-Konfiguration für SQL-Training erstellt
    • Nach etwa einer Stunde Training per accelerate launch axolotl entsteht ein Verzeichnis q_lora_out
    • Q steht für Quantize, LoRA für eine Technik, die Training mit kleineren Modellen und kleineren GPUs unterstützt
    • Nach dem Training kann das Modell mit Schema und Frage korrektes SQL im Stil von SELECT count(hosts), theme ... GROUP BY theme erzeugen
  • Es gibt auch Optionen für Mac und andere Laufzeitumgebungen
    • MLC ist ein Projekt, das Sprachmodelle auf iPhone, Android und im Webbrowser ausführen kann
    • Auf einem Mac wird ein quantisiertes 7B-Modell ausgeführt, das auf „What is the meaning of life?“ antwortet und etwa 9.6 tokens/s erreicht
    • llama.cpp verwendet das Format gguf und kann auch über einen Python-Wrapper aufgerufen werden
    • Wer Nvidia-GPUs und Python gut kennt, fährt meist besser mit PyTorch und dem Hugging-Face-Ökosystem
  • Das Entwicklungsumfeld für Sprachmodelle verändert sich schnell und ist noch in einem frühen Stadium, daher sind Installation und Sonderfälle mühsam, aber für Python-Programmierer ist es eine spannende Zeit
    • Im generative-Kanal des fast.ai-Discords kann man Fragen stellen oder Erfahrungen teilen

1 Kommentare

 
GN⁺ 2023-09-25
Meinungen auf Hacker News
  • Ich war überrascht, dass es schon auf HN gelandet ist, obwohl ich es gerade erst hochgeladen hatte.
    Auf dieses Video bin ich ziemlich gespannt. Ich habe versucht, in einen 90-minütigen Vortrag so viele der wichtigsten Informationen zu packen, wie mir eingefallen sind. Ziel war es, eine einzige Anlaufstelle zu schaffen, auf die man Entwickler verweisen kann, wenn sie fragen: „Sag mir alles, was ich über LLMs wissen muss.“
    Trotzdem gibt es sicher Dinge, die ich ausgelassen habe, oder Stellen, die unklar geblieben sind. Das ist mein erster Versuch, und irgendwann möchte ich das zu einem vollständigen Kurs ausbauen. Daher würde ich mich freuen, wenn ihr mir nach dem Anschauen mitteilt, welche Fragen offen bleiben oder welche Konzepte eurer Meinung nach hätten behandelt werden sollen.
    Ich muss bald schlafen gehen; in Australien ist es spät, daher werde ich bis zum Morgen wahrscheinlich nicht viele Fragen beantworten können. Aber wenn ich aufwache, schaue ich mir diese Seite auf jeden Fall an, und morgen werde ich in der YouTube-Beschreibung auch Links zu relevanten Papers ergänzen.
    Ethische oder politische Fragen habe ich nicht behandelt. Nicht, weil sie unwichtig wären, sondern weil ich mich in diesem Vortrag vollständig auf technische Fragen konzentrieren wollte.

  • Großartig. Das Notebook zum Mitverfolgen des Videos gibt es hier: https://github.com/fastai/lm-hackers/blob/main/lm-hackers.ip...
    Auch der Projektaufbau war gut. Es enthält OpenAI-API-Hacking, einen mit OpenAI Functions nachgebauten Code Interpreter, das lokale Ausführen von LLMs mit Hugging-Face-Modellen und in den letzten 10 Minuten sogar ein Fine-Tuning-Beispiel zum Erstellen eines Text-zu-SQL-Modells.

  • Danke für das Video. Es war das beste Tutorial zur Nutzung von LLMs, das ich bisher gesehen habe.
    Unter https://youtu.be/jkrNMKz9pWU?si=Dvz-Hs4InJXNozhi&t=3278 spricht er über passende Anwendungsfälle für lokale Modelle und GPT-4 und sagt: „Durch Fine-Tuning kann ich ein Modell bauen, das bei der Art von Problemen, die ich lösen muss, besonders stark ist, und in solchen Fällen ist eine bessere Leistung als GPT-4 durchaus möglich.“
    Dazu habe ich schon eine Weile eine Idee im Kopf. Man könnte sich einen Chatbot vorstellen, hinter dem mehrere „kleine“ Modelle stehen, zum Beispiel Modelle mit 7 Milliarden Parametern. Jedes Modell wäre auf eine bestimmte Aufgabe feinabgestimmt. Könnte so ein System GPT-4 übertreffen?
    Die grobe Idee ist: Man schickt Kontext/Prompt an ein „Router-Modell“, und dieses entscheidet, welches Expertenmodell am besten antworten oder vervollständigen kann. Danach gibt das System Kontext/Prompt an dieses Expertenmodell weiter und liefert dessen Antwort zurück. Wenn es kein passendes Expertenmodell gibt, wird ein allgemeines instruction-tuned Universal-LLM verwendet.
    Wenn ein kleines, auf eine bestimmte Aufgabe feinabgestimmtes Modell theoretisch besser sein kann als GPT-4, dann könnte ein Cluster solcher kleiner Modelle insgesamt vielleicht GPT-4 übertreffen.

    • Sambanova hat gerade etwas Ähnliches vorgestellt. Es ist eine Demo eines MoE-Modells mit 1 Billion Parametern, das auf ihren neuen Chips läuft; die Architektur besteht aus 150 Llama-2-Modellen mit je 7 Milliarden Parametern, die jeweils zu Experten für unterschiedliche Themen umtrainiert wurden. Eines ist etwa Experte für „Recht“, ein anderes für „Physik“ usw.
      Hier ist das Video dazu [1] https://sambanova.ai/launch2023
      Wenn man etwas nach unten scrollt, vergleichen sie es mit einem Falcon-Modell mit 180 Milliarden Parametern, das auf GPUs von Hugging Face läuft. Die MoE-Ergebnisse sind nicht nur qualitativ ähnlich, sondern enorm schnell und praktisch sofort verfügbar. Ein großer Vorteil ist außerdem, dass man Expertenmodelle austauschen oder mit neuen Daten erneut trainieren kann, was bei einem monolithischeren 180-Milliarden-Modell natürlich nicht so einfach ist.
    • Ergibt Sinn. Tatsächlich gibt es derzeit mehrere Open-Source-Projekte, die solche Modelle bauen. Ein gutes Beispiel ist hier: https://github.com/XueFuzhao/OpenMoE/
    • Such bei Google nach Mixture of Experts. Unbestätigten Leaks zufolge nutzt auch GPT-4 bereits diesen Ansatz.
  • Bemerkenswert ist auch, dass das Video von der Person stammt, die das Paper geschrieben hat, das diese ganze Entwicklung angestoßen hat.

  • Ein hervorragendes Video; ich habe es auch bei der Arbeit geteilt. Aus praktischer Sicht ist es wahrscheinlich die umfassendste Einführung in dieses Thema, die ich kenne.
    Besonders gut fand ich den Abschnitt „Virale Posts darüber, dass GPT X nicht kann, lassen sich nicht reproduzieren“. Ich hoffe, er hilft den Menschen in meinem Umfeld, diese Technologie kritischer zu betrachten.

  • Hervorragendes Video. Ich habe ein paar neue Tricks gelernt, die ich künftig nutzen kann.
    Schon allein dadurch, dass man einfach etwas ausprobiert, entdeckt man neue Einsatzmöglichkeiten.
    Vor Kurzem hatte ich ein gutes Beispiel. Ich musste eine Tabelle mit Adressen in GeoJSON umwandeln, um sie als Karten-Layer zu verwenden, war aber sehr faul und wollte sehen, wie gut ChatGPT damit klarkommt.
    Als ersten Schritt gab ich ein Paar aus Breiten- und Längengrad ein und bat darum, das Grad/Minuten-Format in Dezimalwerte umzuwandeln; es zeigte den Rechenweg problemlos. Danach gab ich die komplette Spalte mit Breiten- und Längengraden ein und bat darum, den Rechenweg nicht anzuzeigen; auch die Ausgabe war gut.
    Anschließend erstellte ich eine beispielhafte JSON-Struktur mit Platzhaltern und sagte, ich würde Daten liefern, und es solle die Platzhalter anhand der Spaltennamen füllen. Nachdem ich die Daten eingefügt hatte, erzeugte es perfektes JSON.
    Interessant war, dass es ohne gesonderte Anweisung die Umrechnung von Breiten- und Längengraden erneut vornahm und auch ein id-Attribut hochzählte, das ich gar nicht erwähnt hatte. Ziemlich beeindruckend.

  • Jeremy ist jemand, den ich bewundere, und als jemand, der in Queensland geboren wurde und dort lebt, erinnert er mich daran, dass Weltklasse-Talente wirklich überall um uns herum existieren.
    Natürlich gibt es solche Menschen in vielen Bereichen, aber Jeremy ist einer der Menschen, die ich kenne und zutiefst respektiere.