Amazon EC2의 R 임의 포리스트 오류 : 5.4Gb 크기의 벡터를 할당 할 수 없습니다


9

randomForest()약 20 개의 예측 변수와 600K 행이있는 1000 개의 나무와 데이터 프레임을 사용하여 R의 임의 포리스트 모델을 훈련 하고 있습니다. 내 랩톱에서는 모든 것이 잘 작동하지만 amazon ec2로 이동하고 같은 것을 실행하면 오류가 발생합니다.

Error: cannot allocate vector of size 5.4 Gb
Execution halted

c3.4xlarge인스턴스 유형을 사용하고 있기 때문에 꽤 비쌉니다. 누구 든지이 인스턴스에서 실행할 수있는 해결 방법을 알고 있습니까? 랩탑이 아닌 EC2 인스턴스에서만이 문제를 일으키는 메모리 뉘앙스를 알고 싶습니다 (OS X 10.9.5 프로세서 2.7 GHz Intel Core i7; 메모리 16 GB 1600 MHz DDR3)

감사.

답변:


5

다음은 몇 가지 조언입니다 (자신의 책임으로 사용하십시오).

위에서 언급 한 간단한 방법으로도 도움이되지 않거나 단일 시스템 또는 여러 시스템에서 프로세스 를 병렬화 하는 기능을 포함하여 확장 성과 성능을 향상 시키 려면 R 패키지 ( http : // cran)를 사용해보십시오 . r-project.org/web/packages/bigrf . https://stackoverflow.com/q/1358003/2872891 토론도 참조 하십시오 .bigrf


2

다른 아이디어에 추가 : Amazon 인스턴스에서 실행할 있는 것을 파악할 때까지 데이터를 줄 입니다. 100k 행을 수행 할 수 없다면 무언가 잘못되었습니다 .590k 행에서 실패하면 한계입니다.

c3.4xlarge 인스턴스에는 30Gb의 RAM이 있으므로 충분합니다.


2

벡터의 실제 메모리와 같은 세부 사항을 제외하고 현재보고있는 정확한 오류를 Google에 알려주는 것이 항상 도움이됩니다. 저에게 첫 번째 히트는 " R : Memory limits of R " 이라는 흥미로운 문서입니다 . "Unix"에서 다음을 읽을 수 있습니다.

주소 공간 제한은 시스템별로 다릅니다. 32 비트 OS는 4Gb 이하의 제한을 부과합니다. 종종 3Gb입니다. 64 비트 OS에서 32 비트 실행 파일을 실행하면 비슷한 제한이 있습니다. 64 비트 실행 파일은 기본적으로 시스템에 제한이 없습니다 (예 : x86_64 CPU에서 Linux의 경우 128Tb).

단일 프로세스에서 사용 가능한 자원에 제한을 적용하는 방법에 대해서는 limit 또는 ulimit와 같은 명령에 대한 OS / shell의 도움말을 참조하십시오. 예를 들어 bash 사용자는

ulimit -t 600 -v 4000000

반면에 csh 사용자는

limit cputime 10m limit vmemoryuse 4096m

프로세스를 CPU 시간 10 분 및 약 4Gb의 가상 메모리로 제한합니다. (사용중인 RAM을 설정하는 다른 옵션이 있지만 일반적으로 인정되지는 않습니다.)

따라서 확인해야합니다

  1. EC2 인스턴스에서 어떤 유형의 OS를 실행하고 있습니까?
  2. 해당 OS에서 어떤 유형의 R 빌드 를 실행하고 있으며 64 비트 버전을 실행해야합니다.
  3. 둘 다 이미 64 비트 인 경우 ulimit메모리를 8Gb로 설정하십시오.ulimit -v 8000000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.