Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2011, 18h17   #1
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Par défaut Problème 'out of memory'

Bonjour, je créé un nouveau thread qui se rapproche de celui que j'avais créé juste en dessous http://www.developpez.net/forums/d10...match-prxposn/ .

En résumé j'ai une grosse macro qui fait tout plein de choses et qui, passé un certains nombres de calcul sans souci, se met à me balancer à tout-va le message 'out of memory'.

Au niveau des calculs, je précise car je pense que ça a son importance, je fais dans un premier temps tout plein de représentations graphiques et de tests univariées (j'appellerais à l'avenir cet étape: l'étape I), je vide toutes mes tables générées avec un DATASETS.
Puis je pars sur les méthodes d'analyses discriminantes et de régressions logistiques.
La particularité de mes méthodes multivariées de classification c'est que je les applique à toutes les combinaisons de variables possibles de 1 jusqu'à un 'n' assez grand nombre (le nombre de combinaisons n'est pas suffisamment grand pour que ça soit la (seule..) cause du problème).

Mon souci est, pour moi, trés dur à identifier, en effet le problème 'out of memory' intervient qu'à la seconde utilisation des régréssions logistiques (en effet j'ai deux versions: une pour variables continues et qualitatives et une autre pour variables modales et qualitatives).
J'ai d'ailleurs procédé à un test, j'ai lancé indépendamment l'étape I, puis je lance (dans la même session SAS) la macro pour l'analyse discrimante sur toutes les combis, aprés celle pour les régressions logistique dans le cas modales + qualitatifs puis celle dans le cas continues + qualitatifs et là intervient à nouveau le problème (sachant que, pour moi, lancer ainsi séparément les différentes macros oblige SAS à remettre à 0 la log et l'output, de même pour les tables stockées).

Bref, pour moi, il se passe quelque chose derrière SAS que je n'arrive pas à contrôler, qui remplit la mémoire de SAS et amène mes soucis de 'out of memory'. Sincèrement je vois pas la solution là, surtout que j'ai essayé plusieurs choses (cf mes nombreux threads) où j'ai vidé la bibliothèque WORK, la log et l'output et rien y fait... concernant le thread du lien ci-dessus, je pense pas que les macros-variables soient responsables de mes soucis de 'out of memory', je vais regardé de suite remarque car il me reste plus que ça...

Désolé pour le pavé mais je tenais à être assez précis, ce souci est la dernière barrière qu'il me reste avant de finir ma macro et pouvoir passer à une étape "d'embellissement".

En vous remerciant par avance.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 18h36   #2
Membre du Club
 
Homme
Inscription : septembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2009
Messages : 60
Points : 52
Points : 52
Hello,

As tu essayé de modifier les paramètres MEMSIZE, SORTSIZE de ton fichier de configuration ?

Tu peux visualiser les valeurs de ta configuration avec le code suivant :

Code :
1
2
proc options GROUP=memory;
run;
wise2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 20h33   #3
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Bonjour Julien,
Je ne sais pas comment tu ferais pour interpréter ou retenir un modèle avec toute une batterie de combinaison de variables. à mon avis, ton problème vient du fait que tu as plusieurs proc (car trop de modèles).
Tu peux tester ta macro avec une un minimum de variables explicatives et tu seras vite fixer.
Bref, je te propose ça:
Tu peux faire des noprint à chaque proc logistic,
Supprimer les macros programme à chaque boucle

Code :
1
2
3
PROC CATALOG c=work.sasmacr KILL force;
RUN;
QUIT;
Bon courage
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 11h00   #4
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Bonjour wise2 et Brice! merci de votre intérêt pour mon problème!

Je vais essayer, dés que j'ai un moment, vos syntaxes pour voir si ça me permet d'avancer sur mon problème, je vous tiendrais alors au courant.

Concernant ta question Brice:
Citation:
Je ne sais pas comment tu ferais pour interpréter ou retenir un modèle avec toute une batterie de combinaison de variables
Je crois que j'ai dû mal m'exprimer, il s'agit d'estimer tous les modèles possibles (soit toutes les combinaisons de variables) par régressions logistiques, les repertorier dans une table puis décider quel modèle obtient les meilleurs performances (taux de sensibilité et spécificité). Ma macro regarde plusieurs couple de performance, max de bien classé ou plus petit écart entre les deux taux, ..., tout ça est mis dans une table finale et permet de décider quel combinaison de variables obtient les meilleurs performances en régression logistique.
L'intérêt étant de pallier aux méthodes de sélection FORWARD, BACKWARD et STEPWISE en forçant les variables. Je travaille dans une boîte qui cherche à identifier et non à modéliser, d'où la simplification de l'usage des régressions logistique.

Je vous tiens au courant dés que j'ai testé vos conseils. Encore merci!
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 11h31   #5
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Bonjour Julien,
As-tu constaté une différence entre ta méthode de sélection du meilleur modèle avec la méthode automatique en terme de variables explicatives ?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 12h33   #6
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Bonne question, je ne me suis pas encore réellement penché sur ça, il le faut en plus, disons que mes soucis 'out of memory' monopolisent toute mon attention dès que je trouve le temps de continuer ma macro.

Je te tiendrais au courant dès que j'aurais fait suffisamment de test.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 13h20   #7
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Je te comprends!
N'oublies pas de réduire le nombre de variables afin de savoir déjà si ça vient de là.
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 13h48   #8
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Salut, alors j'ai regardé plusieurs choses en fonction de vos commentaires.

Par rapport à ce que m'a proposé wise2, j'ai donc lancé la syntaxe et j'ai les informations suivantes (dés fois que ça parle à quelqu'un, je veux dire si ça semble suffisant pour un automate à grande échelle ou trop peu):

Code :
1
2
3
4
5
6
7
8
 
SORTSIZE=50331648 Size parameter FOR sort
 SUMSIZE=0         Upper LIMIT FOR data-dependent memory usage during summarization
 MAXMEMQUERY=268435456
                   Maximum amount of memory returned when inquiring AS TO available space
 LOADMEMSIZE=0     Suggested memory LIMIT FOR loaded SAS executables
 MEMSIZE=67108864  Specifies the LIMIT ON the total amount of memory TO be used BY the SAS System
 REALMEMSIZE=0     LIMIT ON the total amount of real memory TO be used BY the SAS System
Je n'ai pas pu regarder pour MEMZISE et SORTSIZE car je ne peux pas voir mon administrateur réseau avant lundi.

Par rapport à ce que tu m'as dit Brice, alors j'ai vite comparé les sorties de ma table avec les résultats des méthodes de sélection en DISCRIM ET LOGISTIC et il apparait que ma table me sort des combinaisons légèrement plus performantes.

Ensuite, en effet il y a un rapport avec le nombre de variables et donc le nombre de combinaison à estimer, sur un test avec 5-6 variables ça passe bien, mais sur celui avec 9-10 ça plante vers la fin du programme. Maintenant j'ai essayé la syntaxe que tu m'as proposé, seulement je n'arrive pas à trouver la bibliothèque où mes macros compilées vont sous Entreprise Guide.

En fait moi ce qui m'arrangerait serait de clean ma mémoire (sauf la table que je vais utiliser pour bosser et les 2-3 macros variables dont j'ai besoin) une fois qu'une de mes macros 'multivariée' a finit son boulot...
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 14h13   #9
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
ODS EXCLUDE ALL t'as éssayé?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 17h25   #10
Membre du Club
 
Homme
Inscription : septembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2009
Messages : 60
Points : 52
Points : 52
Hello,

Tes valeurs de MEMSIZE et SORTSIZE sont très faibles (64 Mo !?).

Il faudrait que tu modifies ton fichier config avec :

-MEMSIZE 1G
-SORTSIZE 512M

et essayer si ton programme tourne mieux.
wise2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 19h47   #11
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
En effet Brice, j'ai déjà essayé notamment avec l'aide d'Olivier et Géraldine sur le forum, ça m'a permis de m'affranchir des lags dû à l'impression dans l'output mais pas de mes problèmes 'out of memory'.

Wise2, je vais regarder lundi avec mon administrateur réseau donc, ça me semble être la seule solution immédiate à mon problème, par contre à long terme il me faudra tout de même trouver un moyen de vider complètement la mémoire de ma session SAS en cours entre chaque appel de macro 'multivariée' surtout que je prévois d'automatiser la classification par cluster et sachant qu'il y a 14 méthodes dont la moitié sont paramétrables....
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 07h24   #12
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Salut.
Une chose qui me traverse l'esprit : est-ce que les "Out of memory" surviennent toujours aux mêmes endroits dans l'exécution de ta macro ? Genre toujours au niveau de la même procédure ?
Si oui ça vaudrait sans doute le coup de se pencher sur l'optimisation de cette procédure en particulier (si c'est SORT, avec des options comme TAGSORT et OVERWRITE par exemple) ; du genre faire un KEEP= sur la table lue pour ne charger que les variables réellement nécessaires à cette étape.
Pour autant que je sache, "Out of memory" est plutôt un message concernant la RAM, or vider la Work fera gagner de l'espace disque -- ce qui n'est pas forcément une solution (même si, au bout d'un moment, SAS va décharger ce qu'il a en mémoire vive sur du disque).
Autre moyen de diagnostiquer l'emplacement du problème : OPTION FULLSTIMER ; te permettra de suivre dans la Log l'utilisation de la mémoire.

Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 11h20   #13
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Salut Olivier, merci pour tes infos, surtout pour la syntaxe permettant de suivre l'état de la mémoire notamment!

Actuellement je suis en discussion avec l'admin réseau de ma boîte, donc c'est en cours, en effet je peux pas trop toucher à tout ça sans qu'il ait un oeil dessus également.

Concernant mon souci j'ai observé deux variantes. J'ai donc 2 macros, une qui fait analyse discriminante (DA) sur toutes les combinaisons (rappel: merci pour ta macro combinatoire au passage!) et une qui fait la régression logistique (LOG) dans le cas variables continues et/ou variables qualitatives OU variables modales et/ou variables qualitatives.

Donc si je lance la macro DA en premier puis les deux versions de la macro LOG, mon message d'erreur arrive lors de la seconde utilisation de la macro LOG (que ça soit dans le premier cas ou le second). Si par contre je lance d'abord LOG puis DA, le message ne vient pas mais on voit clairement SAS ralentir vertigineusement...

Code :
"Out of memory" est plutôt un message concernant la RAM
Je pense que c'est bien là mon souci, comme la préciser wise2, j'ai trop peu en MEMSIZE et SORTSIZE (je sais pas encore à quoi ça correspond mais cet aprem et demain je vais pouvoir me lancer à fond dedans). Néanmoins, en espérant que ça règle mon problème, je pense pas que ça soit la bonne solution à long terme, car vue comme se présente mon problème, j'ai vraiment l'impression que SAS se remplit, remplit, remplit, remplit jusqu'à exploser et m'afficher 'out of memory' de partout en rouge.

Encore merci à tous les 3 pour votre intérêts à mon problème.
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 13h09   #14
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Un p'tit up pour actualiser ma situation vis à vis de mon topic, alors le problème est réglé, il fallait en effet augmenter l'espace de stockage!

Merci à Olivier, Brice et Wise2 pour votre intérêt à mon problème et pour m'avoir permis d'y trouver une solution!
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h00.


 
 
 
 
Partenaires

Hébergement Web