18 Punkte von xguru 2024-04-09 | 1 Kommentare | Auf WhatsApp teilen
  • Einfacher LLM-Trainingscode von Andrej Karpathy, geschrieben in reinem C/CUDA
  • PyTorch/cPython nicht erforderlich
  • GPT-2 (CPU, fp32) lässt sich mit einer einzigen Datei von etwa 1000 Zeilen trainieren
    • Als erstes funktionierendes Beispiel wurde GPT-2 gewählt, weil es der Großvater der LLMs ist, in denen der moderne Stack erstmals zusammenkam
  • Lässt sich sofort kompilieren und ausführen und stimmt exakt mit der PyTorch-Referenzimplementierung überein
  • Derzeit in Arbeit
    • Eine direkte CUDA-Implementierung, die deutlich schneller ist und vermutlich näher an PyTorch herankommt
    • Beschleunigung der CPU-Version mit SIMD-Befehlen, AVX2 auf x86 / NEON auf ARM (z. B. Apple Silicon)
    • Modernere Architekturen (z. B. Llama2, Gemma usw.)

1 Kommentare

 
xguru 2024-04-09

Hacker-News-Kommentare

  • Neben Bewunderung für das Projekt wird darauf hingewiesen, dass der CUDA-Teil derzeit noch nicht implementiert ist. GPU-Code ist im Repository noch nicht vorhanden.

    Es wird erwartet, dass, sobald das Projekt stabiler ist, ein ausführliches Video darüber erstellt wird, wie man es aufbaut.

  • Nach dem Ansehen von nano GPT, das in JAX implementiert wurde, möchte man nun eine in C/CUDA implementierte Version sehen. Es wird gefragt, ob nano GPT in Mojo möglich ist. Dabei wird anerkannt, dass Python im Vergleich zu anderen Sprachen viele praktische Funktionen bietet.

  • Es wird die Erwartung geäußert, dass eine direkte CUDA-Implementierung deutlich schneller sein wird als PyTorch. Angesichts der GPU-RAM-Preise wird gefragt, wie groß der Geschwindigkeitsgewinn auf der CPU sein könnte. Außerdem wird gefragt, ob es technische Probleme gäbe, RTX-Serien um SO-DIMM-Slots zu erweitern, damit RAM je nach Bedarf ausgebaut werden kann.

  • Es wird gefragt, ob es ein Beispiel dafür gibt, wie man GPT-2 auf Zeitreihendaten anwendet, insbesondere mit Kovariaten (covariates). Es wird angenommen, dass Zeitreihenvorhersage dem Prinzip ähnelt, nach dem ein LLM das nächste Token aus den vorherigen Tokens vorhersagt.

  • Es wird vermutet, dass der Name vom eigenen Projekt llm.f90 übernommen wurde. Dieses basiert auf Karpathys llama2.c und wurde umbenannt, um andere Architekturen zu unterstützen. Wahrscheinlich ist es Zufall.

  • Als Lex mit Andre sprach, habe Andre gesagt, er sei auf positive Weise von dem Problem besessen und „das muss einfach existieren“. Dieses Projekt dürfte eines der Ergebnisse davon sein.

  • Die Frage lautet, welche Materialien man heranziehen sollte, wenn man ganz von vorne anfängt, um ein Verständnis dafür aufzubauen, was dieser Code macht und wie man ihn lesen sollte. Das Wissen über LLMs sei sehr begrenzt, und es wird gefragt, ob knappe Variablennamen im LLM-Bereich Standard sind.

  • Es wird angemerkt, dass es schön wäre, ein Tutorial zu erstellen, das dieses Projekt erklärt und zeigt, wie man ein Testtraining ausführt. Ein „echtes“ Modell auf eigener Hardware zu trainieren sei zwar nicht realistisch, aber praktische Lernerfahrung sei nötig.

  • Es wird die Frage aufgeworfen, ob CUDA weiterhin die einzige echte Option für die Ausführung von KI ist oder ob die Unterstützung für AMD/Intel/andere Methoden zur KI-Ausführung zunimmt.