doSMP를 사용하여 캐럿 패키지 병렬화


10

업데이트 : 캐럿은 이제 foreach내부적으로 사용 되므로이 질문은 더 이상 관련이 없습니다. 에 대한 작업 병렬 백엔드를 등록 할 수 있으면 foreach캐럿이이를 사용합니다.


나는이 캐럿 R에 대한 패키지를, 그리고 내가 사용하는 흥미로운이야 train내 모델을 교차 검증하는 기능을. 그러나 속도를 높이고 싶지만 캐럿이 병렬 처리를 지원하는 것으로 보입니다. Windows 시스템에서이 기능에 액세스하는 가장 좋은 방법은 무엇입니까? 나는이 doSMP의 패키지를,하지만 난 변환하는 방법을 알아낼 수 없습니다 foreach에 기능을 lapply나는에 전달할 수 있도록 기능이 train작동합니다.

다음은 train문서 에서 내가하고 싶은 일의 예입니다 . 이것은 내가하고 싶은 것이지만 doSMP패키지가 아닌 패키지를 사용합니다 doMPI.

## A function to emulate lapply in parallel
mpiCalcs <- function(X, FUN, ...)
}
    theDots <- list(...)
    parLapply(theDots$cl, X, FUN)
{

library(snow)
cl <- makeCluster(5, "MPI")

## 50 bootstrap models distributed across 5 workers
mpiControl <- trainControl(workers = 5,
    number = 50,
    computeFunction = mpiCalcs,
    computeArgs = list(cl = cl))

set.seed(1)
usingMPI <- train(medv ~ .,
    data = BostonHousing,
    "glmboost",
    trControl = mpiControl)

다음은 lapply 문서와 동일한 변수 이름을 사용하는 mbq 함수 버전입니다.

felapply <- function(X, FUN, ...) {
    foreach(i=X) %dopar% {
        FUN(i, ...)
    }       
}

x <- felapply(seq(1,10), sqrt)
y <- lapply(seq(1,10), sqrt)
all.equal(x,y)

답변:


6

시험

computeFunction=function(onWhat,what,...){foreach(i=onWhat) %do% what(i,...)},

5

캐럿은 이미 train()기능의 일부로 내부적으로이 작업 을 수행합니다. 캐럿 웹 페이지 의 맨 아래 섹션을 참조하십시오 .


열차가 사용하는 기본 기능은 lapply입니다. 기차를 병렬화하려면 multicore ::: mclapply와 같이 랩을 모방하는 병렬 기능이 필요합니다. 적어도 그것이 내가 이해하는 방식입니다.
Zach

@Zach,이 질문에 대한 +1, 내가 궁금해 하나는 병렬 처리를 할 수있는 방법의 업데이트가 caret::train()대한 Windows의 예 대부분의 APM책은, 계산 비용이 나를 위해 적어도 3기가바이트 RAM,은 2.1GHz, 듀얼 코어, 32 비트 승리 . 이전에이 문제를 알고 있었다면로 변경 Linux하겠지만 지금은 그런 일을하기에는 너무 늦었습니다. Windows에서이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 에 의해 답변 mbq이 여전히 활성화 되어 있다면, 구현 방법에 대한 적당한 데이터 크기를 가진 모델의 구체적인 예를 사용하여 코드에 표시 할 수 computeFunction있습니까?
박사 학위

@doctorate caret는 foreach패키지를 내부적 으로 사용하도록 업데이트되었으며 등록 할 수있는 모든 병렬 백엔드에서 작동합니다. doParallel 패키지를 살펴보십시오. 백엔드를 등록하면 캐럿이 자동으로이를 사용합니다. 또한 Windows에서 각 코어에는 자체 램 복사본이 필요하므로 4 개의 코어를 등록하는 경우 4 배 많은 RAM이 필요합니다.
Zach

@ 자흐, 정말 고마워, 그것을 시도하고 작동했습니다. 나는 또한 당신이 기여한 것을 알고 caret있습니다. 당신은 pls 가이 질문을 살펴볼 수 있습니까, 나는 매우 감사 할 것입니다. stats.stackexchange.com/questions/81962/...
박사
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.