발매날짜: 2024년 6월 14일
Nemotron-4 340B Instruct: 현실세계의 다양한 합성 데이터 생성 모델
Nemotron-4 340B Reward: Helpfulness, correctness, coherence, complexity, verbosity 5가지 기준 고품질 필터링 모델
Nemotron-4 340B Base: 기초 모델
필터모델이 참조한 데이터셋(ShareGPT기반): https://huggingface.co/datasets/nvidia/HelpSteer2
개요: LLM 훈련시 텍스트 데이터 구축 어려움 -> 고품질의 합성데이터로 LLM을 훈련하자 -> LLM을 위한 고품질 합성데이터를 만드는 오픈소스 모델 Nemotron 개발 (상업적 이용 가능)
품질 검증: Nemotron이 만든 합성데이터를 Nemotron Reward모델이 5가지 기준을 바탕으로 필터링함
아래의 과정을 거쳐서 합성데이터를 생성
검증: instruct모델은 적대적 테스트를 포함한 여러 평가를 거쳤으나, 여전히 생성된 합성데이터에 대한 안전성과 유용성을 검증할 필요가 있음.
다양한 파인튜닝 방법 존재. 원문: https://blogs.nvidia.com/blog/nemotron-4-synthetic-data-generation-llm-training/
각종 코드 자료, 예시 자료 존재 (관련 깃헙 참조)
[관련 논문]
기초모델 기술 보고서: https://research.nvidia.com/publication/2024-06_nemotron-4-340b
품질평가모델 관련: https://arxiv.org/html/2406.08673v1
Nemotron 기술보고서 리뷰
[1] Pretraining
[데이터]: 자연어(영어) 70%, 자연어(다국어) 15%, 소스코드 데이터(15%)
영어 말뭉치: 각종 웹사이트 문서, 뉴스, 논문, 책 등에서 긁어모음
다국어 말뭉치: 단일 언어 및 병렬 언어 포함
소스코드: 43개 프로그래밍 언어
전체 토큰 양: 9T tokens
상세 내용은 Nemotron-4 15b technical report, 2024의 방식을 그대로 따름
[구조]
base: Nemotron-4 15b Base
모델: 표준 decoder-only Transformer with causal attention masks.
임베딩: Rotary Position Embeddings(RoPE)
토크나이저: SentencePiece
활성화 함수: squared ReLU activations in the MLP layers
dropout rate: 0
bias term: False
input-output embedding 분리
grouped query attention (GQA) 사용
[훈련 방법]: 대충 nvidia파워로 최고의 GPU 병렬 환경 사용했다는 내용임
[기초 모델 평가]: 쌩 base 모델로 다른 base 기초 모델과 비교해본 결과
Nemotron-4-340B-Base 모델 생성 완료
[2] Reward Modeling
[모델 설계]: HelpSteer2(10k 사람 선호 데이터)를 이용해 quality 필터링 능력 강화
pairwise ranking model보다 multi-attribute regression reward model이 단순 길이가 긴 답변이 고품질이 아니라는 구분을 하는 데에, 그리고 미세한 뉘앙스 차이를 잡는 부분에서 더 효과적임
base model: 위에서 만든 Nemotron-4-340B-Base 모델 기반에서 마지막 softmax layer를 a new reward "head"로 바꿈
"head": a linear projection which maps hidden states of the last layer into a five-dimensional vector of HelpSteer attributes (Helpfulness, Correctness, Coherence, Complexity, Verbosity).
결과가 좋다. (Prior Sets의 경우, 해당 데이터를 학습에 사용하지않아서 낮게 나왔을 뿐이다.)
생성된 Nemotron-4-340B-Reward 모델은 Nemotron-4-340B-Instruct의 기반이 될 것이다.
[3] Alignment Data
합성데이터 생성(SDG, Synthetic Data Generation)에서 prompt도 synthetic으로 생성하는 것이 중요함
-> prompt 형태 다양화(task 다양화: 쓰기, Q&A // 주제 다양화 // 지시문 다양화: json, 문단, yes or no answers)
-> 사용이 자유로운 Mixtral-8x7B-Instruct-v0.1 모델을 synthetic prompts 생성기로 사용
[Synthetic single-turn prompts]
프롬프트 예시
. . 등등 프롬프트 다양화
이 아래 내용은 프롬프트 생성 방법에 대한 구체적인 내용이므로 해당 부분은 간략히 정리
[Synthetic instruction-following prompts]: aligned model에서 매우 중요
synthetic instruction following prompt 생성 예시: a random set of synthetic prompts 에서 선택
“Write an essay about machine learning. Your response should have three paragraphs.”
construct multi-turn instruction-following prompts where the instruction applies to all future conversations
ex) “Answer the question and all following questions according to: [BEGIN OF INSTRUCTION] Answer with three paragraphs. [END OF INSTRUCTION]”
construct second-turn instruction-following prompts, which request revision of the previous response according to the given instruction.
[Synthetic two-turn prompts]
the prompt contains one user question, one assistant answer, and another user question, in the form of “User: XXX; Assistant: XXX; User: XXX;”. We source the first user prompts from ShareGPT
[Real-world LMSYS prompts]: draw prompts from LMSYS-Chat-1M (LMSYS) (Zheng et al., 2023)
[Synthetic Dialogue Generation]: 내용 생략
[Synthetic Preference Data Generation]
prompt, chosen response, rejected response 이 3가지 형태로 생성
그냥 LLM과 reward model LLM을 judge로 삼아 두 가지 답변 중 선호하는 것을 고르고 정확도 비교
Reward model: 0.87
LLM model: 0.54
[Iterative Weak-to-Strong Alignment]: self-reinforcing flywheel effect를 유도하는 과정이다.
* flywheel effect: 특정 작업에 대해 처음엔 더디다가 갈수록 익숙해져서 원할하게 수행되는 효과
합성데이터 생성에 적절한 모델은?
생성기로부터 데이터 품질에 영향을 미치는 요인은?
합성 데이터 생성모델을 개선하는 방법은?
이 질문들은 아래 workflow를 통해 그 답을 찾을 수 있다.
첫 iteration에 initial aligned model로 Mixtral-8x7B-Instruct-v0.1를 사용
여기서 생성된 데이터는 Nemotron-4-340B-Base(= 340B-Interm-1-Base)의 중간 ckpt를 훈련하는데 사용됨
두 번째 iteration에 첫 번째 결과로 생긴 340B-Interm-1-Instruct model를 데이터 생성기로 사용.
base 모델부터 기존 Mixtral base보다 성능 지표가 뛰어났으므로, instruct model을 통해 생성된 합성데이터 품질 또한 우수첫 번째 결과물보다 우수함 -> 이 데이터를 340B-Interm-2-Base를 훈련시켜 340B-Interm-2-Chat를 만드는데 사용
-> 같은 데이터 셋을 사용하는 환경에서 base model의 강점이 instruct model에 그대로 영향 줌
-> 같은 base model을 사용하는 환경에서 데이터 셋 품질이 instruct 모델의 성능을 결정. (고고익선)
그외 추가 데이터 소스도 활용함 (내용 생략)
[4] Alignment Algorithms
Supervised Fine-tuning(SFT), Preference Fine-tuning 두 가지를 사용.
[Supervised Fine-tuning(SFT)]
기존의 방식은 1단계로 진행되나, 이 동시 학습 진행 방식이 종종 내부충돌 -> 최적 alignment 불가
-> 2단계로 나누어서 sequential과 deliberate manner로 수행 유도 -> 실제로 결과도 더 좋았음
1단계) Code SFT: 다른 task와 상관 없이 코딩 능력에만 집중하려면 code 데이터만 훈련시킴
성능 향상을 위해 많은 코딩 데이터 필요
-> Genetic Instruct(단계과정 모방하는 접근), wizard coder mutations으로 코드 합성데이터 생성
-> 생성된 합성데이터에 대해 LLM으로 품질 및 오류 여부 검증
1 epoch, 3e-7 learnig rate, global batch size 128로 약 800K의 샘플을 재훈련
2단계) General SFT: 코딩 task를 제외한 나머지 task를 위한 dataset 훈련
망각 방지(risk of forget)를 위해 2%는 1단계 code SFT에서 사용한 code generation sample를 섞음!
3 epochs, 1e-7~5e-7 learning rate, global batch size 128.
[Preference Fine-tuning]: (prompt, chosen response, rejected response)형태로 두 가지 훈련 사용
1단계) Direct Preference Optimization (DPO): optimizes the policy network to maximize the implicit reward gap between the chosen and rejected responses
문제점1: reward gap이 커질수록 chosen과 rejected 사이의 likelihoods가 지속적으로 감소,
훈련이 길어질수록 policy network가 과적합
-> weighted SFT loss와 vanilla DPO loss를 chosen에 추가
-> 저품질 chosen 학습 방지를 위해 Nemotron-4-340B-Reward로 ground-truth가 없는 답변들에 대해 고품질 선정
1 epoch, global batch size 256, learning rate in [3e-4, 3e-3], the weight of the SFT loss in [1e-5, 1e-3]
문제점2: 어떤 rejected답변은 chosen과 품질차이가 적은 반면, 다른 rejected는 chosen과 품질 차이가 심함
-> DPO가 이 차이를 모르고 무조건 chosen과 rejected 답변의 gap을 극대화해서 학습
-> 과적합 요인, 고품질 rejected 답변 폐기(unnecessarily unleraning) 문제.
-> 그래서 새 알고리즘 RPO를 2단계로 도입
2단계) Reward-aware Preference Optimization (RPO): approximate the reward gap using the implicit reward defined by the policy network
이 방식이 유도한 새 손실함수
$\pi$ : the policy network to train
$\pi_{ref}$ : the reference policy
$(x, y_{c}, y_{l})$ : the prompt, chosen response, and rejected response
$r^{★}(x, y_{c}), r^{★}(x,y_l)$ : the rewards of the chosen and rejected responses by the reward model
RPO approximates the reward gap -> 과적합 방지 (기존 방식: DPO maximizes the gap)
훈련에 사용한 데이터: 300K의 선호도 데이터(chosen에 대해 덜 엄격한 품질 필터링 버전)
$\eta$(epoch) = 1
learning rate(lr) = 3e-7
KL coefficient $\beta$ within [1e-3, 1]
SFT loss = True (규제계수 1e-5)
num_iterations = 3 (사실 한 번만 해도 성능 향상이 돋보였음) -> 각 iteration이 이전 iteration의 ckpt 사용
RPO로 3번째 iteration해서 만든 ckpt가 최종 Nemotron-4-340B-Instruct 모델이다.
[5] Instruct Model Evaluation
[Automatic Benchmarks]: 대충 성능 좋다 그런 내용임
[주관적 검증(인간 검증)]
[안전성 검증]: AEGIS(안전성 분류기)로 검증
해당 분류기 모델은 오픈소스이다.
https://huggingface.co/nvidia/Aegis-AI-Content-Safety-LlamaGuard-Permissive-1.0
여기서 애매한 경우를 넣기위해 "Needs Caution"이라는 카테고리를 하나 더 추가하여 검증함
안전성 부분에서 우수한 부분도 있지만 라마 3과 비교했을때 부족한 영역도 많음 -> 모델 업데이트로 개선 예정
[6] Conclusion
모델, 소스코드, 설계원리 다 오픈하니까 마음껏 쓰세요.
'TechStudy > SyntheticData' 카테고리의 다른 글
TF리뷰 (0) | 2024.07.03 |
---|---|
[논문 리뷰] ITF-GAN: Synthetic time series dataset generation and manipulation by interpretable features (0) | 2024.07.01 |
합성데이터 사례: 서울시민 라이프스타일 (0) | 2024.06.19 |
합성데이터 사례: 기업개요 및 주주 신용등급 (0) | 2024.06.18 |
합성데이터 사례: 통신사 멤버십 사용내역 (0) | 2024.06.18 |