Accelerator와 함께하는 Adafactor
Trainer와 Adafactor를 함께 사용해 언어 번역 모델을 적은 메모리로 학습하는 개념 검증을 완료했습니다. 이번에는 Accelerator를 활용해 학습 루프를 직접 구성해 보겠습니다. Adafactor를 사용하는 학습 루프를 만들어 보세요!
compute_optimizer_size() 함수는 미리 정의되어 있습니다. 학습 객체인 model, train_dataloader, accelerator도 미리 로드되어 있으며, Adafactor는 torch.optim에서 미리 임포트되어 있습니다.
이 연습은 강의의 일부입니다
PyTorch로 AI 모델 효율적으로 학습시키기
연습 안내
optimizer를 정의할 때 모델 파라미터를Adafactor에 전달하세요.- 옵티마이저 상태를 전달하여 크기를 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Pass the model parameters to Adafactor
optimizer = Adafactor(params=____.____())
model, optimizer, train_dataloader = accelerator.prepare(model, optimizer, train_dataloader)
for batch in train_dataloader:
inputs, targets = batch["input_ids"], batch["labels"]
outputs = model(inputs, labels=targets)
loss = outputs.loss
accelerator.backward(loss)
optimizer.step()
optimizer.zero_grad()
# Pass in the optimizer state
total_size_megabytes, total_num_elements = compute_optimizer_size(optimizer.state.____())
print(f"Number of optimizer parameters: {total_num_elements:,}\nOptimizer size: {total_size_megabytes:.0f} MB")