Abstract:
- Instruction Tuning: 대형 언어 모델(LLM)을 특정 사용자 지향 태스크나 사용자 선호도에 맞게 조정(align)하기 위해, 사전학습을 마친 후에 특정한 “명령(Instructions)” 기반으로 추가 학습하는 기법입니다.
- 데이터 엔지니어링(특히 데이터 선정): 최근 연구에서는 모델을 잘 학습시키기 위해 단순히 데이터 양만 늘리는 것이 아니라, 어떤 데이터를 사용하느냐가 훨씬 중요하다고 강조합니다. 좋은 품질과 다양성을 갖춘 데이터 몇 개만 사용해도, 무작정 많은 데이터를 사용할 때보다 더 나은 성능을 얻을 수 있다는 결과들이 나오고 있습니다.
- 데이터 평가(Measurement) 기법 연구:
- 데이터가 얼마나 복잡한지(Complexity),
- 데이터 자체가 얼마나 높은 품질을 갖추고 있는지(Quality),
- 전체 데이터가 얼마나 다양한지(Diversity)
- 이 세 가지 지표를 기반으로 다양한 측정 방법을 비교하고, 또 새롭게 제안합니다
- 자동 데이터 선정(Auto Data Selection) 전략 제안:
- 위에서 측정된 지표(복잡도, 품질, 다양성)를 종합적으로 고려하여, 학습에 쓸 ‘가장 효과적인’ 데이터를 선택하는 간단하면서도 효과적인 전략을 제안합니다
- DEITA 모델 시리즈 제안:
- DEITA(Data-Efficient Instruction Tuning for Alignment)라는 이름으로, LLaMA나 Mistral 같은 언어 모델에 대해, 자동으로 선별된 비교적 소량의 데이터(6K 샘플)만 이용해 Instruction Tuning을 진행합니다
- 그 결과, 훨씬 더 많은 양의 데이터로 학습된 기존 공개 모델들과 비슷하거나 더 나은 성능을 달성합니다(데이터 효율 극대화).
- DPO(Direct Preference Optimization)와의 결합
- 선택된 소량의 SFT 데이터(6K 샘플)와 10K 샘플을 이용한 Preference 데이터로 DPO를 진행했을 때, MT-Bench와 AlpacaEval 등 주요 평가 지표에서 높은 점수를 기록합니다.
- 기본적으로 6K 규모의 SFT(Instruction Tuning) 데이터를 이용해 먼저 모델을 학습한 뒤, 추가로 10K 규모의 Preference 데이터(선호도 데이터)를 DPO(Direct Preference Optimization) 방식으로 학습하는 단계를 의미
데이터 평가 방법:
- 품질(Quality) 평가
- 응답의 정확성, 유용성, 상세성을 기준으로 판단함.
- 데이터 생성 방법:
- EVOL Quality 기법을 이용해서 생성함.
- 원본 응답($R_k$)을 ChatGPT에 입력해 정확성, 상세성, 유용성을 개선함.
- 예: "다음 응답을 더 정확하고 자세하게 재작성하세요. 전문 지식을 포함하고 오류를 수정하세요." 등의 지시문을 사용함.
- 원본 데이터가 있다고 한다면 ChatGPT 를 이용해 응답을 품질 향상 방향으로 진화시킴.
- EVOL Quality 기법을 이용해서 생성함.
- ChatGPT 를 이용한 점수 생성:
- 한번에 6개의 변형 샘플을 생성한 후 ChatGPT 를 이용해 점수를 매김.
- 판별기를 학습하는데 사용:
- 이렇게 생성된 변형 샘플은 고품질 데이터 풀에 등록되는게 아니라 판별기 모델을 훈련시키는데 사용됨.
- 2K 시드 데이터의 ChatGPT 점수로 LLaMA-1 7B 모델을 미세 조정해 자동 품질 점수($q$) 예측
- 이렇게 훈련된 모델을 바탕으로 데이터 필터링을 하는거임.
- 복잡성 평가:
- 지시문의 난이도, 정보 밀도, 추론 요구도를 기준으로 판단.
- 데이터 생성 방법:
- Evol Complexity 기법으로 데이터를 생성
- 제약 조건을 추가하거나, 주제를 심화하거나, 추론 단계를 확장해서 생성함.
- 이를 5회 반복시켜서 생성함.
- 예: "다음 지시문을 더 복잡하게 만들어주세요. 구체적인 조건 추가, 추론 단계 증가, 전문 용어 사용 등을 포함하세요." 등의 지시문을 이용해서 생성.
- 원본 지시문을 ChatGPT 를 이용해 복잡성을 강화시킴.
- Evol Complexity 기법으로 데이터를 생성
- ChatGPT 를 이용한 점수 생성:
- 한번에 6개의 변형 샘플을 생성한 후 ChatGPT 를 이용해 점수를 매김.
- 판별기를 이용한 판단:
- 시드 데이터의 점수로 LLaMA-1 7B 모델을 학습시켜 자동 복잡성 점수($c$) 예측.
- 다양성 평가:
- 데이터의 주제, 형식, 의도적 다양성을 가지고 평가.
- 데이터 생성 방법:
- 판단 방법:
- 임베딩 기반 유사도 비교:
- LLaMA-1 13B 모델로 지시-응답 쌍을 벡터 임베딩 변환.
- 코사인 거리 계산: $d(x, S) = \text{cosine-distance}(x, \text{nearest neighbor in } S)$.
- 임계값 (0.9) 을 초과하는 데이터는 중복으로 판단하고 제외시킴.
- 임계값보다 낮다면 다양성을 위해 추가함.
- 임베딩 기반 유사도 비교:
'Generative AI > Data' 카테고리의 다른 글
NVIDIA: Curating Trillion-Token Datasets: Introducing NVIDIA NeMo Data Curator (0) | 2025.01.26 |
---|---|
NVIDIA: Synthetic Data Generation (0) | 2025.01.25 |
Alpagasus: Traning A better Alpaca with Fewer Data (0) | 2025.01.23 |
Code Less, Align More: Efficient LLM Fine-tuning for Code Generationwith Data Pruning (0) | 2025.01.21 |
ShareGPT4V: Improving Large Multi-Modal Models with Better Captions (0) | 2025.01.20 |