일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 티스토리챌린지
- 개인 피티
- 바프준비
- 덤벨운동
- 개인 운동
- PT 운동
- 오블완
- 데드리프트
- 프로그래머스
- 연구 시작
- 개인 PT
- 하체운동
- 건강
- github
- 코드
- 개발자
- pytorch
- 라섹 수술 후기
- 다이어트
- 운동
- 영화 비평
- 디버깅
- 바디프로필
- Knowledge Tracing
- 코딩테스트
- 암풀다운
- 코테준비
- 체스트프레스
- 코테 공부
- 논문 리뷰
- Today
- Total
치즈의 AI 녹이기
모델 학습을 개선하는 4가지 테크닉 본문
1. torch.cuda.amp 활용하기
일부 작업에 대하여 float32에서 float16으로(또는 반대) 바꾸어 각 연산을 적절한 데이터 유형과 일치시킴으로써 학습 속도를 좀 더 빠르게 할 수 있다.
autocast(torch.cuda.amp와 동일)은 네트워크의 순방향 패스(forward + loss)에만 적용되어야 한다.
2. Gradient Accumulation
gradient를 특정 배치 주기까지 모았다가 한번에 업데이트하여 적은 메모리 환경에서 작은 배치사이즈로 큰 배치사이즈를 사용하는 효과를 기대한다. 큰 배치사이즈를 사용함으로써 학습 시 정보의 노이즈를 제거하고 더 나은 gradient descent를 수행할 수 있다.
3. Gradient Clipping
gradient exploding을 방지하여 학습의 안정화를 도모할 수 있다.
gradient가 일정 threshold를 넘어가면 gradient의 L2 norm으로 나눠준다.
learning rate를 작게 하는 것과 비교했을 때와 같은 효과를 얻는다.
4. Stochastic Weight Averaging (SWA)
시간에 흐름에 따라 다른 weight을 가진 똑같은 모델을 ensembling하는 방법이다.
학습 파라미터 w 외에 weight_swa을 따로 저장하여 일정 주기마다 weight을 average하여 weight_swa에 업데이트한다.
torch SWA 사용하기 :
https://runebook.dev/ko/docs/pytorch/optim
SWA 구현 GITHUB :
https://github.com/timgaripov/swa/blob/master/train.py
SWA 참고 링크:
'인공지능 대학원생의 생활 > 구글링' 카테고리의 다른 글
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]. (0) | 2021.12.18 |
---|---|
Permission denied (0) | 2021.12.18 |
Knowledge Distillation (0) | 2021.10.28 |
Beam Search (0) | 2021.10.28 |
Git에 requirements.txt 생성하기 (0) | 2021.07.27 |