PyTorch로 AI 모델 효율적으로 학습시키기
Dennis Lee
Data Engineer, Amazon
드롭아웃과 배치 정규화

model.eval()로 평가 모드 활성화드롭아웃과 배치 정규화

torch.no_grad()로 그래디언트 비활성화model.eval()과 torch.no_grad() 함께 사용:model.eval()
with torch.no_grad():
outputs = model(**inputs)
역전파에서의 그래디언트 계산

validation_dataset = load_dataset("glue", "mrpc", split="validation")
def encode(examples):
return tokenizer(examples["sentence1"],
examples["sentence2"],
truncation=True,
padding="max_length")
validation_dataset = validation_dataset.map(encode, batched=True)
for epoch in range(num_epochs):model.train() for step, batch in enumerate(train_dataloader): # Perform training stepmodel.eval() for step, batch in enumerate(eval_dataloader): # Perform evaluation step# Log evaluation metrics
metric = evaluate.load("glue", "mrpc") model.eval() for step, batch in enumerate(eval_dataloader):with torch.no_grad(): outputs = model(**batch) predictions = outputs.logits.argmax(dim=-1)predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"]))metric.add_batch(predictions=predictions, references=references)eval_metric = metric.compute() print(f"Eval metrics: \n{eval_metric}")
Eval metrics:
{'accuracy': 0.81, 'f1': 0.77}
log_with: 모든 실험 추적 도구 사용.init_trackers(): 추적 도구 초기화.log(): accuracy, f1, epoch 추적.end_training(): 추적 종료accelerator = Accelerator(project_dir=".", log_with="all")accelerator.init_trackers("my_project")for epoch in range(num_epochs): # Training loop is here # Evaluation loop is here accelerator.log({"accuracy": eval_metric["accuracy"], "f1": eval_metric["f1"],}, step=epoch)accelerator.end_training()
PyTorch로 AI 모델 효율적으로 학습시키기