Я недавно переключился на AWS EC2, чтобы проводить аналитику данных с помощью Ubuntu R Studio.Я считаю, что это даст мне больше вычислительной мощности, чем мой MacBook.Я ищу способы лучше использовать вычислительную мощность (даже в экземпляре t2.micro, который находится на свободном уровне).
Цель - исчерпывающий поиск оптимальной комбинации параметров (например, у меня 5 параметровVar1-Var4 и поле для групп. Допустим, у меня есть 100 групп, тогда у меня будет модель для каждой группы, и каждая модель будет принимать различные значения Var1-Var4 в качестве оптимальных моделей. Каждая из Var1-Var4 может иметь10 возможных значений. Поэтому, теоретически, мне придется выполнить тот же набор подмножеств / вычислений для 100 * 10 * 10 * 10 * 10 = 1 000 000 сценариев.
Вот результаты моего сценария:
library(doParallel)
library(foreach)
group <- as.list(c(1:100))
Var1 <- as.list(c(1:10))
Var2 <- as.list(c(1:10))
Var3 <- as.list(c(1:10))
Var4 <- as.list(c(1:10))
TestScript <- expand.grid(group = group, Var1 = Var1,... , Var4 = Var4)
Разделите сценарии тестирования на небольшие списки для применения функций.
Test <- list()
n <- 50
Test$Var1 <- with(TestScript, split(Var1, ceiling(seq_along(Var1)/n)))
...
Test$Var4 <- with(TestScript, split(Var1, ceiling(seq_along(Var4)/n)))
Использование функции apply внутри цикла doParallel:
result.table <- foreach(i=1:length(Test$Var1), .combine = "rbind", .inorder = FALSE) %dopar% {
--- subsetting dataset and using nested apply functions ---
}
Я понимаючто пакет doParallel использует количество потоков (ЦП) в машине, но есть ли в каждом потоке какой-нибудь способ заставить его работать более интенсивно?
Показатель использования ЦП, показанный на панели мониторинга EC2, показывает, что загрузка ЦП составляет около 10% (по сравнению с 80% +, я ожидаю).Я не уверен, связано ли это со скоростью ввода-вывода.Я не думаю, что это проблема с памятью, так как размер моего набора данных составляет всего около 3 МБ (строка 50 КБ x 20 столбцов).Можно ли как-нибудь проверить, где находится узкое место?