파인튜닝으로 모델 성능 끌어올리기
파인튜닝으로 모델 성능 끌어올리기 (Fine-tuning)
모델 파인튜닝이란 일련의 데이터로 모델 자체를 업데이트해 출력 품질을 높이는 작업이에요. 단순히 출력 품질만 좋아지는 게 아니라 환각을 줄이고, 데이터를 더 포괄적으로 암기하며, 지연시간과 비용까지 낮출 수도 있어요. LlamaIndex의 핵심은 원래 인컨텍스트 러닝·검색 증강(retrieval augmentation) — 즉 모델을 학습시키지 않고 추론 모드로 쓰는 것 — 이지만, 파인튜닝은 검색 증강을 다양한 방식으로 보완할 수 있어요.
출처: 공식문서
파인튜닝의 이점
임베딩 파인튜닝
- 학습 데이터 분포 위에서 임베딩 모델이 더 의미 있는 표현을 만들 수 있게 돼요 → 더 나은 검색 성능으로 이어져요.
LLM 파인튜닝
- 주어진 데이터셋 위에서 스타일을 학습하게 할 수 있어요
- 학습 데이터에 잘 표현되지 않은 DSL(예: SQL)을 학습하게 할 수 있어요
- 프롬프트 엔지니어링만으론 고치기 어려운 환각·오류를 교정할 수 있어요
- 더 좋은 모델(예: GPT-4)을 더 단순·저렴한 모델(예: gpt-3.5, Llama 2)로 증류(distill)할 수 있어요
LlamaIndex와의 통합
현재 세 가지 핵심 통합이 있어요.
- 더 나은 검색 성능을 위한 임베딩 파인튜닝
- 더 나은 text-to-SQL을 위한 Llama 2 파인튜닝
- gpt-4를 증류하기 위한 gpt-3.5-turbo 파인튜닝
임베딩 파인튜닝
비정형 텍스트 말뭉치 위에서 모델 자체(여기선 bge)를 파인튜닝하거나, 블랙박스 임베딩 위에 어댑터를 파인튜닝하는 방법을 단계별 가이드로 제공해요. 과정은 다음과 같아요.
- LlamaIndex로 비정형 컨텍스트 위에 합성 질문/답변 데이터셋 생성
- 모델 파인튜닝
- 모델 평가
파인튜닝을 하면 검색 평가 지표가 5~10% 향상돼요. 이렇게 파인튜닝한 모델을 RAG 애플리케이션에 그대로 꽂아 쓸 수 있죠.
LLM 파인튜닝
GPT-3.5를 파인튜닝해 GPT-4 증류하기
OpenAI 파인튜닝 엔드포인트로 gpt-3.5-turbo를 RAG/에이전트용 GPT-4 응답을 내도록 파인튜닝하는 여러 가이드가 있어요. GPT-4로 비정형 컨텍스트에서 질문을 자동 생성하고, GPT-4 쿼리 엔진 흐름으로 "ground-truth" 답변을 만든 뒤, OpenAIFineTuningHandler 콜백이 질문/답변을 데이터셋으로 자동 로깅해요. 파인튜닝 작업을 돌려 증류 모델을 얻으면 Ragas로 평가해 naive GPT-3.5 워크플로우와 벤치마킹할 수 있어요.
더 나은 구조화 출력을 위한 파인튜닝
파인튜닝의 또 다른 활용은 모델이 구조화 데이터를 더 잘 출력하게 만드는 거예요. OpenAI와 Llama2 모두 가능해요.
더 나은 text-to-SQL을 위한 Llama 2 파인튜닝
text-to-SQL 데이터셋으로 Llama 2를 파인튜닝한 뒤, LlamaIndex 추상화로 어떤 SQL 데이터베이스에 대해 구조화 분석에 사용하는 방법을 보여줘요. 스택은 sql-create-context(학습 데이터), OpenLLaMa(베이스 모델), PEFT(파인튜닝), Modal(클라우드 컴퓨트), LlamaIndex(추론 추상화)로 구성돼요.
평가자(Evaluator) 파인튜닝
GPT-4 판사(judge)를 GPT-3.5 판사로 증류하는 것을 목표로 해요. 최근 연구에서 GPT-4 판사가 인간 평가자와 높은 수준의 일치를 보인다는 것이 관찰됐는데, GPT-3.5 판사를 파인튜닝하면 더 낮은 비용으로 GPT-4 수준(그리고 인간과의 일치도)에 도달할 수 있죠.
리랭킹용 크로스 인코더 파인튜닝
크로스 인코더를 파인튜닝하면 내 개인 데이터 위에서 리랭킹 성능을 개선할 수 있어요. 리랭킹은 고급 검색의 핵심 단계로, 여러 소스에서 검색된 노드들을 별도 모델로 재정렬해 가장 관련 높은 노드가 앞에 오게 하는 거예요. sentence-transformers 패키지로 QASPER 데이터셋 기반 데이터에 크로스 인코더를 파인튜닝해요.
Cohere 커스텀 리랭커
CohereAI로 커스텀 리랭커를 학습시키면 내 개인 데이터 위에서 리랭킹 성능을 개선할 수 있어요. 초기 검색 단계에서 검색된 노드를 별도 모델로 재구성해 가장 관련 높은 노드가 우선되어 앞에 오게 하는 게 목표예요. cohere 커스텀 리랭커 학습 모듈로 도메인·특정 데이터에 리랭커를 만들어 검색 성능을 높여요.