Implementarea tehnicilor de pruning

Modele AI scalabile cu PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Când se folosește pruning-ul?

$$

  • 📱 Util la deployment pe sisteme edge sau integrate

$$

  • ➕ Se poate combina cu cuantizarea pentru eficiență sporită

$$

  • ⚡ Folosiți când reducerea latenței sau a dimensiunii modelului este prioritară
Modele AI scalabile cu PyTorch Lightning

Ce este pruning-ul de modele?

$$

  • Elimină conexiunile mai puțin importante din rețelele neurale
  • Produce modele sparse, eficiente la stocare și calcul
  • O abordare comună este L1 unstructured pruning

exemplu de pruning

Modele AI scalabile cu PyTorch Lightning

Ce este pruning-ul de modele?

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)
Modele AI scalabile cu PyTorch Lightning

Înțelegerea măștilor de pruning

$$

  • Pruning-ul adaugă o mască binară fiecărui tensor de ponderi vizat.

$$

  • Mască = 1 --> pondere păstrată.
  • Mască = 0 --> pondere setată la 0 la forward.

$$

  • Ponderile rămân în memorie până la eliminarea măștii.
Modele AI scalabile cu PyTorch Lightning

Permanentizarea pruning-ului

  • Implicit, ponderile eliminate rămân parte din tensorul original
  • Pentru a finaliza pruning-ul, eliminați reparametrizările
  • Convertește stratul sparse într-un strat standard cu ponderi nule
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
Modele AI scalabile cu PyTorch Lightning

Evaluarea impactului pruning-ului

  • Comparați performanța modelului original cu cel pruned
  • Așteptați-vă la scăderi mici ale acurateței, dar la economii mari de memorie
  • Ajută la evaluarea compromisului pentru deployment

Compromis model pruning

Modele AI scalabile cu PyTorch Lightning

Să exersăm!

Modele AI scalabile cu PyTorch Lightning

Preparing Video For Download...