[PYTHON] Distillateur de bibliothèque d'éclaircissement de modèles d'apprentissage profond

introduction

Qu'est-ce que Distiller

Distiller est une bibliothèque basée sur PyTorch créée par Intel avec des algorithmes pour réduire le poids des modèles Deep Learning. Les principaux exemples de réduction de poids du modèle sont la quantification, l'élagage, la distillation, etc., et Distiller est facile à utiliser. De plus, le tutoriel comprenait même une fonction qui vous permet de vérifier l'état de l'apprentissage en solidarité avec TensorBoard (merci).

Cliquez ici pour un site détaillé sur la réduction du poids des modèles https://laboro.ai/column/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%82%92%E8%BB%BD%E9%87%8F%E5%8C%96%E3%81%99%E3%82%8B%E3%83%A2%E3%83%87%E3%83%AB%E5%9C%A7%E7%B8%AE/

Développement environnemental

$ git clone https://github.com/NervanaSystems/distiller.git
$ cd distiller
$ pip install -r requirements.txt
$ pip install -e .
$ python
>>> import distiller
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/mnt/PytorchIntro/distiller/distiller/__init__.py", line 20, in <module>
    from .config import file_config, dict_config, config_component_from_file_by_class

...

  File "/root/local/python-3.7.1/lib/python3.7/site-packages/git/exc.py", line 9, in <module>
    from git.compat import UnicodeMixin, safe_decode, string_types
  File "/root/local/python-3.7.1/lib/python3.7/site-packages/git/compat.py", line 16, in <module>
    from gitdb.utils.compat import (
ModuleNotFoundError: No module named 'gitdb.utils.compat'

Dans mon cas, lorsque j'ai essayé d'importer le Distiller ajouté à la bibliothèque, j'ai eu une erreur liée à la bibliothèque git, alors j'ai rétrogradé le mauvais gitdb2 et cela a été corrigé. (Ma version installée est 4.0.2)

$ pip uninstall gitdb2
$ pip install gitdb2==2.0.6

Confirmation

$ cd distiller/examples/classifier_compression/
$ python3 compress_classifier.py --arch simplenet_cifar ../../../data.cifar10 -p 30 -j=1 --lr=0.01

--------------------------------------------------------
Logging to TensorBoard - remember to execute the server:
> tensorboard --logdir='./logs'

=> created a simplenet_cifar model with the cifar10 dataset
Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ../../../data.cifar10/cifar-10-python.tar.gz
 99%|█████████████████████████████████████████████████████████████████████████████▌| 169582592/170498071 [00:18<00:00, 11451969.71it/s]Extracting ../../../data.cifar10/cifar-10-python.tar.gz to ../../../data.cifar10
Files already downloaded and verified
Dataset sizes:
        training=45000
        validation=5000
        test=10000


Training epoch: 45000 samples (256 per mini-batch)
170500096it [00:30, 11451969.71it/s]                                                                                                   Epoch: [0][   30/  176]    Overall Loss 2.303411    Objective Loss 2.303411    Top1 10.299479    Top5 50.104167    LR 0.010000    Time 0.038285
Epoch: [0][   60/  176]    Overall Loss 2.301507    Objective Loss 2.301507    Top1 10.774740    Top5 51.328125    LR 0.010000    Time 0.037495
Epoch: [0][   90/  176]    Overall Loss 2.299031    Objective Loss 2.299031    Top1 12.335069    Top5 54.973958    LR 0.010000    Time 0.037465
Epoch: [0][  120/  176]    Overall Loss 2.293749    Objective Loss 2.293749    Top1 13.424479    Top5 57.542318    LR 0.010000    Time 0.037429
Epoch: [0][  150/  176]    Overall Loss 2.278429    Objective Loss 2.278429    Top1 14.692708    Top5 59.864583    LR 0.010000    Time 0.037407

Parameters:
+----+---------------------+---------------+---------------+----------------+------------+------------+----------+----------+----------+------------+---------+----------+------------+
|    | Name                | Shape         |   NNZ (dense) |   NNZ (sparse) |   Cols (%) |   Rows (%) |   Ch (%) |   2D (%) |   3D (%) |   Fine (%) |     Std |     Mean |   Abs-Mean |
|----+---------------------+---------------+---------------+----------------+------------+------------+----------+----------+----------+------------+---------+----------+------------|
|  0 | module.conv1.weight | (6, 3, 5, 5)  |           450 |            450 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    0.00000 | 0.07800 | -0.01404 |    0.06724 |
|  1 | module.conv2.weight | (16, 6, 5, 5) |          2400 |           2400 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    0.00000 | 0.04952 |  0.00678 |    0.04246 |
|  2 | module.fc1.weight   | (120, 400)    |         48000 |          48000 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    0.00000 | 0.02906 |  0.00082 |    0.02511 |
|  3 | module.fc2.weight   | (84, 120)     |         10080 |          10080 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    0.00000 | 0.05328 |  0.00084 |    0.04607 |
|  4 | module.fc3.weight   | (10, 84)      |           840 |            840 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    0.00000 | 0.06967 | -0.00275 |    0.06040 |
|  5 | Total sparsity:     | -             |         61770 |          61770 |    0.00000 |    0.00000 |  0.00000 |  0.00000 |  0.00000 |    0.00000 | 0.00000 |  0.00000 |    0.00000 |
+----+---------------------+---------------+---------------+----------------+------------+------------+----------+----------+----------+------------+---------+----------+------------+
Total sparsity: 0.00

--- validate (epoch=0)-----------
5000 samples (256 per mini-batch)
==> Top1: 25.240    Top5: 75.520    Loss: 2.060

==> Best [Top1: 25.240   Top5: 75.520   Sparsity:0.00   NNZ-Params: 61770 on epoch: 0]
Saving checkpoint to: logs/2020.05.02-235616/checkpoint.pth.tar

...

Pour le moment, je suis soulagé car il a bougé ε- (´∀ ` *) Hot Je l'ajouterai dès que je trouverai quelque chose.

Site de référence

https://github.com/NervanaSystems/distiller

Recommended Posts

Distillateur de bibliothèque d'éclaircissement de modèles d'apprentissage profond
Didacticiel "CNTK" de la bibliothèque d'apprentissage en profondeur de Microsoft
Implémentation du modèle de reconnaissance d'images d'apprentissage en profondeur 2
L'apprentissage en profondeur
(python) Principes de base du chaînage de la bibliothèque d'apprentissage en profondeur
Modèle de reconnaissance d'image utilisant l'apprentissage profond en 2016
Reconnaissance d'image en apprentissage profond 3 après la création du modèle
Mémorandum d'apprentissage profond
Commencer l'apprentissage en profondeur
Apprentissage en profondeur Python
Apprentissage profond × Python
Implémentation du modèle Deep Learning pour la reconnaissance d'images
Pourquoi quoi? Bibliothèque de calcul scientifique Deep Learning Édition Numpy
Premier apprentissage profond ~ Lutte ~
J'ai installé et utilisé la bibliothèque Deep Learning Chainer
Python: pratique du Deep Learning
Fonctions d'apprentissage en profondeur / d'activation
Apprentissage profond à partir de zéro
Comptez le nombre de paramètres dans le modèle d'apprentissage en profondeur
Deep learning 1 Pratique du deep learning
Apprentissage profond / entropie croisée
Premier apprentissage profond ~ Préparation ~
Première solution d'apprentissage en profondeur ~
[AI] Apprentissage métrique profond
J'ai essayé le deep learning
Bibliothèque d'apprentissage automatique dlib
Bibliothèque DNN (Deep Learning): Comparaison de chainer et TensorFlow (1)
Python: réglage du Deep Learning
Technologie d'apprentissage en profondeur à grande échelle
Bibliothèque d'apprentissage automatique Shogun
PROGRAMMATION PROFONDE PROBABILISTE --- Bibliothèque "Deep Learning + Bayes" --- Présentation d'Edward
Fonction d'apprentissage profond / softmax
Prédiction des ondes sinusoïdales à l'aide de RNN dans la bibliothèque d'apprentissage en profondeur Keras
J'ai essayé d'héberger un modèle d'apprentissage en profondeur de TensorFlow à l'aide de TensorFlow Serving
J'ai essayé d'écrire dans un modèle de langage profondément appris
Modèle d'apprentissage automatique prenant en compte la maintenabilité
Apprentissage profond à partir de zéro 1 à 3 chapitres
Essayez l'apprentissage en profondeur avec TensorFlow
Deep Learning Gaiden ~ Programmation GPU ~
<Cours> Apprentissage en profondeur: Day2 CNN
Reconnaissance d'image par apprentissage profond 1 théorie
Deep running 2 Réglage de l'apprentissage profond
Apprentissage profond / code de travail LSTM
<Cours> Apprentissage en profondeur: Jour 1 NN
Apprentissage profond du noyau avec Pyro
Essayez le Deep Learning avec FPGA
Apprentissage profond pour la formation composée?
Présentation d'Udacity Deep Learning Nanodegree
Sujets> Deep Learning: Day3 RNN
Introduction au Deep Learning ~ Règles d'apprentissage ~
Création, apprentissage et raisonnement de modèles d'apprentissage
Apprentissage par renforcement profond 1 Introduction au renforcement de l'apprentissage
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
Générez des Pokémon avec Deep Learning
Introduction au Deep Learning ~ Rétropropagation ~
[Windows Edition] Keras Course, une bibliothèque où vous pouvez essayer le Deep Learning immédiatement - Partie 1