Mettre en œuvre des techniques d’élagage de modèles

Modèles d'IA évolutifs avec PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Quand utiliser l’élagage ?

$$

  • 📱 Utile pour déployer sur des appareils edge ou embarqués

$$

  • ➕ Se combine avec la quantification pour des gains cumulatifs

$$

  • ⚡ À utiliser quand réduire la latence ou la taille est prioritaire
Modèles d'IA évolutifs avec PyTorch Lightning

Qu’est-ce que l’élagage de modèle ?

$$

  • Supprime les connexions les moins importantes dans les réseaux de neurones
  • Donne des modèles clairsemés, efficaces à stocker et à calculer
  • Une approche courante est l’élagage L1 non structuré

exemple d’élagage

Modèles d'IA évolutifs avec PyTorch Lightning

Qu’est-ce que l’élagage de modèle ?

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)
Modèles d'IA évolutifs avec PyTorch Lightning

Comprendre les masques d’élagage

$$

  • L’élagage ajoute un masque binaire à chaque tenseur de poids ciblé.

$$

  • Masque = 1 → poids conservé.
  • Masque = 0 → poids mis à 0 à l’inférence.

$$

  • Les poids restent en mémoire tant que le masque n’est pas retiré.
Modèles d'IA évolutifs avec PyTorch Lightning

Rendre l’élagage permanent

  • Par défaut, les poids élagués restent dans le tenseur d’origine
  • Pour finaliser l’élagage, retirez les reparamétrisations
  • Convertit une couche clairsemée en couche standard avec des poids nuls
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
Modèles d'IA évolutifs avec PyTorch Lightning

Évaluer l’impact de l’élagage

  • Comparez les performances du modèle d’origine et du modèle élagué
  • Attendez-vous à une légère baisse de précision mais à de grands gains de taille/mémoire
  • Aide à juger si le compromis est acceptable pour la mise en production

courbe compromis élagage

Modèles d'IA évolutifs avec PyTorch Lightning

Passons à la pratique !

Modèles d'IA évolutifs avec PyTorch Lightning

Preparing Video For Download...