Les réseaux de neurones et autres processus d’apprentissage automatique sont souvent associés à des processeurs et GPU puissants. Cependant, comme nous l’avons vu sur la page, l’IA évolue également à la limite, et le projet open source BitNetMCU montre en outre qu’il est possible d’exécuter des réseaux neuronaux quantifiés à faible bit sur des microcontrôleurs RISC-V bas de gamme tels que comme le CH32V003 bon marché.
Pour rappel, le CH32V003 est basé sur le processeur QingKe 32 bits RISC-V2A, qui supporte deux niveaux d’imbrication d’interruptions. Il s’agit d’un microcontrôleur 48 MHz compact, à faible consommation et à usage général, doté de 2 Ko de SRAM et de 16 Ko de flash. La puce est livrée dans un boîtier TSSOP20, QFN20, SOP16 ou SOP8.

Pour exécuter l’apprentissage automatique sur le microcontrôleur CH32V003, le projet BitNetMCU effectue un entraînement basé sur la quantification (QAT) et affine le code d’inférence et la structure du modèle, ce qui permet de dépasser la précision des tests de 99 % sur un ensemble de données MNIST 16 × 16 sans utiliser aucun instructions de multiplication. Cette performance est impressionnante, étant donné que la puce 48 MHz ne dispose que de 2 kilo-octets de RAM et de 16 kilo-octets de mémoire flash.
Le pipeline de données de formation pour ce projet est basé sur PyTorch et se compose de plusieurs scripts Python. Ceux-ci inclus:
- Fichier de configuration trainingparameters.yaml pour définir tous les paramètres du modèle de formation
- Le script Python training.py entraîne le modèle, puis le stocke dans le dossier de données du modèle sous forme de fichier .pth (les poids sont stockés sous forme de flotteurs, la quantification s’effectuant à la volée pendant l’entraînement).
- exportquant.py Le fichier d’exportation de modèle quantifié convertit le modèle entraîné stocké dans un format quantifié et l’exporte dans le fichier d’en-tête C (BitNetMCU_model.h)
- Script test-inference.py facultatif qui appelle la DLL (compilée à partir du code d’inférence) pour tester et comparer les résultats avec le modèle Python d’origine

Le moteur d’inférence (BitNetMCU_inference.c) est implémenté en ANSI-C, que vous pouvez utiliser avec le MCU RISC-V CH32V003 ou un port vers tout autre microcontrôleur. Vous pouvez tester l’inférence de 10 chiffres en compilant et en exécutant BitNetMCU_MNIST_test.c. Les données du modèle se trouvent dans le fichier BitNetMCU_MNIST_test_data.h et les données de test se trouvent dans le fichier BitNetMCU_MNIST_test_data.h. Vous pouvez vérifier le code et suivre les instructions dans le fichier readme.md trouvé sur GitHub pour essayer le Machine Learning sur le CH32V003.
Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

-
Xptieeck Carte de développement pour module de processeur Advanced RISC V TWEN32F003
-
Kit D'Évaluation du Kit de Développement CH32V003 Development Board Set 32 Bits pour L'Évaluation des Applications Fonctionnelles de MCU RISC-V Polyvalent
