실효 배치 크기는 옵티마이저 갱신 한 번에 기여하는 학습 예시의 수입니다. 장치 하나에서는 마이크로 배치와 같지만, 분산 학습은 작업을 여러 가속기로 펼치고 흔히 가중치를 바꾸기 전 여러 통과를 합산하므로, 옵티마이저가 실제로 보는 전역 배치는 단일 칩에 들어가는 양보다 수백 배 클 수 있습니다. 이 계산기는 그 전역 값과 그것이 나타내는 토큰을, 그 값을 만들어내는 세 곱셈 인자로부터 복원합니다.
전역 배치가 중요한 이유
문헌에 나오는 거의 모든 학습률 스케줄, 워밍업 길이, 수렴 결과는 장치당 마이크로 배치가 아니라 전역 배치를 기준으로 기술됩니다. 실효 배치를 다시 계산하지 않고 8개에서 64개 장치로 확장하는 팀은 최적화 동작을 자기도 모르게 바꾸게 됩니다. 같은 코드가 이제 갱신당 8배 큰 걸음을 옮기게 되어 발산하거나 정체될 수 있습니다. 따라서 실효 배치를 아는 것은 학습률을 튜닝하거나, 공개된 방식을 재현하거나, 클러스터 크기가 다른 두 학습을 비교하기 위한 전제 조건입니다.
계산식
세 독립 인자가 함께 곱해집니다. 장치당 마이크로 배치 , 데이터 병렬 복제본 수 , 기울기 누적 단계 가 주어지면 실효 배치 와 시퀀스 길이 에서의 옵티마이저 단계당 토큰 는 다음과 같습니다.
BT=b⋅d⋅a=B⋅L
각 데이터 병렬 복제본은 자기 마이크로 배치를 처리하고 기울기가 평균되므로 복제본이 배치를 곱합니다. 누적은 갱신 한 번 전에 연속한 번의 통과를 합산하므로 다시 한 번 곱합니다. 토큰 수는 단순히 시퀀스 수에 각 시퀀스의 길이를 곱한 값입니다.
계산 예시
64개 장치 각각에서 8 시퀀스의 마이크로 배치를, 4 누적 단계와 4,096 토큰 문맥으로 돌리는 경우를 살펴봅니다.
BT=8×64×4=2048=2048×4096=8,388,608
어떤 장치도 한 번에 8 시퀀스를 넘게 담지 않는데도 옵티마이저는 갱신당 2,048 시퀀스, 곧 약 840만 토큰을 봅니다. 누적 단계를 8로 두 배 늘리면 장치당 메모리는 전혀 바뀌지 않은 채 실효 배치가 4,096으로 오르지만, 갱신 사이의 통과 횟수가 두 배가 됩니다.
한계
이 모델은 전역 배치를 바꾸는 두 인자인 데이터 병렬 복제와 기울기 누적을 다룹니다. 텐서, 파이프라인, 시퀀스 병렬화는 의도적으로 제외합니다. 이들은 메모리에 맞추려고 모델 하나나 시퀀스 하나를 장치에 나누지만 전역 배치를 키우지는 않으므로, 복제본이 나뉘는 장치는 에 세지 않아야 합니다. 토큰 값은 또한 고정된 시퀀스 길이를 가정하므로, 가변 길이나 패킹된 배치는 별도의 토큰 산정이 필요합니다. 마이크로 배치를 고르는 메모리 쪽은 그래디언트 누적 메모리 계산기가 다루고, 장치를 더할 때 처리량이 어떻게 확장되는지는 데이터 병렬 확장 계산가 다룹니다.
자주 묻는 질문 (FAQ)
실효 배치 크기란 무엇입니까?
실효 배치, 곧 전역 배치 크기는 옵티마이저 갱신 한 번에 기여하는 학습 예시의 수입니다. 분산 학습에서는 장치당 마이크로 배치에 데이터 병렬 복제본 수와 기울기 누적 단계를 곱한 값인데, 그 모든 통과가 가중치를 한 번 바꾸기 전에 합산되기 때문입니다.
학습률 비례나 재현성에 중요한 것은 한 장치에 들어가는 더 작은 마이크로 배치가 아니라 이 값입니다.
기울기 누적은 왜 씁니까?
기울기 누적은 여러 번의 순전파와 역전파를 돌려 그 기울기를 합산한 뒤 옵티마이저 단계를 한 번 적용하므로, 한꺼번에 더 많은 활성값을 메모리에 담지 않고도 실효 배치를 키웁니다. 메모리가 제한된 구성이 더 큰 클러스터의 대규모 배치 동작을 흉내 낼 수 있게 해 주는 대신, 갱신당 벽시계 시간이 더 듭니다.
절충은 메모리를 위해 처리량을 내주는 것입니다. 각 누적 단계는 실제 연산이지만, 한 주기마다 옵티마이저 갱신과 통신은 한 번씩만 일어납니다.
배치 크기와 단계당 토큰은 어떻게 다릅니까?
배치 크기는 시퀀스를 세고, 단계당 토큰은 그 시퀀스가 담은 개별 토큰, 곧 배치에 시퀀스 길이를 곱한 값을 셉니다. 토큰 예산 계획과 공개된 여러 학습률 스케줄은 토큰 단위로 기술되므로 토큰 값이 더 이식성 있는 경우가 많습니다. 시퀀스 수가 같아도 시퀀스 길이가 다른 두 학습은 단계당 토큰 수가 다른데, 두 값을 모두 보여 주는 이유가 여기 있습니다.
면책조항
이 계산기는 데이터 병렬 복제와 기울기 누적만 다룹니다. 전역 배치가 장치에 나뉘는 방식은 바꾸지만 전역 배치 자체는 바꾸지 않는 텐서, 파이프라인, 시퀀스 병렬화는 모델링하지 않습니다. 사용하는 프레임워크가 마이크로 배치와 누적을 같은 방식으로 세는지 확인하십시오.