2017-05-03 3 views
2

https://github.com/silicon-valley-data-science/RNN-Tutorial에있는 모델을 학습하려고합니다. https://github.com/jupiter126/Create_Speech_Dataset (녹음본과 함께 약 340000 개의 작은 wav 오디오 샘플)을 통해 생성 된 데이터 세트를 사용합니다.

내가 GPU로 훈련 할 때 훈련은 비교적 빠르지 만 OOM에 도달하지 않으면 batch_train_size를 25 이상으로 설정할 수 없습니다.
내가 CPU로 훈련을하면 훈련 속도가 훨씬 느려지지만 batch_train_size를 250으로 쉽게 설정할 수 있습니다 (아마도 최대 700 개이지만 아직 시도하지 않았습니다).

CPU 대 GPU를 사용하여 모델 교육 - 속도와 메모리

나는 GPU의 작은 배치 크기 제한은 교육의 품질에 영향을하거나하는 방법에 대한 혼란 스러워요 상승하면 상승 만 시대에, 즉 25 개 샘플을 그 효과 ...
을 취소 할 수 있습니다 시대의 수 또는 500 에포크에 500 샘플?

GPU는 6Gb 램이 장착 된 GTX 1060이며 CPU는 128Gb 램이 장착 된 이중 XEON 2630l v4 (2 * 10 하이퍼 스레딩 코어 1.7Ghz)입니다.

+0

무엇이 당신의 질문입니까? 배치 크기가 성능에 어떤 영향을 미칩니 까? – dv3

+0

당신이 말하는 성능에 달려 있습니다 : - 예, 성능이 모델의 품질로 나타나는 경우 (음성 인식의 오류 %가 낮음). - 성능을 훈련하는 데 필요한 시간으로 간주하면 아니요. GPU가 훨씬 빨라질 것이라는 것을 깨달았지만, (6Gb 램 제한에 의해 부과 된) 훈련 배치의 작은 크기가 앞으로 출시 될 모델의 전반적인 품질에 영향을 미치지 않을지 궁금합니다. – user1747036

답변

1

나는 길쌈 신경 네트워크를 사용하여 프로젝트에서 배치 크기를 실험했으며 재미있는 것을 발견했습니다. 배치 크기는 정규화 자입니다.

나는 네트워크 (이 경우에는 길쌈 (convolutional)이지만 포인트는 귀하의 경우까지 이어짐)와 작고 큰 데이터 세트를 가지고 있습니다.

배치 크기, L2 정규화, 드롭 아웃, 회선 매개 변수, 완전히 연결된 레이어의 뉴런 등을 포함하여 네트워크에서 20 개의 하이퍼 매개 변수를 포괄하는 포괄적 인 하이퍼 매개 변수 검색을 수행했습니다 (이를 수행하는 데 필요한 교육 일수). 보류 된 유효성 확인 데이터 세트에서 판단됩니다.

작은 데이터 세트 (수천 개의 샘플 중 10 개)가있을 때 하이퍼 매개 변수 검색은 L2 및 드롭 아웃에 대한 정규화를 선호 했으므로이 값은 유효성 검사 설정에서 더 나은 결과를 나타 냈습니다. 그것은 또한 낮은 배치 크기를 선호했다.

대용량 데이터 세트 (수백만 개의 샘플)가있을 때 데이터 세트 자체는 초과 구현을 피하기에 충분히 컸습니다. 하이퍼 매개 변수 검색은 낮은 L2 정규화 및 드롭 아웃을 선호했습니다 (사실상 드롭 아웃의 확률을 98 %로 선택했습니다). 그리고 이번에는 큰 배치 크기를 선호했습니다.

예상치 못한 일이지만, 배치 크기를 정규화 매개 변수로 사용하는 많은 문헌을 보지 못했지만 그 실험 결과는 나에게 분명했습니다.

직접적으로는 약간의 차이가있을 수 있지만 다른 정규화 기술로는 보상 할 수 있습니다. 배치 속도에 중점을두고 많은 실험을 실행할 수있는 능력을 희생하는 것보다 빠르게 학습하고 더 많은 하이퍼 파라미터 조합을 테스트함으로써 훨씬 더 많은 마일리지를 얻을 수 있습니다.

0

큰 일괄 처리 크기가있는 경우 작은 일괄 처리 크기에 대해 그레디언트를 더 잘 예측할 수 있으며 그 반대의 경우도 마찬가지입니다. 그러나 조금 시끄러운 그래디언트가 항상 나쁜 것은 아닙니다. 그것들은 네트워크가 (아마도) 나쁜 로컬 미니 마를 빠져 나갈 수 있도록 도와줍니다. 즉, 최적화 프로그램이 다른 로컬 minimas를 탐색 할 기회를 제공합니다. 내가 아는 한, 최적 배치 크기를 아는 바보 같은 방법은 없습니다. 엄지 법칙은 배치 크기를 32에서 128까지 고려하는 것이지만 응용 프로그램, 사용중인 GPU 수 등에 따라 다릅니다.

속도와 관련하여 GPU는 항상이기는 ​​것 같습니다. 배치 크기가 20 배 작 으면 특정 양의 샘플 (배치가 아닌)을 처리하는 데 걸리는 시간을 간단히 측정하여 시간을 측정 할 수 있습니다. 배치 크기가 유효성 검사 정확도와 수렴에 영향을 준다는 것을 알게되면 CPU로 이동하는 것에 대해 생각할 수 있습니다.

결론 : 위의 테스트를 수행하지만 나에게 제공되는 정보에서 GPU 교육에 대해 이야기 할 것입니다.

0

This paper은 배치 크기와 학습 속도의 관계를 조사합니다. 학습 속도를 떨어 뜨리는 대신 배치 비율을 같은 요소만큼 늘립니다.

동일한 수의 교육 이포크 후에 동일한 테스트 정확도에 도달하지만 매개 변수 업데이트 수가 적어서 병렬 처리가 향상되고 교육 시간이 단축됩니다.

요약하면 더 큰 배치 크기를 사용하면 학습 시간을 줄이기 위해 더 큰 학습 속도를 사용할 수 있습니다.