1 Punkte von GN⁺ 1 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Train Your Own LLM From Scratch ist ein praxisorientierter Workshop, in dem man alle Teile der GPT-Trainingspipeline selbst schreibt und versteht, was jede Komponente macht und warum sie nötig ist
  • Ziel ist es, mit einem von Grund auf trainierten GPT-Modell auf einem Notebook Text im Shakespeare-Stil zu erzeugen; damit der Workshop in einer einzigen Session abgeschlossen werden kann, wurde das Modell auf etwa 10M Parameter verkleinert
  • Während nanoGPT die Reproduktion von GPT-2 mit 124M Parametern anstrebt, konzentriert sich dieses Projekt auf das Wesentliche und ist so ausgelegt, dass es auf einem Notebook in unter 1 Stunde trainiert werden kann
  • Die selbst implementierten Komponenten sind Tokenizer, eine Transformer-basierte Modellarchitektur, die Trainingsschleife und die Textgenerierung; am Ende vervollständigt man selbst model.py, train.py und generate.py
  • Als Vorwissen reicht es aus, Python-Code lesen zu können; Erfahrung mit Machine Learning ist nicht erforderlich, benötigt wird Python 3.12+
  • Als Laufzeitumgebung werden Notebooks und Desktops mit Mac, Linux und Windows unterstützt; für das Training wird automatisch MPS auf Apple-Silicon-GPUs, CUDA auf NVIDIA-GPUs oder die CPU verwendet
  • Für die lokale Installation wird ein Ablauf mit uv und uv sync empfohlen; ohne lokale Umgebung können die Dateien auch in Google Colab hochgeladen und mit !python train.py ausgeführt werden
  • Der Workshop behandelt der Reihe nach einen zeichenbasierten Tokenizer, Embeddings, Self-Attention, LayerNorm, MLP-Blöcke, Verlustfunktion, AdamW, Gradient Clipping, Learning-Rate-Scheduling sowie Sampling mit Temperature und Top-k
  • Die Grundarchitektur wandelt Eingabetext in zeichenbasierte Token-IDs um, führt ihn durch Token- und Positions-Embeddings sowie mehrere Transformer-Blöcke und gibt anschließend Logits für die Wahrscheinlichkeit des nächsten Tokens aus
  • Die bereitgestellten Modellkonfigurationen sind Tiny mit etwa 0.5M Parametern und rund 5 Minuten auf einem M3 Pro, Small mit etwa 4M und rund 20 Minuten sowie standardmäßig Medium mit etwa 10M und rund 45 Minuten Trainingszeit
  • Alle Konfigurationen verwenden zeichenbasierte Tokenisierung mit vocab_size=65 und block_size=256 und sind auf kleine Datensätze von etwa 1 MB wie Shakespeare zugeschnitten
  • Bei der BPE-Tokenisierung ist das Vokabular wie bei GPT-2 mit 50,257 vocab groß, sodass in kleinen Datensätzen die meisten Token-Bigramme zu selten sind, um Muster gut zu lernen; für größere Datensätze wird der Wechsel zu BPE behandelt
  • Als wichtige Referenzen werden nanoGPT, build-nanogpt video lecture, Karpathy's microgpt, nanochat, Attention Is All You Need (2017), GPT-2 paper (2019) und TinyStories paper genannt

1 Kommentare

 
GN⁺ 1 시간 전
Hacker-News-Kommentare
  • Wenn dieses Material interessant klingt, kann ich Stanfords CS336 sehr empfehlen. Dort wird ein ähnliches Curriculum sehr viel tiefer behandelt, inklusive theoretischer Intuition zu Skalierungsgesetzen sowie der Systemperspektive mit Kernel-Optimierung und Profiling
    Allerdings muss man die Aufgaben selbst machen: https://cs336.stanford.edu/

    • Ich weiß nicht, wo man die Vorlesungen ansehen kann. Ich sehe keine Vorlesungsoption
  • Kleine Eigenwerbung: Es gibt eine Reihe von Jupyter-Notebooks, die von Grund auf erklären, wie Machine Learning funktioniert
    https://github.com/nickyreinert/DeepLearning-with-PyTorch-fr...
    Und natürlich wird auch behandelt, wie man ein LLM von Grund auf baut
    https://github.com/nickyreinert/basic-llm-with-pytorch/blob/...

  • Ich habe gerade erst mit Sebastian Raschkas Repository/Buch/Kurs Build a Large Language Model (From Scratch) angefangen. Vielleicht ist es ein Luxusproblem, aus welchem Lernmaterial man wählen soll
    [0] https://github.com/rasbt/LLMs-from-scratch
    [1] https://www.manning.com/books/build-a-large-language-model-f...
    [2] https://magazine.sebastianraschka.com/p/coding-llms-from-the...

    • Ich fand das Buch wirklich unterhaltsam. Gut für Leute, die die tatsächliche innere Struktur verstehen und konkrete Beispiele für alle Berechnungen sehen wollen
  • Das mache ich seit meiner Geburt. Der Anfang war hart, aber es wird langsam besser

    • Genau genommen habe ich vor allem physikalische Modelle trainiert, mit einem LLM obendrauf sozusagen
  • Ich habe das damals mit ULMFiT gemacht, als fast.ai noch relativ neu war. Vermutlich war das die Zeit, als BERT der aktuelle State of the Art war, und die Struktur war so, dass man erst das Basismodell trainierte und dann mit einem Head spezialisieren konnte
    Für das Basismodell wurde die komplette Wikipedia verwendet, plus ein paar GB Tweets, die per Firehose gesammelt worden waren. Ich konnte ein Labor mit 20 Rechnern für die Spieleentwicklung nutzen, ungefähr auf GTX-2080-Niveau. Ein Durchlauf über die tokenisierte Wikipedia dauerte etwa einen halben Tag, daher ließ ich auf jedem Rechner unterschiedliche Einstellungen laufen, um Hyperparameter-Tuning zu machen, und nahm am nächsten Tag das beste Ergebnis als Ausgangspunkt. Es war immer spannend, morgens ins Büro zu kommen und die Resultate zu prüfen
    Das Engineering war schrecklich und improvisiert, aber ich habe viel gelernt. Die Ergebnisse waren ganz okay und wir haben Tweet-Klassifikation gemacht, aber ich bekam ein Gefühl dafür, wie viel GPU-Leistung und welche Engineering-Herausforderungen wirklich nötig sind, wenn man das ernsthaft betreiben will. Das Potenzial von Generierung habe ich nicht vollständig verstanden, aber ich habe eine Weile über die Tweets gelacht, die ich aus Neugier erzeugt habe

  • Das hier sieht fast wie eine textliche Übertragung von Andrej Karpathys Video aus (https://youtu.be/kCc8FmEb1nY). Liege ich da falsch?

    • Auf der Seite wird die Beziehung zu nanoGPT erklärt
      Sinngemäß: „nanoGPT zielt darauf ab, GPT-2 (124 Millionen Parameter) zu reproduzieren und deckt viele Dinge ab. Dieses Projekt reduziert das auf das Wesentliche und schrumpft es auf ein Modell mit rund 10 Millionen Parametern, das in weniger als einer Stunde auf einem Notebook trainiert werden kann …“
    • Ja, da liegst du falsch
  • Zur Einordnung: Er ist einer der MLX-Entwickler und ein fähiger Machine-Learning-Forscher

    • Mich würde die Quelle dafür interessieren. Das scheint nicht zu stimmen
  • Es heißt: „ein praktischer Workshop, in dem man jedes Teil der GPT-Trainingspipeline selbst schreibt, um zu verstehen, was jede Komponente tut und warum sie nötig ist“, aber bei den Abhängigkeiten sehe ich torch, also werden Tensoren und Backpropagation offenbar nicht selbst implementiert, sondern als gegeben übernommen. Ich frage mich daher, ob man das wirklich „von Grund auf“ nennen kann
    Ich habe etwas Ähnliches in Rust gemacht, ebenfalls mit KI-Hilfe, aber mit der Einschränkung, außer der Standardbibliothek keine Abhängigkeiten zu verwenden. Dadurch musste ich viel mehr selbst implementieren: Tensor-Design, Kernel-Konzepte, einen einfachen Gradientenabstiegs-Optimierer, einen selbstgebauten JSON-Parser, eine CPU-Datenparallelitätsabstraktion ähnlich wie rayon und so weiter. Als am Ende alles zusammengesetzt lief, war das ziemlich spaßig. Sehr langsam, aber es hat funktioniert

  • Ich bin mir nicht sicher, ob man die Nutzung von PyTorch noch als „von Grund auf“ bezeichnen kann. Ich meine nicht extremistisch, dass man sogar die Standardbibliothek vermeiden müsste, aber ab dem Punkt, an dem man eine Bibliothek nutzt, die exakt für diesen Zweck gebaut wurde, fühlt es sich nicht mehr wie „von Grund auf“ an

    • Ist ein fairer Punkt, aber für die meisten Leute im Machine-Learning-Bereich ist PyTorch de facto die Standardbibliothek
  • Wahrscheinlich wäre „ein LM von Grund auf trainieren“ treffender. Ich bezweifle, dass man die Hardware hat, um ein Modell zu bauen, das groß genug ist, um es „Large“ zu nennen

    • Mit einer Kreditkarte mit normalem Limit kann man bei Neo-Cloud-Anbietern wie HuggingFace oder Mistral Forge genug Ressourcen mieten
      Das heißt nicht, dass es das wert ist, aber man muss keine GPUs kaufen, um damit zu experimentieren
    • Selbst auf einer einzelnen 3090 kann man ein Modell mit 1,6 Milliarden Parametern von Anfang bis Ende trainieren. Das ist schon ziemlich groß
    • Ich habe auch ein halbes Terabyte RAM! Zwar DDR4, aber immer noch RAM
      Und 48 Prozessorkerne noch dazu! Kein AVX512, aber rechnen kann die Kiste trotzdem
      Es sollte reichen, um ein LLM zu trainieren. Oder zumindest könnte es unsere Familie schaffen … vielleicht muss mein Kind das Projekt erben und weiterführen
      Im Ernst: Entweder verpasst du den Kern der Sache, betreibst unnötige Wortklauberei oder liegst einfach falsch. Hier geht es darum, die Konzepte zu lernen, und der Rest ist weitgehend nebensächlich
      Wenn wir bei Wortklauberei oder falsch sind: Was ist überhaupt die dokumentierte Untergrenze dafür, ein Sprachmodell als „large“ zu bezeichnen? GPT-2 wurde damals wie heute als „large language model“ bezeichnet und hatte 1,5 Milliarden Parameter. Eine Consumer-GPU, die so etwas heutzutage trainieren kann, bekommt man für ungefähr 400 Dollar