Rechnerarchitekturen für Deep-Learning Anwendungen - Cheatsheet
Von-Neumann-Architektur und Speicherhierarchie
Definition:
Grundprinzip der Von-Neumann-Architektur: gemeinsame Nutzung von Speicher für Daten und Programme. Speicherhierarchie optimiert Zugriffsgeschwindigkeit und -kosten.
Details:
- Von-Neumann-Flaschenhals: Limitierung durch gemeinsame Bus-Nutzung
- Speicherebenen: Register, Cache (L1, L2, L3), RAM, Sekundärspeicher
- \textbf{Formeln}: Zugriffszeit = Hit-Zeit + Miss-Raten * Miss-Strafzeit
- \textbf{Ziel}: Minimierung der Zugriffslatenz und Maximierung der Datenrate
Unterschiede zwischen Prozessorarchitekturen: RISC vs. CISC
Definition:
RISC (Reduced Instruction Set Computer) und CISC (Complex Instruction Set Computer) sind zwei Hauptarchitekturen bei Prozessoren, die sich in der Anzahl und Komplexität der Befehle unterscheiden.
Details:
- RISC: Einfachere und wenige Befehle, benötigt mehr Befehle für komplexe Operationen.
- CISC: Komplexere Befehle, kann mehr pro Befehl ausführen.
- RISC zielt auf hohe Leistung durch schnellere Taktzyklen und weniger Stromverbrauch.
- CISC fokussiert auf verschiedene Operationen durch einzelne Befehlsausführung.
- Beispiele: RISC - ARM, MIPS; CISC - x86.
- RISC vorteilhaft für Deep-Learning wegen paralleler Verarbeitung und Energieeffizienz.
Grundlagen der Parallelität und Multithreading
Definition:
Grundlagen der Parallelität und Multithreading in Rechnerarchitekturen für Deep-Learning-Anwendungen.
Details:
- Parallelität: Gleichzeitige Ausführung mehrerer Prozesse oder Threads.
- Multithreading: Verwendung mehrerer Threads innerhalb eines Prozesses zur parallelen Bearbeitung.
- Ziel: Erhöhte Effizienz und verkürzte Rechenzeiten.
- CPU-Kerne und Hyper-Threading-Technologie nutzen.
- Vermeidung von Race Conditions und Deadlocks durch geeignete Synchronisation.
- Verwendung von Bibliotheken wie OpenMP und CUDA für paralleles Programmieren.
- Anwendungen: Training von Deep-Learning-Modellen und parallele Verarbeitung großer Datenmengen.
Gradientenabstieg und Backpropagation in neuronalen Netzen
Definition:
Gradientenabstieg: Optimierungsverfahren, um die Parameter eines neuronalen Netzes zu aktualisieren, um den Fehler zu minimieren. Backpropagation: Methode, um die Gradienten der Fehlerfunktion bzgl. der Netzgewichte effizient zu berechnen.
Details:
- Gradientenabstieg: Aktualisierung der Gewichte nach der Formel: \[ w = w - \text{learning rate} \times \frac{\text{d}L}{\text{d}w} \]
- Backpropagation: Verwendet Kettenregel zur Berechnung der Gradienten.
- Ziel: Minimierung der Verlustfunktion L.
Hardwareoptimierungen mit GPUs, TPUs, FPGAs und ASICs
Definition:
Optimierung der Hardware für tiefes Lernen durch spezialisierte Prozessoren wie GPUs, TPUs, FPGAs und ASICs.
Details:
- GPUs: Parallele Verarbeitung für Matrixoperationen, z.B. CUDA
- TPUs: Speziell von Google entwickelte Prozessoren für Tensorverarbeitung, hoher Durchsatz
- FPGAs: Konfigurierbare Chips, anpassbar an spezifische DL-Modelle, niedrige Latenz
- ASICs: Maßgeschneiderte Chips für spezifische DL-Algorithmen, höchste Effizienz
- Vorteile: Beschleunigung von Trainingszeiten, Reduktion des Energieverbrauchs
- Nachteile: Hohe Entwicklungskosten für ASICs, weniger Flexibilität bei TPUs und ASICs
- Vergleich: GPUs flexibel, TPUs optimiert für DL, FPGAs anpassbar, ASICs maximal effizient
Model-Kompression und Quantisierungstechniken
Definition:
Techniken zur Reduzierung der Modellgröße und -komplexität durch Vereinfachung der Parameterdarstellungen.
Details:
- Quantisierung: Umwandlung von Floating-Point- in Integerdarstellungen zur Verringerung des Speicherbedarfs und zur Beschleunigung der Berechnungen.
- Pruning: Entfernen unnötiger oder wenig wichtiger Gewichte im neuronalen Netz.
- Wichtige Gleichung: Quantisierungsformel ewline \[ \text{quantisierter Wert} = \text{Rundung}(\text{Wert} / \text{Skalierungsfaktor}) \]
- Vorteile: Reduzierte Speicher- und Rechenanforderungen, geringere Energieverbrauch.
- Nachteile: Mögliche Einbußen bei der Modellgenauigkeit.
Beschleunigung von Deep-Learning-Anwendungen durch Parallelisierung und Verteilung
Definition:
Parallelisierung und Verteilung von Berechnungen zur Beschleunigung von Deep-Learning-Anwendungen.
Details:
- Data Parallelism: gleichzeitige Verarbeitung von verschiedenen Daten auf mehreren Prozessoren oder Geräten.
- Model Parallelism: Aufteilung eines Modells auf mehrere Prozessoren oder Geräte, um parallele Berechnung zu ermöglichen.
- Pipelining: Sequenzielle Verteilung von Aufgaben, um die Nutzung der Hardware-Ressourcen zu optimieren.
- Distributed Computing: Verteilung der Berechnungen über mehrere Maschinen zur Leistungssteigerung (Nutzung von Cluster-Ressourcen, z.B. mit MPI, Horovod).
- Utilization of GPUs/TPUs: Einsatz spezialisierter Hardware zur drastischen Beschleunigung von Matrixmultiplikationen und anderen Operationen.
Einsatz und Optimierung von Deep-Learning-Frameworks wie TensorFlow und PyTorch
Definition:
Verwendung und Verbesserung von TensorFlow und PyTorch für Deep-Learning.
Details:
- Anwendung zur Modellierung und Implementierung neuronaler Netze
- Unterstützung von Hardware-Beschleunigung (GPU, TPU)
- Funktion zur automatischen Differenzierung
- Modell-Training und -Evaluation
- Optimierungstechniken: Hyperparameter-Tuning, Modellkompression
- Verwendung von Bibliotheken wie Keras (TensorFlow) und TorchVision (PyTorch)
- Verfügbarkeit von vortrainierten Modellen und Transfer-Learning
- Integration und Skalierung in Cloud-Umgebungen