일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스
- 장고
- 2021 Dev-matching 웹 백엔드 개발자
- AI Tech
- 풀스택
- boostcourse
- 백엔드
- Naver boostcourse
- 서블릿
- 웹 프로그래밍
- 백준
- 파이썬
- Naver boostcamp
- 부스트캠프
- AI Tech 4기
- 서버
- 구현
- Django
- 프로그래밍
- 대회
- sts
- BOJ
- 레벨2
- cs50
- 네이버
- Customer service 구현
- P Stage
- 웹
- QNA 봇
- 4기
Archives
- Today
- Total
daniel7481의 개발일지
20220927 2주차 화요일 회고 본문
반응형
피어세션
처음으로 챌린지 불이행자가 나왔다...! 벌칙은 노래 부르기로 정하는 계기가 됬다. 오늘 데일리 스크럼 시간에는 다들 강의 전부 수강과 기본 과제 1 끝내기라는 어마어마한 계획을 세웠다. 이번 주부터 과제가 상당히 많아졌기에 열심히 해야할 것 같다. 국립국어원 인공지능 언어 능력 평가 대회에 다들 참여하고 싶어했다. 일단 각자 맡은 캐글과 대회를 빨리 끝내고 다 같이 참가하기로 하였다. 오늘의 챌린지는 거북목 치료 영상보고 스트레칭하기이다. 자기 전에 하고 자야겠다.
공부 회고
- torch.nn.Module로 딥러닝을 구성하는 Layer를 만들어 줄 수 있다. input, output, forward, backward를 정의해주고, parameter 또한 정의할 수 있다.
- nn.Parameter는 tensor 객체의 상속 개체이다. required_grad=True로 학습 대상이 될 수 있다. 대부분의 layer에는 weights 값들이 지정되어 우리가 직접 다룰 일은 많지 않다.
- dataloader는 모델에 데이터를 feed(먹인다)해주는 객체이다.
- 데이터를 모으고, 전처리하고, pre processing해준 후 데이터를 Dataset에 넣어주고, Dataset 클래스는 __len__함수와 __getitem__ 함수가 정의되어 있어야 한다. 이를 DataLoader 클래스로 호출하여 batch와 shuffle 등을 정해주고 모델에 먹여주는 과정을 거친다.
- Dataset 클래스 생성 시 모든 과정을 데이터 생성 시점에 처리할 필요는 없다. 최근에는 HugginFace 등 표준화된 라이브러리를 사용한다.
- DataLoader 클래스는 데이터의 Batch를 만들어주고, 병렬적인 데이터 전처리로 GPU에게 feed해준다.
- 이미 훈련이 된 모델을 pre-trained model이라고 하고, 이 모델을 가져와 우리 데이터에 맞게 훈련시켜주는 것을 fine tuning이라고 한다. 또한 이렇게 이미 훈련된 모델을 가져와 훈련을 하는 것을 transfer learning이라고 한다.
- model.save()로 모델의 형태와 파라미터를 저장할 수 잇다.
- model.load_state_dict()로 파라메터만 가져오거나 torch.save(model.state_dict())로 파라메터만 저장할 수 있다.
- earlystopping 기법 사용시 epoch, loss, metric을 저장하는 checkpoints를 만들 필요가 있다.
- pretrained 모델을 활용시에는 모델의 일부분을 frozen시켜서 학습이 일어나지 않게 한다.
- frozen된 레이어들은 requires_grad=False로 frozen 해줄 수 있다.
- wandb는 weight and bias로, 학습 중에 로깅과 메트릭을 편리하게 전시해주는 역활을 한다. MLOps의 대표적인 툴로 자리잡고 있다.
- Pytorch에서도 tensorboard를 지원해줘서 사용할 수 있다.
- Tensorboard
- scalar: metric등 상수 값의 연속을 표시
- graph: 모델의 computational graph 표시
- histogram: weight 등 값의 분포를 표현(정규분포면 좋다)
- image: 예측값과 실제 값을 비교 표시
- mesh: 3d 형태의 데이터 표현하는 도구(쓸 일이 많지 않다.
- Node는 컴퓨터를 얘기하며, single node multi GPU는 컴퓨터 한 개에 여러 개의 GPU를 사용하는 것이다.
- 모델을 나눠 병렬적으로 처리하는 Model Parallel과 데이터를 나누어 처리하는 Data Parallel이 있다.
- Hyperparameter tuning은 오늘날에는 큰 차이를 가져오지는 않는다. 마지막에 쥐어짤 때 사용한다
- 가장 기본적인 방법으로 grid과 random이 있다. grid는 n개의 파라미터에 대해 n차원 경우의 수를 만든 후 각 경우에 대해 실험하는 반면, random은 랜덤한 값을 하이퍼파라미터에 넣어서 찾는다.
- Ray를 이용하여 하이퍼파라미터 튜닝을 병렬적으로 나눠서 할 수 있다.
- OOM은 out of memory의 약자로, 대부분의 경우 배치 사이즈를 낮추고 GPU를 clean하고(런타임 재시작) 다시 돌리면 해결이 된다고 한다.
- GPU 병목현상이 일어나지 않는지, 메모리가 터지지는 않는지 GPUtil 라이브러리를 import해서 사용할 수 있다.
- torch.cuda.empty_cache()를 사용하여 사용되지 않는 GPU상 캐시를 정리한다. del을 해줘도 메모리 상에는 남아있기 때문에 캐시를 정리하려면 empty_cache함수를 사용해야 한다.
- loop 안에서 계속해서 쌓이는 변수가 있으면 없애줘야 한다.
- 학습시 OOM이 발생하면 배치 사이즈를 1로 하여 실험해본다.
- torch.no_grad()를 사용해 불필요한 미분을 피한다.
반응형
'AI Tech 4기 > Level1' 카테고리의 다른 글
20220929 2주차 목요일 회고 (1) | 2022.09.29 |
---|---|
20220928 2주차 수요일 회고 (0) | 2022.09.29 |
20220926 2주차 월요일 회고 (0) | 2022.09.27 |
20220923 1주차 금요일 회고 (2) | 2022.09.23 |
20220922 1주차 목요일 회고 (2) | 2022.09.22 |