Optimierung und Bereitstellung von tiefen neuronalen Netzen für heterogene Computersysteme
(in englischer Sprache)
Die zunehmende Verbreitung neuronaler Netze erfordert immer häufiger, diese auf lokalen eingebetteten Endgeräten auszuführen. Letztere sind typischerweise als heterogene Hardware-Plattformen realisiert und umfassen z.B. Multi-Core CPUs mit GPUs wie auch spezielle KI Beschleuniger. Die Systeme sind dabei in ihren Ressourcen wie Speicher oder Stromaufnahme beschränkt. Dies führt dazu, dass gängige Netzwerkarchitekturen wie z.B. ResNet, VGG oder U-Net nur sehr langsam ausgeführt werden können bzw. die vorhandenen Möglichkeiten nicht optimal genutzt werden.
Um vortrainierte, neuronale Netze zur Inferenzzeit dennoch effizient ausführen zu können, müssen diese auf den spezifischen Anwendungsfall optimiert und an die Zielhardware angepasst werden, wobei die Genauigkeit des Models erhalten bleiben soll. Zur anwendungsspezifischen Optimierung werden beispielsweise Kompressionsmethoden wie Quantisierung oder Pruning genutzt, wodurch die Anzahl der notwendigen Rechenoperationen deutlich reduziert werden kann. Anschließend kann das vereinfachte Netzwerk mit speziellen Programmen, sog. Deep Learning (DL) Compilern, wie TVM oder TensorRT, an die Gegebenheiten der Zielplattform angepasst werden, sodass die Hardware optimal genutzt wird. Dadurch können substantielle Performanceverbesserungen erreicht werden. In der Praxis wird dies aber durch eine hohe Komplexität und fehlende Interoperabilität erschwert.
Unser Seminar vermittelt deshalb einerseits die Grundlagen dieser Werkezuge als auch deren praktische Anwendung um neuronale Netze schnell an die Anforderungen und Gegebenheiten anzupassen.
Im Detail werden die folgenden Themen adressiert:
- Grundlagen zu den DL Compilern TensorRT und TVM
- Grundlagen zu Austauschformaten, wie z.B. ONNX
- Anwendung von TensorRT und TVM im Detail:
- Praktische Beispiele
- Durchsatz-Maximierung auf GPU´s
- Inferenz mit reduzierter Rechengenauigkeit
- Best-Practice Empfehlungen
- Performance Profiling zur Identifikation von Flaschenhälsen
- Überblick über Kompressionswerkzeuge, wie z.B. Kompression in Pytorch / TFLite, Intellabs Distiller, Microsoft Neural Network Interface (NNI)
- Zielplattformen, u.a. CPU (x86/ARM), Nvidia Desktop GPUs, Nvidia Jetson Boards, Google Coral Edge TPU und NPU
- Zusammenspiel zwischen Kompressionswerkzeugen und DL Compilern
- Integration und Deployment von neuronalen Netzen in C/C++
Zielgruppe:
Unser Seminar richtet sich an Softwareentwickler*innen, die bereits konkrete Erfahrungen im Umgang mit neuronalen Netzen gesammelt haben bzw. an Unternehmen, die im Bereich KI und eingebettete Systeme tätig sind oder tätig werden möchten.
Die Seminarunterlagen als auch praktische Beispiele können über unser GitLab Portal eingesehen und heruntergeladen werden.