** Przedmiot jest prowadzony przez Grzegorza Latosińskiego z Antmicro. **
Celem przedmiotu jest przedstawienie różnych technik optymalizacji sieci neuronowych pod
urządzenia o ograniczonych zasobach obliczeniowych i pamięciowych, w szczególności
urządzeń wbudowanych.
W trakcie wykładów przedstawione będą
- Algorytmy optymalizujące sieci neuronowe pod względem pamięciowym i
obliczeniowym, jak kwantyzacja, pruning, klasteryzacja wag czy destylacja wiedzy.
- Popularne niskopoziomowe techniki optymalizacji najpopularniejszych operacji w
sieciach neuronowych.
- Urządzenia wbudowane z dedykowanymi akceleratorami sieci neuronowych i
procesem ich obliczeń.
- Narzędzia i biblioteki (typu open source) do:
- Optymalizacji sieci neuronowych i procesu ich wykonywania (TensorFlow
Model Optimization Toolkit, NNI)
- Kompilacji sieci neuronowych (Apache TVM, IREE)
- Uruchamiania sieci na docelowych urządzeniach (Apache TVM, IREE, LiteRT,
ONNXRuntime, ExecuTorch, ...)
- Symulacji/emulacji urządzeń wbudowanych i akceleratorów sieci
neuronowych
- Przykłady głębokich sieci neuronowych projektowanych pod kątem urządzeń
wbudowanych.
W trakcie laboratoriów będą w praktyce realizowane zagadnienia z wykładów -
przeprowadzane będą różne optymalizacje sieci, a następnie weryfikowany będzie ich wpływ
na wydajność sieci (szybkość wykonywania inferencji, zużycie zasobów), oraz jakość
predykcji.
Również w trakcie laboratoriów będziemy weryfikować, jak należy przygotować odpowiednio
model pod wybrane optymalizacje, i jak dobierać optymalizacje pod konkretną platformę
sprzętową.
Zalecanym systemem operacyjnym do pracy jest dowolna dystrybucja Linuxa.
Głównym językiem programowania wymaganym w trakcie kursu jest Python.