시작하기무료로 시작하기

Accelerator를 활용한 그래디언트 누적

복잡한 문장을 쉽게 바꿔 표현하는 번역 언어 모델을 학습시키고 있는데, GPU 메모리가 부족한 상황입니다. 그래디언트 누적(Gradient Accumulation)을 사용하면 메모리에 맞는 작은 배치를 활용해 더 큰 배치로 학습한 것과 동일한 효과를 낼 수 있습니다. 학습 루프의 구조를 직접 확인하고 싶어 Accelerator를 사용합니다. 이 연습 문제는 실제로 CPU에서 실행되지만, GPU에서도 동일한 코드를 사용할 수 있습니다.

model, train_dataloader, optimizer, lr_scheduler는 미리 정의되어 있습니다.

이 연습은 강의의 일부입니다

PyTorch로 AI 모델 효율적으로 학습시키기

강의 보기

연습 안내

  • 두 단계의 그래디언트 누적을 사용하도록 Accelerator()를 설정하세요.
  • model에 대한 그래디언트 누적을 활성화하는 Accelerator 컨텍스트 매니저를 설정하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Configure Accelerator
accelerator = ____(____=____)
model, optimizer, train_dataloader, lr_scheduler = accelerator.prepare(model, optimizer, train_dataloader, lr_scheduler)
for batch in train_dataloader:
    # Set up an Accelerator context manager
    with ____.____(____):
        inputs, targets = batch["input_ids"], batch["labels"]
        outputs = model(inputs, labels=targets)
        loss = outputs.loss
        accelerator.backward(loss)
        optimizer.step()
        lr_scheduler.step()
        optimizer.zero_grad()
        print(f"Loss = {loss}")
코드 편집 및 실행