Nuova ricerca

Rita CUCCHIARA

Professore Ordinario
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Scalable AI

Ingegneria informatica (Offerta formativa 2023)

Obiettivi formativi

Il corso vuole fornire conoscenze e competenze sullo sviluppo di sistemi di Artificial Intelligence (AI) scalabili. Fornisce una iniziale panoramica sui fondamenti architetturali per il calcolo distribuito e ad alte prestazioni (CPU, GPU, calcolo distribuito su multiple GPU e su multipli nodi). Il corso 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, la comprensione e la generazione di testo, la gestione di serie temporali e l'integrazione di multiple modalità, con particolare riferimento al modello a Transformer e le sue derivazioni. Vengono presentate le tecniche per l'addestramento di reti su larga scala e su dataset di dimensioni massive (modelli semi- e self- supervisionati, learning contrastivo, leggi di scaling). La parte finale del corso è infine dedicata alla presentazione di ambienti HPC e delle tecniche di scheduling delle risorse. Una parte importante del corso viene svolta in maniera laboratoriale, attraverso l'uso della libreria PyTorch e di librerie per il training distribuito, anche eseguendo su piattaforme di calcolo HPC.

Prerequisiti

Sono richieste conoscenze di base sull'architettura dei calcolatori, la teoria della probabilità, il Deep Learning (ottimizzatori, reti neurali completamente connesse e ricorrenti), e il Deep Learning applicato alla Computer Vision (architetture CNNs stato dell'arte, accenni di CNNs applicate all'object detection, semantic segmentation).

Programma del corso

1. Hardware and architectural foundations for large-scale AI
CPU vs GPU processing flows
Multi-GPU architectures
Multi-Node architectures
Going parallel: data, model, pipeline, tensor parallelism

2. State-of-the-art Deep Learning architectures for Computer Vision, Natural Language Processing e Multimedia
The attention operator, self-/cross- attention and its variants
The Transformer architecture
Transformer-based models for Language (BERT, BART, GPT-x)
Transformer-based models for Computer Vision (ViT, DeIT, DETR)
Usage of learnable queries, Perceiver, Perceiver.io
Connecting multiple modalities: encoder-decoder, encoder-only and decoder-only approaches
Optimized variants of the attention operator

2. Self- and semi- supervised training approaches for large-scale data
Masked language models, Next Sentence prediction
Noisy labels / Self-training
Contrastive learning
Multi-modal foundation models: CLIP, Flamingo
Scaling laws for Deep Learning architectures
The Mixture of Experts approach

4. Distributed training in the PyTorch environment
PyTorch data parallel
Distributed Data parallel
The torchrun utility
Advanced DDP libraries: horovod, deepspeed
Libraries and SOTA solutions for managing large-scale datasets

3. Training techniques for large-scale models
SGD for large batches, Asyncronous SGD
Mixed Precision training
Zero Redundancy Optimizer(s)
Managing training with large batches

5. Introduction to HPC environments
Architecture of a supercomputer
High-speed network protocols, distributed file systems
Managing resources and the queue: the SLURM queue manager
Practical cases: a small scale (lab-size) cluster, Marconi 100, LEONARDO

Il numero di crediti dell'insegnamento è ripartito equamente tra i punti sopra riportati.

Metodi didattici

Il corso si svolge in presenza e viene erogato in lingua inglese. La maggior parte delle lezioni sono frontali e utilizzano slide e paper scientifici come supporto didattico; circa un 30% delle lezioni è di laboratorio, con esperienze hands-on su librerie di calcolo tensoriale e di progettazione e training di reti neurali anche utilizzando risorse di calcolo distribuite.

La frequenza è fortemente suggerita.

Testi di riferimento

- Slides dai docenti, pubblicate su Moodle
- Paper di riferimento, segnalati sulle slide, e in generale pubblicati in CVPR; NIPS; ICCV; TPAMI
- Testi consigliati:
- Luciano Ramalho, Fluent Python
- Ian Goodfellow and Yoshua Bengio and Aaron Courville, Deep Learning, MIT Press
- Jacob Eisenstein, Introduction to Natural Language Processing
- Sebastian Raschka , Yuxi (Hayden) Liu , Vahid Mirjalili, Machine Learning with PyTorch and Scikit-Learn: Develop machine learning and deep learning models with Python

Verifica dell'apprendimento

L'esame consiste in una prova orale in lingua inglese, con domande di teoria sui contenuti del corso.

Risultati attesi

- Conoscenza avanzata di soluzioni e architetture stato dell'arte di Deep Learning per la Computer Vision, il Natural Language Processing e l'interazione tra multiple modalità.
- Conoscenza degli operatori di Deep Learning stato dell'arte, delle tecniche di training non supervisionate, self-supervisionate e parzialmente supervisionate
- Capacità di prototipare, sviluppare e allenare modelli di Deep Learning su larga scala e con dataset di grandi dimensioni, con particolare riferimento all'utilizzo di cluster distribuiti.
- Conoscenza avanzata del linguaggio Python e capacità di sviluppo autonomo di reti neurali e algoritmi di Deep Learning distribuiti in PyTorch.
- Conoscenza delle strategie per il deployment ottimizzato di architetture neurali.