Intro
"트랜스포머를 활용한 자연어 처리"라는 책으로 세미나를 진행하게 되었고, 책을 읽던 중 번뜩이는 아이디어가 떠올랐다. 대학교의 신입생들은 모르는게 너무나도 많아서 질문을 많이 한다. 그러나 대부분의 정보는 이미 선배들이 질문답변해놓은 글 또는 모르는 뉴비들을 위해 정리해준 고마운 글들도 아주 많다. 만약 LLM이 해당 정보들을 학습한다면, 뉴비들에게 빠르고 정확하게 필요한 정보를 제공해주는 "부산대 GPT"가 되지는 않을까?
PoC
다만, NLP를 공부하면서 새롭게 알게 된 점도 몇가지 있다. 먼저 한국어는 타 언어에 비해 학습이 어렵다고 한다. 그리고 적용할 수 있는 학습 방법도 다양해서 무엇을 선택해야할지 잘 모르겠다.
레이블링된 데이터가 아예 없는 경우에는 "제로샷 러닝"을, 레이블링된 데이터가 많은 경우에는 "모델 파인튜닝"을, 레이블링되지 않은 데이터가 많은 경우에는 "Domain Adaption" 또는 "UDA", "UST"을, 레이블링되지 않은 데이터가 아예 없는 경우에는 "임베딩 룩업"이나 "퓨샷 러닝"을 사용하라고 한다. 당연히 레이블링된 데이터가 많을수록 학습에 유리하겠지만, 부산대 정보를 담고 있는 많은 글들은 대부분 게시글이나 한글 문서의 텍스트인 자연어라서 레이블링되지 않은 형태이다.
운이 좋게도 유튜브에서 모델을 파인튜닝해서 문서 내용을 학습시키는 방법을 알려주는 영상을 볼 수 있었다. https://youtu.be/oZY0D8N6bC8?si=bbcm9edUeAe2Ummm
그래서 우선은 한글 파일에서 자연어를 추출하고, llama3.1 기반의 한국어 모델을 활용해서 QA 데이터셋을 생성하려고 한다. jsonl 형식의 파일로 저장할 것이다. 이후에는 위 영상을 따라 llama3.1 8B 모델에 데이터셋을 파인튜닝시키고 결과를 확인해보려고 한다. 이 과정은 본격적인 PNU GPT를 개발하기 앞서, 이런 파인튜닝으로 원하는 성능이 나올지를 체크하는 PoC 과정이다. 주말 중으로 빠르게 끝내봐야지.