Ingegneria Informatica e dell’Intelligenza Artificiale Applicata LM-32
Intelligenza artificiale scalabile
| Settore scientifico disciplinare | Numero crediti formativi (CFU) | Docente |
| ING-INF/05 (IINF-05/A) | 9 | -- Nessun gestore -- |
Risorse
Oltre alle dispense messe a disposizione dal docente, gli studenti potranno approfondire gli argomenti del corso sui seguenti testi:
1. Tang, Y. (2024). Distributed machine learning patterns. Shelter Island, NY: Manning Publications. ISBN 978-1-61729-902-5.
2. Hennessy, J. L., & Patterson, D. A. (2019). Computer architecture: A quantitative approach (6th ed.). Amsterdam: Morgan Kaufmann / Elsevier.
3. Ramchandra S Mangrulkar and Pallavi Vijay Chavan (2025). GPU-Accelerated Deep Learning: Essential GPU Ideas, Deep Learning Frameworks, and Optimization Approaches. Apress. ISBN 979-8-8688-2082-3
Descrizione
Modulo 1 – Fondamenti dei sistemi ML distribuiti e pattern di data ingestion (1 CFU)
1. Introduzione ai sistemi di machine learning distribuiti 2. Pattern per Data Ingestion 3. Batching Pattern 4. Sharding Pattern 5. Caching Pattern Modulo 2 – Pattern per il training distribuito e il model serving (1.2 CFU) 6. Pattern per il training distribuito: Parameter Server Pattern 7. Collective Communication Pattern 8. Elasticity e fault-tolerance pattern 9. Model serving patterns: Replicated services pattern 10. Model serving patterns: Sharded-service pattern 11. Event-driven processing pattern Modulo 3 – Workflow, operations e progettazione end-to-end di un sistema ML (1.2 CFU) 12. Workflow patterns 13. Fan-in Fan-out pattern 14. Synchronous and asynchronous pattern 15. Step memorization pattern 16. Operation patterns 17. Machine learning workflow: project overview and system architecture Modulo 4 – Fondamenti di HPC: gerarchie di memoria e parallelismo a livello istruzione (1 CFU) 18. Introduzione ai sistemi di High-Performance Computing (HPC) 19. Progettazione di gerarchie di memoria 20. Parallelismo a livello istruzione 21. Scheduling Dinamico ed Esecuzione Speculativa 22. Sfruttare il Parallelismo a Livello di Istruzione: Emissione Multipla, Scheduling Dinamico e Speculazione Modulo 5 – Throughput e parallelismo a livello dati: architetture vettoriali e SIMD (0.8 CFU) 23. Tecniche Architetturali per il Miglioramento del Throughput nei Processori Moderni 24. Architetture vettoriali e parallelismo a livello dati 25. Estensioni SIMD dell'insieme di istruzioni per il multimediale 26. Rilevamento e miglioramento del parallelismo a livello di ciclo Modulo 6 – Parallelismo a livello thread e sistemi multiprocessore (1 CFU) 27. Parallelismo a Livello di Thread: Architetture Multiprocessore e Modelli MIMD 28. Prestazioni dei Multiprocessori a Memoria Condivisa 29. Memoria Condivisa Distribuita e Coerenza basata su Directory 30. Sincronizzazione e Consistenza della Memoria nei Sistemi Multiprocessore 31. Processori Multicore: Prestazioni, Scalabilità e Fallacie di Valutazione Modulo 7 – Warehouse-scale computer e architetture specifiche di dominio (0.8 CFU) 32. Warehouse-scale Computers: Architettura, Modelli di Programmazione e Carichi di Lavoro 33. Warehouse-scale Computers: Architettura di Rete, Efficienza dei Costi e Cloud Computing 34. Warehouse-Scale Computer: Rete, Efficienza Energetica e il Caso Google 35. Architetture Specifiche di Dominio: Linee Guida e il Caso delle Reti Neurali Profonde Modulo 8 – Deep learning con GPU: dai modelli al deployment (1 CFU) 36. Deep Learning con GPU: Introduzione, Reti Convoluzionali e Reti Ricorrenti 37. Deep Learning con GPU: Accelerazione Hardware e Addestramento di un Modello 38. Framework di Deep Learning e Configurazione del Supporto GPU 39. Deep Learning con GPU: Strategie Multi-GPU, Ottimizzazione della Memoria e Deployment 40. Deep Learning con GPU: Transfer Learning e Fine-Tuning di Modelli Pre-addestrati Modulo 9 – Programmazione GPU con CUDA e training distribuito su larga scala (1 CFU) 41. Ricerca Vettoriale e Fine-Tuning Accelerati da GPU 42. Il Modello di Programmazione CUDA 43. Programmazione e Ottimizzazione GPU in CUDA 44. Addestramento Distribuito e Multi-GPU 45. Framework, Cloud/HPC e Monitoraggio per il Training Distribuito
Altro
Le lezioni di Didattica Sincrona per il primo semestre dell'anno accademico 2026/27 si svolgeranno secondo il seguente calendario
8 ottobre 14:00 - 16:00
15 ottobre 14:00 - 16:00
22 ottobre 14:00 - 16:00
5 novembre 14:00 - 16:00
12 novembre 14:00 - 16:00
19 novembre 14:00 - 16:00
26 novembre 14:00 - 16:00
10 dicembre 14:00 - 16:00
17 dicembre 14:00 - 16:00
Verifica
MODALITÀ D'ESAME
-----------------------------------
L'esame si compone di due parti:
1. Prova teorica (obbligatoria)
2. Progetto (opzionale)
La prova teorica si svolge secondo le modalità previste dall'ateneo per
l'A.A. 2026/2027 (prova intermedia online + prova di profitto finale in
presenza) e ha lo scopo di verificare la conoscenza degli argomenti trattati
a lezione, in particolare dei contenuti teorici introdotti dal corso. Le
regole e il programma delle due prove sono descritti nella sezione PROVA
TEORICA.
Il progetto è opzionale. Se svolto, dà diritto a un bonus fino a un massimo
di 5 punti, che si somma al punteggio conseguito nella prova teorica. Il
bonus viene calcolato secondo quanto indicato nella sezione CALCOLO DEL
BONUS. Il progetto deve essere consegnato e discusso prima della prova
intermedia (si veda la sezione CONSEGNA).
PROVA TEORICA
-----------------------------------
A partire dalla sessione di novembre 2026 la prova teorica è suddivisa, per
disposizione di Ateneo, in due prove distinte:
1. Prova intermedia online
2. Prova di profitto finale in presenza
Entrambe le prove consistono in domande a risposta multipla sui contenuti
delle videolezioni e delle dispense pubblicate in piattaforma. Il formato
delle prove (numero di quesiti, durata, punteggio), le date degli appelli e
le prenotazioni sono stabiliti dall'Ateneo: per questi aspetti si rimanda
alle comunicazioni ufficiali e alla segreteria.
Le due prove riguardano parti diverse del programma, come indicato di
seguito.
ORGANIZZAZIONE DIDATTICA ESAMI 2026/2027
1. Lezioni da studiare per la PROVA INTERMEDIA ONLINE
(lezioni 1-35, Moduli 1-7, oltre all'introduzione al corso)
Modulo 1 – Fondamenti dei sistemi ML distribuiti e pattern di data
ingestion
1. Introduzione ai sistemi di machine learning distribuiti
2. Pattern per Data Ingestion
3. Batching Pattern
4. Sharding Pattern
5. Caching Pattern
Modulo 2 – Pattern per il training distribuito e il model serving
6. Pattern per il training distribuito: Parameter Server Pattern
7. Collective Communication Pattern
8. Elasticity e fault-tolerance pattern
9. Model serving patterns: Replicated services pattern
10. Model serving patterns: Sharded-service pattern
11. Event-driven processing pattern
Modulo 3 – Workflow, operations e progettazione end-to-end di un
sistema ML
12. Workflow patterns
13. Fan-in Fan-out pattern
14. Synchronous and asynchronous pattern
15. Step memorization pattern
16. Operation patterns
17. Machine learning workflow: project overview and system architecture
Modulo 4 – Fondamenti di HPC: gerarchie di memoria e parallelismo a
livello istruzione
18. Introduzione ai sistemi di High-Performance Computing (HPC)
19. Progettazione di gerarchie di memoria
20. Parallelismo a livello istruzione
21. Scheduling Dinamico ed Esecuzione Speculativa
22. Sfruttare il Parallelismo a Livello di Istruzione: Emissione
Multipla, Scheduling Dinamico e Speculazione
Modulo 5 – Throughput e parallelismo a livello dati: architetture
vettoriali e SIMD
23. Tecniche Architetturali per il Miglioramento del Throughput nei
Processori Moderni
24. Architetture vettoriali e parallelismo a livello dati
25. Estensioni SIMD dell'insieme di istruzioni per il multimediale
26. Rilevamento e miglioramento del parallelismo a livello di ciclo
Modulo 6 – Parallelismo a livello thread e sistemi multiprocessore
27. Parallelismo a Livello di Thread: Architetture Multiprocessore e
Modelli MIMD
28. Prestazioni dei Multiprocessori a Memoria Condivisa
29. Memoria Condivisa Distribuita e Coerenza basata su Directory
30. Sincronizzazione e Consistenza della Memoria nei Sistemi
Multiprocessore
31. Processori Multicore: Prestazioni, Scalabilità e Fallacie di
Valutazione
Modulo 7 – Warehouse-scale computer e architetture specifiche di
dominio
32. Warehouse-scale Computers: Architettura, Modelli di Programmazione e
Carichi di Lavoro
33. Warehouse-scale Computers: Architettura di Rete, Efficienza dei
Costi e Cloud Computing
34. Warehouse-Scale Computer: Rete, Efficienza Energetica e il Caso
Google
35. Architetture Specifiche di Dominio: Linee Guida e il Caso delle Reti
Neurali Profonde
2. Lezioni da studiare per la PROVA DI PROFITTO FINALE IN PRESENZA
(ultime 10 videolezioni del corso: lezioni 36-45, Moduli 8-9)
Modulo 8 – Deep learning con GPU: dai modelli al deployment
36. Deep Learning con GPU: Introduzione, Reti Convoluzionali e Reti
Ricorrenti
37. Deep Learning con GPU: Accelerazione Hardware e Addestramento di un
Modello
38. Framework di Deep Learning e Configurazione del Supporto GPU
39. Deep Learning con GPU: Strategie Multi-GPU, Ottimizzazione della
Memoria e Deployment
40. Deep Learning con GPU: Transfer Learning e Fine-Tuning di Modelli
Pre-addestrati
Modulo 9 – Programmazione GPU con CUDA e training distribuito su larga
scala
41. Ricerca Vettoriale e Fine-Tuning Accelerati da GPU
42. Il Modello di Programmazione CUDA
43. Programmazione e Ottimizzazione GPU in CUDA
44. Addestramento Distribuito e Multi-GPU
45. Framework, Cloud/HPC e Monitoraggio per il Training Distribuito
Bonus della didattica sincrona
La frequenza delle lezioni sincrone dà diritto a un bonus: 1 punto con una
frequenza di almeno il 50% delle lezioni, 2 punti con almeno il 75%. Una
lezione è considerata frequentata se è stata seguita in diretta per almeno
il 50% della sua durata e se il test associato è stato superato con almeno
l'80% di risposte corrette; la visione della registrazione non sostituisce
la presenza. Il bonus vale solo se l'esame è superato (almeno 18/30),
concorre alla lode e resta valido per un anno accademico.
Materiale d'esame
Le prove vertono sulle dispense pubblicate in piattaforma. Quando vengono
pubblicate nuove versioni delle dispense, le domande d'esame restano
invariate per almeno 2 mesi.
DESCRIZIONE GENERALE DEL PROGETTO
-----------------------------------
Il progetto consiste nella realizzazione di un sistema di machine learning
distribuito per la risoluzione di un task a scelta dello studente. In
alternativa, è possibile svolgere un approfondimento scientifico (si veda la
sezione MODALITÀ DI SVOLGIMENTO).
APPROVAZIONE PREVENTIVA
-----------------------------------
Tutte le modalità di svolgimento richiedono l'approvazione preventiva del
docente. Prima di iniziare, lo studente invia una proposta via email a
luigi.asprino@uniroma5.it.
Per i progetti di implementazione, la proposta descrive sinteticamente il
task da risolvere, i dati da utilizzare, i pattern architetturali da
implementare e le componenti del bonus che si intendono realizzare.
Esempio: "Vorrei implementare un sistema che risolve il task di
classificazione del sentiment, utilizzando dataset da Hugging Face e
implementando i pattern fan-out, step memoization e metadata."
Per gli approfondimenti scientifici, la proposta descrive il tema e il
perimetro della rassegna.
Il docente può approvare la proposta, richiedere modifiche o suggerire
alternative più adatte agli obiettivi del corso.
MODALITÀ DI SVOLGIMENTO
-----------------------------------
1. Progetto individuale – Implementazione
È la modalità standard. Lo studente realizza un sistema di machine
learning che addestra un nuovo modello per risolvere un task a scelta.
2. Progetto di gruppo – Implementazione (max 2 persone)
È possibile chiedere al docente di svolgere il progetto in coppia. Il
carico di lavoro complessivo (task, dati, pattern implementati,
complessità del sistema) deve essere concordato preventivamente con il
docente, che valuterà se è adeguatamente maggiore rispetto a quello di un
progetto individuale.
3. Progetto individuale – Approfondimento scientifico
In alternativa all'implementazione, lo studente produce una rassegna
critica della letteratura su un tema specifico del corso (ad esempio un
pattern architetturale, una tecnica di training distribuito,
un'applicazione di ML su larga scala). Modalità, perimetro e bonus
attribuibile vanno concordati con il docente prima di iniziare.
REQUISITI TECNICI (PROGETTI DI IMPLEMENTAZIONE)
-----------------------------------
Tecnologie
Il sistema può essere implementato con tecnologie a scelta dello studente
(linguaggio di programmazione, librerie, piattaforma). A titolo di esempio:
Python, TensorFlow/PyTorch, Docker, Kubernetes, Kubeflow, Argo Workflows.
Non è obbligatorio utilizzarle tutte.
Addestramento del modello
Il progetto deve prevedere l'addestramento di un nuovo modello, con
algoritmo e dati a scelta dello studente. Non è sufficiente utilizzare
modelli pre-addestrati senza una fase di training propria.
Pattern architetturali
Il sistema deve implementare uno o più pattern architetturali visti a
lezione.
CALCOLO DEL BONUS (PROGETTI DI IMPLEMENTAZIONE)
-----------------------------------
Il bonus, fino a un massimo di 5 punti, si ottiene sommando i punti delle
seguenti componenti (1 punto ciascuna):
Task complesso (1 punto)
Il sistema affronta un task complesso (es. object detection,
segmentazione, NER, traduzione automatica, question answering, riassunto,
generazione di testo o immagini, riconoscimento del parlato, task su
video). I task semplici (es. classificazione di testi o di immagini) non
danno punti per questa componente.
Dati reali (1 punto)
Il modello è addestrato su un dataset reale (es. da Hugging Face, Kaggle,
TensorFlow Datasets) anziché su dati sintetici o dataset giocattolo.
Esecuzione multiprocesso (1 punto)
Il workflow è eseguito da più processi coordinati (es. più worker, più
container o più nodi).
Containerizzazione o cloud (1 punto)
Il sistema è containerizzato (es. Docker, Kubernetes) oppure è distribuito
su una piattaforma cloud.
Pattern architetturali (1 punto)
I pattern architetturali visti a lezione sono implementati in modo
appropriato e motivato rispetto al sistema.
Ogni punto viene assegnato solo se la componente corrispondente funziona
correttamente ed è spiegata in modo adeguato durante la discussione orale
(si veda la sezione CRITERI DI VALUTAZIONE).
DATI DI ADDESTRAMENTO
-----------------------------------
Per reperire i dati su cui addestrare il modello si possono utilizzare, ad
esempio, le seguenti sorgenti pubbliche:
- Hugging Face Datasets: https://huggingface.co/datasets
Migliaia di dataset per NLP, computer vision, audio e altri domini.
- Kaggle: https://www.kaggle.com/datasets
Ampio catalogo di dataset pubblici per ML.
- TensorFlow Datasets: https://www.tensorflow.org/datasets
Dataset integrati nativamente con TensorFlow e altri framework Python.
È possibile utilizzare anche altre sorgenti, nel rispetto delle relative
licenze d'uso.
CONSEGNA
-----------------------------------
Scadenza
Il progetto deve essere consegnato almeno 2 settimane prima della data
scelta per la prova intermedia, e discusso prima di essa.
Modalità di consegna
La consegna avviene via email a luigi.asprino@uniroma5.it, allegando:
- il PDF del report;
- il link al repository del progetto (in alternativa, un archivio
compresso);
- la data in cui si intende sostenere la prova intermedia.
Il docente proporrà successivamente una data per la discussione orale.
Materiale da consegnare (progetti di implementazione)
- Codice sorgente del sistema, organizzato in modo chiaro e modulare
- README con le istruzioni per installare le dipendenze ed eseguire il
software
- File delle dipendenze (es. requirements.txt o environment.yml)
- Seed casuali fissati nel codice, dove applicabile
- Report (1-2 pagine, PDF) con scelte progettuali, pattern implementati,
dati utilizzati, componenti del bonus realizzate e risultati della
valutazione del modello (almeno una metrica, es. accuracy, F1-score,
loss)
Materiale da consegnare (approfondimento scientifico)
- Rassegna critica in PDF, con lunghezza e struttura concordate con il
docente
DISCUSSIONE ORALE ONLINE
-----------------------------------
Lo studente sarà convocato per una breve discussione orale online.
Per i progetti di implementazione, le domande riguarderanno la comprensione
del codice consegnato, ad esempio: "Cosa fa questa istruzione?", "Cosa
succede se modifico questa istruzione in questo modo?", "Come aggiungerei
questa funzionalità?"
Per gli approfondimenti scientifici, le domande riguarderanno i lavori
analizzati e le considerazioni critiche presentate nella rassegna.
CRITERI DI VALUTAZIONE
-----------------------------------
Progetti di implementazione
1. Correttezza e funzionamento
Il sistema deve essere eseguibile e produrre risultati coerenti con il
task scelto. Il codice non deve contenere errori bloccanti e il modello
deve essere effettivamente addestrato.
2. Qualità e pertinenza dei pattern architetturali
I pattern devono essere usati in modo appropriato e motivato, non
inseriti artificialmente. Si valuta se lo studente ha compreso perché un
certo pattern è utile nel contesto del proprio sistema.
3. Qualità del report
Chiarezza, completezza e capacità di sintesi. Il report deve descrivere
scelte progettuali, pattern implementati, dati utilizzati e risultati,
con almeno una metrica quantitativa.
4. Qualità del codice
Leggibilità, organizzazione modulare, presenza di commenti, chiarezza
del README e riproducibilità dell'esecuzione.
5. Complessità del progetto
Determina il bonus massimo ottenibile (si veda la sezione CALCOLO DEL
BONUS).
6. Discussione orale
Capacità di spiegare e motivare le scelte fatte, rispondere a domande
sul codice e ragionare su possibili modifiche o estensioni del sistema.
Approfondimenti scientifici
Si valutano la pertinenza e la completezza della letteratura considerata,
la capacità di analisi critica, la chiarezza espositiva e la discussione
orale.
USO DI STRUMENTI BASATI SU LLM
-----------------------------------
L'uso di strumenti come GitHub Copilot, ChatGPT o Claude è consentito, a
condizione che avvenga in modo etico e responsabile.
- Lo studente è pienamente responsabile di tutto il materiale consegnato.
- Il codice e i testi generati automaticamente devono essere compresi,
verificati e integrati consapevolmente.
- L'uso di LLM non deve essere un modo per aggirare l'apprendimento.
- Durante la discussione orale il docente verificherà la comprensione
effettiva del materiale consegnato. Non saper rispondere è considerato un
segnale di disonestà accademica.
- Nel report va dichiarato se e come sono stati utilizzati strumenti LLM.
TASK SUGGERITI (LISTA NON ESAUSTIVA)
-----------------------------------
Natural Language Processing
- Classificazione del testo (es. analisi del sentiment, rilevamento di
spam, classificazione di notizie)
- Named Entity Recognition (NER)
- Traduzione automatica
- Question answering su documenti
- Riassunto automatico di testi
- Text generation / completamento del testo
Elaborazione di immagini
- Classificazione di immagini (es. riconoscimento di oggetti, scene, cifre)
- Object detection (rilevamento e localizzazione di oggetti)
- Segmentazione semantica o per istanze
- Riconoscimento facciale o di espressioni
- Super-resolution e denoising di immagini
- Generazione di immagini (es. con modelli generativi)
Elaborazione video
- Classificazione di azioni in video (action recognition)
- Rilevamento di anomalie in sequenze video
- Object tracking (tracciamento di oggetti nel tempo)
- Video captioning (descrizione automatica di video)
Elaborazione audio
- Riconoscimento automatico del parlato (ASR / speech-to-text)
- Classificazione di suoni o eventi acustici
- Rilevamento di parole chiave (keyword spotting)
- Identificazione del parlante (speaker identification)
- Classificazione di generi musicali
Il docente si riserva di approvare task diversi da quelli elencati, purché
coerenti con i contenuti del corso.
Lezioni
Introduzione al corso di Intelligenza Artificiale Scalabile
Introduzione ai sistemi di machine learning distribuiti
Pattern per Data Ingestion
Batching Pattern
Sharding pattern
Caching Pattern
Pattern per il training distribuito: Parameter Server Pattern
Collective Communication Pattern
Elasticity e fault-tolerance pattern
Model serving patterns: Replicated services pattern
Model serving patterns: Sharded-service pattern
Event-driven processing pattern
Workflow patterns
Fan-in Fan-out pattern
Synchronous and asynchronous pattern
Step memorization pattern
Operation patterns
Machine learning workflow: project overview and system architecture
Introduzione ai sistemi di High-Performance Computing (HPC)
Progettazione di gerarchie di memoria
Parallelismo a livello istruzione
Scheduling Dinamico ed Esecuzione Speculativa
Sfruttare il Parallelismo a Livello di Istruzione: Emissione Multipla, Scheduling Dinamico e Speculazione
Tecniche Architetturali per il Miglioramento del Throughput nei Processori Moderni
Architetture vettoriali e parallelismo a livello dati
Estensioni SIMD dell'insieme di istruzioni per il multimediale?
Rilevamento e miglioramento del parallelismo a livello di ciclo
Parallelismo a Livello di Thread: Architetture Multiprocessore e Modelli MIMD
Prestazioni dei Multiprocessori a Memoria Condivisa
Memoria Condivisa Distribuita e Coerenza basata su Directory
Sincronizzazione e Consistenza della Memoria nei Sistemi Multiprocessore
Processori Multicore: Prestazioni, Scalabilità e Fallacie di Valutazione
Warehouse-scale Computers: Architettura, Modelli di Programmazione e Carichi di Lavoro
Warehouse-scale Computers: Architettura di Rete, Efficienza dei Costi e Cloud Computing
Warehouse-Scale Computer: Rete, Efficienza Energetica e il Caso Google
Architetture Specifiche di Dominio: Linee Guida e il Caso delle Reti Neurali Profonde
Deep Learning con GPU: Introduzione, Reti Convoluzionali e Reti Ricorrenti
Deep Learning con GPU: Accelerazione Hardware e Addestramento di un Modello
Framework di Deep Learning e Configurazione del Supporto GPU
Deep Learning con GPU: Strategie Multi-GPU, Ottimizzazione della Memoria e Deployment
Deep Learning con GPU: Transfer Learning e Fine-Tuning di Modelli Pre-addestrati
Ricerca Vettoriale e Fine-Tuning Accelerati da GPU
Il Modello di Programmazione CUDA
Programmazione e Ottimizzazione GPU in CUDA
Addestramento Distribuito e Multi-GPU
Framework, Cloud/HPC e Monitoraggio per il Training Distribuito