** Przedmiot jest prowadzony przez Grzegorza Latosińskiego z Antmicro. **
Celem przedmiotu jest przedstawienie różnych aspektów optymalizacji sieci neuronowych pod urządzenia o ograniczonych zasobach obliczeniowych i pamięciowych, jak np. urządzenia wbudowane.
W trakcie wykładów przedstawione będą:
* Przykłady głębokich sieci neuronowych projektowanych pod kątem urządzeń wbudowanych.
* Algorytmy optymalizujące sieci neuronowe pod względem pamięciowym i obliczeniowym, jak np. quantization, pruning, clustering czy knowledge distillation.
* Biblioteki i narzędzia (np. kompilatory) open source do optymalizacji sieci neuronowych i procesu ich wykonywania - TensorFlow Model Optimization Toolkit, NNI, TensorFlow Lite, Apache TVM, czy IREE.
* Przykłady niskopoziomowych technik optymalizacji najpopularniejszych operacji w sieciach neuronowych.
* Przykłady sprzętowych akceleracji operacji występujących w sieciach neuronowych na CPU oraz GPU
* Przykłady akceleratorów operacji sieci neuronowych
Zajęcia na uczelni będą zajęciami wykładowo-ćwiczeniowymi. Dodatkowo, zagadnienia z wykładów będą realizowane w praktyce w ramach miniprojektów - przeprowadzane będą różne optymalizacje sieci, a następnie weryfikowany będzie ich wpływ na szybkość wykonywania inferencji, zajętość pamięci, oraz jakość predykcji.
Również w ramach zadań praktycznych 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.
Wymaganym systemem operacyjnym do pracy w ramach tego projektu jest dowolna dystrybucja Linuxa.
Głównymi językami programowania wymaganymi w trakcie kursu będzie Python oraz C/C++.