Robocikowo>ROBOCIKOWO

Sieci neuronowe od podstaw do nowoczesnej AI · Interpretacja i wizualizacja sieci neuronowych

Profilowanie modelu: parametry, FLOPs, czas inferencji

Interpretacja i wizualizacja sieci neuronowych

Wprowadzenie

Każda dyskusja o „szybkości" lub „wielkości" sieci neuronowej szybko sprowadza się do trzech metryk: liczby parametrów (rozmiar w pamięci, koszt zapisu modelu, ślad RAM), liczby operacji zmiennoprzecinkowych FLOPs (proxy do kosztu obliczeniowego) i rzeczywistego czasu inferencji (latencja end-to-end na konkretnym sprzęcie). Te trzy metryki są ze sobą luźno skorelowane — ten sam model może mieć dwukrotnie więcej parametrów, ale niższe FLOPs, albo niższe FLOPs, ale wyższą latencję. Lekcja przechodzi przez: (1) jak liczyć parametry konwolucji (k_h · k_w · C_in · C_out + C_out bias) i Linear (D_in · D_out + D_out), (2) jak liczyć FLOPs na poziomie warstwy (Conv2d: 2 · k_h · k_w · C_in · C_out · H_out · W_out, dla MAC „×2" zostaje pominięte, dwie konwencje), (3) różnicę między FLOPs i MACs (Multiply-Accumulate operations), (4) typowe budżety: AlexNet 60M params / 0.7 GFLOPs, ResNet-50 25M / 4.1 GFLOPs, EfficientNet-B0 5.3M / 0.39 GFLOPs, MobileNet-V3 5.4M / 0.22 GFLOPs, ViT-B 86M / 17.6 GFLOPs, (5) memory-bound vs compute-bound (arithmetic intensity = FLOPs / bytes accessed, Roofline model), (6) techniki przyśpieszające: depthwise-separable convs, group convs, channel pruning, quantization (FP32 → INT8 → INT4), knowledge distillation, (7) profilery praktyczne (PyTorch Profiler, torch.profiler, nvprof / Nsight Systems, TensorBoard, py-spy), (8) jak prawidłowo mierzyć latencję (warmup, synchronizacja CUDA, statystyki na N=100 powtórzeniach, oddzielnie batch=1 i batch=32).