[RESOLU] Parallélisation doParallel() - Précisions

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Clement Robert
Messages : 31
Enregistré le : 17 Mai 2016, 09:52

[RESOLU] Parallélisation doParallel() - Précisions

Messagepar Clement Robert » 28 Mar 2017, 09:06

Bonjour,

J'aimerais avoir quelques précisions quant à l'utilisation de ce Package.

(Je travaille sur Ubuntu 16.04 & R version 3.2.3 avec 8 cœurs sur mon poste.) Lorsque je parallélise les calculs pour tuner les paramètres d'un algo type random forrest mon écran se fige et le pc devient inutilisable jusqu’à ce que le traitement soit terminé.

Voici comment je procède :

Code : Tout sélectionner

paramgrid <- data.frame(mtry=seq(1,4,by=1))
cl <- makeCluster(5)
registerDoParallel(cl)
rfopt <-train(target~.,data=donnees_train,method="rf",
              trControl=trainControl(method="cv",number=10,search="grid",classProbs=T),
              tuneGrid=paramgrid,prox=TRUE,allowParallel=TRUE)
stopCluster(cl)


Du coup ma question est sur cb de clusters max je peux envoyer mes calculs ? Je ne comprends pas pourquoi la semaine passée lorsque j’exécutais mes traitements sur un nombre de lignes équivalent (15 000) avec une grille de paramètres plus large, le PC répondait toujours..
L’écran se fige vient probablement du fait que les calculs engagent de la mémoire SWAP (à la fin du traitement 77% de la mémoire swap est utilisé et donc le PC rame tout autant à la fin..).

J'ajoute également que j'ai obtenu l'erreur suivante :

Code : Tout sélectionner

Error in unserialize(socklist[[n]]) : error reading from connection


Y- a t-il une alternative ?


Cordialement

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: Parallélisation doParallel() - Précisions

Messagepar Gabriel Terraz » 28 Mar 2017, 11:25

Salut,
Apparemment tu as un problème de mémoire, plusieurs options :

- Optimiser ton code mais ça je n'ai pas regardé
- Rajouter de la RAM
- Utiliser moins de coeur pour utiliser moins de RAM
- Régler le déclenchement de la SWAP, par défaut je crois que sur ubuntu c'est à partir de 50% d'utilisation de la RAM, augmente à 90% par exemple

Code : Tout sélectionner

echo vm.swappiness=10 | sudo tee -a /etc/sysctl.conf

Clement Robert
Messages : 31
Enregistré le : 17 Mai 2016, 09:52

Re: Parallélisation doParallel() - Précisions

Messagepar Clement Robert » 28 Mar 2017, 12:53

Super Merci pour l'info ! J'ai remarqué que lorsque j'installe le package Parallel j'ai le message suivant :

Code : Tout sélectionner

Warning in install.packages :
package ‘Parallel’ is not available (for R version 3.2.3)


et lorsque j'installe doParallel :

Code : Tout sélectionner

2017-03-28 14:44:12 (6,81 MB/s) - ‘/tmp/Rtmpvjfukd/downloaded_packages/doParallel_1.0.10.tar.gz’ saved [173022/173022]

* installing *source* package ‘doParallel’ ...
** package ‘doParallel’ correctement décompressé et sommes MD5 vérifiées
** R
** demo
** inst
** preparing package for lazy loading
Error : package ‘parallel’ required by ‘doParallel’ could not be found
ERROR: lazy loading failed for package ‘doParallel’
* removing ‘/usr/local/lib/R/site-library/doParallel’
* restoring previous ‘/usr/local/lib/R/site-library/doParallel’
Warning in install.packages :
  installation of package ‘doParallel’ had non-zero exit status


Pourtant je n'ai pas de message d'erreur quand je lui demande de paralléliser les calculs .. et je vois bien 5 taches R avec la commande top.

Avec Ubuntu on ne peut pas aller plus haut que R version 3.2.3 si ?

Je joins SessionInfo() également :

Code : Tout sélectionner

R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.2 LTS

locale:
 [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C               LC_TIME=fr_FR.UTF-8        LC_COLLATE=fr_FR.UTF-8     LC_MONETARY=fr_FR.UTF-8   
 [6] LC_MESSAGES=fr_FR.UTF-8    LC_PAPER=fr_FR.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C           
[11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.2.3

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Parallélisation doParallel() - Précisions

Messagepar Serge Rapenne » 28 Mar 2017, 13:08

Bonjour,

Avec Ubuntu on ne peut pas aller plus haut que R version 3.2.3 si ?

Si bien sur,
Je n'utilise pas Ubuntu mais debian alors je ne suis pas absolument sur de la modification mais ceci devrait fonctionner :
dans le fichier /etc/apt/sources.list, tu ajoutes la ligne suivante avec ton editeur de texte préféré (en root):

Code : Tout sélectionner

deb http://cran.univ-lyon1.fr/bin/linux/ubuntu xenial/

http://cran.univ-lyon1.fr/ peut être remplacé par le miroir le plus proche de chez toi cf https://cran.r-project.org/mirrors.html
puis tu ajoutes la clef pgp du serveur

Code : Tout sélectionner

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9

et enfin

Code : Tout sélectionner

sudo apt update
sudo apt upgrade

et c'est tout cf : https://pbil.univ-lyon1.fr/CRAN/bin/linux/ubuntu/

Serge

Clement Robert
Messages : 31
Enregistré le : 17 Mai 2016, 09:52

Re: Parallélisation doParallel() - Précisions

Messagepar Clement Robert » 28 Mar 2017, 13:46

Je te remercie Serge le fait de passer en 3.3.3 a résolu mes problèmes.
Les traitements sont désormais rapides. Je pense que le package DoParrallel() ne fonctionnait pas correctement ...
Cdlt


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité