dlmztrain
Description
L'action dlmzTrain permet d'entraîner des modèles de basés sur le framework . C'est un peu le 'coach sportif' de votre 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. ! Elle prend en entrée vos données, votre architecture de 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). contenue dans une table , et se charge de faire transpirer les poids (weights) jusqu'à atteindre la performance désirée via descente de gradient. Idéal pour la vision par ordinateur (Computer VisionDiscipline de l'IA permettant aux systèmes d'extraire des informations significatives à partir d'images ou de vidéos pour identifier, classer et réagir à des éléments visuels du monde réel.) ou d'autres tâches d'intelligence artificielle sophistiquées.
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| table | Spécifie la table en mémoire (CAS table) utilisée pour stocker les données d'entraînement. |
| modelTable | Spécifie la table contenant l'architecture du modèle et ses poids initiaux. Le cerveau avant l'entraînement ! |
| inputs | Les variables d'entrée (features) à analyser, souvent des tenseurs d'images ou du texte vectorisé. |
| targets | Les variables cibles (ce que le modèle doit apprendre à prédire, ex: une classe d'image). |
| optimizer | Les paramètres de l'algorithme d'optimisation (ADAM, SGD, taux d'apprentissage, taille du batch, nombre maximum d'époques, etc.). |
| modelOut | La table de sortie où le modèle fraîchement entraîné sera sauvegardé. |
| earlyStopping | Surveille une métrique (ex: VALIDATION_LOSS) et arrête l'entraînement quand elle ne s'améliore plus afin d'éviter le surentraînement. |
| gpus | Spécifie les identifiants (IDs) des GPU à utiliser pour booster les calculs matriciels. |
| saveState | Spécifie la table de sortie dans laquelle sauvegarder l'état du modèle sous forme d'Astore (Analytic Store) pour le scoring. |
Préparation des données
Chargement des données et du modèle d'initialisation
Exemple de chargement d'une table d'images et d'un modèle non entraîné depuis le système de fichiers vers la mémoire CAS pour préparer l'action dlmzTrain.
| 1 | PROC CAS; |
| 2 | /* Chargement des donnees d'entrainement */ |
| 3 | TABLE.loadTable / path="my_training_images.sashdat" caslib="public" casOut={name="train_data", replace=true}; |
| 4 | /* Chargement de la table de validation */ |
| 5 | TABLE.loadTable / path="my_valid_images.sashdat" caslib="public" casOut={name="valid_data", replace=true}; |
| 6 | /* Chargement du modele initial (ex: architecture ResNet50) */ |
| 7 | TABLE.loadTable / path="resnet50_init.sashdat" caslib="public" casOut={name="resnet50_init", replace=true}; |
| 8 | QUIT; |
Exemples d'utilisation
Entraînement basique d'un modèle de Deep Learning
Cet exemple montre comment lancer un entraînement simple avec l'optimiseur ADAM sur 5 époques à partir de données d'images.
| 1 | PROC CAS; |
| 2 | dlmodelzoo.dlmztrain / |
| 3 | TABLE={name="train_data"} |
| 4 | modelTable={name="resnet50_init"} |
| 5 | inputs={"image_tensor"} |
| 6 | targets={"label"} |
| 7 | modelOut={name="resnet50_trained", replace=true} |
| 8 | optimizer={algorithm={method="ADAM", lr={value=0.001}}, maxEpochs=5, batchSize={value=32}}; |
| 9 | QUIT; |
Résultat Attendu :
Entraînement avancé avec Validation, accélération GPU et Arrêt Prématuré
Ici on sort l'artillerie lourde : utilisation de GPU multiples, d'un jeu de validation croisée, de l'optimiseur SGD avec momentum, et d'un mécanisme d'arrêt prématuré (Early Stopping) si la perte de validation stagne pendant 3 époques consécutives.
| 1 | PROC CAS; |
| 2 | dlmodelzoo.dlmztrain / |
| 3 | TABLE={name="train_data"} |
| 4 | validationTable={name="valid_data"} |
| 5 | modelTable={name="resnet50_init"} |
| 6 | inputs={"image_tensor"} |
| 7 | targets={"class_id"} |
| 8 | modelOut={name="resnet50_trained_advanced", replace=true} |
| 9 | saveState={name="resnet50_astore", replace=true} |
| 10 | gpus={0, 1} /* Utilisation des GPUs d'ID 0 et 1 */ |
| 11 | earlyStopping={mode="MIN", monitor="VALIDATION_LOSS", patience=3} |
| 12 | optimizer={ |
| 13 | algorithm={method="SGD", lr={value=0.01}, momentum={value=0.9}, weight_decay={value=0.0001}}, |
| 14 | batchSize={value=64}, |
| 15 | maxEpochs=50, |
| 16 | mode={type="SYNCHRONOUS", syncFreq=1} |
| 17 | } |
| 18 | logLevel="INFO"; |
| 19 | QUIT; |