파인튜닝을 성공적으로 수행하기 위해서는 어떤 데이터를 어떻게 만들고, 어떻게 선별·정제할지가 매우 중요하다.

 

특히 사전에 학습된 언어 모델(LLM)에 원하는 기능이나 성능을 얹기 위해서는 고품질의 데이터를 충분히 확보해야 한다. 다음은 데이터 합성 및 관리 과정에서 고려해야 할 주요 사항이다.

 

Survey 참고: https://youngerjesus.tistory.com/281

 

어떤 데이터가 필요한가?

분야별 요구 사항 파악:

  • 예:
    • 수학: 논리·추론 능력
    • 의학: 상담 능력
    • 법률: 정확하고 격식 있는 표현

데이터의 목표:

  • 다양성(Diversity): 하나의 상황이나 테스크에 국한되지 않고 폭넓은 경우를 다룸
  • 고품질(Quality): 데이터가 실제 도움이 되고 올바른 내용을 담고 있음
  • 충분한 양(Quantity): 일정 규모 이상의 데이터를 확보해야 통계적 학습이 가능

 

고품질 데이터 필터링

중복 및 유사 데이터 제거:

  • 명확한 성공/실패 판단 지표가 있는 경우:
    • 예) 코드 생성: 제대로 동작하는 코드 vs. 오류가 있는 코드
    • 실패 데이터를 제거하거나, 실패와 성공을 구분해 데이터에 라벨을 다는 등 필터링이 가능
  • Data Pruning 기법
    • 클러스터링 + 차원 축소 + Pruning Metric으로 유사도가 높은 데이터(중복 데이터) 제거
    • 합성 데이터 방식으로 수집 시, 비슷한 지시문·응답이 대량으로 생기는 경우가 많아 꼭 필요한 작업
    • ex) HDBSCAN, KMeans, Agglomerative Clustering 등으로 군집화 후 유사 데이터 정리
    • 클러스터링을 하는 이유 자체가 1:1 비교가 이제는 비효율적이기 때문임. 그러니 대규모 데이터에서 적합할 것. 
  • MinHashLSM + Jaccard 유사도 + Exact Deduplication
    • NVIDIA 사례: 텍스트 중복을 빠르게 잡아내 제거
    • 복붙, 어휘적인 겹침이 많은 경우 걸러낼 수 있음. 
  • 코사인 유사도 (임베딩 기반)
    • 텍스트 임베딩(Transformer/BERT 등) 계산- 벡터 간 각도로 의미적 유사도 측정하는 방법 
    • 패러프레이징, 동의어, 유사한 문맥등을 걸러낼 수 있음. 
  • LLM 을 이용한 비교. 
    • LLM 을 이용해서 비교하는 방법. 
    • 요약을 해서 비교하는 방법 테크닉도 있다. 
    • 주로 데이터가 상대적으로 작고 품질을 높이고 싶을 때 적합

 

 

데이터 품질 평가 지표 수립:

  • 보상 모델을 이용한 1차 평가 지표:
    • 정확성(Correctness), 유용성(Helpfulness), 일관성(Coherence), 복잡성(Complexity), 표현 풍부도(Verbosity) 등
    • 이는 데이터의 표면적인 측면을 평가하는 거임. 내재적인 측면을 필터링 하는건 아님. 그래서 이런 보상 모델의 평가 방법은 범용적으로 사용해볼만할 것.
  • 다양한 연구 사례:
    • ShareGPT4v: 캡션 길이(짧은 문장은 저품질로 간주)
    • UltraChat: 대화 데이터에서 어휘적·주제적 다양성을 평가
    • Genie: QA, 요약, 정보 추출 등 답변 형식 준수와 근거의 정확성, 자연스러움을 평가
    • Self-Instruct: 지시문 유사도 검사, 지시문의 길이(너무 짧거나 긴 경우 제거), 명사-동사 구조 다변성, 샘플링을 통한 수작업 품질 검사
    • What Makes Good Data for Alignment: 데이터의 복잡도(Complexity), 품질(Quality), 다양성(Diversity)으로 평가
    • NVIDIA: Helpfulness, Correctness, Coherence, Complexity, Verbosity 등을 1차 필터링 지표로 삼음
    • Alpagasus: 고성능 모델로 평가하여 점수(예: 5점 만점 중 4.5점 이상이면 통과)
    • Rejection sampling Fine-Tuning (RFT): 수학적 추론 과정이 올바로 포함된 데이터를 남김
    • ReST 기법: (수학·코딩처럼) 정답 여부가 명확히 판단되는 경우 유효한 데이터만 남길 때 성능 향상

데이터 양(스케일) 고려:

  • LIMA 논문
    • 모델의 능력은 사전학습으로 대체로 결정되며, 고품질 데이터 2,000개 정도만으로도 충분한 성능 향상을 얻을 수 있다고 주장 (사실 1000개 인데, 2000개면 더 학습의 안정성이 높아진다고)
    • 데이터 양을 무조건 늘리는 것만으로는 한계가 있음
    • ‘적은 양의 고품질 데이터’가 ‘많은 양의 저품질 데이터’보다 효과적일 수 있음
  • 데이터 중복 제거와 스케일의 균형
    • 대규모 데이터라도 중복 제거와 필터링 과정을 충분히 거쳐야 진짜 “의미 있는” 데이터만 남김

 

고품질 데이터 생성 기법

예시(시드 데이터) 제공을 통한 합성

  • 예시 제공의 중요성
    • Genie: 4개 예시
    • Self-Instruct: 8개 예시 (6개 인간 작성, 2개 모델 생성)
    • Synthetic Data Generation: “PubMed 저널 스타일” 등 특정 스타일 모사를 위해 예시 제시
  • 시드 데이터 확보 경로
    • ChatGPT 등 LLM을 직접 활용해 유형별로 시드 생성 (다만 이 방법은 중복 우려함)
    • 인간이 직접 만든 시드
    • 기존 데이터셋에서 추출
  • 시드 데이터도 중복·편향이 없도록 다양하게 구성
    • ex) UltraChat: 시, 수필, 스토리, 에세이 등 글쓰기 형태의 시드를 폭넓게 준비
    • 클러스터링 알고리즘 or 텍스트 임베딩을 이용해서 데이터의 다양성을 평가할 수 있음.

외부 데이터 활용

  • 원본 데이터 정제 후 활용
    • Genie: 노이즈 제거(HTML 태그, 불필요 문구 등) → 구조화(Markdown 형식 등) → 합성
    • OSS-INSTRUCT: 오픈소스 코드 스니펫 참조해 코드 관련 지시문 생성 (편향 최소화)
  • 개인정보 보호
    • 원본 데이터를 그대로 주지 않고 필요한 정보만 발췌해서 새로 생성하도록 유도

고성능 모델을 활용:

  • 강력한 사전학습 모델 활용
    • GPT 계열 등 범용성이 높은 모델을 활용해 합성
    • 도메인 특화 모델에 파인튜닝해 세분화된 고품질 데이터 생성

Prompt 기법:

  • CAMEL(Multi-Agent 상황극)을 이용해 사람이 실제 대화하듯 자연스러운 데이터를 생성
  • Evol-Instruct처럼 기존 지시문을 바탕으로 더 복잡하고 다양한 지시문을 재생성
  • Prompt Template 설계를 LLM에게 맡겨 자동화 가능(라운드 단위로 반복)
  • 모델이 스스로 “Chain-of-Thought(CoT) + Self-consistency”로 자세한 풀이 과정을 작성 → 고품질 정답+추론 근거를 만들고, 이를 미세조정 데이터로 사용
  • Reject Sampling Fine-Tuning(RFT): 모델이 여러 가지 추론 경로를 시도해보고, 가장 정확해 보이는 답변·해설만 골라 데이터셋화. 이후 그 고품질 추론 과정을 모델이 재학습함으로써, 추론 능력이 한 번에 개선

다양한 데이터 생성 기법:

  • 다양한 시드 데이터를 활용:
    • 모델에게 예시를 주고 “이런 스타일로 생성하라”는 형태의 프롬프트를 사용하면, 훨씬 구체적이고 일관성 있는 데이터를 얻을 수 있음.
    • 하나의 시드 데이터를 다양한 테스크 용으로 만들 수도 있음.
  • 고성능 LLM + Prompt 기법을 이용해서 생성
  • 다양한 난이도, 형식, 주제 설정:
    • 쉬운 질문부터 고난도 추론 문제까지
    • 단답형 응답, 장문 서술, 표 형식, JSON 구조 등
    • 범용성 있는 LLM을 목표로 한다면, 시사·문화·학술·과학·엔터테인먼트 등 다양한 분야를 포괄
    • 도메인 특화 모델이라면 해당 분야 내에서도 여러 서브도메인을 아우르는 데이터를 준비
  • Iterative Generation(반복적 생성)
    • 한 번에 대량의 데이터를 생성하는 대신, 여러 라운드에 걸쳐 모델이 생성한 데이터를 평가·선별·개선하면서 재생성하는 방식
    • 각 라운드마다 이전 단계에서 누락된 유형, 중복 제거, 품질 향상 등을 수행하여 점진적으로 데이터 풀을 강화

 

파인튜닝 전략과 데이터 구성

파인튜닝 범위 결정:

  • Single Round vs. Iterative
    • 한 번에 큰 규모의 합성 데이터를 만들어 파인튜닝할지, 여러 라운드에 걸쳐 데이터 품질을 점진적으로 개선해 나갈지 결정
  • 테스크의 개수
    • 모델 크기가 작다면 한 가지 테스크에 집중하는 편이 나을 수 있음(모델 용량 문제)
    • 여러 테스크를 포함하면 일반화 능력이 좋아지는 장점도 있음
    • Longpre 등(2023) 연구: 지시 튜닝 작업 종류가 많아질수록 배우지 않은 테스크에 대한 일반화가 향상
  • PEFT(P-Tuning, LoRA 등)
    • 1,000개 정도의 고품질 데이터로도 원하는 성능을 달성하는 경우가 보고됨
  • 생성 데이터의 적정량
    • Self-Instruct: 16K 데이터까지는 성능 향상이 뚜렷했으나 그 이후로는 정체
    • Synthetic Data Generation: 35K 이상부터 성능 향상이 미미해지는 등 스케일링 한계 존재

 

NVIDIA NeMo Curator 데이터 파이프라인 예시

NVIDIA에서는 데이터 파이프라인을 크게 아래 네 단계로 구성했다.

  • (1) Extract
    • 원본 데이터를 수집·추출
  • (2) Clean & Unify & Reformat
    • 노이즈 제거, 통일된 형식으로 변환
  • (4) Filter
    • 품질 기준(Helpfulness, Correctness, 등)에 따라 1차 필터링
    • 보상 모델·LLM 등을 활용한 추가 필터링(주관적·객관적 평가 모두 고려)
  • (4) Deduplicate
    • MinHashLSM, Jaccard 유사도, Exact Deduplication 등을 이용해 중복 제거

+ Recent posts