Bibliothèque / SDK
tinygrad/tinygrad avatar
tinygrad/tinygrad

tinygrad : un petit stack de deep learning hackable

Vous aimez le pytorch ? Vous aimez Micrograd ? Vous aimez Tinygrad. Réseaux de neurones Il s'avère que 90 % de ce dont vous avez besoin pour les réseaux de neurones est une bibliothèque autograd/tensor décente.

33 596 étoiles4 336 forksPythonMIT
GitHub

En bref

De quoi s’agit-il ?
Un stack de deep learning de bout en bout avec bibliothèque de tenseurs, autograd, IR et compilateur, exécution JIT et utilitaires d'entraînement, écrit en Python et sous licence MIT.
À qui s’adresse-t-il ?
tinygrad est un projet Python sous licence MIT qui regroupe une bibliothèque de tenseurs, autograd, un IR et compilateur visibles, l'exécution JIT et des utilitaires d'entraînement dans une base de code qui vise explicitement à rester petite et lisible. Le dépôt fournit des instructions d'installation, un site de documentation et une politique de contribution détaillée qui inclut une interdiction des soumissions rédigées par IA.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Les composants du stack : tenseurs, IR/compilateur, JIT et utilitaires d'entraînement

Le README définit tinygrad comme un stack de deep learning de bout en bout. Il liste quatre composants : une bibliothèque de tenseurs avec autograd ; un IR et un compilateur qui fusionnent et abaissent les kernels ; JIT plus exécution de graphe ; et nn, optim et datasets pour l'entraînement réel. Le projet dit être inspiré par PyTorch pour l'ergonomie, JAX pour les transformations fonctionnelles et l'AD basé sur IR, et TVM pour le scheduling et la génération de code, mais il est intentionnellement petit et hackable. L'affirmation est que tout le compilateur et l'IR sont visibles et modifiables, ce qui est un point central de la conception.

La comparaison avec PyTorch, JAX et TVM

Le README inclut un tableau de comparaison direct. Avec PyTorch, il partage l'API Tensor eager, autograd, optim et les datasets et couches de base ; la différence est que le compilateur et l'IR de tinygrad sont visibles et hackables. Avec JAX, il partage l'autodiff basé sur IR sur les primitives et le JIT au niveau fonction (appelé TinyJit), mais il n'a pas encore de vmap ou pmap complet ; le README dit qu'il est beaucoup plus facile à lire. Avec TVM, il partage plusieurs passes d'abaissement, le scheduling et la recherche BEAM sur les kernels, mais tinygrad fournit aussi le framework front-end, pas seulement le compilateur. La comparaison est concise et liste explicitement ce qui est similaire et ce qui ne l'est pas.

L'évaluation paresseuse et l'exemple de matmul fusionné

Un court exemple dans le README démontre l'évaluation paresseuse. Exécuter `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()"` montre comment un matmul est fusionné en un seul kernel. Changer DEBUG en 4 révèle le code généré. Le point est que le système d'évaluation paresseuse fusionne les opérations sans nécessiter de fusion manuelle explicite. L'exemple est court et autonome, et le README encourage à l'essayer.

Un petit réseau et une boucle d'entraînement réelle

Le README inclut une classe LinearNet complète avec deux couches `kaiming_uniform`, une passe avant qui aplatit et fait des produits scalaires avec ReLU, et une boucle d'entraînement utilisant `nn.optim.Adam`, un `Context` pour TRAINING et `sparse_categorical_crossentropy`. Il dit de remplacer les x et y aléatoires par un vrai dataloader MNIST. Il pointe également vers `examples/beautiful_mnist.py` comme version complète qui, selon le README, atteint 98% de précision en environ 5 secondes. Le code montre que l'API tensorielle et autograd de la bibliothèque suffisent à écrire une boucle d'entraînement conventionnelle.

Accélérateurs et l'exigence d'environ 25 opérations

Le README liste huit accélérateurs pris en charge : OpenCL, CPU, METAL, CUDA, AMD, NV, QCOM et WEBGPU, avec des liens vers les fichiers runtime. Il affirme que l'ajout d'un nouvel accélérateur est facile car la cible n'a besoin de supporter qu'environ 25 opérations de bas niveau. Une commande est fournie pour vérifier l'accélérateur par défaut : `python3 -c "from tinygrad import Device; print(Device.DEFAULT)"`. La liste est présentée comme un ensemble de cases à cocher, toutes cochées, et le projet invite à des ajouts.

Installation, documentation et politique de contribution

Le chemin d'installation recommandé est à partir des sources : `git clone https://github.com/tinygrad/tinygrad.git`, puis `cd tinygrad` et `python3 -m pip install -e .`. Il y a aussi une installation directe de master via `pip install git+https://github.com/tinygrad/tinygrad.git`. La documentation est construite à partir du répertoire `docs/` et hébergée sur docs.tinygrad.org. La section contribution est exceptionnellement explicite : elle interdit le code golf, les modifications de documentation et d'espaces blancs par les nouveaux contributeurs, exige des benchmarks pour toute accélération revendiquée et demande des corrections de bugs avec des tests de régression. Elle indique également que les contributions qui ressemblent à de l'IA seront fermées sans retour et que le contributeur peut être banni. La politique vise à maintenir la base de code simple et lisible.

Conclusion éditoriale

tinygrad est un projet Python sous licence MIT qui regroupe une bibliothèque de tenseurs, autograd, un IR et compilateur visibles, l'exécution JIT et des utilitaires d'entraînement dans une base de code qui vise explicitement à rester petite et lisible. Le dépôt fournit des instructions d'installation, un site de documentation et une politique de contribution détaillée qui inclut une interdiction des soumissions rédigées par IA.

Sources officielles

  1. Official README
  2. Project repository
  3. Release notes
Notes de la communauté

Notes de la communauté