BIG DATA COMPUTING Canale unico

Docente coordinatore e verbalizzante: DANIELE DE SENSI

Obiettivi formativi

Obiettivi generali
Il corso si propone di introdurre le principali tecniche algoritmiche e di programmazione nell’analisi di big data, affrontando una varietà di problemi di data mining in modelli di calcolo adatti alla gestione di grandi quantità di dati.

Obiettivi specifici
Capacità di analisi, modellazione, e risoluzione di problemi tipici dell'area "Big Data" attraverso l'implementazione di "pipeline" di machine learning su ambienti distribuiti tramite PySpark.

Conoscenza e comprensione:
Al termine del corso gli studenti avranno una comprensione dettagliata dei modelli di programmazione per l'analisi di dati distribuiti su cluster di computer, nonché di modelli computazionali avanzati per l'elaborazione di enormi quantità di dati (ad esempio, streaming di dati, parallelismo in stile MapReduce e algoritmi efficienti in memoria secondaria).

Applicare conoscenza e comprensione:
gli studenti saranno in grado di progettare e analizzare algoritmi per l’analisi di big data in diversi scenari, sapranno scrivere codice efficiente e scalabile tenendo conto delle caratteristiche architetturali delle moderne piattaforme di calcolo (inclusi i sistemi distribuiti), e sapranno lavorare sfruttando una varietà di sistemi software adatti al processamento di big data (tra cui Hadoop).

Capacità critiche e di giudizio:
gli studenti saranno in grado di capire i paradigmi di calcolo più adatti in scenari differenti, valutando vantaggi e svantaggi di ciascun modello computazionale e affrontando le sfide che si presentano nella progettazione e implementazione di una varietà di applicazioni.

Capacità di comuniczione:
gli studenti saranno in grado di comunicare in modo efficace, riassumendo in modo chiaro le idee principali nella progettazione di sistemi e algoritmi per l’analisi di big data e presentando informazioni tecniche accurate.

Capacità di apprendimento successivo:
obiettivo del corso è quello di toccare una varietà di tecniche il più possibile ampia, introducendo pratiche standard e argomenti di ricerca all'avanguardia in questo settore e consentendo quindi agli studenti di estendere le conoscenze acquisite in modo indipendente, anche in base all’evoluzione tecnologica.

Prerequisiti

Si assume che gli studenti possiedano conoscenze basilari di analisi dei dati, machine learning, architettura degli elaboratori, e reti di calcolatori. Queste conoscenze devono adeguatamente supportate da solidi fondamenti di analisi matematica, algebra lineare e calcolo delle probabilità e statistica. Gli studenti devono altresì avere capacità non banali di programmazione (preferibilmente attraverso l'uso del linguaggio Python).

Programma dell’insegnamento

Introduzione
- Il fenomeno "Big Data"
- Infrastruttura
- Datacenter e rilevanza per workloads Big Data

Architettura Datacenter: Calcolo
- Accenni a GPU, TPU, e altre architetture

Architettura Datacenter: Rete
- Limitazioni di TCP per calcoli ad alte prestazioni e su grandi quantità di dati
- RDMA
- Topologie di rete per datacenter
- Algoritmi di controllo della congestione e routing
- In-network compute: SmartNIC e switch programmabili, e loro applicazione a workload big data

Architettura Datacenter: Storage
- Cenni e breve introduzione

Big Data Frameworks
- Distributed File Systems (HDFS)
- MapReduce (Hadoop)
- Spark
- PySpark + Google Colaboratory

Apprendimento non-supervisionato: Clustering
- Similarità
- Algoritmi: K-means
- Esempio: Clustering di documenti testuali

Riduzione della dimensionalità
- Feature Extraction
- Algoritmi: Principal Component Analysis (PCA)
- Esempio: PCA + Riconoscimento cifre

Apprendimento supervisionato
- Fondamenti di apprendimento automatico
- Regressione/Classificazione
- Algoritmi: Linear Regression/Logistic Regression/Random Forest
- Esempi:
- Linear Regression - Predizione prezzo vendita case
- Logistic Regression/Random Forest - Predizione sottoscrizione offerta bancaria

Sistemi di Raccomandazione
- Content-based vs. Collaborative filtering
- Algoritmi: k-NN, Matrix Factorization (MF)
- Esempio: Sistema di Raccomandazione di Film (MovieLens)

Analisi di Grafi
- Link Analysis
- Algoritmi: PageRank
- Esempio: Ranking (di un estratto) del Google Web Graph

Analisi di dati real-time
- Streaming Data Processing
- Esempio: Twitter Hate Speech Detector

Testi di riferimento

- The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines
- RDMA Aware Networks Programming User Manual
- Mining of Massive Datasets [Leskovec, Rajaraman, Ullman] (available online)
- Big Data Analysis with Python [Marin, Shukla, VK]
- Large Scale Machine Learning with Python [Sjardin, Massaron, Boschetti]
- Spark: The Definitive Guide [Chambers, Zaharia]
- Learning Spark: Lightning-Fast Big Data Analysis [Karau, Konwinski, Wendell, Zaharia]
- Hadoop: The Definitive Guide [White]
- Python for Data Analysis [Mckinney]

Bibliografia

- The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines
- RDMA Aware Networks Programming User Manual
- Mining of Massive Datasets [Leskovec, Rajaraman, Ullman] (available online) - Big Data Analysis with Python [Marin, Shukla, VK] - Large Scale Machine Learning with Python [Sjardin, Massaron, Boschetti] - Spark: The Definitive Guide [Chambers, Zaharia] - Learning Spark: Lightning-Fast Big Data Analysis [Karau, Konwinski, Wendell, Zaharia] - Hadoop: The Definitive Guide [White] - Python for Data Analysis [Mckinney]

Frequenza

Non obbligatoria.

Modalità di esame

Per il superamento dell'esame è prevista una prova orale, su un progetto e/o presentazione di un articolo scientifico che approfondisce alcune delle tematiche studiate durante il corso. La prova orale è integrata con domande sugli argomenti affrontati nel corso.

  • Anno accademico2024/2025
  • Corso di studio a cui afferisce l’insegnamentoComputer Science - Informatica
  • Codice insegnamento1041764
  • Anno e semestre1º anno - 1º semestre
  • TipologiaAttività formative caratterizzanti
  • AmbitoDiscipline Informatiche
  • SSDINF/01
  • Presenza obbligatoriaNo
  • Linguaeng
  • CFU6 CFU
  • Durata complessiva60 ore
  • Distribuzione delle ore36 classroom hours, 24 training hours