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