Habr AI a montré comment implémenter une Linear Layer en C++ et CUDA dans la série «De MNIST à Transformer»
Habr AI a publié la troisième partie de la série «De MNIST à Transformer» — cette fois sur les tenseurs, la multiplication de tenseurs et sa propre Linear…
Traité par IA depuis Habr AI ; édité par Hamidun News
Habr AI a publié la troisième partie de la série « De MNIST à Transformer », où elle analyse la transition des matrices ordinaires aux tenseurs et montre comment construire une couche Linear de base de zéro sans PyTorch. Le matériel guide le lecteur à travers un réseau neuronal simple pour la reconnaissance MNIST et met l'accent non pas sur les API des bibliothèques, mais sur la manière dont ces opérations sont réellement exécutées sur le GPU.
À propos de la troisième partie
Le nouvel article continue la route du code CUDA de bas niveau vers les architectures sur lesquelles les Transformers et les LLM modernes sont construits par la suite. Au lieu d'abstractions prêtes à l'emploi, l'auteur propose de regarder directement les calculs : comment les données se trouvent en mémoire, comment le GPU lance les opérations et pourquoi même une couche de réseau neuronal élémentaire nécessite un grand volume de travail d'ingénierie. C'est un bon format pour ceux qui en ont assez de percevoir les frameworks ML comme de la magie provenant d'une seule ligne de code.
Le changement principal dans cette partie est la transition des matrices aux tenseurs. Pour l'apprentissage automatique appliqué, c'est un sujet de base car les données réelles s'étendent rarement au-delà de deux dimensions. L'auteur montre comment la réflexion d'un développeur change lorsqu'il commence à travailler non seulement avec des tableaux de nombres, mais avec des structures multidimensionnelles, à partir desquelles sont assemblés les lots, les poids des couches, les représentations intermédiaires et d'autres éléments constitutifs du modèle futur. C'est à ce niveau que commence la préparation à la compréhension de blocs plus complexes comme l'attention et les embeddings.
Ce qu'ils implémentent à la main
La partie pratique est construite autour de code personnalisé en C++ et CUDA. Il n'y a aucune tentative de cacher la complexité derrière une interface pratique : au contraire, le lecteur se voit proposer un chemin de la formule mathématique à l'implémentation manuelle. Cette approche est utile car elle lie l'algèbre linéaire abstraite aux étapes spécifiques du développement : le placement des données, les appels de noyaux, la vérification des formes dimensionnelles et la compréhension du lieu exact où les erreurs ou les pertes de performance apparaissent. Sans ce lien, il est difficile de sentir la différence entre un exemple didactique et un système réel.
- Implémentation de la multiplication de tenseurs
- Création de la première couche Linear, c'est-à-dire une couche entièrement connectée
- Travail avec la mémoire et le placement des données sur le GPU
- Liaison des mathématiques et du code pour l'entraînement sur MNIST
- Construction d'un simple réseau pour reconnaître les chiffres manuscrits
« C'est seulement ainsi que vous pouvez vraiment comprendre comment
fonctionnent les LLM. »
Après avoir implémenté les opérations de base, l'article mène à une couche entièrement connectée personnalisée, puis à un petit réseau pour reconnaître les chiffres manuscrits de MNIST. C'est un moment important : le matériel ne s'arrête pas aux primitives individuelles, mais montre comment les assembler en une chaîne fonctionnelle. En même temps, il devient clair qu'un classificateur simple repose sur un ensemble assez profond de connaissances : des mathématiques à la structure de la mémoire vidéo et aux particularités du calcul parallèle.
Pourquoi c'est important
La valeur de telles analyses est qu'elles dissipent l'illusion de facilité que les wrappers Python créent souvent. Quand un développeur ne voit que des appels de bibliothèques prêts à l'emploi, il lui est difficile d'évaluer le coût de chaque opération et de comprendre pourquoi un modèle frappe soudainement une limite de mémoire, de bande passante ou de taille de lot. L'analyse au niveau des tenseurs et des couches aide à mieux lire les profileurs, à concevoir l'architecture plus soigneusement et à choisir plus consciemment les compromis entre vitesse, précision et complexité de mise en œuvre.
La série « De MNIST à Transformer » est particulièrement utile pour ceux qui veulent non seulement exécuter les modèles d'autres personnes, mais comprendre la mécanique des systèmes d'IA modernes. Elle ne promet pas une entrée rapide et avertit directement : il y aura beaucoup de code, de CUDA, des mathématiques et un travail manuel avec la mémoire. Mais c'est précisément ce format qui fournit la base qui sera utile aussi bien lors de l'optimisation de l'inférence que lors de la lecture des implémentations CUDA d'autres, et lors de la tentative de comprendre pourquoi certaines décisions architecturales fonctionnent plus rapidement que d'autres.
Ce que cela signifie
Pour le public russophone, c'est un bon signal : la demande se déplace des tutoriels superficiels vers l'analyse d'ingénierie des entrailles de la pile d'IA. Plus ces matériaux apparaissent, moins les LLM sont perçus comme des boîtes noires et plus facile il devient pour les développeurs de passer de l'utilisation de modèles prêts à l'emploi à leur réglage et optimisation conscients. Ceci est particulièrement important maintenant, alors que la demande d'optimisation GPU et de compréhension des mécanismes internes des modèles augmente rapidement parmi les ingénieurs praticiens.
Vous voulez cesser de lire sur l'IA et commencer à l'utiliser?
AI News est un fil d'actualité IA. Hamidun Academy vous apprend à utiliser l'IA dans votre travail.