Я запускаю R на linux box, который имеет 8 многоядерных процессоров, и у меня есть проблема оптимизации, которую я хотел бы ускорить, распараллеливая сама процедура оптимизации. Важно отметить, что эта проблема включает в себя (1) несколько параметров и (2) изначально замедляет работу модели. Довольно распространенная проблема!
Кто-нибудь знает о параллельном оптимизаторе для таких случаев?
В частности, решатели вроде nlm()
выполняют несколько оценок модели (по два значения каждого параметра) каждый раз, когда алгоритм делает шаг в пространстве параметров, поэтому распараллеливание этого экземпляра нескольких прогонов модели значительно ускорит процесс в этих ситуациях, когда больше чем несколько значений параметров.
Кажется, что код, который использует пакет parallel
, может быть написан таким образом, что пользователю придется выполнить минимальную модификацию кода, чтобы перейти от использования nlm()
или optim()
к этой процедуре параллельной оптимизации. То есть, похоже, можно переписать эти процедуры в основном без изменений, за исключением того, что шаг вызова модели несколько раз, как это принято в методах на основе градиента, будет выполняться параллельно.
В идеале, что-то вроде nlmPara() будет принимать код, который выглядит как
fit <- nlm(MyObjFunc, params0);
и требуют только незначительные изменения, например,
fit <- nlmPara(MyObjFunc, params0, ncores=6);
Мысли/предложения?
PS: Я предпринял шаги, чтобы ускорить эти модели, но они медленны по разным причинам (т.е. мне не нужны советы по ускорению запуска моделей!;-)).