본문 바로가기
TechStudy/SyntheticData

Nemotron: LLM훈련을 위한 합성데이터 생성모델

발매날짜: 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

 

nvidia/HelpSteer2 · Datasets at Hugging Face

Sure! I can help you with data analysis in a variety of ways, depending on your specific needs and the type of data you have. Here are some general steps you can follow to get started: 1. Define your research question: The first step in any data analysis p

huggingface.co

 

개요: LLM 훈련시 텍스트 데이터 구축 어려움 -> 고품질의 합성데이터로 LLM을 훈련하자 -> LLM을 위한 고품질 합성데이터를 만드는 오픈소스 모델 Nemotron 개발 (상업적 이용 가능)

 

품질 검증: Nemotron이 만든 합성데이터를 Nemotron Reward모델이 5가지 기준을 바탕으로 필터링함

 

 

아래의 과정을 거쳐서 합성데이터를 생성

합성데이터 생성 파이프라인: (1) the Nemotron-4 340B Instruct 모델이 텍스트기반 합성데이터를 생성하면, (2) Nemotron-4 340B Reward가 생성된 text를 평가. — 평가 피드백은 지속적 개선을 유도하고 합성데이터가 관련성있게 정확하고 특정 조건들을 만족함을 보장

 

 

 

검증: instruct모델은 적대적 테스트를 포함한 여러 평가를 거쳤으나, 여전히 생성된 합성데이터에 대한 안전성과 유용성을 검증할 필요가 있음.

 

 

다양한 파인튜닝 방법 존재. 원문: https://blogs.nvidia.com/blog/nemotron-4-synthetic-data-generation-llm-training/

 

NVIDIA Releases Open Synthetic Data Generation Pipeline for Training Large Language Models

Nemotron-4 340B, a family of models optimized for NVIDIA NeMo and NVIDIA TensorRT-LLM, includes cutting-edge instruct and reward models, and a dataset for generative AI training.

blogs.nvidia.com

 

각종 코드 자료, 예시 자료 존재 (관련 깃헙 참조)

 

 

 

[관련 논문]

기초모델 기술 보고서: 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) 사용

 

Key hyper-parameters affecting size of Nemotron-4-340B-Base

 

 

 

 

[훈련 방법]: 대충 nvidia파워로 최고의 GPU 병렬 환경 사용했다는 내용임

Batch size rampup schedule, along with time and efficiency metrics for the Nemotron-4-340B-Base parameter model.

 

 

 

 

[기초 모델 평가]: 쌩 base 모델로 다른 base 기초 모델과 비교해본 결과

Results on standard reasoning benchmarks. The values marked with ∗ are taken from Qwen-Team(2024)

 

 

 

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).

 

 

Model Accuracy on Reward Bench. Higher is better for each category (Allen AI, 2024). Nemotron4-340B-Reward achieves the top accuracy on Reward Bench’s primary dataset, in particular on the challenging “Chat-Hard” category.

결과가 좋다. (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 single-turn prompts generation for open Q&A, writing, closed Q&A, math&coding from left to right.

 

 

프롬프트 예시

 

. . 등등 프롬프트 다양화

 

 

 

이 아래 내용은 프롬프트 생성 방법에 대한 구체적인 내용이므로 해당 부분은 간략히 정리

 

 

 

[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를 통해 그 답을 찾을 수 있다.

 

Demonstration on our proposed Iterative Weak-to-Strong Alignment 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

 

a distance metric

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]: 대충 성능 좋다 그런 내용임

 

Evaluation results of instruct models on automatic benchmarks. Bold indicates the top score among all models, while underlined indicates the top score among open-source models.
Evaluation results of each intermediate model in the alignment process, where the last column corresponds to our Nemotron-4-340B-Instruct

 

 

 

 

 

 

 

[주관적 검증(인간 검증)]

Human evaluations comparing Nemotron-4-340B-Instruct with GPT-4-1106-preview across ten task categories
Human evaluation results regarding perception of response length Underlined indicates the model with the higher rate of perceived appropriate length.

 

 

 

 

 

 

[안전성 검증]: AEGIS(안전성 분류기)로 검증

해당 분류기 모델은 오픈소스이다.

https://huggingface.co/nvidia/Aegis-AI-Content-Safety-LlamaGuard-Permissive-1.0

 

nvidia/Aegis-AI-Content-Safety-LlamaGuard-Permissive-1.0 · Hugging Face

Model Card License The use of this model is governed by the Llama 2 Community License Agreement. Model Details Aegis-AI-Content-Safety-LlamaGuard-LLM-Permissive-1.0 is a LLM content safety model. It is a parameter efficient instruction tuned version of Lla

huggingface.co

 

여기서 애매한 경우를 넣기위해 "Needs Caution"이라는 카테고리를 하나 더 추가하여 검증함

 

라마 3과 비교하여 불건전 답변에 대한 비율을 나타낸 도표(낮은 것이 좋다.)

 

 

안전성 부분에서 우수한 부분도 있지만 라마 3과 비교했을때 부족한 영역도 많음 -> 모델 업데이트로 개선 예정

 

 

 

 

 

 

 

[6] Conclusion

모델, 소스코드, 설계원리 다 오픈하니까 마음껏 쓰세요.

 

 

 

 

 

 

 

 

728x90
반응형