Ingegneria Informatica e dell’Intelligenza Artificiale Applicata LM-32
Intelligenza artificiale scalabile
| Settore scientifico disciplinare | Numero crediti formativi (CFU) | Docente |
| ING-INF/05 | 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
Machine learning distribuito: Data Ingestion (1 CFU)
1. Introduzione ai sistemi di machine learning distribuiti
2. Data ingestion pattern
3. Batching pattern
4. Sharding pattern
5. Caching pattern
Pattern per il training e serving di modelli in sistemi distribuiti (1.2 CFU)
1. Introduzione Pattern per il training distribuito: Parameter server pattern
2. Collective communication pattern
3. Elasticity e fault-tolerance pattern
4. Replicated services pattern
5. Sharded-service pattern
6. Event-driven processing pattern
Workflow patterns (2 CFU)
1. Workflow and patterns
2. Fan-in Fan-out pattern
3. Synchronous and asynchronous pattern
4. Step memoization pattern
5. Operation patterns:
Scheduling pattern
Metadata pattern
6. Machine learning workflow
Project overview
Data ingestion
Model training
7. Machine learning workflow (2)
Model serving
End-to-end workflow
8. Machine learning frameworks: Tensorflow
9. Machine learning frameworks: Kubernetes and kubeflow
10. Machine learning frameworks: Argo workflows
High-Performance Computing (HPC) (2 CFU)
1. Introduzione a High-Performance Computing (HPC)
2. Memorie gerarchiche
3. Instruction-level and data-level parallelism
4. Thread-level parallelism
5. Domain-Specific Architectures
GPU accelerated Deep learning (2.8 CFU)
1. GPU accelerated Deep learning
2. Architetture di GPU
3. GPU workloads
4. Advanced GPU programming for deep learning
5. Distributed and multi-gpu training strategies
Obiettivi
L’insegnamento si propone di fornire agli studenti conoscenze e competenze sullo sviluppo di sistemi di AI scalabili. Dopo una iniziale panoramica sui fondamenti architetturali per il calcolo distribuito e ad alte prestazioni, l’insegnamento offre poi una dettagliata panoramica sullo stato dell'arte delle tecniche, degli operatori e dei modelli di Deep Learning large-scale orientati alla comprensione visuale, alla comprensione e alla generazione di testo, alla gestione di serie temporali e all'integrazione di multiple modalita', con particolare riferimento al modello a Transformer e le sue derivazioni. Infine, sono presentate le tecniche per l'addestramento di reti su larga scala e su dataset di dimensioni massive e presentati gli ambienti HPC e le tecniche di scheduling delle risorse.
L’insegnamento contribuisce anche al potenziamento delle capacita' trasversali Autonomia di giudizio, Abilita' comunicative e Capacita' di apprendimento degli studenti.
Verifica
Aggiornato al 30/4/2026 - Valido fino a nuove indicazioni.
Al termine del corso e' previsto lo svolgimento di un esame di profitto composto da due parti:
1. Parte progettuale (le cui specifiche sono descritte di seguito)
2. Prova teorica
La valutazione finale e' calcolata come la somma tra il risultato della prova teorica e da 0 a 5 punti bonus per chi svolge la parte progettuale.
Lo svolgimento del progetto NON e' obbligatorio.
La votazione di 30 e lode vale come 31.
La prova teorica e' volta a dimostrare la conoscenza degli argomenti trattati durante le lezioni e, in particolare, le conoscenze teoriche introdotte dal corso.
DESCRIZIONE GENERALE DEL PROGETTO
-----------------------------------
Il progetto costituisce una prova obbligatoria e rappresenta un prerequisito necessario per accedere alla prova teorica. Consiste nella realizzazione di un sistema di machine learning distribuito per la risoluzione di un task a scelta dello studente.
APPROVAZIONE PREVENTIVA
-----------------------------------
Prima di iniziare l'implementazione, lo studente deve richiedere la conferma del docente sulla proposta di progetto. La proposta deve descrivere sinteticamente il task che si intende risolvere, i dati che si intende utilizzare e i pattern architetturali che si intende implementare.
Esempio: "Vorrei implementare un sistema che risolve il task di classificazione del sentiment, utilizzando dataset da Hugging Face, implementando i pattern fan-out, step memoization e metadata."
Il docente potra' approvare la proposta, richiedere modifiche o suggerire alternative piu' adatte agli obiettivi del corso. L'interazione puo' avvenire tramite email: luigi.asprino@uniroma5.it
MODALITA' DI SVOLGIMENTO
-----------------------------------
1. Progetto Individuale - Implementazione
La modalita' standard. Lo studente realizza un sistema di machine learning che addestra un nuovo modello per risolvere un task a scelta.
2. Progetto di Gruppo (max 2 persone)
E' possibile richiedere al docente di svolgere il progetto in coppia. Il carico di lavoro complessivo (task, dati, pattern implementati, complessita' del sistema) deve essere concordato preventivamente con il docente, che valutera' se e' adeguatamente maggiore rispetto al progetto individuale.
3. Progetto Individuale - Approfondimento (Ricerca Scientifica)
In alternativa all'implementazione, e' possibile proporre un approfondimento scientifico relativo agli argomenti del corso. Lo studente dovra' produrre una rassegna critica della letteratura su un tema specifico (es. un pattern architetturale, una tecnica di training distribuito, un'applicazione di ML su larga scala), concordando modalita' e perimetro con il docente prima di iniziare.
Tutte le modalita' richiedono l'approvazione preventiva del docente.
REQUISITI TECNICI (PROGETTO DI IMPLEMENTAZIONE)
-----------------------------------
Implementazione
Il sistema puo' 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 e' obbligatorio utilizzarle tutte.
Addestramento del Modello
Il progetto deve prevedere l'addestramento di un nuovo modello, utilizzando l'algoritmo e i dati a scelta dello studente. Non e' sufficiente utilizzare modelli pre-addestrati senza una fase di training propria.
Pattern Architetturali
Il sistema deve implementare uno o piu' pattern architetturali visti a lezione.
DATI DI ADDESTRAMENTO
-----------------------------------
Per reperire i dati su cui addestrare il modello, gli studenti possono fare riferimento alle seguenti sorgenti pubbliche:
- Hugging Face Datasets: https://huggingface.co/datasets
Raccolta di migliaia di dataset per NLP, computer vision, audio e altri domini.
- Kaggle: https://www.kaggle.com/datasets
Piattaforma con un vasto catalogo di dataset pubblici per ML.
- TensorFlow Datasets: https://www.tensorflow.org/datasets
Collezione di dataset integrata nativamente con TensorFlow e altri framework Python.
Gli studenti sono liberi di utilizzare anche altre sorgenti, purche' nel rispetto delle relative licenze d'uso.
CONSEGNA
-----------------------------------
Scadenza
Al fine del conteggio come voto finale l’elaborato deve essere consegnato e discusso prima della prova teorica.
Modalita' di consegna
La modalita' preferita e' tramite repository GitHub (pubblico o condiviso con il docente). Una volta completato, lo studente invia una mail a luigi.asprino@uniroma5.it indicando il repository. In alternativa, e' possibile inviare un archivio compresso via email.
Materiale da consegnare
- Codice sorgente del sistema, organizzato in modo chiaro e modulare
- README con istruzioni per installare le dipendenze ed eseguire il software
- Report (1-2 pagine in PDF) con scelte progettuali, pattern implementati, dati utilizzati e risultati della valutazione del modello (almeno una metrica, es. accuracy, F1-score, loss)
- File di dipendenze (es. requirements.txt o environment.yml)
- Seed casuali fissati nel codice dove applicabile
DISCUSSIONE ORALE ONLINE
-----------------------------------
Gli studenti saranno convocati per una breve discussione orale online. Le domande potranno riguardare la comprensione del codice scritto, ad esempio: "Cosa fa questa istruzione?", "Cosa succede se modifico questa istruzione in questo modo?", "Come faccio ad aggiungere questa funzionalita'?"
CRITERI DI VALUTAZIONE
-----------------------------------
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. Qualita' e pertinenza dei pattern architetturali
I pattern devono essere usati in modo appropriato e motivato, non inseriti artificialmente. Viene valutato se lo studente ha compreso perche' un certo pattern e' utile nel contesto del proprio sistema.
3. Qualita' del report
Chiarezza, completezza e capacita' di sintesi. Il report deve descrivere le scelte progettuali, i pattern implementati, i dati usati e i risultati con almeno una metrica quantitativa.
4. Qualita' del codice
Leggibilita', organizzazione modulare, presenza di commenti, chiarezza del README e riproducibilita' dell'esecuzione.
5. Discussione orale
Capacita' di spiegare e motivare le scelte fatte, rispondere a domande sul codice e ragionare su possibili modifiche o estensioni del sistema.
USO DI STRUMENTI BASATI SU LLM
-----------------------------------
L'uso di strumenti come GitHub Copilot, ChatGPT o Claude e' consentito per velocizzare la scrittura del codice, a condizione che venga fatto in modo etico e responsabile.
- Lo studente e' pienamente responsabile di tutto il codice consegnato.
- Il codice generato automaticamente deve essere compreso, verificato e integrato consapevolmente.
- L'uso di LLM non deve essere un modo per aggirare l'apprendimento.
- Nella discussione orale il docente verifichera' la comprensione effettiva del codice. Non saper rispondere e' considerato un segnale di disonesta' accademica.
- E' buona pratica dichiarare nel report 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 in lista, purche' coerenti con i contenuti del corso.
Lezioni
Introduzione al corso di Intelligenza Artificiale Scalabile