PyTorch Single-GPU Training Loop
마지막 수정:
단일 GPU 학습 루프는 모든 분산 학습의 기준선이다.
batch
-> forward
-> loss
-> backward
-> optimizer step
-> zero grad
가장 먼저 해야 할 일은 loss가 실제로 내려가는지 확인하는 것이다.
optimizer.zero_grad(set_to_none=True)
logits = model(input_ids)
loss = loss_fn(logits, targets)
loss.backward()
optimizer.step()
이후 mixed precision을 넣어 memory와 throughput 변화를 본다.
with torch.autocast(device_type="cuda", dtype=torch.bfloat16):
logits = model(input_ids)
loss = loss_fn(logits, targets)
확인
- 단일 GPU 학습 루프가 multi-GPU 학습의 기준선인 이유는 무엇인가?
zero_grad를 하지 않으면 어떤 일이 생기는가?- mixed precision은 주로 무엇을 줄이거나 늘리는가?