Rechnerarchitekturen für Deep-Learning Anwendungen - Cheatsheet
Von-Neumann-Architektur
Definition:
Speicherprogrammierte Architektur mit gemeinsamer Nutzung von Speicher für Programm und Daten.
Details:
- Besteht aus fünf Hauptkomponenten: Steuerwerk, Rechenwerk, Speicher, Ein-/Ausgabe-Einheiten und Bus.
- Zentraler Baustein ist der Speicher, der sowohl Programme als auch Daten enthält.
- Steuerwerk liest Befehle aus dem Speicher und interpretiert sie.
- Rechenwerk führt arithmetische und logische Operationen aus.
- Daten- und Befehlszugriff über den gemeinsamen Speicher kann Performance-Engpässe verursachen (Von-Neumann-Flaschenhals).
- Verwendung in konventionellen Computern weit verbreitet.
- Für Deep-Learning-Anwendungen oft weniger effizient im Vergleich zu Spezialisierungen wie der Harvard-Architektur oder GPUs.
Grafikkarten (GPUs) und Tensor Processing Units (TPUs)
Definition:
Grafikkarten (GPUs) und Tensor Processing Units (TPUs) sind spezialisierte Hardware-Komponenten, die für die Ausführung von Machine-Learning- und insbesondere Deep-Learning-Anwendungen optimiert sind.
Details:
- GPUs: Parallelisierung durch Tausende von Kernen, ideal für Matrixoperationen und Vektoroperationen.
- TPUs: Speziell von Google entwickelte ASICs, optimiert für Tensor Operationen in neuronalen Netzen.
- Leistungsfähigkeit: GPUs bieten hohe Rechenleistung und Flexibilität, während TPUs spezifisch auf hohe Leistung in ML/AI Workloads optimiert sind.
- Speicherbandbreite: GPUs haben oft große Speicherbandbreite, TPUs verfügen über lokale SRAM-Speicher für schnellen Datenzugriff.
- Programmierung: GPUs können mit Frameworks wie CUDA (NVIDIA) oder OpenCL programmiert werden. TPUs werden über TensorFlow API angesprochen.
- Latenz und Energieeffizienz: TPUs sind oft energieeffizienter und bieten niedrigere Latenzzeiten im Vergleich zu GPUs.
- Anwendung: Beide werden in der Forschung, industriellen Anwendungen und Cloud-Services eingesetzt.
Quantisierung und Pruning
Definition:
Quantisierung reduziert die Präzision der Gewichte und Aktivierungen; Pruning entfernt unwichtige Parameter, um das Modell zu komprimieren und zu beschleunigen.
Details:
- Quantisierungstypen: Post-Training Quantisierung, Quantization-aware Training
- Präzisionsreduktion: z.B. von 32-bit zu 8-bit
- Pruning-Methoden: Magnitude-based Pruning, Sensitivity-based Pruning
- Ziele: Speicherplatz sparen, Rechenzeit verkürzen
- Formel für Quantisierung:
- Formel für Pruning:
Verteilte Trainingsmethoden für Neuronale Netzwerke
Definition:
Methoden zum Training neuronaler Netzwerke über mehrere Rechner oder Knoten hinweg, um die Rechenlast zu verteilen und die Trainingszeit zu verkürzen.
Details:
- Datenparallelismus: Verteilung der Daten auf verschiedene Knoten, wobei jedes Modell eine Kopie der Parameter hat.
- Modellparallelismus: Aufteilung des Modells selbst auf verschiedene Knoten.
- Hybride Methoden: Kombination von Daten- und Modellparallelismus.
- Verteilte SGD (Stochastic Gradient Descent): Aggregation der Gradienten von verschiedenen Knoten.
- Parameter-Server-Architektur: Zentrale Verwaltung der Modellparameter, Aktualisierung durch Worker-Knoten.
- Kommunikationsstrategien: All-Reduce, parameter server, ring-allreduce.
Low-Power Design-Techniken
Definition:
Techniken zur Reduzierung des Energieverbrauchs in Schaltungen und Systemen, besonders wichtig für mobile und eingebettete Systeme.
Details:
- Clock Gating: Deaktivierung des Taktsignals in ungenutzten Komponenten
- Power Gating: Abschaltung der Stromversorgung für inaktive Module
- Dynamic Voltage and Frequency Scaling (DVFS): Anpassung von Spannung und Frequenz basierend auf der Auslastung
- Multi-Vth-Technik: Verwendung von Transistoren mit unterschiedlichen Schwellspannungen zur Verbesserung der Energieeffizienz
- Energy-efficient Algorithm Design: Optimierung von Algorithmen um Energieverbrauch zu verringern
Befehlssatz-Architekturen (ISA)
Definition:
Eine Befehlssatz-Architektur (ISA) ist die Schnittstelle zwischen der Software und der Hardware eines Computers und definiert die verfügbaren Maschinenbefehle.
Details:
- Wichtige ISAs: x86, ARM, MIPS
- Relevante Aspekte: Befehlstypen, Register, Adressierungsmodi
- Einfluss auf Leistung und Energieeffizienz
- Zwei Hauptkategorien: RISC (Reduced Instruction Set Computer) und CISC (Complex Instruction Set Computer)
- ISA legt das fundamentale Programmiermodell fest
- Für Deep Learning-Anwendungen: spezielle ISAs, z.B. NVIDIA CUDA
CUDA-Programmierung
Definition:
CUDA-Programmierung: Programmierung von GPU-basierten Berechnungen unter Verwendung der CUDA-API, entwickelt von NVIDIA.
Details:
- Nutzung von GPUs zur Beschleunigung paralleler Berechnungen
- C/C++-Erweiterung
- Erfordert Kenntnis von Thread-Hierarchie (Grids, Blocks, Threads)
- Key Konzepte: Kernel-Funktionen, Speicherhierarchie (globaler, geteilter und lokaler Speicher)
- Wesentliche APIs: CUDA Runtime, CUDA Driver API
- Performance-Optimierung durch Minimierung von Speicherzugriffen, Maximierung von Parallelismus
- Integration mit Deep-Learning-Frameworks (z.B. TensorFlow, PyTorch)
Pipeline und Superskalare Prozessoren
Definition:
Pipeline: Hardware- oder Software-Technik zur parallelen Verarbeitung von Anweisungen. Superskalare Prozessoren: Prozessoren, die mehrere Instruktionen pro Taktzyklus ausführen können.
Details:
- Pipeline: Unterteilt die Ausführung einer Instruktion in Teilschritte, jeder Schritt in separater Hardware-Phase.
- Pipeline-Stufen: Fetch, Decode, Execute, Memory Access, Write Back.
- Hazards: Stalls (Daten- oder Steuerkonflikte), Lösungen beinhalten Forwarding und Stall-Bits.
- Superskalar: Mehrere Pipelines zur Parallelverarbeitung.
- VLIW (Very Long Instruction Word): Mehrere Operationen in einem einzelnen Instruktionswort.
- Probleme bei superskalaren Prozessoren: Abhängigkeiten, Parallelisierungsgrenzen (ILP - Instruction Level Parallelism).