Tengo scripts en 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.
¿Existen librerías para hacer uso de múltiples núcleos en el servidor para R.
o
¿Cuál es la forma más adecuada de conseguirlo?
Respuestas
¿Demasiados anuncios?Si es en Linux, lo más sencillo es multinúcleo . Aparte de eso, le sugiero que eche un vistazo a MPI (especialmente con el nieve paquete).
En términos más generales, eche un vistazo a:
Por último, recomiendo utilizar el foreach para abstraer el backend paralelo de tu código. Esto lo hará más útil a largo plazo.
Si estás usando GNU/Linux las respuestas anteriores de Shane y Dirk son geniales.
Si necesitas una solución para windows, hay una en este post:
Procesamiento paralelo multinúcleo con R (en Windows)
Aunque el paquete aún no está en CRAN, se puede descargar desde ese enlace.
He observado que en las respuestas anteriores faltan algunas consideraciones generales sobre el HPC.
En primer lugar, ninguno de esos paquetes le permitirá ejecutar un SVM en paralelo. Así que lo que puede acelerar es la optimización de los parámetros o la validación cruzada, todavía 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.
La segunda cuestión es la memoria; si se quiere repartir el cálculo entre unos cuantos ordenadores físicos, no hay almuerzo gratis y hay que copiar los datos -- aquí hay que considerar si tiene sentido predistribuir una copia de los datos entre los ordenadores para ahorrar algo de comunicación. Por otro lado, si desea utilizar varios núcleos en un ordenador, entonces el multinúcleo es especialmente apropiado porque permite a todos los procesos hijos acceder a la memoria del proceso padre, por lo que puede ahorrar algo de tiempo y mucho espacio de memoria.
Tanto las respuestas de Shane como las de Dirk dan en el clavo.
No obstante, puede que quieras echar un vistazo a una versión comercial de R, llamada Revolución R que está construido para tratar con grandes conjuntos de datos y ejecutarse en múltiples núcleos. Este software es gratuito para los académicos (que podría ser su caso, no lo sé)
Shane tiene razón. Ambos multinúcleo y Rmpi son ganadores.
Una cobertura ligeramente más amplia del tema se encuentra en el Vista de tareas de 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, hay algunos ejemplos prácticos y consejos en el Introducción a HPC con R tutorial que doy de vez en cuando -- ver mi página de presentaciones para la copia más reciente de la semana pasada en useR.