R 코드가 다중 프로세서를 사용하도록하는 데 대한 제안 사항이 있습니까?


28

다른 파일에서 많은 양의 CSV 데이터를 읽은 다음 svm과 같은 기계 학습 작업을 수행하기위한 R 스크립트가 있습니다.
R의 서버에서 다중 코어를 사용하기위한 라이브러리 가 있습니까?
또는
이를 달성하기위한 가장 적합한 방법은 무엇입니까?


데이터를 가져오고 SVM을 실행한다는 사실이 질문과 어떻게 관련이 있는지는 모르겠습니다. 그래서 나는 이것이 더 많은 질문이라고 생각합니다. 그러나 외부 참조이기 때문에 외부 참조가 좋은 장기 솔루션으로 볼 수있었습니다.
Shane

3
나는 이런 종류의 Q & A에 아무런 문제가 없습니다. R은 퀀트가 자연스럽게 말하는 주류 언어 (Python 또는 Java와 같은)가 아닙니다. 실제로 R 메일 링리스트 나 그룹 사이트에 대한 질문입니다. R을 배우고 자하는 신진 분석가들에게 봉사하기 위해 우리는 여기에도 답변을 드리겠습니다.
Paul

2
열린 상태로 투표하십시오. 통계 문제와 매우 관련이 있습니다. 문제가 병렬 스트림으로 나눌 수있는 방법은 요청되는 질문과 관련이 있기 때문입니다.
russellpierce

@chl :이 문제를 해결해 주셔서 감사합니다. 사실, 나는이 스레드에서 모든 비상업적 인 참조가 등장한 직후 확인했지만 Win 7 x64에서 작동하는 것을 찾을 수 없었습니다.
whuber

1
whuber, 내가 제시 한 솔루션은 win 7에서 작동하며 비 상업적입니다 (자세한 내용은 링크 된 게시물을 읽으십시오). 그것은 상업 환경과 번들로 제공되지만 (내 게시물이 어떻게 보여주는 것처럼) 분리 할 수 ​​있습니다. 코드 자체는 GPL입니다.
Tal Galili

답변:


16

Linux에 있다면 가장 간단한 방법은 multicore 입니다. 그 외에도 MPI를 살펴 보는 것이 좋습니다 (특히 스노우 패키지 포함).

보다 일반적으로 다음을 살펴보십시오.

  1. 고성능 컴퓨팅 볼 CRAN에.
  2. "R을 사용한 병렬 컴퓨팅의 최신 기술"

마지막으로 코드에서 병렬 백엔드를 추상화하기 위해 foreach 패키지를 사용하는 것이 좋습니다 . 장기적으로 더 유용 할 것입니다.


나는 주로 멀티 코어를 사용하지만 내결함성과 깨끗한 인터페이스로 눈과 Rmpi보다 강설을 좋아합니다.

강설 용 @mbq +1-눈을 더욱 추상화하고 R을 사용한 병렬 컴퓨팅을 매우 간단하게 만듭니다.
Sharpie


5

셰인이 맞습니다. 모두 멀티 코어Rmpi은 승자입니다.

주제의 약간 더 넓은 범위는 고성능 컴퓨팅에 대한 CRAN 태스크보기에 있습니다. 이것은 또한 JSS의 R사용한 병렬 컴퓨팅 에 관한 최근의 조사 기사로 연결됩니다 .

마지막으로, 몇 가지 실습 예제와 팁에 R과 HPC에 소개 내 볼 - 나는 가끔주고 튜토리얼 프리젠 테이션 페이지의 사용자에 지난 주 가장 최근의 사본.


음, 뮤텍스가 필요했습니다. 귀하의 답변에 댓글을 달았을 때 첫 번째 (원시) 버전 만 보았고 잘 파악했습니다 .mc와 Rmpi에서 확장 될 수 있습니다. 그리고 당신은하고 나는 모방 고양이처럼 보입니다. 그런 삶입니다.
Dirk Eddelbuettel

반면에, 나의 대답은 과거에 당신의 논문 / 발표를 읽은 것에서 파생됩니다. 그래서 당신도 복사하고 있다고 생각합니다.
Shane

5

이전 답변에는 일반적인 HPC 고려 사항이 부족한 것으로 나타났습니다.
우선, 이러한 패키지 중 어느 것도 하나의 SVM을 병렬 로 실행할 수 없습니다 . 따라서 속도를 높일 수있는 것은 매개 변수 최적화 또는 교차 유효성 검사이지만 여전히 해당 기능을 직접 작성해야합니다. 또는 경우에 따라 다른 데이터 세트에 대해 작업을 병렬로 실행할 수도 있습니다.
두 번째 문제는 메모리입니다. 몇 대의 실제 컴퓨터에 계산을 분산 시키려면 무료 점심 식사가 없으며 데이터를 복사해야합니다. 여기서 일부 통신을 저장하기 위해 컴퓨터에 데이터 사본을 사전 분배하는 것이 적절한 지 고려해야합니다. 반면에 한 컴퓨터에서 여러 코어를 사용하려는 경우 멀티 코어는 모든 하위 프로세스가 상위 프로세스의 메모리에 액세스 할 수 있으므로 시간과 많은 메모리 공간을 절약 할 수 있기 때문에 특히 적합합니다.


1
+1 이것이 교차 검증을 분리하는 방법을 다루지 않는 것에 대한 좋은 점.
Shane

또한 dCSE ( hector.ac.uk/cse/distributedcse/reports/sprint03/… )를 통해 개별 SVM에 대해 HPC를 활성화하는 최근 작업 (2013)이있었습니다 . 기능이 포함 된 sprintR 용 패키지 가 psvm있지만 R 3.0 변경 사항 및 새로운 CRAN 제출 지침을 따르는 데 약간 뒤쳐져 있으므로 현재 다운로드 를 CRAN에서 사용할 수 없거나 R 3.0과 완전히 호환되지 않습니다. 귀하의 마일리지가 다를 수 있습니다.
밝은 별

3

셰인과 더크의 반응이 모두 주목을 받고 있습니다.

그럼에도 불구하고 빅 데이터 세트를 처리하고 여러 코어에서 실행되도록 설계된 Revolution R 이라는 상용 버전의 R을 살펴볼 수 있습니다 . 이 소프트웨어는 학자에게 무료입니다 (귀하의 경우 일 수도 있습니다)


5
다소 동의하지 않습니다. Revolution은 (당신의 게시물에서 알 수 있듯이) 마인드 쉐어링에서 훌륭한 영업 업무를 수행하지만 현재로서는 일반 R (적어도 Linux에서는)으로 얻지 못한 제품은 거의 없습니다. 인텔 MKL은 물론 Goto Blas를 얻을 수 있습니다. Windows에서는 멀티 코어를 구축 할 수없는 doSMP를 제공합니다.
Dirk Eddelbuettel

2
물론 doSMP는 Windows 환경에서 작업하는 경우 OP가 원하는 것입니다.
russellpierce
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.