[NLP] EEVE: Efficient and Effective Vocabulary Expansion Towards Multilingual Large Language Models
- -
EEVE: Efficient and Effective Vocabulary Expansion Towards Multilingual Large Language Models
link : https://arxiv.org/pdf/2402.14714
예전에는 사전 학습부터 한국어 코퍼스를 사용한 모델도 꽤 있었던 것 같은데 최근에는 multilingual 대형 언어 모델을 한국어로 튜닝한 모델이 지배적이다. 최근 한국어 모델 중 성능이 좋기로 유명한 SOLAR-10.7B, Phi-2와 같은 모델도 기존 영어 중심의 언어 모델과 동일한 구조와 토크나이저를 사용한다.
한국어 task를 처리하는데 있어 기존 사용되던 대형 모델들은 불필요한 지식까지 포함하거나 한국어 task 성능을 높이는데 방해가 되진 않을까 하는 생각을 한 적이 있었다. 그런 문제를 한국어 토큰을 추가하고 잘 적용될 수 있도록 함으로써 해결하고자 한 논문인 것 같아 너무 반가웠다!! 직접적인 토크나이저 구조를 바꾸는 것이 아닌 대형 모델 내의 토큰을 수정하고 재학습함으로써 한국어의 고질적인 토크나이징 문제를 해결할 수 있어 굉장히 효율적여 보인다.
✲ Abstract
해당 논문은 비영어 텍스트가 영어 중심 토크나이저로 비효율적으로 처리되는 문제를 해결할 수 있는 EEVE (efficient and effective vocabulary expansion) method에 대해 소개한다. EEVE는 parameter freezing과 subword initialization을 포함하는 방법으로 이전 방법들이 수조개의 토큰들이 필요하다고 여긴 반면 단 2 bilion tokens 만으로 성능을 낼 수 있음을 보여준다.
✲ Introduction
Llama, MPT, Falcon, Mistral, Mixtral, SOLAR, Phi와 같은 대형 모델들은 영어 tasks에서 놀라운 성능을 보여줬지만 이는 비영어권 언어의 성능격차를 초래하기도 했다.
이러한 차이는 단지 성능 뿐 아니라 computational efficiency에도 영향을 미친다. 같은 문장임에도 영어는 8개의 토큰, 한국어는 26개의 토큰이 필요하다. 이는 GPT API를 사용할 때 훨씬 더 많은 비용이 소요될 뿐 아니라 응답 시간도 느리고 영어의 2개의 토큰과 한국어의 2개의 토큰이 있을 때 한국어의 경우 훨씬 더 적은 정보가 있는 context로 취급된다. 때문에 autoregressive decoding시 성능이 떨어질 수 밖에 없다.
자주 사용되지만 긴 단어를 추가 토큰으로 도입하는 토크나이저 어휘 확장은 비영어 사용자에게는 필수 불가결하지만, 새로운 임베딩에는 수조 개의 훈련 토큰이 필요하기 때문에 어휘 확장은 굉장히 어려운 작업이다. 이를 위해 해당 논문에서는 새로 추가된 토큰의 임베딩을 더 잘 훈련할 수 있는 효율적이고 효과적인 어휘 확장, EEVE라는 새로운 접근 방식을 제안한다. adaption의 용이성을 위해 subword-based embedding 초기화를 활용하고 학습할 파라미터의 순서와 양을 정교하게 조정하는 parameter freezing을 통해 7개의 훈련 단계를 디자인했다. 초기에는 input embedding에 중점을 두고 최종 단계에서는 전체 파라미터를 포함하도록 점진적인 확장을 통해 기존 모델의 고급 기능을 영어에서 한국어로 꼼꼼하게 이전할 수 있다.
✲ Efficient and Effective Vocabulary Expansion
영어 중심 LLM을 비영어 언어로 확장하기 위해 새로운 vocabulary expansion 기법을 소개한다. 이 방법은 subword-based embedding 초기화와 파라미터 freezing을 결합하여 초기 훈련 범위를 넘어 언어의 새로운 토큰을 효과적으로 통합하고 적응함으로써 다양한 언어 context에 대한 적용성을 향상시킬 수 있다.
위 그림과 같이 구조화된 7단계의 학습 프로세스가 있고, 새 토큰을 모델 어휘에 효과적으로 통합할 수 있도록 설계하였다. 사전 학습 중 목표는 causal language modeling이다. 핵심 가정은 영어 텍스트로 광범위하게 학습된 기초 모델이 상당한 수준의 이해 및 추론 능력을 보유하고 있다는 것이다. 이 역량을 영어에서 한국어와 같은 다른 언어로 이전하는 것이 독립형 한국어 사전 학습을 통해 개발하는 것 보다 더 효율적일 수 있다.
1. Preliminary 1 - Token Training
저자들은 한국어 코퍼스에서 새로운 토크나이저를 학습했다. 목표는 기본 모델의 성능을 극대화 하는 것이기 때문에 기본 모델의 어휘를 유지하되 최소 6000회 이상 등장한 코퍼스에서 8960개의 토큰을 추가하고 빈도가 가장 높은 토큰을 우선적으로 추가했다. 궁극적으로 토크나이저의 어휘는 40,960개의 토큰으로 확장된다. (EEVE-Korea-10.8B-v1.0 모델에서) 토큰 빈도 분석을 기반으로 여러 차례 토크나이저 학습과 수동 토큰 curation이 적용되어 모델에 대한 포괄적이고 관련성 있는 어휘가 보장된다. Introduction에 있는 표 처럼 같은 문장에 토큰 수 소비량이 3배정도로 절감되기 때문에 학습 과정에서 계산 비용을 절감하는 데 도움이 된다.
2. Preliminary 2 - Subword-based Embedding Initalization
integration process는 실제 학습 전에 시작되서 embed_tokens 및 lm_head라는 새로운 입력 및 출력 임베딩을 모델의 파라미터에 도입하게 된다. 이 preliminary step은 뒤따르는 정교한 학습 과정을 준비하는 것이다. 새로 추가된 토큰의 입력 임베딩을 위해 새로운 토큰을 구성하는 subword token의 평균 임베딩을 사용하는 접근 방식을 채택했다. 이 방법은 모델의 기존 하위 단어 임베딩의 의미론적 풍부함을 활용해 새 토큰 표현을 위한 시작점을 제공한다.
반대로 새로 추가된 토큰에 대한 출력 임베딩은 새 토큰을 구성하는 첫 번째 subword token의 임베딩으로 초기화 된다. 이 전략은 새로운 토큰의 출력 표현을 구성 subword의 의미론적 특성과 밀접하게 정렬해 모델의 predictive framework에 원활하게 통합 할 수 있도록 한다.
3. Multi-stage Training
preliminary 과정 후 효율적인 vocabulary expansion을 위한 7 단계를 소개한다.
‣ Stage 1 (new input embeddings):
먼저 초기 단계 전략은 narrow yet critical이다. 새로 추가된 input embedding을 학습하기 위해 기존 다른 파라미터들은 frezzing한다. 이 단계는 모델이 처음부터 추가된 토큰을 인식하고 처리할 수 있도록 하는 기본 단계이다. 사전 초기화된 임베딩 모델이 기존 프레임워크에서 새로운 토큰을 더 잘 활용하도록 하는 출발점 역할을 한다. 여기서 세운 가설은 이전 토크나이저와 새 토크나이저를 동시에 활용해 causal language modeling의 입출력 토큰 시퀀스를 차별화할 수 있다면, 모델은 기존 토큰 임베딩 공간에 확립된 지식을 활용할 수 있기 때문에 모델이 새로운 어휘 임베딩을 더 효율적이고 효과적으로 학습할 수 있다는 것이다.
그러나 입출력 시퀀스에 대해 별도의 토크나이저를 사용하면 일치하지 않는 입/출력 시퀀스로 인해 teaching forcing 이 어려운 문제 등의 구현 문제가 발생한다. preliminary2의 subword-embedding은 출력 시퀀스에 대해 이전 토크나이저를 사용하기 위한 proxy 역할을 하므로 모델은 whole word token(new)이 주어지면 subword token(old)을 생성하는 작업을 수행한다. 즉 모델은 Figure 2 처럼 입출력 토큰 시퀀스를 수정하지 않고 입력 임베딩만 최적화해 새 토큰을 생성하기 위한 표현과 첫 subword 토큰을 생성하기 위한 표현을 정렬하는 방법을 학습할 수 있다. 이 단계에서는 아직 모델이 같은 hidden state를 공유하는 토큰들을 구별할 수 없다.
‣ Stage 2 (new output embedding):
우리의 목표는 output embedding (lm_head)를 조정함으로써 다양한 context의 새로운 토큰을 생성하는 능력을 강화하는 것이다. 입출력 임베딩을 동시에 학습하면 모델 수렴이 불안정해지기 때문에 다른 파라미터는 freezing한다. 또한 이는 다른 레이어의 backpropagation이 필요 없기 때문에 학습 시간도 줄일 수 있다.
‣ Stage 3 (new input and ouput embeddings):
input embeddings (embed_tokens)은 output embedding에서 초기화된 상태로 남아있는 상태에서 새로 추가된 토큰의 입출력 임베딩을 동시에 업데이트 한다. 입출력 임베딩을 aligning 함으로써 모델은 이해와 예측 모두에서 새로운 토큰을 사용하는 방법을 학습하게 된다.
‣ Stage 4 (all output embeddings):
이 단계까지는 기존 모델의 모든 파라미터가 freezing되었기 때문에 이전 토크나이저와 새 토크나이저 간의 logit이 다르게 스케일링 되었거나 전체 어휘로 사용하기에는 덜 최적화 되어있다고 가정한다. 이를 위해 이전 파라미터 특히 이전 토큰의 출력 임베딩의 업데이트를 허용하기 시작하여 모델이 새 토큰을 더 잘 생성할 수 있도록 만든다. 그리고 이 단계가 모델 성능에서 중요한 부분임을 실험을 통해 보였다.
‣ Stage 5 (new input and all output embeddings):
이 단계에서 학습은 새로 추가된 토큰에 대한 입력 임베딩을 계속 개선하는 동시에 모델 어휘 전반에 걸쳐 모든 출력 임베딩을 파인튜닝 하는 것으로 확장된다. 목표는 모델이 확장된 어휘 내에서 모든 토큰을 정확하게 예측할 수 있도록 한다. 이를 통해 입력으로 잘 표현되고 출력으로 정확하게 생성할 수 있도록 보장하여 모델의 언어적 이해에 대한 context를 넓혀 새로운 토큰을 통합할 수 있다. 이러한 dual focus는 모델 전체의 성능을 조화시키는데 도움이 되고 확장된 어휘가 언어 생성 프로세스에 원활하게 통합되도록 한다.
‣ Stage 6 (all layers):
최종 단계와 달리 6단계에서는 새로 도입된 파라미터와 기존 파라미터를 모두 포함해 모든 파라미터가 최적화된다. 여기서는 모델의 전체 파라미터 내에서 embedding layer에 대한 개선 사항을 통합한다. 그리고 QLoRA와 같은 기술이 효율성 뿐 아니라 모델의 강력한 기능을 최대한 보존하는 동시에 확장된 어휘를 효과적으로 통합하기 위해 활용되었다.
‣ Stage 7 (internal layers):
마지막 단계는 입출력 임베딩 레이어를 제외한 모든 레이어를 포함하는 모델의 내부 레이어를 업데이트하는데 중점을 두는 "cool down"역할을 한다. 목표는 어휘 확장 중에 이루어진 개선 사항이 모델의 핵심 처리 기능 내에 깊이 포함되도록 하는 것이다. 여기서는 모델이 강력한 성능을 발휘할 수 있도록 하여 새로운 것을 인식하고 생성할 뿐 아니라 다양한 언어적 context를 사용해 미묘한 뉘앙스까지 생성할 수 있도록 한다.
✲ Implementation Details
‣ Datasets
한국어 코퍼스 퀄리티를 위해 perplexity-based filtering과 n-gram repetition-based filtering, stopword-based filtering을 적용하였고 새로운 토큰이 많이 포함되지 않은 document 또한 필터링하였다고 한다.
그리고 Table 2에서 볼 수 있듯이 전체 코퍼스에서 SOLAR tokenizer에는 3.1B 토큰이 필요했지만 논문에서 제안하는 new tokenizer는 이의 절반인 1.6B가 필요했다. 이러한 차이는 각각 5.6B와 1.6B 토큰이 필요한 Phi-2 및 EEVE의 경우 더욱 두드러진다. transformer의 complexity가 토큰 길이에 quadratic하게 증가하므로 절반의 토큰이 필요하다는 것은, 동일한 GPU에서 4배 이상 긴 시퀀스를 처리할 수 있음을 의미한다. 또한, 동일 데이터에서 4배 효율적으로 학습할 수 있다.
EEVE-Korean 파인튜닝을 위해 DPO based Llama factory 구현체를 사용하였다. 한국어 instruction을 더욱 강화하기 위해 Orca, Ultrafeedback과 같은 데이터셋을 번역하여 instruction으로 사용하였다. 번역하는 과정에서 프로그래밍 코드 형식의 무결성을 보장하고, source 언어와 target 언어가 모두 한국어로 번역되는 오류를 수정하는 것이 정밀한 서비스 품질과 효율성을 유지하는데 매우 중요했다. 이렇게 학습된 모델은 EEVE-Korea-Instruct이다.
‣ Training
SOLAR-10.7B와 Phi-2가 비슷한 사이즈의 LLM 중 가장 성능이 좋기 때문에 파운데이션 구조로 채택하였다. 그리고 model variants 학습을 위해 파인튜닝시 Atolotl, LLaMA-Factory 2가지 프레임워크를 둘다 사용했다고 한다. seq length는 4096, bf16 precision, 배치 등 자세한 implementation detail은 해당 섹션에 있다.
‣ Evaluations & Results
Korean, English LLM benchmarks 에서 모두 평가했는데 한국어 task에서 성능이 오르고 영어 task와 비슷한 성능을 보여주는 것이 목표이다.
한국어에서는 KoBEST benchmark를 사용했고 여기서는 language understanding, reasoning 평가지표 BooQ, COPA, WiC, HellaSwag, SentiNeg 등이 한국어로 번역되어 제공된다. evaluation framework는 lm-evaluation-harness를 사용했다.
EEVE의 위 결과는 영어 성능 저하가 없는 최초 모델이라고 한다. OPEN-SOLAR-KO-10.7B 모델의 경우 EEVE-Korean-Instruct-10.8B-v1.0과 같은 base model을 사용한 모델이다. (2번째 칸의 3, 5라인) SOLAR의 경우 성능이 살짝 더 좋지만 한국어 튜닝을 하면서 영어 성능이 떨어지는 것을 볼 수 있다. 그리고 영어 데이터셋의 preference learning으로 인해 한국어 task의 성능이 저하되기도 하는데, 이는 LLM 학습을 위한 한국어 관련 training의 중요성을 보여준다. 반면 한국어 instruction dataset에 대한 model preference tuning이 영어 task의 모델 성능은 저하시키지 않고 오히려 향상시키는 것을 관찰할 수 있었다. 이는 이미 한국어와 영어 토큰 사이에 임베딩 공간이 잘 정렬되어 있어 특정 언어에 대한 파인튜닝이 모델 파라미터에 큰 변화를 일으키지 않기 때문이라고 가정한다.
'자연어 NLP' 카테고리의 다른 글
당신이 좋아할만한 콘텐츠
-
[RLHF] BOND (2) : Aligning LLMs with Best-of-N Distillation 2024.08.18
-
[RLHF] BOND (1) : Aligning LLMs with Best-of-N Distillation 2024.08.12
-
[NLP] RAG: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 2024.07.28
-
[RLHF] ORPO: Monolithic Preference Optimization without Reference Model 2024.05.26
소중한 공감 감사합니다