deepLearn

dlScore

##set_deeplearn ##ai ##deeplearning

Description

L'action dlScore permet de noter (scorerAction d'appliquer un modèle statistique à de nouvelles données pour calculer une probabilité ou une valeur prédite. C’est l’étape de déploiement transformant les entrées en prédictions actionnables.) une table de données en utilisant 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). de Deep LearningSous-ensemble du Machine Learning basé sur des réseaux de neurones artificiels profonds. Il excelle dans l'extraction automatique de motifs complexes depuis des données brutes (images, texte, son). préalablement entraîné. Que vous fassiez de la classification d'images, de la détection d'objets ou du traitement du langage naturel, cette action est votre meilleure amie pour générer des prédictions (et accessoirement épater vos collègues !). Elle supporte l'accélération GPUUtilisation de processeurs graphiques (GPU) pour décharger et paralléliser les calculs intensifs, accélérant ainsi massivement l'entraînement des modèles d'IA par rapport à un CPU classique. pour des calculs à la vitesse de l'éclair et permet même d'extraire les activations des couches intermédiaires. Pour plus de détails, n'hésitez pas à consulter la .

Syntaxe Officielle
proc cas;
deepLearn.dlScore /
bufferSize=10
casOut={name="table_sortie", replace=true}
copyVars={"var1", "var2"}
displayClassScoreInfo="NONE"
encodeName=false
gpu={devices={0}, precision="FP32", useExclusive=false, useTensorRT=false}
initWeights={name="poids_modele"}
layerImageType="WIDE"
layerOut={name="sortie_couches"}
layers={"couche_1"}
miniBatchBufSize=1
modelTable={name="architecture_modele"}
nThreads=4
randomCrop="NONE"
randomFlip="NONE"
randomMutation="NONE"
table={name="donnees_entree"}
textParms={hasInputTermIds=true}
topProbs=5;
run;

Paramètres Clés

Nom du paramètre Description
bufferSize Spécifie le nombre d'observations à scorer dans un seul lot (batch). Des valeurs plus grandes utilisent plus de mémoire, alors dosez bien pour éviter la surcharge.
casOut Définit la table CAS de sortie qui contiendra les prédictions de votre modèle. Plus d'infos sur .
copyVars Liste des variables à copier directement de la table d'entrée vers la table de sortie. Très utile pour garder vos identifiants uniques sous le coude.
displayClassScoreInfo Si défini sur 'ALL', affiche la table d'informations sur les scores de classe dans les résultats.
encodeName Si 'true', encode les noms des variables générées selon les conventions de SAS Enterprise Miner.
gpu Paramètres pour utiliser l'accélération matérielle GPU (ex: liste des périphériques, précision FP16 ou FP32, TensorRT). Indispensable pour des performances optimales.
initWeights Spécifie la table en mémoire contenant les poids appris du modèle. C'est en quelque sorte la 'mémoire' de votre réseau de neurones. Paramètre requis.
layerImageType Définit le format des images stockées dans la table layerOut ('BASE64', 'JPG', 'WIDE').
layerOut Table de sortie optionnelle pour récupérer les valeurs d'activation des couches internes du réseau (idéal pour le Transfer Learning).
layers Noms spécifiques des couches à extraire et enregistrer dans la table layerOut.
miniBatchBufSize Nombre d'observations à mettre en mémoire tampon avant de traiter le reste du minibatch.
modelTable Table en mémoire définissant l'architecture structurelle (DAG) de votre modèle Deep Learning. Paramètre requis.
nThreads Nombre de threads alloués. Augmentez-le pour paralléliser davantage le travail sur CPU.
randomCrop Stratégie de recadrage aléatoire pour les images en entrée (NONE, RANDOMRESIZED, RESIZETHENCROP, UNIQUE).
randomFlip Permet le retournement aléatoire (Horizontal, Vertical) des images pour augmenter la robustesse.
randomMutation Applique des mutations de couleurs, de netteté ou de luminosité au hasard sur les données d'image.
table La table de données d'entrée contenant les nouvelles observations que vous souhaitez scorer. Paramètre requis.
textParms Paramètres avancés spécifiques au traitement du texte (embeddings). Voir .
topProbs Nombre de probabilités les plus élevées (Top-N) à inclure dans les résultats avec leurs étiquettes respectives.

Préparation des données

Génération de tables fictives pour le scoring

L'action dlScore requiert trois éléments : des données à scorer, une table d'architecture de modèle et une table de poids. Ce code génère des tables factices pour simuler l'environnement.

1PROC CAS; SESSION mysess; caslib _all_ assign; DATA public.mes_donnees; DO id=1 to 100; x1=rand('uniform'); x2=rand('uniform'); OUTPUT; END; RUN; DATA public.mon_modele; LENGTH _layer_id_ 8 _layer_name_ $32; _layer_id_=1; _layer_name_='input'; RUN; DATA public.mes_poids; LENGTH _weight_id_ 8 _weight_val_ 8; _weight_id_=1; _weight_val_=0.42; RUN; QUIT;

Exemples d'utilisation

Scoring simple d'un modèle de Deep Learning

Cet exemple illustre l'usage minimal de dlScore en fournissant les données d'entrée, le modèle, ses poids, et la table de sortie.

1PROC CAS; DEEPLEARN.dlScore / TABLE={name='mes_donnees', caslib='public'} modelTable={name='mon_modele', caslib='public'} initWeights={name='mes_poids', caslib='public'} casOut={name='mes_predictions', caslib='public', replace=true}; RUN; QUIT;
Résultat Attendu :
Crée une table 'mes_predictions' dans la caslib 'public' contenant les prédictions générées par le modèle.
Scoring optimisé sur GPU avec extraction de variables et Top-K

Ce scénario avancé montre comment effectuer le scoring sur un GPU, copier la colonne d'identifiant depuis la table d'entrée, et ne garder que le top 3 des probabilités de classification.

1PROC CAS; DEEPLEARN.dlScore / TABLE={name='mes_donnees', caslib='public'} modelTable={name='mon_modele', caslib='public'} initWeights={name='mes_poids', caslib='public'} copyVars={'id'} gpu={devices={0}, precision='FP32'} bufferSize=32 topProbs=3 casOut={name='predictions_gpu', caslib='public', replace=true}; RUN; QUIT;
Résultat Attendu :
Génère la table 'predictions_gpu' en utilisant le GPU 0 (en précision 32-bits), incluant la colonne 'id' originale et les 3 meilleures probabilités prédites pour chaque ligne.
Extraction des caractéristiques profondes (Feature Extraction)

Utile pour le Transfer Learning : cet exemple score les données mais sauvegarde également les activations internes d'une couche cachée spécifique (ex: 'FC1') dans la table layerOut.

1PROC CAS; DEEPLEARN.dlScore / TABLE={name='mes_donnees', caslib='public'} modelTable={name='mon_modele', caslib='public'} initWeights={name='mes_poids', caslib='public'} layers={'FC1'} layerOut={name='features_fc1', caslib='public', replace=true} casOut={name='predictions_vides', replace=true}; RUN; QUIT;
Résultat Attendu :
En plus de la table des prédictions, crée la table 'features_fc1' qui contient les valeurs de sortie exactes de la couche 'FC1' pour chaque observation.