Reti Neurali – l’implementazione su RISC-V è possibile

Le reti neurali e altri processi di apprendimento automatico sono spesso associati a processori e GPU potenti. Tuttavia, come abbiamo visto, anche l’intelligenza artificiale si sta spostando al limite e il progetto open source BitNetMCU dimostra ulteriormente che è possibile addestrare ed eseguire inferenze su reti neurali quantizzate a basso bit utilizzando RISC- V come l’economico CH32V003. Per chi non lo sapesse, con il termine “inferenza” si intende il processo attraverso il quale una proposizione viene derivata dalle premesse, ovvero trarre conclusioni da un insieme di fatti o circostanze.

Il CH32V003 si basa sul processore QingKe RISC-V2A a 32 bit, che supporta due livelli di annidamento degli interrupt. Si tratta di un microcontroller da 48 MHz compatto, a basso consumo e per uso generico, dotato di 2 KB di SRAM con flash da 16 KB. Il chip è disponibile in un pacchetto TSSOP20, QFN20, SOP16 o SOP8.

Per eseguire l’apprendimento automatico sul microcontrollore CH32V003, il progetto BitNetMCU esegue Quantization Aware Training (QAT) e mette a punto il codice di inferenza e la struttura del modello, il che rende possibile superare il 99% di precisione del test su un set di dati MNIST 16×16 senza utilizzare alcun istruzioni per la moltiplicazione. Questa prestazione è impressionante, considerando che il chip da 48 MHz ha solo 2 kilobyte di RAM e 16 kilobyte di memoria flash.

 

Reti Neurali

 

La pipeline dei dati di addestramento per questo progetto è basata su PyTorch ed è composta da diversi script Python che possono essere eseguiti su qualsiasi microcontroller. Questi includono:

  • Il file di configurazione trainingparameters.yaml per impostare tutti i parametri per il modello di training
  • training.py Lo script Python addestra il modello, quindi lo archivia nella cartella dei dati del modello stesso come file .pth (i pesi vengono archiviati come float, con la quantizzazione che avviene al volo durante l’addestramento).
  • exportquant.py Il file di esportazione del modello quantizzato converte il modello addestrato memorizzato in un formato quantizzato e lo esporta nel file di intestazione C (BitNetMCU_model.h)
    Script test-inference.py opzionale che richiama la DLL (compilata dal codice di inferenza) per testare e confrontare i risultati con il modello Python originale

Il motore di inferenza (BitNetMCU_inference.c) è implementato in ANSI-C, che è possibile utilizzare con l’MCU RISC-V CH32V003 o portarlo su qualsiasi altro microcontroller. È possibile testare l’inferenza di 10 cifre compilando ed eseguendo BitNetMCU_MNIST_test.c. Sia i dati del modello che quelli del test si trovano nel file BitNetMCU_MNIST_test_data.h . È possibile controllare il codice e seguire le istruzioni nel file readme.md trovato su GitHub per provare Machine Learning su CH32V003.

 

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

###Da sempre appassionato di tecnologia, soffro di insaziabile curiosità scientifica. Adoro sperimentare e approfondire le mie conoscenze sulle ultime novità sul mercato in termini di hardware, alta tecnologia e videogiochi. Attratto e coinvolto nella prototipazione hardware dalla piattaforma Arduino, Raspberry Pi e Nvidia Jetson.### ###Always passionate about technology, I am suffering from insatiable scientific curiosity. I love experimenting and deepening of my knowledge on the latest news on the market in terms of hardware, hi-tech and video games. Got attracted and involved in hardware prototyping by the Arduino platform, Raspberry Pi and Nvidia Jetson.###

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.