91259 - ARCHITECTURES AND PLATFORMS FOR ARTIFICIAL INTELLIGENCE

Anno Accademico 2024/2025

  • Docente: Moreno Marzolla
  • Crediti formativi: 6
  • SSD: INF/01
  • Lingua di insegnamento: Inglese
  • Moduli: Moreno Marzolla (Modulo 1) Davide Rossi (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)

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:

  1. Introduzione alla programmazione parallela.
  2. Pattern per la programmazione parallela: embarassingly parallel, decomposition, master/worker, scan, reduce, ...
  3. Programmazione di architetture a memoria condivisa con OpenMP.
  4. Il modello di programmazione OpenMP: il costrutto “omp parallel”, i costrutti di scoping, altri costrutti per la suddivisione del lavoro.
  5. Programmazione di GPU con CUDA.

Modulo 2:

  1. From ML to DNNs - a computational perspective
    1. Introduction to key computational kernels (dot-product, matrix multiply...)
    2. Inference vs training - workload analysis characterization
    3. The NN computational zoo: DNNs, CNNs, RNNs, GNNs, Attention-based Networks
  2. Running ML workloads on programmable processors
    1. recap of processor instruction set architecture (ISA) with focus on data processing
    2. improving processor ISAs for ML: RISC-V and ARM use cases
    3. fundamentals of parallel processor architecture and parallelization of ML workloads
  3. Algorithmic optimizations for ML
    1. Key bottlenecks taxonomy of optimization techniques
    2. Algorithmic techniques: Strassen, Winograd, FFT
    3. Topology optimization: efficient NN models - depthwise convolutions, inverse bottleneck, introduction to Neural Architectural Search

Testi/Bibliografia

Letture consigliate per il modulo 1:

An Introduction to Parallel Programming
Peter Pacheco,
Morgan Kaufmann, 2011, ISBN 9780123742605
https://shop.elsevier.com/books/an-introduction-to-parallel-programming/pacheco/978-0-12-374260-5
Nota: è stata pubblicata nel 2021 una versione aggiornata di questo libro, coautorata con Matthew Malensek.

CUDA C programming guide
NVidia Corporation
http://docs.nvidia.com/cuda/cuda-c-programming-guide/

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

Modulo 1: Progetto di programmazione accompagnato da una relazione scritta.

Modulo 2: Prova scritta e orale.

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 Davide Rossi