11 votos

¿Cómo puedo optimizar la eficiencia computacional cuando el ajuste de un modelo complejo para un gran conjunto de datos en varias ocasiones?

Estoy teniendo problemas de rendimiento utilizando la MCMCglmm paquete en R para ejecutar un modelo de efectos mixtos. El código es este:

MC1<-MCMCglmm(bull~1,random=~school,data=dt,family="categorical"
, prior=list(R=list(V=1,fix=1), G=list(G1=list(V=1, nu=0)))
, slice=T, nitt=iter, ,burnin=burn, verbose=F)

Hay alrededor de 20.000 observaciones en los datos y que se agrupan en torno a 200 escuelas. He bajado todas las variables de la dataframe y quita todos los demás objetos de la memoria, antes de la ejecución. El problema que tengo es que se tarda mucho tiempo en ejecutarse, a menos que reducir las iteraciones a un inaceptable pequeño número. Con 50.000 iteraciones, se tarda 5 horas y yo tenemos muchos modelos diferentes para que se ejecute. Así que me gustaría saber si hay maneras de acelerar la ejecución de código, o cualquier otro paquete que podría utilizar. Estoy usando MCMCglmm porque quiero que los intervalos de confianza para los efectos al azar.

Por otro lado, tenía la esperanza de conseguir un nuevo PC a finales de este año, pero con un poco de suerte puedo ser capaz de llevar eso adelante, así que me he estado preguntando cómo mejor gastar una cantidad limitada de dinero en hardware nuevo - más memoria RAM, CPU más rápido, etc. Viendo el administrador de tareas no creo que la RAM es el problema (que nunca llega a más del 50% de físico utilizado), pero el uso de la CPU no se mucho, por encima del 50%, lo que me parece extraño. Mi configuración actual es un intel core i5 a 2,66 GHz, 4GB de RAM, HDD de 7200 rpm. Es razonable que el que acaba de obtener la CPU más rápida posible, a expensas de más de RAM ? Me preguntaba también sobre el efecto del nivel 3 de la CPU tamaño de la caché en estadística informática problemas como este ?

Actualización: Tener frecuentes en la meta ASÍ que se me ha informado de reformular la pregunta y publicar en Superusuario. Para ello necesito dar más detalles sobre lo que está pasando "bajo el capó" en MCMCglmm. Estoy en lo cierto al pensar que la mayor parte de los cálculos del tiempo es dedicado a la realización de optimización - me refiero a encontrar el máximo de algunos complicado función ? Es la inversión de matrices y/o en otros las operaciones de álgebra lineal también una operación común que podría ser la causa de los cuellos de botella ? Cualquier otra información que pudiera dar a la Superusuario de la comunidad sería más gratamente recibida.

3voto

Rog Puntos 200

Por qué no se ejecuta en Amazon EC2 de computación en la nube o de un servicio similar tal servicio? MCMCpack es, si recuerdo correctamente, sobre todo implementado en C, por lo que no va a llegar mucho más rápido a menos que disminuir la complejidad del modelo, iteraciones, etc. Con EC2, o similar de computación en la nube los servicios, usted puede tener varias instancias en lo que las especificaciones que usted desea, y ejecutar todos sus modelos a la vez.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X