- Docente: Moreno Marzolla
- Crediti formativi: 6
- SSD: INF/01
- Lingua di insegnamento: Inglese
- Moduli: Moreno Marzolla (Modulo 1) Luca Benini (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Bologna
- Corso: Laurea Magistrale in Artificial Intelligence (cod. 9063)
-
Orario delle lezioni (Modulo 1)
dal 15/09/2025 al 15/12/2025
-
Orario delle lezioni (Modulo 2)
dal 18/09/2025 al 31/10/2025
Conoscenze e abilità da conseguire
Al termine dell'attività formativa, lo studente ha una comprensione approfondita dei requisiti computazionali di workload dei metodi di machine learning. Lo studente conosce le principali architetture per accelerare tali workload, le principali architetture eterogenee per embedded machine learning, e le principali piattaforme in ambiente cloud per fornire supporto specifico ad applicazioni di machine/deep learning.
Contenuti
Modulo 1:
- Introduzione alla programmazione parallela.
- Pattern per la programmazione parallela: embarassingly parallel, decomposition, master/worker, scan, reduce, ...
- Programmazione di architetture a memoria condivisa con OpenMP.: il modello di programmazione OpenMP: il costrutto “omp parallel”, i costrutti di scoping, altri costrutti per la suddivisione del lavoro.
- Programmazione di GPU con CUDA. Architettura CUDA, gerarchia di memoria, modello di programmazione: thread, groups, grid. Primitive di sincronizzazione, memoria condivisa.
Prerequisiti per il modulo 1: buona conoscenza del linguaggio C, uso dell'ambiente Unix/Linux, conoscenze di base delle architetture dei calcolatori e della teoria della concorrenza.
Modulo 2:
From ML to DNNs - a computational perspective
- Introduction to key computational kernels (dot-product, matrix multiply...).
- Inference vs training - workload analysis characterization.
- The NN computational zoo: DNNs, CNNs, RNNs, Attention-based Networks, State Based networks.
Running ML workloads on programmable processors
- recap of processor instruction set architecture (ISA) with focus on data processing.
- improving processor ISAs for ML: RISC-V and ARM use cases.
- fundamentals of parallel processor architecture and parallelization of ML workloads.
Algorithmic optimizations for ML
- Key bottlenecks taxonomy of optimization techniques.
- Algorithmic techniques (e.g. Strassen, Winograd, FFT).
- Model distillation: efficient NN models - depthwise convolutions, inverse bottleneck, optimized attention, introduction to Neural Architectural Search.
- Quantization and sparsity: scalar, block, vector.
Prerequisiti per il modulo 2: Programmazione in linguggio C, concetti di base di architettura dei calcolatori, conoscenze di base di algebra lineare e calcolo vettoriale.
Testi/Bibliografia
Letture consigliate per il modulo 1: parti selezionate dei testi seguenti:
-
Peter Pacheco, Matthew Malensek, An Introduction to Parallel Programming [https://shop.elsevier.com/books/an-introduction-to-parallel-programming/pacheco/978-0-12-804605-0], 2nd ed., Morgan Kaufmann, 2021, ISBN 9780128046050.
-
CUDA C programming guide, NVidia Corporation, freely available at http://docs.nvidia.com/cuda/cuda-c-programming-guide/
Letture consigliate per il modulo 2: parti selezionate dei testi seguenti:
-
Dive into Deep Learning (online: d2l.ai).
-
Efficient Processing of Deep Neural Networks (online: https://link.springer.com/book/10.1007/978-3-031-01766-7 ).
-
Machine Learning Systems (online: mlsysbook.ai).
Metodi didattici
Lezioni convenzionali per la parte di teoria.
I moduli prevedono attività pratiche da svolgere usando il proprio laptop.
Modalità di verifica e valutazione dell'apprendimento
L'esame consiste di due parti indipendenti che possono essere sostenute in qualunque ordine:
Module 1: Progetto di programmazione, che consiste nella progettazione e realizzazione di un programma parallelo accompagnato da una relazione scritta. Il progetto e la relazione devono essere realizzati individualmente da ciascuno studente/studentessa; non è ammessa alcuna forma di collaborazione. Il programma deve essere realizzato su specifiche fornite dal docente, usando C/OpenMP e/o CUDA/C. Non è ammesso l'uso di altri linguaggi di programmazione. La relazione deve avere una lunghezza massima di 6 pagine, e deve descrivere e motivare le strategie di parallelizzazione adottate e analizzare le prestazioni del programma. Il docente si riserva la facoltà di richiedere chiarimenti sotto forma di un breve colloquio orale.
Module 2: Esame scritto e discussione orale: l'esame scritto è obbligatorio e consiste nella risoluzione di problemi e/o nella risposta ad alcuni quiesiti. La prova orale è facoltativa e consiste in una discussione approfondita di argomenti trattati durante le lezioni.
Voto finale: Per ottenere un voto è necessario ottenere una valutazione almeno sufficiente (18 su 30) in entrambi i moduli; il voto finale è la media aritmetica delle valutazioni riportate nei singoli moduli, arrotondata all'intero più vicino. La lode può venire assegnata a giudizio dei docenti per esami di qualità estremamente elevata. Gli esami dei due moduli devono essere sostenuti nello stesso anno accademico (al termine dell'anno accademico si perdono eventuali voti di un singolo modulo). Nota importante: per registrare il voto finale è obbligatorio superare l'esame di entrambi i moduli; in altre parole, non possono venire registrate valutazioni parziali.
Strumenti a supporto della didattica
Proiettore per la parte di teoria.
Esercitazioni pratiche al pc.
Orario di ricevimento
Consulta il sito web di Moreno Marzolla
Consulta il sito web di Luca Benini