Aplicar técnicas de poda de modelos

Modelos de IA escalables con PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

¿Cuándo usar la poda?

$$

  • 📱 Útil al desplegar modelos en dispositivos edge o embebidos

$$

  • ➕ Se puede combinar con cuantización para más eficiencia

$$

  • ⚡ Úsala cuando priorices latencia o tamaño del modelo
Modelos de IA escalables con PyTorch Lightning

¿Qué es la poda de modelos?

$$

  • Quita conexiones menos importantes en redes neuronales
  • Genera modelos dispersos, eficientes en almacenamiento y cómputo
  • Enfoque común: poda L1 no estructurada

ejemplo de poda

Modelos de IA escalables con PyTorch Lightning

¿Qué es la poda de modelos?

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)
Modelos de IA escalables con PyTorch Lightning

Entender las máscaras de poda

$$

  • La poda añade una máscara binaria a cada tensor de pesos objetivo.

$$

  • Mask = 1 --> peso se mantiene.
  • Mask = 0 --> peso se pone a 0 en el forward.

$$

  • Los pesos siguen en memoria hasta quitar la máscara.
Modelos de IA escalables con PyTorch Lightning

Hacer permanente la poda

  • Por defecto, los pesos podados siguen en el tensor original
  • Para hacerla definitiva, elimina las reparametrizaciones
  • Convierte la capa dispersa en una capa estándar con pesos a cero
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
Modelos de IA escalables con PyTorch Lightning

Evaluar el impacto de la poda

  • Compara el rendimiento del modelo original vs. podado
  • Espera leves caídas en accuracy pero grandes ahorros de tamaño/memoria
  • Ayuda a decidir si el compromiso sirve para producción

equilibrio poda del modelo

Modelos de IA escalables con PyTorch Lightning

¡Vamos a practicar!

Modelos de IA escalables con PyTorch Lightning

Preparing Video For Download...