(# engine_rs)
Petit moteur de calcul différentiel écrit en Rust — expérimental et pédagogique.
Ce dépôt contient une implémentation minimale d'un graphe de calcul (tensors, opérations, gradients) destinée à expérimenter la construction d'opérations et la backpropagation.
Ce projet utilise Cargo (Rust). Depuis la racine du dépôt :
cargo build
cargo runsrc/main.rs: point d'entrée (exemple minimal).src/tensor.rs: définition deTensoret logique liée aux tenseurs.src/ops.rs: définitions d'opérations (Add, Mul, Tanh).src/graph.rs: construction et gestion du graphe de calcul.
- Projet en cours de développement.
N'hésitez pas si vous avez des corrections !
-
Pour le calcul des gradients, j'ai énormément apprécié le blog de Robot Chinwag : https://robotchinwag.com/posts/the-tensor-calculus-you-need-for-deep-learning/ ceci m'a permis de programmer les différentes opérations sur les Tenseurs. Mais aussi https://explained.ai/matrix-calculus/ pour les matrices (en ML on considère souvent qu'un tenseur c'est des batch de matrices donc ca correspond un peu)
-
Pour comprendre le broadcast, https://numpy.org/doc/stable/user/basics.broadcasting.html est une bonne ressource.
- Pour comprendre comment le moteur fonctionne dans son essence, la vidéo d'Andrej Kaparthy est très facile d'accès et complète: "RAJOUTER LIEN"
- Note: j'aimerais bien implémenter une version JIT si j'ai le temps...
https://youtu.be/1Rf7BVQ-z0M This video explains very well Xavier and Kaimin initalization. Moreover, I really recommand his other Weight initialization video on the same playlist : https://youtu.be/eoNVmZDnn9w?list=PLJ71tqAZr194By3jyVoG4FvxRZ2rrXD4e