일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백트랙킹
- 기술면접
- 백준
- 구현
- 글또
- python3
- 단계별문제풀이
- 프로그래머스
- ODQA
- 파이썬 3
- 그리디
- Level2_PStage
- Level2
- 정렬
- mrc
- 주간회고
- 최단경로
- 알고리즘_스터디
- dfs
- Level1
- 다시보기
- U_stage
- 이코테
- 부스트캠프_AITech3기
- 부스트캠프_AITech_3기
- 개인회고
- 알고리즘스터디
- dp
- 이진탐색
- 그래프이론
- Today
- Total
국문과 유목민
[일일리포트] Day 73 (Level2_MRC_4) 본문
해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수는 없기에 핵심 이론과 코드를 요약해서 올리고 있기에 내용이 부족할 수 있습니다.
▶ Today I Learned (핵심 요약 정리)
Korquad Fine-tuning
팀원 분들께서 QA단계에서 KorQuAD관련 모델에 대한 정보(ODQA 중 QA에 활용할 모델을 찾고자)를 찾으시다가 다음과 같은 자료[Techtonic 2020] Track 1. AI의 한국어 이해, 어디까지 왔나?(KorQuAD 1.0성능개선 Know-how)
를 발견하셨다고 하셨다. KorQuAD학습을 진행하기 전 유사 한글 데이터를 통해 1차 Fine-tuning을 진행하고, KorQuAD데이터를 가지고 2차 Fine-tuning하는 방법을 통해 성능을 올릴 수 있었다고 해서 우리 Task에 적용시켜보고자 했다.
이전까지 좋은 성능을 보여줬던 Roberta-large모델에 KorQuAD데이터를 통해 1차 Fine-tuning을 진행하고, 주어진 Train data로 2차 Fine-tuning을 진행하고자 했다. 1차 Fine-tuning 때는 batch-size 16에 1epoch으로만 학습을 진행했다(시간 문제). 2차 Fine-tuning을 진행할 때, lr을3e-5로 두고 학습을 진행했는데 오히려 eval 그래프가 안 좋았고, lr을 1e-5로 뒀을 때는 오히려 성능이 더 증가하는 것을 확인할 수 있었다. 현재 리더보드 성능 비교는 실험 중에 있다.
아무튼 지금까지 결과로 봤을 때 2차 Fine-tuning을 할 때의 learning-rate을 고려해야할 필요가 있다고 생각하며, 1차 Fine-tuning을 할 때도 좀 더 epoch을 크게 줘서 학습시키고 이를 활용해서 다시 한 번 2차 Fine-tuning을 해봐야겠다. 한가지 궁금한 점은 Fine-tuning을 진행할 때 어느정도의 batch와 epoch을 줘야하냐는 것인데, 이는 팀원들과 조금 더 얘기를 해봐야할 부분인 것 같다.
멘토링
오늘 대회 관련 피드백과 관련된 멘토링을 진행하면서 다양한 질문을 주고받을 수 있었다. 멘토링을 통해 답변받았던 것과 알게된 것 몇 가지를 정리하고자 한다.
Q1. 체크포인트 파일 생성 시 optimizer.pt나 scheduler.pt, trainer_state.json의 역할
A1. 체크포인트를 불러올 때, 학습이 진행되던 단계를 그대로 가져오기 위해서 lr_scheduler나 optimizer, trainer의 상태에 대한 정보가 필요하다. 그리고 저 파일들이 그러한 상태에 대한 정보를 담고 있는 파일들이다. 추가적으로 테스트를 해봤는데, 저 파일들을 지우지 않고 체크포인트를 불러오면 기존 학습이나 step에 이어서 학습이 진행되는 것을 확인할 수 있었다. (2000step까지 학습을 진행했으면, 2000step부터 시작됨)
Q2. Lr Shceduler의 역할이 무엇인가? -> Batch Size가 어떤 역할을 하는지 아는가? (어쩌다보니 해당 질문이 나왔음)
A2. 실험 속도와 관련되어 있다. 배치 사이즈가 커지면 속도가 빨라지는 것 이외에 장점이 없다. 하지만 배치 사이즈가 작아지면 일반화 성능이 올라가게 된다. 하지만, 배치사이즈가 크더라도 lr을 높게 줌으로써 일반화 성능을 높일 수 있다. 그리고 높은 lr을 주기 위해 lr Scheduler를 사용한다.
(배치 사이즈가 커지면 속도 빠른 것 이외에 장점이 없는 게 사실일까? 이에 대해 좀 더 생각해볼 필요가 있어보인다.)
▶ Review (생각)
오늘 팀원분들께서 좋은 자료를 공유해주셔서 새로운 실험을 할 수 있어서 좋았다. 1차 Fine-tuning을 진행함에 있어서 Epoch을 1만 돌렸는데도 꽤 괜찮은 그래프를 확인한 것 같아서 오늘 자기 전에 Epoch을 3정도로 돌려놓고 1차 Fin-tuning을 하고 내일 오전 중에 2차 Fine-tuning을 할 계획이다.
근데 요즘 뭔가 내가 다른 팀원분들의 일을 뺏어서 하나라는 생각이 든다. 이번에도 팀원분들께서 공유해주신 정보를 통해서 하게 된 실험인데 다른 분들께서 하실 수 있는 일을 내가 뺏어서 한 걸까라는 생각이 들었다. 이 부분에 대해서 팀원 분들과 얘기를 나눌 필요가 있을 것 같다. 조심히 얘기를 꺼내봐야 할 것 같다.
추가적으로 오늘 멘토링 시간에 멘토님께 질문을 하던 도중 갑자가 역으로 질문을 받게 되었다. 멘토님께 개인적으로 이력서 피드백을 부탁드렸었기에 겸사겸사 면접 질문처럼 물어보셨었다. 그런데 내가 안다고 생각했던 개념들이었는데 막상 얘기하려고 하니 잘 대답을 못했었다. 면접처럼 질문을 하실 줄 몰랐기 때문에 준비가 안 되었다는 핑계를 댈 수는 있겠지만 뭔가 기본적인 부분이었던 것 같아서 대답을 제대로 못한 게 실망스러웠다. 머리로는 이해했다고 생각했는데 말로 설명을 하지 못한 것 같은 느낌이 있어서 여러모로 아쉬웠다.
그래서 블로그 정리한 내용들을 다시 한 번 보면서 틈틈이 이론을 정리해야할 필요가 있겠다는 생각을 했다. 어차피 면접을 보게 되면 멘토님이 말씀하셨던 것처럼 해당 내용들에 대해서 충분히 질문이 들어올 수 있다. 특히 프로젝트에서 맡았던 부분들이 새로운 모델들을 적용시키거나, 하이퍼파라미터 튜닝을 구현하고 적용시키면서 변화시키고 학습시키는 부분에서 성능 향상을 맡기도 했었다. 그러다보니 이러한 부분에 대해 질문이 들어왔을 때 어떤 근거를 가지고 얘기할 지에 대해서 간단하게라도 생각해둘 필요가 있다. 이번 멘토링을 계기로 부족한 부분을 깨달을 수 있었다.
마지막으로 최종 프로젝트와 관련해서 생각해 볼 문제가 많이 있는 것 같은데, 이에 대해서는 내일 팀원들과 같이 얘기를 나눌 필요가 있어 보인다.
'IT 견문록 > 2022_부스트캠프 AITech 3기(100일)' 카테고리의 다른 글
[일일리포트] Day 75 (Git특강2) (0) | 2022.05.06 |
---|---|
[일일리포트] Day 74 (Lelvel2_MRC_5) (0) | 2022.05.04 |
[일일리포트] Day 72 (Bias / Level2_MRC_3) (0) | 2022.05.02 |
[15주차] 개인 회고 (MRC Week1) (0) | 2022.04.29 |
[일일리포트] Day 71 (Level2_MRC_2) (1) | 2022.04.29 |