배치 크기를 2의 거듭 제곱으로 유지하면 어떤 이점이 있습니까?


16

기계 학습에서 모델을 교육하는 동안 배치 크기를 2의 거듭 제곱으로 유지하는 것이 왜 유리합니까? GPU 메모리 / RAM에 가장 적합한 크기를 사용하는 것이 가장 좋을 것이라고 생각했습니다.

답변 은 일부 패키지의 경우 2의 거듭 제곱이 배치 크기보다 낫다고 주장합니다. 누군가 자세한 설명 / 링크를 제공 할 수 있습니까? 모든 최적화 알고리즘 (그라데이션 디센트, 역 전파 등) 또는 일부에만 적용됩니까?

답변:


20

이것은 가상 프로세서 (VP)를 GPU의 물리적 프로세서 (PP)에 맞추는 문제입니다. PP의 수는 종종 2의 거듭 제곱이므로 2의 거듭 제곱과 다른 수의 VP를 사용하면 성능이 저하됩니다.
당신은 크기의 조각의 더미로 PP에 부사장의 매핑을 볼 수 있습니다 PP의 수 .
16 개의 PP가 있다고 가정하십시오.
VP를 16 개 매핑 할 수 있습니다. 1 개의 VP가 1 개의 PP에 매핑됩니다.
VP 32 개를 매핑 할 수 있습니다. VP 16 개 2 개, PP 1 개가 VP 2 개를 담당합니다.
등 실행하는 동안 각 PP는 자신이 담당하는 첫 번째 VP의 작업을 수행 한 다음 두 번째 VP
의 작업을 실행합니다. 17 VP를 사용하는 경우 각 PP는 첫 번째 PP의 작업을 실행하고 1 PP는 17의 작업을 실행 다른 것들은 아무것도하지 않을 것입니다 (아래에서 정밀하게).
이것은 GPU에서 사용 하는 SIMD 패러다임 ( 70 년대의 벡터 라고 함 ) 때문입니다. 이것을 데이터 병렬 처리라고합니다. 모든 보호 프로파일은 동시에 동일한 데이터를 수행하지만 다른 데이터에 대해 수행합니다. https://en.wikipedia.org/wiki/SIMD를 참조 하십시오 .
더 정확하게 말하면 17 VP의 예에서, 첫 번째 조각의 작업이 완료되면 (모든 PP가 첫 번째 VP의 작업을 수행함) 모든 PP가 동일한 작업을 수행 하지만 (두 번째 VP) 작업 할 데이터 .
학습과 관련이 없습니다. 이것은 프로그래밍 일뿐입니다.


배치 크기가 PP 수의 배수 여야한다고 말하는 것이 더 정확합니까? 즉, 귀하의 예에서 16x3 = 48 VP를 16 PP에 매핑 할 수 있습니까?
1west

예. 글쎄 ... 당신이 매핑 VP-> PP를한다면, 당신은 100 % 맞아. 도서관을 이용하는 경우 80 VP를 요청하십시오. 잘 모르겠습니다. 나는 당신이 틀렸다는 말이 아닙니다. 비율이 2의 제곱이면 매우 고전적이고 쉬운 최적화를 사용할 수 있습니다. 메모리 액세스를 고려하십시오. VP의 위층 이웃 수가 2의 거듭 제곱이 아닌 경우 (예 : 5), lib는 이웃 메모리에 대한 전통적인 O (log_2 (n)) 액세스를 쉽게 사용할 수 없습니다.
jcm69

@ jcm69 VP 메모리 액세스를위한 log_2 (n) 액세스 시간에 대한 링크를 설명하거나 제공 할 수 있습니까
Arayan Singh

그것은 컴퓨터 과학에서 객체를 다루는 것에 대한 일반적인 고려 사항입니다. 객체가 2 가지 규칙의 힘을 따르는 것이 확실하다면 이진 검색 트리, 이진 시프트 등으로 쉽고 안전하게 객체를 관리 할 수 ​​있습니다. 확실하지 않은 경우 추가 테스트와 복잡한 알고리즘을 사용해야 할 수도 있습니다. 어쨌든, 그 초기 질문에서까지 약간입니다)
jcm69
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.