NLP/Projects
[LLM fine-tuning] PolyGlot-ko
iamzieun
2023. 7. 2. 17:43
포스팅 개요
KoAlpaca에서 Polyglot-ko 12.8B 모델을 KoAlpaca v1.1a로 fine-tuning하는 예제를 확인해볼 수 있습니다. 앞으로 이 task를 진행하는 과정에 사용된 개념들을 하나씩 파헤쳐볼 예정입니다. 그 첫 단계로 Polyglot-ko에 대해 알아보겠습니다. 아래는 Polyglot-ko의 technical report를 메인으로, 관련 내용을 정리한 것입니다.
Introduction to Polyglot-ko
Polyglot
- mBERT, BLOOM, XGLM 등 다양한 다국어 언어 모델이 공개되었음에도 불구하고, 사람들은 단일 언어 모델을 만들어 사용하고 있습니다.
- 이는 공개되어 있는 다국어 모델의 학습 데이터가 영어에 편중되어 있고, 이로 인해 비영어권 언어 태스크에 있어서는 만족스럽지 못한 성능을 보이기 때문으로 생각해볼 수 있습니다.
- 이를 해결하기 위해 영어가 아닌 언어들에서 향상된 성능을 보이도록 다국어 언어 모델을 만드는 프로젝트를 Polyglot 이라고 하며, 그 첫 번째 단계로 TUNiB에서 만든 1.2TB의 한국어 데이터로 모델링을 진행한 것이 Polyglot-ko 입니다.
- Polyglot에서는 단일 모델에 많은 언어를 한 번에 학습하는 대신, 비슷한 어족의 언어를 모아 모델을 학습합니다. 또한 지나치게 데이터 소스가 적은 언어까지 포함하기보다는, 거대 언어 모델 확보에 적절한 사이즈의 corpus의 확보가 가능한 언어에 집중합니다.
Polyglot-ko
- Polyglot은 다국어 언어 모델을 만드는 프로젝트지만, Polyglot-ko는 ‘한국어’ 데이터로 모델링을 진행한 한국어 특화 언어 모델입니다.
- Polyglot 프로젝트에 참여하는 연구진들이 주로 한국인으로 구성되어 있고, 마침 TUNiB에서 제공하는 충분한 데이터도 존재하였기에, 프로젝트의 첫 단계로 다국어 모델이 아닌 한국어 특화 언어 모델인 Polyglot-ko를 만든 것입니다.
Datasets
- TUNiB에서 제공한 1.2TB의 한국어 데이터를 전처리하여, 최종적으로 863GB의 데이터를 학습에 사용하였습니다.
- 데이터는 다음과 같은 출처로 구성되어 있습니다.
- 빈 텍스트 / 과하게 짧은 텍스트, 반복되는 단어나 글자, 중복 데이터, PII (Personally Identifiable Information) 등 학습과 추론에 방해가 되는 데이터를 거르기 위하여 데이터를 카테고리화 한 결과, 아래와 같은 네 카테고리로 데이터를 분류할 수 있었습니다.
- Data available for training: 충분한 정보와 적당한 길이를 가져 학습에 사용할 수 있는 데이터로, 주로 뉴스나 위키피디아 데이터로 구성되어 있습니다.
- Data requiring contextual information for training: 길이가 너무 짧거나 맥락 정보가 필요한 데이터로, 블로그나 뉴스 데이터로 구성되어 있습니다.
- Data containing hate speech: 특정 커뮤니티의 데이터에 혐오 표현이 포함되어 있습니다.
- NLP task-specific data: text classification이나 entity recognition 등 NLP task에 최적화된 데이터로, 학습 시에는 사용할 수 있지만 추론 시에는 처리가 필요한 데이터입니다.
- 위의 분류 과정을 거치며 확인된 데이터의 품질 문제는 아래와 같으며, 이러한 문제를 해결하는 전처리 과정을 거쳤습니다.
- Empty text
- Unnecessary spaces: 불필요한 공백을 포함하는 데이터
- De-identification: 데이터 내부의 PII
- Uncleaned HTML tags
- Deduplication: EM(Exact Match)을 활용한 중복 제거
- Broken code: HTML이나 Markdown의 일부분만 남아있는 데이터
- Short text: 극단적으로 짧은 데이터
- Repeated characters: 반복되는 글자
Models
- GPT-NeoX의 codebase를 사용하였습니다.
- 다음과 같은 설정으로 각 모델을 학습하였습니다.1.3B 3.8B 5.8B 12.8B
- 1.3B, 3.8B 모델은 1 epoch (100,000 steps) 근처에서 broken generation(같은 글자나 단어가 반복되는 등)이 발생하여, early stopping과 optimal model selection을 사용하였습니다.
- 5.8B 모델은 1.3B, 3.8B 모델보다 적은 데이터로 학습했지만 320,000 steps을 학습하여 더 나은 성능을 보였습니다.
- 12.8B 모델은 301,000 steps를 학습했습니다.
Experiments
- 모델에 대한 evaluation은 KOBEST 데이터셋을 활용했습니다.
- KOBERT 데이터셋은 COPA, HellaSwag, SentiNeg, BoolQ, WiC의 downstream task를 포함합니다.
COPA
- 전제(premise)가가 주어졌을 때, 두 가지 선택지(alternative_1, alternative_2)에서 전제의 원인(cause) 또는 영향(effect)를 선택하는 인과 추론 task
{'premise': '물을 오래 끓였다.',
'question': '결과',
'alternative_1': '물의 양이 늘어났다.',
'alternative_2': '물의 양이 줄어들었다.',
'label': 1}
HellaSwag
- 4개의 선택지 중 주어진 context 다음에 이어질 문장을 선택하는 task
{'context': '모자를 쓴 투수가 타자에게 온 힘을 다해 공을 던진다. 공이 타자에게 빠른 속도로 다가온다. 타자가 공을 배트로 친다. 배트에서 깡 소리가 난다. 공이 하늘 위로 날아간다.',
'ending_1': '외야수가 떨어지는 공을 글러브로 잡는다.',
'ending_2': '외야수가 공이 떨어질 위치에 자리를 잡는다.',
'ending_3': '심판이 아웃을 외친다.',
'ending_4': '외야수가 공을 따라 뛰기 시작한다.',
'label': 3}
BoolQ
- paragraph를 기반으로 주어진 question이 참인지 거짓인지 판단하는 task
{'paragraph': '두아 리파(Dua Lipa, 1995년 8월 22일 ~ )는 잉글랜드의 싱어송라이터, 모델이다. BBC 사운드 오브 2016 명단에 노미닛되었다. 싱글 "Be the One"가 영국 싱글 차트 9위까지 오르는 등 성과를 보여주었다.',
'question': '두아 리파는 영국인인가?',
'label': 1}
SentiNeg
- 주어진 sentence가 긍정인지 부정인지 판단하는 task
{'sentence': '택배사 정말 마음에 듬',
'label': 1}
WiC
- 주어진 두 문장(context_1, context_2)에서 target word가 같은 의미로 쓰였는지 여부를 판단하는 task
{'word': '양분',
'context_1': '토양에 [양분]이 풍부하여 나무가 잘 자란다. ',
'context_2': '태아는 모체로부터 [양분]과 산소를 공급받게 된다.',
'label': 1}
- WiC에서는 모든 모델들이 일관되지 않은 성능을 보였습니다.
Limitations and Disclaimers
- polyglot-ko는 확률적으로 가장 가능성이 높은 답변을 생성하기 때문에, 언제나 정확한 답변을 제공한다고 확신할 수는 없습니다.
- polyglot-ko는 사회적으로 용인되지 않는 내용을 생성할 수 있습니다.
- 상대적으로 낮은 TFLOPS를 가진 하드웨어 설정에서 훈련되었기에, 훈련 시간이 더 길어지고 더 많은 자원을 사용하게 되었습니다.
- 데이터 전처리 시 newline이 부적절하게 제거되어 문서 구조의 손실이 발생하였고, 이는 모델의 훈련 과정에서 일부 정보의 손실을 야기했을 것으로 보입니다.
Furthermore
- polyglot-ko는 앞으로 40B parameter까지 확장하는 것을 목표로 합니다.
- polyglot-ko 개발을 통해 얻은 경험과 지식을 활용하여, 두 종류의 다국어 모델 개발에 착수하였습니다.
- East-Asian model: 한국어, 중국어, 일본어, 인도네시아어, 말레이시아어, 베트남어, 태국어, 영어
- Romance model: 스페인어, 포르투갈어, 프랑스어, 루마니아어, 이탈리아어
- 이러한 다국어 모델을 개발함으로써 전 세계적으로 언어 모델 기술의 접근성을 민주화하고 촉진하는 것을 목표로 합니다.