Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Choix d’une machine performante
4 participants
Page 1 sur 1
Choix d’une machine performante
Bonjour,
Je compte faire des analyses statistiques avec r nécessitant un grand nombre de données (plusieurs Go).
Quel type de poste de travail assez puissant et rapide dois je commander pour mes traitements de données. PC ou Mac? Processeur (i7, i9, xeon)? Ram (32 ou 64)?
Je privilégie, si possible des ordi portables.
Que me conseilleriez vous pour que ça tourne bien?
Merci.
Je compte faire des analyses statistiques avec r nécessitant un grand nombre de données (plusieurs Go).
Quel type de poste de travail assez puissant et rapide dois je commander pour mes traitements de données. PC ou Mac? Processeur (i7, i9, xeon)? Ram (32 ou 64)?
Je privilégie, si possible des ordi portables.
Que me conseilleriez vous pour que ça tourne bien?
Merci.
thomasda- Nombre de messages : 4
Date d'inscription : 03/09/2018
Re: Choix d’une machine performante
Bonjour,
Si tu sais dès le départ que tu vas devoir traiter des gros jeux de données je privilégierais la RAM au processeur si tu dois faire un choix économique.
Après mac ou pc ... aucune idée.
cdlt
Si tu sais dès le départ que tu vas devoir traiter des gros jeux de données je privilégierais la RAM au processeur si tu dois faire un choix économique.
Après mac ou pc ... aucune idée.
cdlt
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: Choix d’une machine performante
Ok je pense que je vais rester sur pc avec 32go de ram.
Par contre je veux raccourcir les temps de calculs qui peuvent parfois atteindre plus d’une heure sur un pauvre i5. Que me conseillez vous i7, xeon?
Par contre je veux raccourcir les temps de calculs qui peuvent parfois atteindre plus d’une heure sur un pauvre i5. Que me conseillez vous i7, xeon?
thomasda- Nombre de messages : 4
Date d'inscription : 03/09/2018
Re: Choix d’une machine performante
Pour raccourcir les temps de calcul, tu peux utiliser plusieurs coeurs sur ta machine en faisant de la parallélisation (attention n'utilise pas tous tes coeurs).
I5 ou I7, je ne sais pas si cela augmentera ton nombre de coeur mais si oui et si tu veux faire de la parallélisation alors ça peut être une bonne idée pour lancer tes programmes plus rapidement.
Tu as également des fonction qui seront plus rapides à lancer que certaines boucles.
https://statistiques.forumpro.fr/t7976-les-boucles-sont-deconseillees-dans-r
I5 ou I7, je ne sais pas si cela augmentera ton nombre de coeur mais si oui et si tu veux faire de la parallélisation alors ça peut être une bonne idée pour lancer tes programmes plus rapidement.
Tu as également des fonction qui seront plus rapides à lancer que certaines boucles.
https://statistiques.forumpro.fr/t7976-les-boucles-sont-deconseillees-dans-r
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Choix d’une machine performante
zezima a écrit:...mais si oui et si tu veux faire de la parallélisation alors ça peut être une bonne idée pour lancer tes programmes plus rapidement...
Intéressant, comment on fait ça?
thomasda- Nombre de messages : 4
Date d'inscription : 03/09/2018
Re: Choix d’une machine performante
Bonjour,
R intègre depuis plusieurs versions le package parallel dans sa version de base. Un petit tour via google sur ce package devrait te donner de très nombreux docs sur le comment faire.
R utilise effectivement 1 seul processeur ou cœur donc R est moins performant sur un multicœur que sur un simple cœur du fait qu'en multicœur la fréquence de chaque cœur est plus faible. En parallélisant tu peux utiliser tous les cœurs de ton processeurs.
Ceci étant dit, si ton code n'est pas bien optimisé tu passeras quand même bcp de temps de calcul si ton jeu de données fait plusieurs Go. Comme le souligne Droopy la RAM est essentiel car R est très gourmand là dessus.
R intègre depuis plusieurs versions le package parallel dans sa version de base. Un petit tour via google sur ce package devrait te donner de très nombreux docs sur le comment faire.
R utilise effectivement 1 seul processeur ou cœur donc R est moins performant sur un multicœur que sur un simple cœur du fait qu'en multicœur la fréquence de chaque cœur est plus faible. En parallélisant tu peux utiliser tous les cœurs de ton processeurs.
Ceci étant dit, si ton code n'est pas bien optimisé tu passeras quand même bcp de temps de calcul si ton jeu de données fait plusieurs Go. Comme le souligne Droopy la RAM est essentiel car R est très gourmand là dessus.
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Choix d’une machine performante
édité
Dernière édition par zezima le Jeu 6 Sep 2018 - 14:35, édité 4 fois
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Choix d’une machine performante
La fonction apply est pratique a écrire parce qu'elle permet de travailler à la fois sur les lignes et sur les colonnes d'un objet. Dans le cas d'un data.frame et d'un calcul en colonne, elle sera plus bien plus lente que les autres fonctions de la famille lapply. Une boucle bien programmée sera bien plus efficace que apply notamment si elle est encapsulée dans une fonction. Pour une matrice ça sera relativement équivalent. Tout dépend de l'objet initial (data.frame, matrix) et des manipulations que l'on en fait. Avec les dernières versions de R et la compilation Just In Time (JIT), pour appliquer une fonction aux colonnes d'un data.frame une boucle encapsulée sera plus rapide qu'apply et les performances de la boucle seront proches voir meilleure que les lapply et sapply. Ceci est évoqué dans le lien cité par zezima. Par contre pour qu'une boucle soit efficace, il faut qu'elle soit programmée le plus correctement possible, en évitant par exemple de répéter des opérations dans la boucle qui pourrait être faite en dehors ou qui n'ont pas besoin d'être refaites à chaque itération.
La fonction la plus efficace de la famille des apply est en général vapply.
Après tout dépend du type d'opérations que tu vas faire. Si tes calculs vont faire appel à ces calculs matriciels, une solution sans effort pour améliorer son temps de calcul c'est d'installer Microsoft R Open plutôt que la version classique de R. Installer avec la librairie MKL les gains de temps sont non négligeables parce que les calculs matriciels sont réalisés en parallèle sans que tu n'es quoi que ce soit à programmer.
Après pour la parallélisation il vaut mieux être sous un autre OS que Windows. Sous R les solutions sont limitées avec Windows alors qu'elles sont plus grandes sous macOs et linux.
Sous windows tu ne pourras faire que des clusters de types SOCK ou PSOCK, c'est à dire des clusters à mémoire non partagée (contrairement au type FORK dispo sous mac et linux).
Ça veut dire quoi ? Ca veut dire que si tu dois répéter des opérations sur un objet volumineux, cet objet va devoir être dupliquer pour que chaque coeur travail dessus. La mémoire utilisée sera donc elle aussi multipliée ce qui n'est pas le cas avec des clusters de type FORK.
Il y a pas mal de tuto pour faire de la parallélisation, avec windows j'utilise les librairies doSNOW et foreach mais parallel fonctionne très bien aussi.
cdlt
La fonction la plus efficace de la famille des apply est en général vapply.
Après tout dépend du type d'opérations que tu vas faire. Si tes calculs vont faire appel à ces calculs matriciels, une solution sans effort pour améliorer son temps de calcul c'est d'installer Microsoft R Open plutôt que la version classique de R. Installer avec la librairie MKL les gains de temps sont non négligeables parce que les calculs matriciels sont réalisés en parallèle sans que tu n'es quoi que ce soit à programmer.
Après pour la parallélisation il vaut mieux être sous un autre OS que Windows. Sous R les solutions sont limitées avec Windows alors qu'elles sont plus grandes sous macOs et linux.
Sous windows tu ne pourras faire que des clusters de types SOCK ou PSOCK, c'est à dire des clusters à mémoire non partagée (contrairement au type FORK dispo sous mac et linux).
Ça veut dire quoi ? Ca veut dire que si tu dois répéter des opérations sur un objet volumineux, cet objet va devoir être dupliquer pour que chaque coeur travail dessus. La mémoire utilisée sera donc elle aussi multipliée ce qui n'est pas le cas avec des clusters de type FORK.
Il y a pas mal de tuto pour faire de la parallélisation, avec windows j'utilise les librairies doSNOW et foreach mais parallel fonctionne très bien aussi.
cdlt
Dernière édition par droopy le Jeu 6 Sep 2018 - 18:58, édité 2 fois
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: Choix d’une machine performante
D'accord, au temps pour moi Droopy, on m'a toujours dit là où je travaille que les boucles for() étaient à bannir mais je n'ai jamais réellement vérifié que ça fonctionnait bien.
Je vais supprimer mon msg pour ne pas induire en erreur.
Je vais supprimer mon msg pour ne pas induire en erreur.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Choix d’une machine performante
Demande a tes collègues de calculer la moyenne de chaque colonne d'un data.frame de 1000*1000 et dis leur que tu y arrives plus rapidement avec une boucle
J'ai édité aussi.
J'ai édité aussi.
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: Choix d’une machine performante
Demande a tes collègues de calculer la moyenne de chaque colonne d'un data.frame de 1000*1000 et dis leur que tu y arrives plus rapidement avec une boucle
Non il va perdre s'ils passent par colMeans...
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Choix d’une machine performante
Et non pas sur un data.frame ... parce que ce qui prend le plus de temps a un colMeans sur un data.frame c'est le passage du data.frame en matrice, matrice sur laquelle le code C sera effectué. C'est bien pour ça que j'ai dit sur un data.frame et non sur une matrice, eheheh ...
- Code:
tab <- as.data.frame(matrix(rnorm(1e6), 1e3))
tmp <- tempfile()
Rprof(tmp)
mns <- colMeans(tab)
Rprof()
summaryRprof(tmp)
$`by.self`
self.time self.pct total.time total.pct
"as.matrix.data.frame" 0.02 100 0.02 100
$by.total
total.time total.pct self.time self.pct
"as.matrix.data.frame" 0.02 100 0.02 100
"as.matrix" 0.02 100 0.00 0
"colMeans" 0.02 100 0.00 0
$sample.interval
[1] 0.02
$sampling.time
[1] 0.02
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: Choix d’une machine performante
c pour ça que je ds que les data.frame c'est avant tout des list et donc c de la merde
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Choix d’une machine performante
c'est parce que tu ne sais pas t'en servir
ton affirmation est vrai et pas vrai en même temps parce que si les data.frame sont une classe particulières de list, leur gestion de la mémoire est différente ce qui est ... troublant voir ch....
mais la on rentre dans des processus d'optimisation très fins, mais il semblerait qu'il faille privilégier une liste à un data.frame que pour gagner du temps de calcul.
Voir ce très bon site pour prendre de bonnes habitudes pour optimiser son utilisation de R (voir la partie "Modification d’éléments dans un data frame
")
https://stt4230.rbind.io/amelioration_code/optim_temps_r/#package-profvis
cdlt
ton affirmation est vrai et pas vrai en même temps parce que si les data.frame sont une classe particulières de list, leur gestion de la mémoire est différente ce qui est ... troublant voir ch....
mais la on rentre dans des processus d'optimisation très fins, mais il semblerait qu'il faille privilégier une liste à un data.frame que pour gagner du temps de calcul.
Voir ce très bon site pour prendre de bonnes habitudes pour optimiser son utilisation de R (voir la partie "Modification d’éléments dans un data frame
")
https://stt4230.rbind.io/amelioration_code/optim_temps_r/#package-profvis
cdlt
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: Choix d’une machine performante
c'est parce que tu ne sais pas t'en servir
tsss...même pas je réponds à cette bassesse.
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Choix d’une machine performante
Ah bon ? Ne viens-tu pas de le faire :-DNik a écrit:tsss...même pas je réponds à cette bassesse.
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|