Tengo scripts R para leer grandes cantidades de datos csv de diferentes archivos y luego realizar tareas de aprendizaje automático como svm para la clasificación.
¿Hay alguna biblioteca para hacer uso de múltiples núcleos en el servidor para R.
o
cuál es la forma más adecuada de lograrlo?
r
parallel-computing
multicore
mohans
fuente
fuente
Respuestas:
Si está en Linux, entonces lo más directo es multinúcleo . Más allá de eso, sugiero echar un vistazo a MPI (especialmente con el paquete de nieve ).
Más en general, eche un vistazo a:
Por último, recomiendo usar el paquete foreach para abstraer el backend paralelo en su código. Eso lo hará más útil a largo plazo.
fuente
Si está utilizando GNU / Linux, las respuestas anteriores de Shane y Dirk son geniales.
Si necesita una solución para Windows, hay una en esta publicación:
Procesamiento paralelo multinúcleo con R (en Windows)
Aunque el paquete aún no está en CRAN. se puede descargar desde ese enlace.
fuente
Shane tiene razón. Tanto multinúcleo como Rmpi son ganadores.
Una cobertura ligeramente más amplia del tema se encuentra en la vista de tareas CRAN sobre computación de alto rendimiento . Esto también enlaza con un artículo de encuesta bastante reciente sobre computación paralela con R de JSS.
Por último, algunos ejemplos prácticos y consejos se encuentran en el tutorial Introducción a HPC con R que doy de vez en cuando; vea la página de presentaciones para obtener la copia más reciente de la semana pasada en useR.
fuente
Noté que las respuestas anteriores carecen de algunas consideraciones generales de HPC.
En primer lugar, ninguno de esos paquetes le permitirá ejecutar un SVM en paralelo. Entonces, lo que puede acelerar es la optimización de parámetros o la validación cruzada, aún así debe escribir sus propias funciones para eso. O, por supuesto, puede ejecutar el trabajo para diferentes conjuntos de datos en paralelo, si es un caso.
El segundo problema es la memoria; si desea distribuir el cálculo en unas pocas computadoras físicas, no hay almuerzo gratis y debe copiar los datos; aquí debe considerar si tiene sentido predistribuir una copia de los datos en las computadoras para guardar alguna comunicación. Por otro lado, si desea utilizar múltiples núcleos en una computadora, entonces el multinúcleo es especialmente apropiado porque permite que todos los procesos secundarios accedan a la memoria del proceso primario, por lo que puede ahorrar algo de tiempo y mucho espacio en la memoria.
fuente
sprint
para R con una funciónpsvm
, pero están un poco atrasados en mantenerse al día con los cambios de R 3.0 y las nuevas pautas de envío de CRAN, por lo que la descarga actual no está disponible en CRAN ni es totalmente compatible con R 3.0. Su experiencia puede ser diferente.Las respuestas de Shane y Dirk son acertadas.
Sin embargo, es posible que desee echar un vistazo a una versión comercial de R, llamada Revolution R, que está diseñada para manejar grandes conjuntos de datos y ejecutarse en múltiples núcleos. Este software es gratuito para académicos (que podría ser su caso, no lo sé)
fuente