dnnScore
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
Paramètres Clés
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.
| 1 | PROC 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}; |
| 7 | QUIT; |
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.
| 1 | PROC 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}; |
| 8 | QUIT; |
Résultat Attendu :
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'.
| 1 | PROC 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}; |
| 13 | QUIT; |