Deploying deep neural networks on microcontrollers (MCUs) requires a fundamental shift from general-purpose AI frameworks toward embedded-specific priorities such as static memory bounds, deterministic execution, and energy-efficient quantization. Existing solutions—including interpreter-based runtimes, compiler stacks, and vendor libraries—often trade off one or more of these properties, introducing runtime overheads, portability constraints, or tooling complexity. This thesis presents Zant, a Zig-based, ONNX-native compiler framework for MCU-scale inference that produces fully static, memory-safe, and verifiable inference libraries. Zant compiles ONNX models into deterministic code with compile-time graph scheduling, buffer reuse via tensor lifetime analysis, and memory sectioning for execute-in-place (XIP) deployments. It supports both QDQ and operator-oriented quantization schemes, enabling hybrid precision strategies tuned to MCU constraints. Zant’s pipeline performs model simplification, pattern-based fusion, activation scheduling, and flash-aware section placement entirely at compile time. The resulting artifacts—small, linkable libraries with no runtime dependencies—integrate seamlessly into embedded firmware and continuous integration (CI) workflows. Experimental results across Cortex-M and x86 targets demonstrate how Zant position itself with respect to existing frameworks while offering superior predictability and transparency. This work positions Zant as a modular, portable foundation for deterministic inference on deeply embedded platforms, bridging the gap between modern ML tooling and the hard constraints of edge deployments.

L'esecuzione di reti neurali profonde su microcontrollori (MCU) richiede un cambiamento radicale rispetto ai tradizionali framework di intelligenza artificiale general-purpose, in favore di priorità specifiche per i sistemi embedded, come limiti statici di memoria, esecuzione deterministica e quantizzazione . Le soluzioni esistenti, tra cui runtime basati su interprete, compilatori e librerie fornite dai vendor, spesso sacrificano uno o più di questi requisiti, introducendo overhead a runtime, vincoli di portabilità o una complessità eccessiva degli strumenti. Questa tesi presenta Zant, un compilatore open-source basato su Zig e nativamente compatibile con ONNX, progettato per l’inferenza su MCU. Zant genera librerie statiche, sicure in memoria e verificabili, compilando modelli ONNX in codice deterministico tramite pianificazione del grafo a tempo di compilazione, riutilizzo dei buffer tramite analisi del ciclo di vita dei tensori, e suddivisione della memoria per il supporto all’esecuzione diretta da flash (XIP). La pipeline di Zant esegue semplificazione del modello, fusioni basate su pattern, pianificazione delle attivazioni e posizionamento delle sezioni in flash a tempo di compilazione. Gli artefatti risultanti—librerie leggere, collegabili e prive di dipendenze a runtime—si integrano facilmente nei firmware embedded e nei workflow di continuous integration (CI). I risultati sperimentali su target Cortex-M e x86 dimostrano come Zant si rapporta a framework esistenti, offrendo al contempo maggiore prevedibilità e trasparenza. Questo lavoro propone Zant come una base modulare e portabile per l'inferenza deterministica su piattaforme embedded, colmando il divario tra gli strumenti di machine learning moderni e i vincoli stringenti dei sistemi edge.

Zant: lightweight neural network inference engine for microcontrollers

CALVI, MIRKO
2024/2025

Abstract

Deploying deep neural networks on microcontrollers (MCUs) requires a fundamental shift from general-purpose AI frameworks toward embedded-specific priorities such as static memory bounds, deterministic execution, and energy-efficient quantization. Existing solutions—including interpreter-based runtimes, compiler stacks, and vendor libraries—often trade off one or more of these properties, introducing runtime overheads, portability constraints, or tooling complexity. This thesis presents Zant, a Zig-based, ONNX-native compiler framework for MCU-scale inference that produces fully static, memory-safe, and verifiable inference libraries. Zant compiles ONNX models into deterministic code with compile-time graph scheduling, buffer reuse via tensor lifetime analysis, and memory sectioning for execute-in-place (XIP) deployments. It supports both QDQ and operator-oriented quantization schemes, enabling hybrid precision strategies tuned to MCU constraints. Zant’s pipeline performs model simplification, pattern-based fusion, activation scheduling, and flash-aware section placement entirely at compile time. The resulting artifacts—small, linkable libraries with no runtime dependencies—integrate seamlessly into embedded firmware and continuous integration (CI) workflows. Experimental results across Cortex-M and x86 targets demonstrate how Zant position itself with respect to existing frameworks while offering superior predictability and transparency. This work positions Zant as a modular, portable foundation for deterministic inference on deeply embedded platforms, bridging the gap between modern ML tooling and the hard constraints of edge deployments.
PAVAN, MASSIMO
ING - Scuola di Ingegneria Industriale e dell'Informazione
10-dic-2025
2024/2025
L'esecuzione di reti neurali profonde su microcontrollori (MCU) richiede un cambiamento radicale rispetto ai tradizionali framework di intelligenza artificiale general-purpose, in favore di priorità specifiche per i sistemi embedded, come limiti statici di memoria, esecuzione deterministica e quantizzazione . Le soluzioni esistenti, tra cui runtime basati su interprete, compilatori e librerie fornite dai vendor, spesso sacrificano uno o più di questi requisiti, introducendo overhead a runtime, vincoli di portabilità o una complessità eccessiva degli strumenti. Questa tesi presenta Zant, un compilatore open-source basato su Zig e nativamente compatibile con ONNX, progettato per l’inferenza su MCU. Zant genera librerie statiche, sicure in memoria e verificabili, compilando modelli ONNX in codice deterministico tramite pianificazione del grafo a tempo di compilazione, riutilizzo dei buffer tramite analisi del ciclo di vita dei tensori, e suddivisione della memoria per il supporto all’esecuzione diretta da flash (XIP). La pipeline di Zant esegue semplificazione del modello, fusioni basate su pattern, pianificazione delle attivazioni e posizionamento delle sezioni in flash a tempo di compilazione. Gli artefatti risultanti—librerie leggere, collegabili e prive di dipendenze a runtime—si integrano facilmente nei firmware embedded e nei workflow di continuous integration (CI). I risultati sperimentali su target Cortex-M e x86 dimostrano come Zant si rapporta a framework esistenti, offrendo al contempo maggiore prevedibilità e trasparenza. Questo lavoro propone Zant come una base modulare e portabile per l'inferenza deterministica su piattaforme embedded, colmando il divario tra gli strumenti di machine learning moderni e i vincoli stringenti dei sistemi edge.
File allegati
File Dimensione Formato  
Executive_Summary___Mirko_Calvi___Zant__Lightweight_Neural_Network_Inference_Engine_for_Microcontrollers.pdf

accessibile in internet per tutti

Descrizione: Executive Summary Zant
Dimensione 605.18 kB
Formato Adobe PDF
605.18 kB Adobe PDF Visualizza/Apri
Tesi_Zant.pdf

accessibile in internet per tutti

Descrizione: Thesis Zant
Dimensione 1.02 MB
Formato Adobe PDF
1.02 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/247070