Évaluation comparative de 12 techniques de distillation de connaissances sur CIFAR-100 avec RepDistiller

RepDistiller est un cadre open source en PyTorch conçu pour l’expérimentation systématique de méthodes avancées de distillation de connaissances. Il intègre des implémentations reproductibles de douze appproches récentes, dont la distillation contrastive de représentations (CRD), publiée à ICLR 2020, et fournit des résultats normalisés sur le jeu de données CIFAR-100.

Principes fondamentaux de la distillation

La distillation de connaissances consiste à transférer les capacités d’un modèle « enseignant » volumineux vers un modèle « étudiant » plus léger, tout en préservant une précision compétitive. Ce processus repose sur l’exploitation de signaux intermédiaires — tels que les logits lissés, les activations cachées ou les relations entre échantillons — plutôt que sur les seules étiquettes discrètes.

Architecture logicielle

Le projet suit une organisation modulaire claire :

  • distillers/ : Implémentations indépendantes des stratégies (ex. ContrastiveDistiller, AttentionMimic, RelationalLearner)
  • architectures/ : Définitions paramétrables de réseaux (ResNet variants, ShuffleNetV2, MobileNetV3, VGG simplifié)
  • trainers/ : Boucles d’entraînement génériques avec gestion des pertes composites
  • utils/ : Outils pour la sauvegarde, la journalisation et l’évaluation fine

Installation rapide

Le cadre est compatible avec PyTorch ≥ 1.7 et Python ≥ 3.8. Pour démarrer :

git clone https://gitcode.com/gh_mirrors/re/RepDistiller
cd RepDistiller
pip install -r requirements.txt

# Téléchargement des modèles enseignants pré-entraînés
bash scripts/get_teachers.sh

Méthodes évaluées

Chaque méthode est encapsulée dans une classe dérivée de BaseDistiller. Les douze approches couvrent divers paradigmes :

  1. KD : Minimisation de la divergence KL entre distributions de probabilités lissées
  2. FitNet : Régression des cartes d’activation intermédiaires via un réseau auxiliaire
  3. AT : Alignement des cartes d’attention calculées sur les sorties convolutives
  4. SP : Conservation de la structure de similarité pair-à-pair dans l’espace latent
  5. CC : Concordance des matrices de corrélation entre couches correspondantes
  6. VID : Contrainte d’information variationnelle sur les représentations intermédiaires
  7. RKD : Apprentissage des distances angulaires et euclidiennes entre échantillons
  8. PKT : Transport optimal entre distributions probabilistes de features
  9. AB : Distillation des frontières d’activation via des fonctions de seuil adaptatives
  10. FT : Factorisation tensorielle des activations pour transfert de motifs structurés
  11. FSP : Préservation des produits scalaires entre paires de couches
  12. NST : Transfert de la sélectivité neuronale mesurée par entropie conditionnelle

Lancement d’une expérience

Exécution d’un entraînement étudiant avec distillation contrastive :

python trainers/distill_runner.py \
  --teacher-path save/models/wrn40x2_cifar100/epoch_200.pth \
  --student-arch shufflenetv2_x1_0 \
  --distiller crd \
  --alpha 0.0 \
  --beta 0.95 \
  --temperature 4.0 \
  --batch-size 128 \
  --trial-id crd_v1

Les paramètres --alpha et --beta permettent de combiner plusieurs objectifs (ex. KD + CRD) sans modification du code source.

Résultats quantitatifs sur CIFAR-100

Précision top-1 (%) moyenne sur 3 exécutions indépendantes :

Même famille d’architectures

Configuration Enseignant / Étudiant KD AT RKD CRD
WideResNet 75.61 / 73.26 74.92 74.08 73.35 75.48
ResNet x4 79.42 / 72.50 73.33 73.44 71.90 75.51
VGG 74.64 / 70.36 72.98 71.43 71.48 73.94

Architectures hétérogènes

Combinaison Enseignant / Étudiant KD SP NST CRD
VGG13 → MobileNetV2 74.64 / 64.60 67.37 66.30 58.16 69.73
ResNet32x4 → ShuffleNetV2 79.42 / 71.82 74.45 74.56 74.68 75.65
WRN-40-2 → ShuffleNetV1 75.61 / 70.50 74.83 74.52 74.89 76.05

Recommandations opérationnelles

Les résultats confirment que CRD offre une robustesse supérieure face aux écarts architecturaux. Pour une mise en œuvre efficace :

  • Utiliser CRD comme point de départ lors de la distillation entre architectures dissemblables
  • Activer des pertes hybrides (ex. --alpha 0.3 --beta 0.7) pour équilibrer fidélité aux étiquettes et transfert sémantique
  • Ajuster la température de lissage (--temperature) selon la complexité du modèle enseignant
  • Optimiser les taux d’apprentissage spécifiques aux modules distillateurs via des groupes de paramètres distincts

Entraînement personnalisé de l’enseignant

Pour former un modèle enseignant depuis zéro, exécuter :

python trainers/teacher_trainer.py \
  --arch resnet50 \
  --dataset cifar100 \
  --epochs 300 \
  --lr 0.1 \
  --scheduler cosine \
  --save-dir save/models/resnet50_cifar100

Ce script gère automatiquement le redimensionnement du taux d’apprentissage en fonction du nombre de GPU utilisés.

Étiquettes: knowledge-distillation PyTorch cifar100 contrastive-learning Model-Compression

Publié le 30 septembre à 01h24