High Performance Computing für Maschinelle Intelligenz

High Performance Computing für Maschinelle Intelligenz
Dozent: Martin Gottwald & Alice Hein
Kontak: cpp@ldv.ei.tum.de
Zielgruppe: Master
ECTS: 6
Umfang: 2/0/2 (SWS Vorlesung/Übung/Praktikum)
Turnus: Wintersemester
Anmeldung: 15.09.2021 bis 15.10.2021 via TUMOnline
Reihungsverfahren: EI Master Praktikum
Platzvergabe: Fixplätze werden ab dem 15.10.2021 zugewiesen. In der ersten Vorlesung werden noch freie Fixplätze an Anwesende weiter vergeben.
Zeit & Ort: Vorlesung Dienstags 09.45 - 11.45 (online via Zoom ), Praktikum freie Zeiteinteilung
Beginn: erste Vorlesung 19.10.2021
Hinweis:

Absolventen des Leistungskurses C++ können nicht an dieser Veranstaltung teilnehmen. Siehe hierzu z.B. Seite 8 in der Modulliste (Studienbeginn 19/20 und früher).

Falls Sie an den Kursmaterialien interessiert sind: es gibt einen Gastzugang zum Moodlekurs, das Passwort ist das Universalwerkzeug der Linearen Algebra. z.B. für das Lösen überbestimmter Gleichungssysteme (drei Buchstaben, alle groß, englischer Name)

Aktuelles

Wegen Corona und den notwendigen Maßnahmen ist immer noch kein Zugang zu unseren Praktikumsräumen möglich (Stand 06.10.21).

Allerdings ist der digitale Zugang per 'ssh' weiterhin funktionsfähig und ist wegen des High Performance Computings auch Teil der Vorlesung.
Wir werden erklären, wie man alles richtig konfiguriert und was per 'ssh' alles möglich ist.

Bitte beachten Sie jedoch, dass das Arbeiten auf den Uni-Rechnern über das Internet je nach Latenz und verfügbarer Bandbreite mühsam wird.
Wir empfehlen daher in irgendeiner Form ein lokales, Linux basiertes Betriebssystem (vorzugsweise Ubuntu) am Laufen zu haben.
Eine virtuelle Maschine sollte zur Not auch ausreichen, allerdings kann die Virtualisierung Artefakte bei der Parallelisierung verursachen.

Inhalt

High Performance Computing (HPC) ist das neue Paradigma in einer Zeit, in der sich die Geschwindigkeit traditioneller Prozessoren nicht länger alle zwei Jahre verdoppelt. Anstatt auf einen schnellen Prozessor zu setzen werden Probleme so formuliert, dass eine Vielzahl von kleineren Rechnern zusammen an einer Lösung arbeiten.

Besonders in dem Bereich Maschinelle Intelligenz (MI) ist dies notwendig, da man typischerweise mit besonders großen Datenmengen („Big Data“) umgehen muss, welche die Kapazität eines einzelnen Computers mit einer traditionellen Herangehensweise bei weitem übersteigt.

HPC Methoden gehen heutige Probleme an, indem mehrere Prozessoren anstelle eines einzelnen zum Einsatz kommen. Zudem können diese über mehrere physischen Maschinen verteilt sein. Hierbei entstehen neue Herausforderungen wie zum Beispiel die Synchronisation der Rechner oder das Bewältigen von Kommunikationsverzögerungen. Um diese zu lösen, muss eine neue Denkweise für das Konzipieren und Programmieren von Algorithmen entwickelt werden.

Unter anderem werden die folgenden Themen im Rahmen der Veranstaltung behandelt:

  • Einführung in HPC
  • Wichtige Aspekte der Computer Architektur
  • Design von Algorithmen im Hinblick auf HPC
  • Parallel Computing:
    • Multi-threading & Verteiltes Rechnen
    • Synchronisation
    • Scheduling
  • Kombination von C++ (Performanz) mit Python (Rapid Prototyping)
  • Tools zur Laufzeit- und Speicheranalyse und Optimierung
  • Anwendung auf ein sequentielles Entscheidungsproblem

Inhaltliche Voraussetzungen:

  • Voraussetzung zur Teilnahme an der Vorlesung ist, dass die Inhalte des Grundkurses C++ bekannt sind.
  • Zusätzlich sind tiefgreifendere Erfahrungen mit der Interpreter Sprache Python notwendig.
  • Der Kurs setzt außerdem grundlegende Kenntnisse in Linearer Algebra und Analysis voraus.
  • Vorwissen in Approximate Dynamic Programming sowie Erfahrung mit Linux sind hilfreich.

Ziel:

Mit dem Absolvieren des Kurses sind die Studierenden in der Lage:

  • HPC Techniken zu verwenden
  • HPC auf MI Problemstellungen anzuwenden
  • Eigenschaften der Algorithmen, welche in dem Kurs behandelt werden, zu charakterisieren
  • Realisierungen von HPC Implementierungen mit einem Profiler zu analysieren
  • Optimierte C++ Routinen mit anderen Sprachen (Python) zu verbinden

Lehrsprachen

Deutsch

Lehr- und Lernmethode:

In dieser Veranstaltung sollen Studierende im Rahmen einer Projektarbeit im Team die Kenntnisse der Programmiersprache C++ in einem High Performance Computing Projekt zu vertiefen. Der Kurs basiert auf den Grundlagen des Grundkurses C++ mit dem Ziel, das erlernte Wissen zu festigen und zu erweitern und gleichzeitig eine Brücke zu den aktuellen Forschungsthemen am Lehrstuhl zu schlagen.

Zur Projektarbeit stehen mehrere HPC Rechner zur Verfügung. Mit diesen soll im Hauptprojekt ein suquentielles Entscheidungsproblem gelöst werden. Zu diesem Zweck gilt es verschiedene technische Hürden zu überwinden.

Begleitend zur Projektarbeit findet an zwei Stunden pro Woche eine Vorlesung statt. Aufbauend auf den Grundlagen des Grundkurses sind die oben genannten Themen geplant.

Teilnahmekriterien & Anmeldung:

Anmeldung erfolgt über TUMonline unter Vorbehalt. Erfolgreiche Teilnehmer des Grundkurses werden automatisch angenommen, andere müssen die entsprechenden Kenntnisse in einem persönlichen Gespräch nachweisen. Die Zahl der Teilnehmer ist aus Kapazitätsgründen auf 40 begrenzt.

Beurteilungsschema:

Die Abschlussnote wird aus den folgenden Teilleistungen ermittelt:

  • Hausarbeiten (50%)
  • Finale Projektpräsentation und Demonstration (50%)

Die Hausarbeiten belegen den kontinuierlichen Erwerb von technischen Fähigkeiten, während der Abschlussvortrag zusammen mit der Demonstration des Projekts den jeweiligen Beitrag der Studierenden zum Gruppen Projekt darstellt.

Die Studierenden müssen alle Arbeiten rechtzeitig und gemäß den technischen Spezifikationen einreichen.

Empfohlene Fachliteratur:

1) Modernes C++: Concurrency meistern, Rainer Grimm
2) High Performance Computing, 2nd Edition, K. Dowd
3) Thinking in C++, Vol. 1 & 2, 2nd Edition, B. Eckel
4) Python – kurz und gut, M. Lutz
5) Dynamic Programming and Optimal Control, Vol. 1 & 2, Dimitri Bertsekas