ebook

Capitolo 2

Uso dell’IA per progettare e distribuire algoritmi embedded


Se si sceglie di adottare un approccio tradizionale allo sviluppo di algoritmi, occorre scrivere un programma capace di elaborare un input per produrre l’output desiderato. Talvolta, però, derivare le equazioni dai principi primi è troppo complesso, distribuirle è troppo impegnativo a livello computazionale oppure procedere a una misurazione desiderata è impossibile o troppo costoso a livello fisico.

In questi casi, vale la pena prendere in considerazione l’idea di creare un modello di IA. Gli algoritmi di IA embedded supportano:

  • Sistemi di controllo
  • Manutenzione predittiva
  • Assistenza alla guida avanzata (ADAS)
  • Pianificazione di percorsi
  • Elaborazione del linguaggio naturale
  • Elaborazione di segnali
  • Sensori virtuali
  • Rilevamento oggetti
sezione

Creazione di un sensore virtuale basato sull’IA: esempio di stima dello stato di carica delle batterie

Le batterie agli ioni di litio oggi sono dappertutto, dai dispositivi elettronici indossabili, ai telefoni cellulari, ai laptop fino ai veicoli elettrici e le smart grid. I sistemi di gestione delle batterie (BMS) garantiscono un uso sicuro ed efficiente di tali batterie. Un’attività fondamentale del BMS consiste nello stimare lo stato di carica (SOC).

Per svariati motivi, non è fisicamente possibile realizzare un sensore distribuibile per misurare direttamente lo stato si carica. Questa difficoltà accomuna molti sistemi di settori diversi, non riguarda soltanto le batterie.

In molte applicazioni i sensori possono essere:

  • Imprecisi
  • Costosi
  • Lenti
  • Rumorosi
  • Fragili
  • Inaffidabili
  • Fisicamente impossibili

Al posto di un sensore fisico, è possibile crearne uno virtuale.

Grafico che mostra una stretta mappatura tra i dati raccolti da un motore e l’output di un sensore virtuale basato sull’IA.

Emissioni generate da un motore reale confrontate con l’output di un sensore virtuale basato sull’IA che stima le emissioni di NOX. (Crediti dell’immagine: Renault)

Una possibilità invitante consiste nello stimare lo stato di carica con un filtro di Kalman esteso (EKF). L’EKF può essere estremamente preciso, ma necessita di un modello matematico non lineare di una batteria, che non è sempre disponibile o realizzabile. I filtri di Kalman possono anche essere costosi dal punto di vista computazionale e, se lo stato iniziale è errato o il modello non è corretto, possono generare risultati non corretti.

In alternativa, è possibile sviluppare un sensore virtuale utilizzando l’IA. L’IA potrebbe riuscire a generalizzare meglio rispetto a un filtro di Kalman e a fornire risultati precisi, purché sia addestrata con i dati giusti.

Un modello di IA dello stato di carica (SOC) usa come input la tensione, la corrente e la temperatura per generare un livello di carica stimato.

Per creare un sensore virtuale basato sull’IA, occorrono dati con cui addestrare il modello di IA. Raccogliendo le letture della batteria in un ambiente controllato in laboratorio, è possibile calcolare con precisione i valori del SOC integrando le correnti (tecnica chiamata Coulomb Counting).

Questo metodo è anche semplice ed economico dal punto di vista computazionale. Perché non usarlo nel BMS per stimare il SOC? Attenzione, perché se non viene svolto in laboratorio, dove la corrente può essere misurata con precisione, è soggetto a errori per cui utilizzarlo nel BMS per stimare il SOC non sarebbe una buona idea. Tuttavia, è un modo efficace per ottenere i dati necessari per realizzare un sensore virtuale robusto.

Dopo aver raccolto i dati di input/output ottenuti con precisione, sarà possibile utilizzarli per addestrare un modello di sensore virtuale basato sull’IA da distribuire come parte del sistema di gestione delle batterie.

Esistono tre modi per creare e integrare un modello di IA in Simulink:

1. Eseguire l’addestramento nel framework di Machine Learning in MATLAB.

2. Importare il modello da TensorFlow o PyTorch.

3. Eseguire l’addestramento nel framework di Deep Learning in MATLAB.

Il modello di IA ha il vantaggio di poter essere addestrato direttamente sui dati misurati. I dati di addestramento acquisiscono le relazioni complesse tra lo stato di carica e gli input quali la corrente, la tensione, la temperatura e la media mobile di corrente e temperatura, integrando l’intelligenza nel modello.

Di conseguenza, il modello di IA potrebbe essere sia più veloce che più preciso di un modello matematico basato su principi primi.

Dopo aver investito nella creazione di un set di dati di addestramento di alta qualità, sarà possibile utilizzare MATLAB® o altri strumenti per creare svariati modelli di IA usando diverse tecniche di Machine Learning o di Deep Learning. Per scoprire quali modelli offrono le migliori prestazioni, basta integrarli in Simulink e valutarli l’uno a fianco all’altro.

Nota su come ottenere i dati

Raccogliere dati di addestramento di qualità è un’impresa ardua. Nel campo dell’IA, i set di dati pubblicamente disponibili hanno spronato la ricerca sull’IA. Utilizzando gli stessi set di dati, i ricercatori possono fare confronti in modo semplice e individuare dei benchmark in diverse tecniche di IA. I modelli e i set di dati condivisi stanno facilitando la riproducibilità e la creazione di fiducia nell’IA.

Nel settore industriale, tuttavia, i dati spesso provengono da set di dati selezionati con cura, talvolta prodotti tramite banchi di prova specializzati del mondo reale o simulazioni complesse ad alta fedeltà basate sui principi primi. Tali esperimenti possono richiedere molto tempo e denaro, ma il valore di un modello di IA ben addestrato può effettivamente valere l’investimento iniziale. Gli ingegneri esperti nel settore possono aggiungere valore durante la creazione del modello di IA progettando esperimenti che producano dati di addestramento di alta qualità.

sezione

Simulazione e test di un sensore virtuale basato sull’IA

Una volta addestrati i modelli di IA, è possibile integrarli in Simulink e testarli. Simulink consente di capire qual è il modello di IA più efficiente e di stabilire se questo garantisce risultati migliori rispetto alle alternative, come l’approccio EKF non basato sull’IA. Come anticipato, il filtro di Kalman necessita di un modello di batteria interno, che potrebbe non essere disponibile.

Questo esempio comprende un EKF più tre modelli di IA, tutti addestrati con gli stessi dati ma adottando approcci di IA differenti:

  • Albero di regressione di precisione: approccio basato sul Machine Learning che costruisce un albero di valori di indicatori sempre più specifici utilizzati per interpretare i dati di input. Un albero di regressione di precisione è costituito da molte foglie piccoline che garantiscono una risposta altamente flessibile.
  • Rete feed-forward (DL-FFN): sistema adattivo di Deep Learning che apprende servendosi di nodi interconnessi che raggruppano in cluster o classificano gli input. Le informazioni viaggiano in avanti attraverso la rete, mai all’indietro, durante l’inferenza.
  • Rete long short-term memory (DL-LSTM): sistema adattivo di Deep Learning basato su nodi interconnessi, che usa il feedback attraverso la rete per elaborare non solo i singoli input ma anche le sequenze interconnesse di input.
 Uno screenshot di Simulink mostra quattro blocchi che ricevono gli stessi input e producono output diversi da mettere a confronto.

Integra modelli di sensori virtuali (EKF, ML, DL-FFN e DL-LSTM) in Simulink per confrontarne le prestazioni. I modelli usano i valori di tensione, corrente e temperatura come input per stimare lo stato di carica delle batterie.

Per valutare i modelli, esegui confronti simultanei in Simulink. Visualizza e misura la precisione e adatta l’output di ciascun modello in base a un set di dati di convalida. Queste informazioni consentono di determinare se i modelli rispettano i requisiti di precisione prima della distribuzione sull’hardware di sistema.

Screenshot di Simulink con un grafico dell’output dei quattro modelli di sensori virtuali. Le linee si sovrappongono ma quella dell’output del modello E K F si discosta di più. Anche la linea dell’output M L si discosta dalle altre.

Raffigura l’output dei quattro modelli di sensori virtuali in un unico grafico usando Simulink per capirne le differenze in termini di precisione.

È inoltre possibile utilizzare i propri modelli di IA insieme ad altri algoritmi per una simulazione a livello di sistema. Ad esempio, è possibile eseguire il modello di IA nell’ambito di una simulazione di sistema complessiva che includa il sottosistema del BMS che lavora insieme ad altri sottosistemi, come il motore o la trasmissione. È inoltre possibile testare e affinare i modelli e altri componenti integrati per assicurarsi che interagiscano tra di loro e rispondano ai requisiti a livello di sistema.

Rappresentazione schematica di un sistema di gestione di batterie in Simulink che mostra input e output che interconnettono tre blocchi: macchina a stati, stima del SOC e logica di bilanciamento.

Usa le librerie di blocchi di Statistics and Machine Learning Toolbox™ e Deep Learning Toolbox per trasferire i modelli di IA del blocco SoC_Estimation in Simulink per eseguire i test a livello di sistema.

sezione

Distribuzione di un modello di IA embedded

La fase successiva consiste nel testare il proprio modello di IA sull’hardware su cui dovrà essere distribuito. In questa fase è possibile completare la valutazione nel mondo reale delle prestazioni del modello.

Usa gli strumenti di generazione di codice di MATLAB e Simulink per generare codice C/C++ senza librerie per reti di Deep Learning o modelli di Machine Learning. Distribuisci quel codice sul tuo processore per testarne il funzionamento nell’ambito di un test Processor-In-the-Loop (PIL) in cui il processore è interconnesso all’impianto simulato (sviluppato con i componenti di Simscape™ e Simscape Electrical™) che, in questo caso, è la dinamica della batteria simulata.

Diagramma di un modello di IA trasformato in codice, distribuito su un chip e testato in un ambiente di test simulato.

Genera codice per il tuo modello di IA e distribuiscilo sul processore per eseguire dei test Processor-In-the-Loop.

Una volta superati i test PIL, il modello è pronto per essere distribuito sull’hardware di produzione. È su questo hardware che verrà eseguito il sistema di gestione delle batterie nel veicolo.

Diagramma di processo di un modello di IA trasformato in codice, distribuito su un chip e testato in un veicolo.

Genera codice per il tuo modello di IA e distribuiscilo sull’hardware per testarlo in un veicolo.

sezione

Valutazione delle prestazioni

Dai test PIL emergono i tradeoff prestazionali che saranno pertinenti per il proprio sistema nel mondo reale. Ad esempio, sebbene il modello dell’albero di regressione di precisione aggiunga interpretabilità che potrebbe essere utile nella risoluzione dei problemi, le sue dimensioni e la sua precisione potrebbero non rispondere ai requisiti di progetto. In un caso di questo tipo, la scelta migliore potrebbe essere una rete feed-forward.

Altri attributi pertinenti sono:

  • Velocità di inferenza, ovvero il tempo impiegato dal modello di IA per calcolare una previsione
  • Velocità di addestramento, ovvero il tempo necessario per addestrare il modello di IA con i dati di addestramento
  • Impegno in termini di pre-elaborazione, in quanto alcuni modelli necessitano di calcoli supplementari, come le medie mobili, per ottenere dati di previsione sul passato
Tabella dei tradeoff prestazionali, con quattro colonne per ciascun modello, per mettere a confronto la velocità di addestramento, l’interpretabilità, la velocità di inferenza, le dimensioni del modello e la precisione. Ad esempio, il modello DLL STM ha una bassa velocità di inferenza, un alto livello di precisione e il modello è di grandi dimensioni.

Confronto tra attributi importanti per diverse tecniche di modellazione di sensori virtuali. DL-FNN offre un’elevata velocità di inferenza e alta precisione, ma richiede una maggiore pre-elaborazione, l’addestramento è più lungo e non è interpretabile.

sezione

Compressione di un modello di IA

La compressione del modello è un tradeoff che richiede analisi, comprensione, iterazione e ottimizzazione. Ma per gli ingegneri che si occupano di software embedded, spesso rappresenta una necessità poiché, in alcuni casi, il modello di IA ha dimensioni che superano i limiti di memoria dell’hardware.

Gli ingegneri sono alla ricerca di nuovi modi per l’ingombro dei modelli adottando tecniche quali il pruning, la quantizzazione e la conversione a virgola fissa.

Un nuovo metodo per ridurre le dimensioni dei modelli disponibile in Deep Learning Toolbox™ comprime una rete di Deep Learning mediante proiezione. Questa tecnica ci consente di trovare un compromesso tra dimensioni del modello, velocità di inferenza e precisione. Per quanto riguarda questo esempio, non vi è una perdita significativa in termini di precisione. La compressione mediante i livelli di proiezione ha ridotto il footprint di memoria del 91% e ha raddoppiato la velocità di inferenza.

Una tabella confronta i modelli DLL STM compressi e non compressi. Il modello compresso ha una maggiore velocità di inferenza e dimensioni molto più piccole rispetto al modello non compresso, ma non ha perso precisione.

La compressione è in grado di trasformare un modello molto preciso, ma grande e lento, in un modello più piccolo e molto più veloce senza rinunciare alla precisione.

sezione

Analisi di un BMS progettato da un cliente per un veicolo elettrico

Gotion, un’azienda che si dedica alle tecnologie per l’accumulo di energia di prossima generazione, voleva creare un modello di rete neurale per stimare lo stato di carica durante la carica di un veicolo elettrico. Il modello doveva avere un livello di precisione con un margine del 3% e doveva essere abbastanza piccolo da poterlo distribuire in produzione. Inoltre, il modello doveva essere verificato mediante un test a bordo veicolo.

Deep Learning Toolbox ha messo a disposizione del team un approccio low-code per addestrare una rete neurale sulla base dei dati storici relativi alla carica delle celle. Il team ha avviato un workflow iterativo per simulare, migliorare e convalidare il modello. Con Simulink, gli ingegneri hanno integrato e testato il modello con il resto del sistema. È stato utilizzato Simulink Test™ per assicurarsi che il modello rispettasse i requisiti di precisione durante la simulazione.

Una volta ottenuto un modello dalle prestazioni desiderate, è stato generato automaticamente il codice per i test HIL e a bordo veicolo.

Gli ingegneri che hanno usato MATLAB e Simulink hanno riscontrato questi vantaggi chiave:

  • Integrazione dell’IA nel workflow di verifica e convalida esistente grazie a Requirements Toolbox, Deep Learning Toolbox, Simulink, Embedded Coder e Simulink Test
  • Possibilità di eseguire un workflow completo, dall’acquisizione dei requisiti allo sviluppo del modello, l’integrazione nel sistema, la distribuzione del modello e l’hardware di produzione
  • Sicurezza, durante la simulazione e i test HIL, che il modello avrebbe soddisfatto i requisiti di precisione prima della distribuzione
  • Codice generato automaticamente dalla rete neurale con un ingombro ridotto (ROM <2 KB, RAM <100 B)
Quattro grafici mostrano che lo stato di carica target e lo stato di carica stimato sono simili in condizioni diverse, come valori variabili di tensione, corrente e temperatura.

Simulink Test consente di testare, a livello di sistema, la precisione in condizioni diverse, comprese quelle difficili da simulare nei test nel mondo reale, come i test in condizioni climatiche estreme.

Testa le tue conoscenze