tinygrad: ein kleiner, hackbarer Deep-Learning-Stack
Dir gefällt Pytorch? Dir gefällt Mikrograd? Du liebst Tinygrad. Neuronale Netze Wie sich herausstellt, sind 90 % dessen, was Sie für neuronale Netze benötigen, eine anständige Autograd-/Tensor-Bibliothek.
Auf einen Blick
- Was ist das?
- Ein End-to-End-Deep-Learning-Stack mit Tensor-Bibliothek, Autograd, IR und Compiler, JIT-Ausführung und Trainingswerkzeugen, in Python geschrieben und unter MIT-Lizenz.
- Für wen ist es gedacht?
- tinygrad ist ein MIT-lizenziertes Python-Projekt, das eine Tensor-Bibliothek, Autograd, einen sichtbaren IR und Compiler, JIT-Ausführung und Trainingswerkzeuge in einer Codebasis vereint, die ausdrücklich klein und lesbar bleiben soll. Das Repository bietet Installationsanweisungen, eine Dokumentationsseite und eine detaillierte Beitragsrichtlinie, die ein Verbot von KI-geschriebenen Einreichungen enthält.
- Darf ich es kommerziell nutzen?
- Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
- Wird es noch gepflegt?
- Ja. Die letzten Commits kamen vor 1 Tag.
- In welcher Sprache ist es geschrieben?
- Hauptsächlich Python, laut der Sprachstatistik von GitHub.
Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 14. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.
TIEFGEHENDE OPEN-SOURCE-ANALYSE
Die Bestandteile des Stacks: Tensoren, IR/Compiler, JIT und Trainingswerkzeuge
Das README definiert tinygrad als End-to-End-Deep-Learning-Stack. Es listet vier Komponenten auf: eine Tensor-Bibliothek mit Autograd; einen IR und Compiler, der Kernel fusioniert und absenkt; JIT plus Graphausführung; und nn, optim und Datasets für echtes Training. Das Projekt sagt, es sei von PyTorch für Ergonomie, von JAX für funktionale Transformationen und IR-basiertes AD und von TVM für Scheduling und Codegen inspiriert, aber bewusst winzig und hackbar. Die Behauptung ist, dass der gesamte Compiler und IR sichtbar und modifizierbar sind, was ein Kernpunkt des Designs ist.
Der Vergleich mit PyTorch, JAX und TVM
Das README enthält eine direkte Vergleichstabelle. Mit PyTorch teilt es die eager Tensor-API, Autograd, optim und grundlegende Datasets und Ebenen; der Unterschied besteht darin, dass tinygrads Compiler und IR sichtbar und hackbar sind. Mit JAX teilt es IR-basiertes Autodiff über Primitive und funktionales JIT (genannt TinyJit), aber es hat noch kein vollständiges vmap oder pmap; das README sagt, es sei viel einfacher zu lesen. Mit TVM teilt es mehrere Lowering-Passes, Scheduling und BEAM-Suche über Kernel, aber tinygrad liefert auch das Frontend-Framework, nicht nur den Compiler. Der Vergleich ist prägnant und listet ausdrücklich auf, was ähnlich ist und was nicht.
Lazy Evaluation und das fusionierte Matmul-Beispiel
Ein kurzes Beispiel im README demonstriert Lazy Evaluation. Wenn Sie `DEBUG=3 python3 -c "from tinygrad import Tensor; N = 1024; a, b = Tensor.empty(N, N), Tensor.empty(N, N); (a.reshape(N, 1, N) * b.T.reshape(1, N, N)).sum(axis=2).realize()"` ausführen, sehen Sie, wie ein Matmul in einen Kernel fusioniert wird. Wenn Sie DEBUG auf 4 ändern, wird der generierte Code angezeigt. Der Punkt ist, dass das Lazy-Evaluation-System Operationen ohne explizite manuelle Fusion fusioniert. Das Beispiel ist kurz und in sich geschlossen, und das README ermutigt dazu, es auszuprobieren.
Ein kleines Netzwerk und eine echte Trainingsschleife
Das README enthält eine vollständige LinearNet-Klasse mit zwei `kaiming_uniform`-Schichten, einem Forward-Pass, der flacht und Punktprodukte mit ReLU durchführt, und einer Trainingsschleife mit `nn.optim.Adam`, einem `Context` für TRAINING und `sparse_categorical_crossentropy`. Es sagt, man solle die zufälligen x und y durch einen echten MNIST-Dataloader ersetzen. Es verweist auch auf `examples/beautiful_mnist.py` als die vollständige Version, die laut README in etwa 5 Sekunden eine Genauigkeit von 98% erreicht. Der Code zeigt, dass die Tensor-API und Autograd der Bibliothek ausreichen, um eine herkömmliche Trainingsschleife zu schreiben.
Beschleuniger und die Anforderung von etwa 25 Operationen
Das README listet acht unterstützte Beschleuniger auf: OpenCL, CPU, METAL, CUDA, AMD, NV, QCOM und WEBGPU, mit Links zu den Laufzeitdateien. Es behauptet, dass das Hinzufügen eines neuen Beschleunigers einfach ist, da das Ziel nur etwa 25 Low-Level-Operationen unterstützen muss. Ein Befehl ist zum Überprüfen des Standard-Beschleunigers angegeben: `python3 -c "from tinygrad import Device; print(Device.DEFAULT)"`. Die Liste ist als Satz von Kontrollkästchen dargestellt, alle sind markiert, und das Projekt lädt zu Ergänzungen ein.
Installation, Dokumentation und Beitragsrichtlinie
Der empfohlene Installationsweg ist von der Quelle: `git clone https://github.com/tinygrad/tinygrad.git`, dann `cd tinygrad` und `python3 -m pip install -e .`. Es gibt auch eine direkte Master-Installation über `pip install git+https://github.com/tinygrad/tinygrad.git`. Die Dokumentation wird aus dem Verzeichnis `docs/` erstellt und auf docs.tinygrad.org gehostet. Der Beitragsabschnitt ist ungewöhnlich explizit: Er verbietet Code Golf, Dokumentations- und Leerzeichenänderungen von neuen Mitwirkenden, verlangt Benchmarks für jede behauptete Beschleunigung und fordert Fehlerbehebungen mit Regressionstests. Er sagt auch, dass Beiträge, die wie KI-geschrieben aussehen, ohne Feedback geschlossen werden und der Mitwirkende gesperrt werden kann. Die Richtlinie zielt darauf ab, die Codebasis einfach und lesbar zu halten.\n\nDer konkrete Prüfschritt 1 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 2 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 3 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 4 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 5 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 6 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 7 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 8 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 9 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 10 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 11 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 12 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 13 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.\n\nDer konkrete Prüfschritt 14 für tinygrad-tinygrad-deep-analysis nutzt die im README genannte Kommandozeile und hält Version, Eingabe, Ausgabe und Exit-Status fest. So lässt sich erkennen, ob der dokumentierte Ablauf im eigenen System funktioniert und welche Konfiguration noch angepasst werden muss.
Redaktionelles Fazit
tinygrad ist ein MIT-lizenziertes Python-Projekt, das eine Tensor-Bibliothek, Autograd, einen sichtbaren IR und Compiler, JIT-Ausführung und Trainingswerkzeuge in einer Codebasis vereint, die ausdrücklich klein und lesbar bleiben soll. Das Repository bietet Installationsanweisungen, eine Dokumentationsseite und eine detaillierte Beitragsrichtlinie, die ein Verbot von KI-geschriebenen Einreichungen enthält.
Community-Notizen