deepLearn

dlPrune

##set_deeplearn ##ai ##deeplearning

Description

L'action (https://documentation.sas.com/doc/fr/pgmsascdc/v_073/casdlpg/cas-deeplearn-dlprune.htm) permet d'élaguer (pruner) une ou plusieurs couches d'un modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). d'apprentissage profondL'apprentissage profond (Deep Learning) est une branche de l'IA utilisant des réseaux de neurones multicouches pour modéliser des données complexes et automatiser l'extraction de caractéristiques.. Ce procédé supprime les connexions dont l'impact est négligeable, ce qui allège considérablement les modèles obèses (un petit régime avant l'été pour vos réseaux de neurones !) tout en préservant globalement leurs performances.

Syntaxe Officielle
proc cas;
deepLearn.dlPrune /
bufferSize=integer
fitTolerance=double
gpu={devices={integer-list}, precision="FP16"|"FP32", useExclusive=boolean, useTensorRT=boolean}
includeFitStat=boolean
initWeights={name="table-name", caslib="string", ...}
layerNames={"string-1", ...}
logLevel=integer
maxIters=integer
modelOut={name="table-name", ...}
modelTable={name="table-name", ...}
modelWeights={name="table-name", ...}
nThreads=integer
pruneMetric="FITERROR" | "LOSS"
table={name="table-name", ...}
topProbs=integer;
run;

Paramètres Clés

Nom du paramètre Description
bufferSize Spécifie le nombre d'observations à conserver en mémoire avant de traiter le reste du mini-batch.
fitTolerance Définit le seuil supérieur toléré pour l'erreur d'ajustement finale.
gpu Active l'accélération matérielle GPU pour les calculs (vivement recommandé pour ne pas attendre la fin des temps).
includeFitStat Si défini sur True, calcule et retourne les statistiques d'erreur et de perte après chaque opération d'élagage.
initWeights La table en mémoire contenant les poids initiaux de votre modèle avant son régime.
layerNames Une liste des noms des couches ciblées par l'élagage (celles qui vont être passées à la tronçonneuse).
maxIters Le nombre maximum d'itérations permises pour l'élagage.
modelOut Le nom de la table de sortie où sera conservé le nouveau modèle aminci.
modelTable La table représentant l'architecture de votre modèle existant.
modelWeights La table de sortie qui contiendra les nouveaux poids élagués.
pruneMetric Détermine quelle métrique surveiller pendant l'élagage : `FITERROR` (erreur d'ajustement) ou `LOSS` (perte totale).
table La table des données d'entrée utilisées pour évaluer la perte lors de l'élagage.

Préparation des données

Chargement de la table d'évaluation

Chargement d'une table d'images et de labels (préalablement construite) pour évaluer l'impact de l'élagage sur les performances du modèle.

1PROC CAS; TABLE.loadTable / caslib="casuser" path="my_eval_data.sashdat" casout={name="my_eval_data", replace=true}; RUN;

Exemples d'utilisation

Élagage basique d'une couche convolutive

Exemple rudimentaire ciblant une seule couche pour l'alléger en s'appuyant sur des poids préalablement entraînés.

1PROC CAS; DEEPLEARN.dlPrune / initWeights={name="model_weights"}, layerNames={"conv1"}, modelOut={name="pruned_model", replace=true}, modelTable={name="my_model"}, modelWeights={name="pruned_weights", replace=true}, TABLE={name="my_eval_data"}; RUN;
Résultat Attendu :
Génère deux tables (`pruned_model` et `pruned_weights`) représentant votre modèle allégé et prêt à l'emploi.
Élagage avancé avec suivi et accélération GPU

On élague plusieurs couches avec une tolérance d'erreur spécifique, en activant l'accélération matérielle et le retour détaillé des métriques d'ajustement.

1PROC CAS; DEEPLEARN.dlPrune / fitTolerance=0.05, gpu={devices={0}, precision="FP32"}, includeFitStat=true, initWeights={name="model_weights"}, layerNames={"conv1", "fc1"}, maxIters=5, modelOut={name="pruned_model", replace=true}, modelTable={name="my_model"}, modelWeights={name="pruned_weights", replace=true}, pruneMetric="FITERROR", TABLE={name="my_eval_data"}; RUN;
Résultat Attendu :
Un modèle nettement plus compact sur les couches 'conv1' et 'fc1', exécuté très rapidement sur GPU, et fournissant les statistiques d'ajustement détaillées conservées pour votre analyse.