deepNeural

dnnScore

##ai ##deeplearning ##set_deepneural

Description

L'action dnnScore permet de 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. (ou évaluer) 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 réseau de neuronesUn réseau de neurones est un modèle d'IA bio-inspiré composé de couches de nœuds interconnectés, capable d'apprendre des relations complexes dans les données pour prédire ou classifier avec précision. profond (Deep Neural Network) préalablement entraîné. Préparez-vous à faire chauffer vos données, mais attention, n'oubliez pas de fournir les poids du 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). ! source

Syntaxe Officielle
proc cas;
deepNeural.dnnScore /
initWeights={name="nom_table_poids"}
modelTable={name="nom_table_modele"}
table={name="nom_table_entree"}
casOut={name="nom_table_sortie", replace=true}
copyVars={"var1", "var2"}
gpu={useTensorRT=true};
quit;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table d'entrée contenant les nouvelles données à évaluer.
modelTable Spécifie la table en mémoire qui définit l'architecture du modèle.
initWeights Spécifie la table en mémoire contenant les poids entraînés du modèle. Sans eux, votre modèle n'est qu'une coquille vide !
casOut Définit la table de sortie CAS qui contiendra les prédictions du modèle.
layerOut Spécifie les paramètres de la table de sortie incluant les valeurs des activations des couches (layer output values).
layers Spécifie la liste des noms des couches à inclure dans la table de sortie des couches.
copyVars Liste des variables de la table d'entrée à copier directement dans la table de sortie, très pratique pour ne pas perdre vos identifiants !
gpu Permet d'activer l'accélération matérielle gpu pour un scoring à la vitesse de l'éclair.
bufferSize Définit le nombre d'observations à scorer par lot. Un nombre plus élevé consommera un peu plus de mémoire.
encodeName Indique s'il faut encoder les noms des variables dans la table de sortie CAS générée.

Préparation des données

Chargement des prérequis pour le scoring

Avant de pouvoir utiliser dnnScore, nous avons besoin d'une table de données, d'une définition de modèle et des poids. Voici un squelette simplifié illustrant la démarche de chargement depuis le serveur.

1PROC CAS;
2 /* Remarque: la generation d'un vrai modele de reseau de neurones requiert dnnTrain */
3 /* Ce code montre comment charger les elements prealablement sauvegardes pour dnnScore */
4 TABLE.loadTable / caslib="casuser" path="mes_donnees_a_scorer.sashdat" casout={name="donnees_entree", replace=True};
5 TABLE.loadTable / caslib="casuser" path="mon_modele_dnn.sashdat" casout={name="table_modele", replace=True};
6 TABLE.loadTable / caslib="casuser" path="mes_poids_dnn.sashdat" casout={name="table_poids", replace=True};
7QUIT;

Exemples d'utilisation

Scoring basique avec un DNN

Cet exemple montre comment scorer une table avec un modèle existant et conserver l'identifiant 'ID' dans les résultats pour pouvoir raccorder les prédictions aux observations sources.

1PROC CAS;
2 deepNeural.dnnScore /
3 TABLE={name="donnees_entree"}
4 modelTable={name="table_modele"}
5 initWeights={name="table_poids"}
6 copyVars={"ID"}
7 casOut={name="resultats_scoring", replace=True};
8QUIT;
Résultat Attendu :
Une nouvelle table CAS nommée 'resultats_scoring' est créée, contenant les prédictions du réseau de neurones ainsi que la colonne 'ID' d'origine.
Scoring avec accélération GPU et extraction de couches

Pour les modèles plus lourds (comme la vision par ordinateur ou le texte), nous utilisons ici un GPU avec une précision FP16 pour doper les performances. Nous en profitons pour extraire la sortie (activations) d'une couche spécifique nommée 'Couche_Cachee_1'.

1PROC CAS;
2 deepNeural.dnnScore /
3 TABLE={name="donnees_entree"}
4 modelTable={name="table_modele"}
5 initWeights={name="table_poids"}
6 copyVars={"ID", "Cible"}
7 gpu={devices={0}, precision="FP16", useTensorRT=True}
8 bufferSize=50
9 nThreads=4
10 layers={"Couche_Cachee_1"}
11 layerOut={name="sortie_couche_1", replace=True}
12 casOut={name="resultats_scoring_gpu", replace=True};
13QUIT;
Résultat Attendu :
Création de la table 'resultats_scoring_gpu' contenant les prédictions, et d'une table 'sortie_couche_1' contenant les valeurs d'activation de la couche demandée, calculées rapidement via l'accélération TensorRT sur GPU.