Applicare le tecniche di pruning del modello

Modelli di AI scalabili con PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Quando usare il pruning?

$$

  • 📱 Utile per distribuire modelli su edge o sistemi embedded

$$

  • ➕ Si combina con la quantizzazione per guadagni di efficienza cumulativi

$$

  • ⚡ Usa il pruning quando priorità sono latenza o dimensione del modello
Modelli di AI scalabili con PyTorch Lightning

Cos’è il model pruning?

$$

  • Rimuove connessioni meno importanti nelle reti neurali
  • Porta a modelli sparsi, efficienti da memorizzare e calcolare
  • Un approccio comune è il pruning L1 non strutturato

esempio di pruning

Modelli di AI scalabili con PyTorch Lightning

Cos’è il model pruning?

import torch.nn.utils.prune as prune

prune.l1_unstructured(model.fc, name="weight",
                      amount=0.4)

print(model.fc.weight.data)
tensor([[ 0.25, -0.13,  0.05,  0.70],
        [-0.88,  0.31, -0.02,  0.44]]) # Before pruning


tensor([[ 0.25, -0.13,  0.00,  0.70],
        [ 0.00,  0.31,  0.00,  0.44]]) # After pruning (40% weights set to 0)
Modelli di AI scalabili con PyTorch Lightning

Capire le maschere di pruning

$$

  • Il pruning aggiunge una maschera binaria a ogni tensore di pesi mirato.

$$

  • Mask = 1 --> peso mantenuto.
  • Mask = 0 --> peso messo a 0 in forward.

$$

  • I pesi restano in memoria finché non rimuovi la maschera.
Modelli di AI scalabili con PyTorch Lightning

Rendere permanente il pruning

  • Per default, i pesi potati restano nel tensore originale
  • Per rendere il pruning definitivo, rimuovi le riparametrizzazioni
  • Converte il layer sparso in uno standard con pesi azzerati
Sequential(
  (fc): Linear(
    in_features=128, out_features=64,
    bias=True
    (weight): PrunedParam()
  )
) # Before prune.remove
import torch.nn.utils.prune as prune

prune.remove(model.fc, 'weight')

# Print model structure
print(model)

Sequential(
  (fc): Linear(in_features=128,
               out_features=64,
               bias=True)
) # After prune.remove
Modelli di AI scalabili con PyTorch Lightning

Valutare l’impatto del pruning

  • Confronta le prestazioni del modello originale e potato
  • Aspettati piccoli cali di accuracy ma grandi risparmi di dimensione/memoria
  • Aiuta a valutare se il compromesso va bene per la messa in produzione

compromesso del modello con pruning

Modelli di AI scalabili con PyTorch Lightning

Ayo berlatih!

Modelli di AI scalabili con PyTorch Lightning

Preparing Video For Download...