Eu tenho scripts R para ler grandes quantidades de dados csv de arquivos diferentes e depois executar tarefas de aprendizado de máquina como svm para classificação.
Existem bibliotecas para usar vários núcleos no servidor para R.
ou
Qual é a maneira mais adequada de conseguir isso?
r
parallel-computing
multicore
mohans
fonte
fonte
Respostas:
Se estiver no Linux, o mais direto é o multicore . Além disso, sugiro dar uma olhada no MPI (especialmente com o pacote de neve ).
De maneira mais geral, dê uma olhada em:
Por fim, recomendo usar o pacote foreach para abstrair o back-end paralelo no seu código. Isso tornará mais útil a longo prazo.
fonte
Se você estiver usando o GNU / Linux, as respostas anteriores de Shane e Dirk são ótimas.
Se você precisar de uma solução para Windows, existe uma nesta postagem:
Processamento multicore paralelo com R (no Windows)
Embora o pacote ainda não esteja no CRAN. pode ser baixado desse link.
fonte
Shane está correto. Tanto o multicore quanto o Rmpi são vencedores.
Uma cobertura ligeiramente mais ampla do tópico está na exibição de tarefas CRAN em computação de alto desempenho . Isso também vincula a um artigo de pesquisa bastante recente sobre Parallel Computing with R do JSS.
Por fim, alguns exemplos e dicas práticas estão no tutorial Introdução ao HPC com R que dou de vez em quando - consulte minha página de apresentações para obter a cópia mais recente da semana passada em useR.
fonte
Notei que nas respostas anteriores faltam algumas considerações gerais sobre o HPC.
Primeiro, nenhum desses pacotes permitirá que você execute um SVM em paralelo. Portanto, o que você pode acelerar é a otimização de parâmetros ou a validação cruzada, mas você deve escrever suas próprias funções para isso. Ou, é claro, você pode executar o trabalho para diferentes conjuntos de dados em paralelo, se for o caso.
A segunda questão é a memória; se você deseja distribuir o cálculo por alguns computadores físicos, não há almoço grátis e você deve copiar os dados - aqui você deve considerar se faz sentido predistribuir uma cópia dos dados nos computadores para salvar alguma comunicação. Por outro lado, se você deseja usar vários núcleos em um computador, o multicore é especialmente apropriado porque permite que todos os processos filhos acessem a memória do processo pai, para que você possa economizar tempo e muito espaço na memória.
fonte
sprint
para o R com uma funçãopsvm
, mas eles estão um pouco atrasados em acompanhar as alterações do R 3.0 e as novas diretrizes de envio do CRAN, portanto, o download atual não está disponível no CRAN nem é totalmente compatível com o R 3.0. Sua milhagem pode variar.As respostas de Shane e Dirk estão no local.
No entanto, você pode querer dar uma olhada em uma versão comercial do R, chamada Revolution R, criada para lidar com grandes conjuntos de dados e executar em vários núcleos. Este software é gratuito para acadêmicos (que pode ser o seu caso, eu não sei)
fonte