Abstract
EEVE-Korean-v1.0 이라는 모델을 소개한다.
이 모델은 영어와 한국어 text 이해 둘다 좋은 성능을 가지는 한국어 version LLM 이다.
기존의 영어 중심 모델들은 영어에 특화된 tokenizer 를 사용하기 때문에 한국어를 처리할 때 비효율적이다
그래서 이 논문에서는 새로운 “어휘 확장 방식”(Vocabulary Expansion) 을 제안한다.
이전 연구들에서는 새로운 언어 임베딩을 학습하려면 수조개의 토큰이 필요하다고 했지만, 이 논문에서는 단 20억개 토큰만으로 비영어 언어 성능을 크게 향상시킬 수 있음을 보여준다.
EEVE-Korean-10.8B-v1.0은 2024년 1월 기준 Open Ko-LLM Leaderboard에서 대부분의 instruction-tuned LLM들을 능가하며, Hugging Face 리더보드 기준으로 공개된 모델 중 최고의 한국어 사전학습(pre-trained) 모델로 평가받고 있다.
1. Introduction
비영어 언어에 대해 tokenizer 가 비효율적이라는 뜻은 예를 들면 한국어를 사용할 때, 영어와 비교했을 때 같은 semantic 의미를 가짐에도 불구하고 훨씬 많은 토큰 수로 나뉜다는 것이다.
→ 그 결과 더 긴 responce time 과 더 짧은 context length 와 더 높은 API cost 라는 단점을 가지게 되어있다.
그래서 자주 사용하지만 긴 단어들을 따로 tokenizer 에 추가하는 것이 중요하다. 하지만 이는 어렵다고 알려져 있다 : 왜냐하면 다른 연구에서 말하길 이는 trillion 단위의 학습토큰이 필요하다고 했기 때문.
그래서 efficient and effective vocabulary expansion(EEVE)를 제안한다.
이를 통해 SOLAR-10.7B를 사용하여 EEVE-Korean-10.8B-v1.0 와 Phi-2 모델을 사용하여 EEVE-Korean-2.8B-v1.02 를 한국어-중심 pre-training 을 하였다.
2. Efficient and Effective Vocabulary Expansion
이 논문의 핵심 가정 : foundation 모델은 이미 방대한 영어 text 로 학습되어있어서 충분한 이해와 reasoning 능력을 가지고 있다는 것이다.
이를 이용하여 영어에서 한국어(비영어 언어) 로 transfer 시켜서 처음부터 한국어를 학습하는 거 보다 더 효율적으로 성능을 올릴 수 있도록 한다.
7단계로 이루어진 학습방법 사용한다.
2.1 Preliminary 1: Tokenizer Training
목적은 base 모델의 성능을 최대한 활용하는 것이다.
그래서 base model 의 vocabulary 은 유지한 채로 한국어 corpus 에서 최소 6000번 이상 등장한 token 들 중 가장 높은 8960개 추가하였다. → 그래서 총 40960개 (오리지널 token size : 32000)
이렇게 어휘확장을 함으로서 한국어 text 처리 시 소모되는 token 수가 약 3배 감소했다. 그래서 전체 학습 과정에서 연산 비용을 절감했다.
→ 즉, 기존 한국어 토큰들은 sub-word 로 쪼개져있기만 해서 비효율적으로 처리된다는 것이 문제. 그래서 한국어 전용 토큰을 더 추가한다는 것이다.
2.2 Preliminary 2: Subword-based Embeddings Initialization
토큰 통합 과정은 실제 학습이 일어나기 전에 진행된다. 이때는 모델의 parameter 에 새로운 입력 임베딩(embed_tokens)과 출력 임베딩(lm_head)을 도입한다.
새롭게 추가된 토큰의 임베딩은 해당 토큰을 구성하는 subword 토큰의 임베딩 평균값을 사용하는 방식은 택한다.
기존 모델이 가지고 있는 임베딩 파라미터를 이용하여 초기화한다.
새로 추가된 출력 임베딩은 해당 토큰을 구성하는 첫번째 subword 토큰의 임베딩으로 초기화된다.
이 전략은 새 토큰의 출력 임베딩이 그를 구성하는 서브워드의 의미적 특성에 정렬되도록 하는거라고 한다.
2.3 Multi-stage Training
Stage 1 (new input embeddings)
모델의 다른 모든 파라미터는 고정(freeze)한다.
이 단계의 핵심 가설은 causal language modeling 에서 input 과 output token sequence 를 구분할 수 있으면 오리지널 tokeniser 와 새로운 tokenizer 로 동시에 사용하여 모델이 새로운 임베딩을 효율적으로 학습할 수 있다는 것이다.
그러면 모델이 old token 으로부터 임베딩 공간에서 구축된 지식을 사용할 수 있다. → 뭔소리지ㅜㅠ
하지만 입력 출력 시퀀스에 서로 다른 tokenizer 를 동시에 사용하는 것은 입출력 시퀀스 불일치로 인해 teacher forcing 적용이 어려워지는 등의 구현상 문제를 야기한다.
이에 대해 서브워드 기반 임베딩 초기화 방식(2.2) 을 활용해서 출력 시퀀스에는 기존 토크나이저를 간접적으로 사용하는 방식을 선택한다.
즉, 전체 단어 토큰을 새로운 토크나이저로 입력받고 그에 해당하는 첫번째 sub-word 토큰을 출력하는 방식으로 학습한다.
입력/출력 시퀀스를 수정하지 않고도 모델은 새로운 토큰과 그에 대응하는 첫번째 서브워드 토큰의 표현을 정렬하도록 학습할 수 있고,
이 과정은 그림 2 처럼 입력 임베딩만 최적화함으로써 가능하다.
단, 이 단계에서는 아직 모델이 같은 hidden state 를 공유하는 서로 다른 토큰들을 구분하지는 못하는 상태이다.
(그림2 설명)
새롭게 추가된 토큰들의 output 임베딩을 해당 토큰을 구성하는 첫 번째 서브워드 토큰의 출력 임베딩으로 초기화한다.
예를 들어, “하세요”라는 새로 추가된 토큰을 예측할 때, 그 첫 번째 서브워드인 “하”의 출력 임베딩을 사용하도록 초기화한다.
“하세요”를 예측하기 위한 last hidden representation 이, 기존 서브워드 “하”를 예측할 때와 동일한 로짓(logits)을 생성하도록 한다.
설령 정답(gold token)으로 “하세요”를 직접 제공하더라도, 실제로 계산되는 그래디언트(gradient)는 결국 서브워드 “하”를 기준으로 업데이트된다.
따라서 모델은 “하세요”라는 입력 토큰을 받아, 그 의미를 바탕으로 서브워드 “하”를 예측하도록 학습하게 된다.
→ 그니까 인풋 임베딩을 추가했을때 임풋에서 “하세요” 였어도, output 에서는 freeze 되어있으니까 그냥 억지로 “하” 의 output 임베딩 부분으로 매핑해준다는 거네.
Stage 2 (new output embeddings)
이 논문의 목표는 다양한 문맥에서 새로 추가된 토큰을 정확하게 생성할 수 있는 능력을 향상시키는 것이다.
이를 위해 lm_head 출력 임베딩만 조정한다.
모델의 나머지 파라미터를 freeze 하는 이유는 현재 모델이 불안정한 상태이기 때문이다.
입력과 출력 임베딩을 동시에 학습하려 하면 converge (수렴) 에 어려움이 생기고 모델 성능 최적화에 방해가 된다.
그래서 대부분의 파라미터를 고정해서 더 안정적으로 수렴을 유도한다.
이 방법은 다른 레이어를 통한 역전파가 필요없기 때문에 학습 시간도 크게 단축된다. (그런가.? → 맞징 왜냐하면 맨밑까지 갈 필요가 없으니까)
Stage 3 (new input and output embeddings)
3단계에서는 입력 임베딩(embed_tokens)이 여전히 output 임베딩의 initial 값에 기반하여 최적화된다.
이 단계에서는 새로 추가된 input 과 output 의 임베딩들이 동시에 업데이트된다.
input 과 output 의 정렬을 통해 모델은 새로운 토큰들을 이해(입력)와 생성(출력) 모두에 활용하는 방법을 학습된다.
Stage 4 (all output embeddings)
이전 단계까지는 base 모델의 모든 파라미터를 freeze 했기 때문에 기존 토크나이저와 새로운 토크나이저 간의 logit 이 서로 다른 scale 을 가지거나 하는 경우 등 전체 어휘로 같이 사용되기에 최적화가 덜되기 때문에 기존 토큰 임베딩 업데이트를 시작한다.
이 단계가 실험적으로 중요함을 입증하였다고 한다.
Stage 5 (new input and all output embeddings)
그리고 여기에서는 모든 출력 임베딩 fine-tuning 을 하는 동시에 새로 추가된 input 임베딩도 학습한다.
새로운 입력 토큰들에 대해서도 잘 prediction 하도록 하는것이 목표이다.
Stage 6 (all layers)
개선된 임베딩 레이어의 성능을 전체 모델 파라미터와 통합하는 단계로,
기존의 모든 모델 파라미터를 QLoRA와 같은 기법을 활용하여 효율적으로 학습한다.
Stage 7 (internal layers)
마지막으로, 일종의 “쿨다운(cool down)” 단계
입력 및 출력 임베딩 레이어를 제외한 내부 레이어 전반의 업데이트한다.
3. Implementation Details
3.1. Datasets
pre-training 에 사용한 데이터셋 : 한국어 웹사이트 내용, 영어 vocabulary, 한국어 AI Hub 의 parallel corpus 등
pre-processing 규칙 :
1. perplexity-based filtering 2. n-gram repetition 필터링 3. stopword-based filtering
그래서 pre-training 데이터셋으로 3.2M documents (6.7GB) 사용.
위의 표는 기존 solar모델과 eeve 모델의 tokenizer 사용시 pre-training 데이터셋의 토큰수가 얼마나 줄어들었는지 확인할 수 있다. (=거의 반이나 줄었다)
phi-2 는 더 줄었다!
Transformer 모델들의 computational cost 가 token length 에 따라 quadratic 하게 증가하는 것을 고려하면
첫번째, 같은 시퀀스를 처리하는데 같은 GPU 에서 4배 더 오래 걸린다. (→왜 4배지?: token 길이가 2배 길어지면 computational cost 는 2배로 늘어나니까)
두번째는 우리의 모델이 같은 데이터셋으로 4배 더 효율적으로 학습할 수 있다는 의미이다.
fine-tuning 에서는
LLaMAFactory의 Direct Preference Optimization (DPO) 를 사용하였다.
데이터셋은 Orca, UltraFeedback, 등을 한국어로 번역하여 사용.
3.2 Training
학습에 사용한 framework 는 pre-training 은 Axolotl을, fine-tuning 에는 LLama-factory 를 사용하였다.
GPU 는 8 x NVIDIA H100 GPUs 80GB 에 64 core CPU 를 사용하였다.
EEVE-Korean-10.8B-v1.0 모델의 경우 : bf16 precision 환경에서
seq len : 4096, gradient accumulation steps : 4, micro batch size: 8 로 설정하였다.
EEVE-Korean-2.8B-v1.0 모델은 seq len 2048, gradient accumulation step 16, micro-batch size 16의 설정.
최적화에는 AdamW 옵티마이저(Loshchilov and Hutter, 2018)를 사용했으며,
lr scheduler 는 cosine scheduler으로, 워밍업 단계 10 스텝 사용
lr은 10.8B 모델에는 4e-5, 작은 모델에는 2e-4를 사용. (큰 모델일수록 작은 lr 을 사용해야한다?)
각 단계에서는 loss가 수렴할 때까지 학습을 지속했으며, 400 global step 이전에 loss가 수렴하는 현상을 관찰 (긍정적)
총 7단계의 학습 전략을 사용했지만,
2.8B 모델의 경우 출력 임베딩만 최적화하는 단계들이 연산 부담이 크지 않기 때문에, 전체 사전학습(pre-training) 과정이 이틀 이내에 완료
4. Evaluation
4.2 Results
EEVE-Korean-10.8B-v1.0은 평균 성능에서 동일한 크기의 다른 사전학습(pretrained) 모델들보다 우수한 성능을 보였다.
주목할 만한 점은, EEVE-Korean은 한국어 성능을 향상시키면서도 영어 성능을 저하시키지 않은 유일한 사례라는 것이다.
또한 다른 결과로는, 영어 데이터셋에 대한 preference tuning은 오히려 모델의 한국어 작업 성능을 떨어뜨리는 결과를 낳았다.
예를 들어, LLaMA-2-chat 계열 모델들은 LLaMA-2 체크포인트에 preference tuning을 적용한 버전으로,
영어 작업 성능은 향상되었다 (예: LLaMA-2-7B: 0.7774 → LLaMA-2-7B-chat: 0.7976, 영어 BoolQ).
반면, 한국어 작업 성능은 오히려 하락했다 (예: LLaMA-2-7B: 0.5242 → LLaMA-2-7B-chat: 0.5157, 한국어 BoolQ).
우리 모델에 대해 한국어 instruction 데이터셋으로 preference tuning을 적용한 경우,영어 작업 성능이 저하되지 않았고, 오히려 향상되는 결과도 관찰되었다.
그 이유로,
이미 한국어와 영어 토큰 간의 임베딩 공간이 잘 정렬되어 있어,
특정 언어에 대해 파인튜닝을 하더라도 모델 파라미터에 큰 변화가 발생하지 않기 때문이라고 추정한다.
'LLM 관련 논문 정리' 카테고리의 다른 글
E5-V: Universal Embeddings with Multimodal Large Language Models 논문 정리 (0) | 2025.05.10 |
---|---|
RAGAS 라이브러리 평가지표 설명 (0) | 2025.05.10 |
Dataset Decomposition: Faster LLM Training with Variable Sequence Length Curriculum (0) | 2024.11.16 |
RAGAS: Automated Evaluation of Retrieval Augmented Generation (1) | 2024.11.10 |
DoRA: Weight-Decomposed Low Rank Adaptation (0) | 2024.05.02 |