Training proecss

naem1023·2021년 8월 30일
0

Ai competition

목록 보기
11/17

Gradient Accumulation

gpu가 좋은 상황이 아닐 경우 사용할만한 방법이다.

num_accum = 2
optimizer.zero_grad()
for epoch in range(10):
    running_loss = 0.0
    for i, data in enumerate(train_loader, 0):
        inputs, labels = data
        outputs = net(inputs)
        
        loss = criterion(outputs, labels) / num_accum
        loss.backward()
        
        if i % num_accum == 0:
            optimizer.step()
            optimizer.zero_grad()
  • num_accum만큼의 epoch을 돌아야지 model의 parameters를 업데이트.
  • critertion의 결과물에 num_accum을 나눠주는 이유는 일반화때문이라고 한다.
    • 뇌피셜: num_accum동안의 loss를 한번의 step만에 반영해줘야하기 때문에 개별적인 loss값에 일정한 가중치를 두어 균등화하는 효과를 가지는 것 같다.
profile
https://github.com/naem1023

1개의 댓글

comment-user-thumbnail
2021년 8월 30일

gpu가 안좋다면 새 gpu를 구매하는 것도 방법입니다. 배움에있어 투자를 아끼지마세요.

http://m.danawa.com/product/product.html?code=14741834&cateCode=11438649

답글 달기