Table of Contents
안녕하세요! 오늘은 2024년 10월 28일, 4월부터 시작한 Upstage AI Lab 3기 부트캠프가 7개월을 지난 시점입니다.
마지막 프로젝트인 '파이널 프로젝트' 주제를 바탕으로 글을 써보려고 합니다.
파이널 프로젝트의 주제는 총 4개이고, 이 중에서 원하는 프로젝트를 골라 참여할 수 있었습니다.

1. 파이널 프로젝트 주제
저는 최근 LLM의 발전으로 핫해진 RAG 시스템을 경험하기 위해 [Scientific Knowledge Question Answering | 과학 지식 질의 응답 시스템 구축] IR Information Retrieval 프로젝트에 참여하였습니다. 대부분의 수강생들도 IR 프로젝트에 참여하셨습니다.

여기서 간단하게 RAG에 대해 살펴보면
RAG(Retrieval-Augmented Generation)은 정보 검색과 생성을 결합한 자연어 처리 기술입니다. 이 기법은 특정 질문이나 주제에 대한 답변을 생성하기 전에 관련 문서나 데이터를 검색하여, 그 결과를 바탕으로 답변을 생성하는 데 사용됩니다. 이렇게 하면 모델이 더 정확하고 상세한 정보를 제공할 수 있습니다.
RAG는 두 주요 구성요소로 나뉩니다:
1. 검색기(retriever): 이 부분은 주어진 질문에 대해 데이터베이스에서 가장 관련성이 높은 문서를 찾아내는 역할을 합니다. Elasticsearch, Faiss, Pinecone 와 같은 "벡터 검색 엔진" 또는 "벡터 데이터베이스" 를 활용합니다. 검색된 문서는 텍스트나 데이터의 형태일 수 있으며, 주로 밀집(dense) 또는 희소(sparse) 벡터를 사용한 임베딩 기법으로 문서를 인덱싱하고 검색합니다.
2. 생성기(generator): 검색된 문서를 바탕으로 구체적인 답변을 생성하는 부분입니다. 이 모델은 주로 변형기(transformer) 기반의 언어 모델 LLM 을 사용하여 입력된 문서와 질문을 조합해 자연스러운 답변을 생성합니다.
이번 대회의 베이스라인코드는 Elasticsearch를 검색기로 활용하여 top문서를 retrieve하고 그 문서들을 LLM OpenAI 3.5 turbo에 던져서 자연스러운 답변을 생성하는 과정이 담겨져 있습니다. 대회 평가는 top문서를 맞추는 MAP metric방식으로 진행되었습니다.

2. 파이널 프로젝트 협업과정
저희 IR2팀은 총 5명입니다. 4명은 총 4번의 대회 중 첫 번째 대회부터 함께한 멤버들이고, 두 번째 대회부터 합류하신 1분 이렇게 5분으로 구성되었습니다. 4번의 대회를 함께 하다보니 서로의 프로젝트 스타일에 대해 잘 파악할 수 있었습니다. 서로가 초반에는 겹치는 부분을 진행하기도 하였지만, 프로젝트 후반부에는 겹치지 않는 모델을 실험하기도 하고, 다양한 시도 중 효과가 있었던 부분들을 결합하여 진행했습니다. 해당 프로젝트의 내용을 깊고 넓게 충분히 숙지할 수 있었고, 서로가 보완이 되도록 협업을 하였습니다. 그러다보니 자연스럽게 좋은 결과도 따라왔습니다.
첫번째 대회는 4위, 그 이후 계속 1위, 1위, 1위라는 3연속 1등의 기록을 세웠습니다.



협업을 위한 저의 팁은 "맨 먼저 반드시 수다떨기" 입니다. 부트캠프에 참여하신 분들을 보면 MBTI가 대부분 INTP, INTJ,ISTP가 많은 것을 볼 수 있었는데 이 분들의 특징이 개인화된 업무 능력에 특화를 보이시고 small-talk에는 큰 관심이 없으신 분들이 많죠. 그런데 제일 중요한 것은 수다떨기 입니다. 협업은 상대방을 이해하는 상황에서 시작됩니다. 상대방이 어떤 생활패턴을 가지고 있고 어떤 가족 형태를 이루고 있고 어디서 살고 어떤 삶을 살고 있는지 알지 못한다면 상대방이 프로젝트에 임하는 방식 또한 이해할 수 없습니다. 반드시 팀원분들과 어느 정도의 거리를 두시되 친분을 쌓으시기 바랍니다.

또한 두번째 핵심 팁은 바로 "실험기록지"를 작성하라는 것입니다. 실험을 기록함으로써, 실험법을 지켜가며 테스트를 진행할 수 있고 방향성을 잡을 수 있었습니다. 또한 팀원들이 했던 실험을 바탕으로 중복되지 않는 실험을 진행할 수 있었죠.


3. 파이널 프로젝트 결과
프로젝트 상세내용: https://everydaysummerbreeze.tistory.com/303
[Scientific Knowledge Question Answering | 과학 지식 질의 응답 시스템 구축] IR 프로젝트 개인회고
1. 프로젝트 개요A. 개요 : https://stages.ai/en/competitions/322 대화 히스토리를 기반으로 질문에 가장 알맞은 문서를 맞추는 것이 이번 대회 목표이다. 알맞은 문서는 1개 내지 2개일 수 있다고 강사님께
everydaysummerbreeze.tistory.com
결과를 말씀드리면 우리 IR2팀의 최종 파이프라인은 2개로 추려졌습니다.
1번: 무수한 실험으로 이뤄낸 모델
elasticsearch + 임베딩모델 snunlp/KLUE-SRoBERTa-Large-SNUExtended-klueNLI-klueSTS dimension 1024 + synonyms/user_dictionary + sparse/hybrid/dense retrieve + reranker + LLM
특징: hybrid retrieve / content에 keyword, summary, title추가 / query를 dialogue 전부 합친 combined_dialogue 를 사용

2번: 논문과 강의에 나온 기법을 모두 도입한 모델, LLM없이 0.9076달성
elasticsearch + 임베딩 모델 OpenAI embeddings_text-embedding-3-large dimenstion 3072 + synonyms/user_dictionary + sparse/colbert/dense retrieve + reranker
특징: 고차원 임베딩 사용/ colbert 적용 / content를 chunk로 분할하고 reranker 역시 chunk 문서를 적용

저희 팀은 다양한 기법을 적용하였고, 그 중 reranker의 위력은 대단했습니다. reranker를 학습하려고 했지만 커다란 content보다는 세밀한 문장 단위로 trainingset을 만들어야 해서 negative pair 생성에 실패했습니다. 하지만 chunk 방식으로 content를 분할하는 방식이 효과가 좋았습니다.
아쉬운 점은 정확히 topk가 sparse에서 온건지 hybrid에서 온건지, dense에서 온건지 확인을 하지 못했다는 점입니다. tracking을 했다면 좋았을텐데 대회 점수에 집중하느라 tracking코드를 만들지 못했습니다.
다음 기수에서는 저희의 기존 git코드를 바탕으로 대회의 점수를 빠르게 올리고, 이 대회를 만든 강사님들의 코드를 활용(멘토님에게 문의)해서 IR의 깊은 training방식, 데이터셋을 어떤 방식으로 활용하여 어떻게 question을 만들지에 대한 부분, 그리고 어느 방식의 retrieve에서 topk가 온건지에 대해 초점을 두고 진행하셨으면 합니다.

4. 파이널 프로젝트 Lesson-Learned
이번 대회를 통해 LLM의 Hallucination과 일관되지 못한 아웃풋 출력의 한계를 느끼기도 했지만, LLM의 강력한 독해 능력을 경험할 수 있었습니다. 생각보다 gpt o1-mini의 성능이 좋지 못한 것을 느껴, task마다 적합한 LLM을 선택하는 일도 쉽지 않다는 걸 느꼈습니다.
특히 멤버들의 협업이 중요하다는 걸 느꼈습니다. 코드를 공유하는 관계이다 보니 상대방의 한 마디 한 마디에 경청하지 않으면 정확히 어떤 이야기를 하는지 파악하는게 쉽지 않아서 경청하는 자세도 매우 중요하다고 느꼈습니다. 또한 내가 한 일을 명확하게 전달하는 능력도 좀 더 키워야 겠다는 생각도 했구요. 한 건 많은데 PR을 제대로 안하면 아무 소용이 없으니까요.
4월부터 10월까지 7개월 동안 원없이 코딩을 했고 파이널 대회 역시 제 역량을 모두 쏟아부었던 것 같습니다. 그래서 아쉬움은 정말 1도 남지 않는 시간이었습니다. 머신러닝이 전부였던 10년 전, 이렇게 5년 만에 DL, LLM이 세상을 뒤바꾸어 놓을 줄은 생각도 못했네요. 급격하게 바뀐 IT생태계에 위협을 느껴, 육아중이던 저는 우연히 패스트캠퍼스의 광고를 보고 HRD와 연계하여 진행되는 부트캠프에 지원하게 되었고 지금은 ML,DL,LLM 프로젝트에 뛰어들 수 있는 실력을 갖췄다고 생각합니다. 대회는 끝이지만 자소서, 코딩테스트 등의 마무리 과정은 남아있어서, 7개월 간의 내용을 정리하는 유종의미의 시간을 가져야 겠습니다.

'Upstage AI 3기 > 패스트러너_기자단' 카테고리의 다른 글
[패스트캠퍼스 Upstage AI Lab 3기 부트캠프] 과정 종료 회고 (0) | 2024.10.27 |
---|---|
[패스트캠퍼스 Upstage AI Lab 3기 부트캠프] 패스트캠퍼스 강사 및 멘토 (0) | 2024.08.10 |
[패스트캠퍼스 Upstage AI Lab 3기 부트캠프] CampCon (0) | 2024.07.22 |
[패스트캠퍼스 Upstage AI Lab 3기 부트캠프] 현직자 특강 (0) | 2024.06.24 |
[패스트캠퍼스 Upstage AI Lab 3기 부트캠프] 과정 중간 회고 (1) | 2024.05.26 |
- Total
- Today
- Yesterday
- PEFT
- LLM
- cnn
- t5
- classification
- Transformer
- 티스토리챌린지
- git
- Python
- English
- 해시
- nlp
- Lora
- 파이썬
- 코딩테스트
- LIST
- 손실함수
- recursion #재귀 #자료구조 # 알고리즘
- Numpy
- 오블완
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- clustering
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- speaking
- RAG
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- Github
- Hugging Face
- Array
- 리스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |