У меня проблемы с производительностью при использовании MCMCglmm
пакета в R для запуска модели смешанных эффектов. Код выглядит так:
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)
В данных содержится около 20 000 наблюдений, которые сгруппированы примерно в 200 школах. Я удалил все неиспользуемые переменные из фрейма данных и удалил все другие объекты из памяти перед запуском. У меня проблема в том, что для запуска требуется очень много времени, если я не уменьшу количество итераций до недопустимо малого числа. С 50000 итераций это занимает 5 часов, и у меня много разных моделей для запуска. Поэтому я хотел бы знать, есть ли способы ускорить выполнение кода или другие пакеты, которые я мог бы использовать. Я использую, MCMCglmm
потому что я хочу доверительные интервалы для случайных эффектов.
С другой стороны, я надеялся получить новый ПК позже в этом году, но, если повезет, я смогу продвинуть это вперед, поэтому мне было интересно, как лучше потратить ограниченное количество денег на новое оборудование - больше оперативной памяти более быстрый процессор и т. д. Наблюдая за диспетчером задач, я не верю, что проблема заключается в оперативной памяти (она никогда не превышает 50% физического использования), но загрузка ЦП также не превышает 50%, что мне кажется странным , Моя текущая настройка - Intel Core i5 2,66 ГГц, 4 ГБ оперативной памяти, 7200 об / мин. Разумно ли просто получить максимально быстрый процессор за счет дополнительной оперативной памяти? Я также задавался вопросом о влиянии размера кэша ЦП уровня 3 на статистические вычислительные проблемы, как это?
Обновление: После спросил на мета SO мне было рекомендовано перефразировать вопрос и пост на суперпользователя. Для этого мне нужно дать более подробную информацию о том, что происходит «под капотом» в MCMCglmm. Правильно ли я считаю, что большая часть времени вычислений тратится на оптимизацию - я имею в виду нахождение максимума какой-то сложной функции? Является ли инверсия матрицы и / или другие операции линейной алгебры распространенной операцией, которая может стать причиной узких мест? Любая другая информация, которую я мог бы предоставить сообществу суперпользователей, будет принята с благодарностью.
источник
lmer()
моделей к большим наборам данных может занять довольно много времени, особенно если вам нужно делать это много раз. Ответ на ваш вопрос может лежать в параллельных вычислениях, хотя другие пользователи (например, @DirkEddelbuettel) были бы намного полезнее, чем я, с этим. Также есть шанс, что вы получите лучшие ответы на stackoverflow.glmer
(как вы знаете из моих других сообщений), и это занимает около 20 секунд, но проблема в том, что он не дает доверительных интервалов или стандартных ошибок, и из того, что я прочитал в архиве списка рассылки, авторlme4
Пакет говорит, что выборочное распределение случайных эффектов может быть очень искажено, поэтому эти статистические данные не сообщаются. На самом деле я обнаружил,MCMCglmm
что в моем случае они приближаются к норме (не то, чтобы это сильно помогало - я просто говорю). Было бы лучше, если бы я попросил перенести его на SO?Ответы:
Почему бы не запустить его на сервисе облачных вычислений Amazon EC2 или подобном подобном сервисе?
MCMCpack
если я правильно помню, он в основном реализован на C, поэтому он не станет намного быстрее, если вы не уменьшите сложность модели, итерации и т. д. С EC2 или подобными службами облачных вычислений вы можете иметь несколько экземпляров в любой ситуации. спецификации, которые вы хотите, и запустить все свои модели одновременно.источник