session actionstatus

Monitoring de la performance d'un entraînement de modèle ML volumineux

Scénario de test & Cas d'usage

Contexte Métier

Un data scientist lance l'entraînement d'un arbre de décision sur un grand volume de données client. Le processus est long et exécuté en asynchrone. Un script de surveillance doit interroger régulièrement le statut du job pour suivre sa progression et s'assurer qu'il ne s'est pas terminé prématurément.
À propos du Set : session

Gestion de l'état de la session CAS.

Découvrir toutes les actions de session
Préparation des Données

Création d'une table volumineuse de données client pour l'entraînement du modèle.

Copié !
1PROC CAS;
2 dataStep.runCode / code='data casuser.CUSTOMER_DATA (promote=yes);
3 array inputs{10} x1-x10;
4 do i = 1 to 2000000;
5 do j = 1 to 10;
6 inputs{j} = rand("NORMAL");
7 end;
8 target = (inputs{1} + inputs{5} > 1);
9 output;
10 end;
11run;';
12RUN;

Étapes de réalisation

1
Lancement asynchrone de l'entraînement d'un arbre de décision et récupération de l'UUID de la session.
Copié !
1PROC CAS;
2 SESSION.startSession RESULT=r_sess name='ml_training_session';
3 ml_job_uuid = r_sess['session'];
4 PRINT 'UUID de la session ML: ' ml_job_uuid;
5 
6 /* Lancer l'entraînement asynchrone */
7 decisionTree.dtreeTrain /
8 SESSION=ml_job_uuid,
9 async='dtree_task',
10 TABLE='CUSTOMER_DATA',
11 target='target',
12 inputs={'x1','x2','x3','x4','x5','x6','x7','x8','x9','x10'},
13 nominals={'target'}
14 ;
15RUN;
2
Simulation d'une surveillance en boucle pour vérifier le statut du job à plusieurs reprises.
Copié !
1PROC CAS;
2 /* La variable 'ml_job_uuid' doit contenir la valeur obtenue à l'étape 1 */
3 DO i = 1 to 5;
4 PRINT 'Vérification ' i;
5 SESSION.actionstatus / uuid=ml_job_uuid;
6 /* Attendre 2 secondes entre chaque vérification */
7 res = sleep(2, 1);
8 END;
9RUN;

Résultat Attendu


Le log doit afficher 5 vérifications successives. Pour chaque vérification, une table de statut est affichée. Le statut de l'action d'entraînement doit être 'running' ou 'completed'. Cela valide que `actionstatus` peut être appelé de manière répétée sur une session active et sous charge sans causer d'instabilité.