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