부트캠프 마지막 과정이 시작됐다!
마지막 과정은 '기업 연계 프로젝트'인데, 이번 우리 기수에서는 3개의 기업에서 총 4가지 주제가 주어졌다. 그중에서 수강생들이 주제를 선택하여 팀을 짜고 기업과 피드백을 거치면서 프로젝트를 완성하는 방식이다.
기간은 1월 13일부터 2월 7일까지. 1월 13일에는 기업 담당자들이 직접 프로젝트를 소개하고 어떤 것을 원하는지 설명해주는 오티가 진행됐다. 그리고 일주일 정도 기업과 미팅도 하면서 서로 목표와 목적을 맞춰나가는 싱크업 기간을 가지고 17일에 이를 바탕으로 기획안을 발표했다.
총 4가지 주제가 있었는데, 굵직하게 나눠보자면
1. 보안 도메인에서 올라오는 사용자들의 리포트를 AI모델로 최대한 개선하기
2. 한글로 된 리포트를 영어로 바꾸기
3. 전문가들이 작성한 리포트를 요약하고 핵심 키워드를 추출하기
4. 숫자가 들어간 한글 데이터를 한글만 있는 데이터로 변환하기
가 있다.
이중에서 나는 4번 주제, 숫자로 한글로 변환하는 AI 모델 만드는 주제를 선택했다. 사실 3번이랑 4번을 두고 고민을 했는데, 이 프로젝트를 진행하는 회사가 AI 팀이 존재하고, 해야하는 태스크도 명확했기 때문에 4번을 선택했다. 게다가 이번 기수의 에이스(?)들만 모여있는 듯한 팀구성을 만나서 굉장히 많은 것들을 배울 것 같아 기대됐다. 기업에 대한 것은 비밀유지서약서(?)를 작성했기 때문에 자세한 내용을 작성하기는 어렵고, 어떻게 진행되고 있는지 나는 어떤 것들을 하고 있는지에 대해 얘기해보려고 한다.
1. 데이터셋, EDA
다른 팀들이 현실 세계에서 들어오는 카오스한 데이터셋으로 고통받고 있다면, 그것에 비해서 우리에게 주어진 데이터셋은 AI 허브에 등록되어 있고 비교적 잘 정리되어 있는 깔끔한 데이터셋이였다. 데이터셋 링크
이 데이터셋을 확인해보면, scriptITN과 scriptTN에 우리가 학습시켜야할 데이터가 들어있다. ITN을 인풋으로 들어가면, TN이 나와야하는 것이다. 그런데 카테고리가 굉장히 많고, 또 예외적이거나 엣지 케이스들이 굉장히 많아서 데이터 파악을 하는 데 일주일 정도가 걸렸다. 데이터셋 자체도 굉장히 많아 한 사람당 카테고리 몇 개씩 맡아서 EDA를 진행하고 특이한 부분은 서로 공유했다. 우리 팀은 5명이라 분배하니 짐이 가벼워졌는데, 우리와 같은 주제를 하는 다른 팀은 3명뿐이라 이걸 어떻게 다 하시고 계실지..ㅠㅠ 화이팅... 이럴 때 보면 사람많은게 정말 좋다ㅋㅋㅋ
2. 데이터 전처리
데이터셋을 구체적으로 살펴봤는데, 생각보다 scriptTN에 일관성이 없다. 그리고 괄호 안에 수사 표현만 들어가면 좋겠지만, 다른 단위나 명사들도 들어가 있어서 평가 지표로 계산하기가 어려웠다.
그래서 데이터 클렌징을 LLM을 가지고 해보기로 했다. 데이터 양이 많았기 때문에 3명이서 카테고리를 나눠서 데이터 클렌징을 시도했는데, 생각보다 성능이 좋지 않았다. solar pro, gpt4o-mini는 그냥 보기 힘들 정도로 결과가 좋지 않았고, 4o를 사용했을 때에는 대체적으로 결과를 잘 내놓기는 했지만, 제시한 세부 규칙들을 지키지 않아서 이것 또한 데이터셋으로 사용하기가 어려워 보였다.
실제 결과물들)
이에 대해서 중간 발표 이후 피드백을 받았는데,
1) 전체 데이셋을 전부 다시 만들기보다는 잘 안되는 것들만 몇 가지 뽑아서 그것들 위주로만 만들어보면 어떤가
2) hard negative sample을 많이 학습시켜라.
3) 일단 모델을 학습시키고, 모델이 잘 예측하지 못하는 부분에 대해서만 추가 학습을 시켜봐라. 예를 들어서 모델이 수사표현이 완전히 틀리는 부분, 또는 애매하게 맞았다가 틀렸다가 하는 사례 등을 위주로 학습을 더 시켜라.
4) 완벽한 샘플 800여개 정도만 있으면 충분히 학습할 것이다. 일단 완벽한 샘플을 만들어서 모델을 학습시켜봐도 좋을 것 같다.
그래서 일단 완벽한 샘플들을 만들어서 모델 학습에 집중하기로 했다.
3. 모델 학습
모델 학습 부분에서 또 다른 난관에 봉착했다. 쿠다 세팅을 해야한다는데.. 음 왜인지 쿠다 세팅이 안된다?ㅋㅋㅋㅋ 그리고 기존에 서버에 쿠다가 설치되어 있다길래 그걸 그냥 쓰려고 했더니, 버전문제때문인지 라이브러리 전부 다 설치했는데도 계속 학습시키려고 할 때마다 에러가 떠서 진행이 안된다. 하핫 결국 서버 폭파시키고, 이미 서버에 설치되어 있다는 버전을 믿고 그냥 그걸로 모델 학습시켰다. 다행히 잘 돌아갔다.
팀원 중에 코젬마 2b와 9b를 실험해보신 분이 있었는데, 내가 2b를 더 학습시켜보기로 했다. 하지만 성능이 그리 좋지 못했다. 투비라 그런가... 그래서 나는 지난 NLP 프로젝트에서 써보다가 말았던 LG 엑사온 모델이 생각나서 그걸 써보기로 했다. 그리고 전체 데이터셋을 학습시키려고 했는데 33시간인가 걸렸고, 결국 마감기한 전에 학습이 끝나지 못해서 아쉽게도 다른 모델과 성능 비교를 제대로 해보지는 못했다.
4. LLM을 이용한 데이터 어그멘테이션
마지막에 했던 것은, 다른 팀원분이 깨끗한 품질의 클린 데이터를 주셔서 이걸 최대한 양을 늘려서 2차 학습을 시키려고 했다. 딥시크랑 솔라 모델을 가지고 원본 데이터셋으로 다 때려넣고 학습을 시켰을 때 일단 출력이 잘 나오는 것을 확인했다. 여기서 추가 학습으로 품질이 보증된 깨끗한 데이터셋을 한번 더 학습하면서 성능 개선을 기대했던 것이다. 그 분의 장인정신으로 760개의 클린 데이터셋이 완성됐고, 4명정도가 달라붙어서 하루 날을 잡고 오프라인에 모여서 데이터셋 어그멘테이션을 시작했다. (생각보다 고된 노동이였다.... 하하ㅋㅋㅋㅋ)
챗지피티나 제미니를 이용해서 클린데이터셋을 넣어주고 다양하게 데이터셋을 늘려달라고 했는데 얘가 처음에는 잘 하는 듯 싶더니, 나중에는 엉망진창으로 내놓는다. (너도 노가다는 하기 싫었던거지...?) 그래서 어쩔 수 없이 다 만들고 나서 하나하나 눈으로 검사를 해야했다. 출판사로 돌아간 느낌.. 한 사람당 3750개씩 데이터셋을 만들기로 했는데 이것저것 겹치고 원본이랑 동일하게 출력한 꼼수들을 적발하여, 최종적으로 4명이서 만 개의 데이터를 뽑아냈다.
그리고 이걸로 재학습을 시킨 뒤에 나온 결과가 나름 괜찮다는 것을 확인하고 이걸 최종으로 제출했다.
5. 발표
마지막 날에 재학습한 모델의 성능을 확인하고, PPT를 만들었다. 만들면서 정리된 부분들도 많았다. 우리가 이걸 왜 했지 기억이 안나는 것들도 많았는데, 얘기를 하다보니 떠오르고. 그렇게 ppt를 정리한 뒤에 팀장을 맡았던 분이 발표를 마치자 정말 모든 게 끝난 느낌이 들었다. 기업측에서도 좋은 성과를 내주어서 감사하다는 얘기를 들었고, 멘토링을 해주셨던 멘토님도 많은 응원과 격려를 해주셨다.
이번 프로젝트를 통해 어렴풋이, 과거 내가 생각했던 '원고를 완벽하게 교정, 교열하는 인공지능'에 대한 힌트를 얻을 수 있었다. 다음 사이드 프로젝트는 이걸로 해보면 어떨까 생각 중!! 너무나 귀한 경험이였고 무사히 끝마치게 되어 기쁘다.
'공부방 > Upstage AI Lab 4기' 카테고리의 다른 글
[기업연계] GPU 쿠다 세팅하기 (0) | 2025.02.01 |
---|---|
[git] gitignore을 먼저 만들어두고 레파지토리에 연결 (0) | 2025.01.29 |
[Coding] LinkedLists, Listnode (0) | 2024.12.27 |
데이터셋 분할 방법 (0) | 2024.12.23 |
패스트캠퍼스 Upstage AI Lab 부트캠프 4기, IR 경진대회(feat. RAG) (0) | 2024.12.23 |