2017-10-17 9 views
1

이론적 인 질문은 여기에 있습니다. 단일 컴퓨터의 메모리에 맞지 않는 데이터 세트를 다룰 때 spark + EMR을 사용하는 것이 좋습니다.대규모 데이터 세트에 대한 심도있는 학습

그러나 스파크의 ml lib 알고리즘 대신 tensorflow를 사용하여 이러한 대규모 데이터 세트에 대한 심층적 인 학습을 수행하고 싶습니다.

내 연구 결과에 따르면,이를 달성하기 위해 pyspark, elephas 및 EMR을 잠재적으로 사용할 수 있음을 알았습니다. 또는 BigDL과 sparkdl이 있습니다.

내가 잘못 생각하고 있습니까? 메모리에 맞지 않는 데이터에 대한 깊은 학습을위한 모범 사례는 무엇입니까? 대신 온라인 학습이나 배치 교육을 사용해야합니까? This post "가장 고성능의 심층 학습 구현은 단일 노드 만"이라고합니다.

올바른 방향으로 나를 가리키게 도와 주시면 감사하겠습니다.

+0

달성하려는 목표에 대해 [Amazon MXNet] (https://aws.amazon.com/mxnet/)을 사용하고 있습니까? –

답변

0

"대용량 데이터 집합을 메모리에 맞추기"라는 말처럼 모든 데이터를 즉시 메모리에로드하고 교육을 시작하려고합니다. 그러므로, 나는이 가정에 기초하여 답장을한다.

일반적인 생각은 리소스에 데이터를 맞출 수없는 경우 데이터를 더 작은 청크로 나누고 반복적으로 교육한다는 것입니다.

1 모두 한 번에로드하는 대신 데이터를 하나씩로드하십시오. "Load Data -> Train -> Release Data (가비지 수집기에서 자동으로 수행 할 수 있음) -> Restart"로 실행 워크 플로를 만드는 경우 단일 데이터를 조정하는 데 필요한 리소스의 양을 이해할 수 있습니다.

2- 미니 배치를 사용하십시오. # 1에서 리소스 정보를 얻 자마자 미니 배치 크기를 쉽게 계산할 수 있습니다. 예를 들어, 단일 데이터를 교육하는 데 1.5GB의 RAM을 사용하고 GPU에 8GB의 RAM이있는 경우 이론적으로 크기 5의 미니 배치를 한 번에 교육 할 수 있습니다.

3- 리소스가 1 크기 단일 배치조차도 충분하지 않은 경우이 경우 PC 용량을 늘리거나 모델 용량/레이어/기능을 줄이는 방법을 고려할 수 있습니다. 또는 클라우드 컴퓨팅 솔루션을 사용할 수 있습니다.