자연어처리

[NLP]한국어 거대모델(LLM)들 소개 (23년 5월)

4n3mone 2023. 5. 4. 17:57

ChatGPT의 등장 이후 자연어처리, 그 중에서도 언어 모델과 관련된 연구의 트렌드는 GPT류의 큰 파라미터를 가진 Causal Language Model 혹은 Auto-agressive model에 집중되어 왔습니다.

 

OpenAI가 ChatGPT의 정확한 구조와 모델 가중치를 공개하지 않은 덕에 ClosedAI?, 다양한 연구자 또는 기업들은 ChatGPT와 유사하지만 파라미터가 공개되어 누구나 파인튜닝하고 연구나 영리적 목적으로 사용할 수 있는 Multi-Task Conversational AI를 만들어냈습니다. 

 

본 포스트에서는 포스트를 작성하고 있는 현 시점에서 인터넷에 공개되어있는 한국어 데이터로 사전학습 혹은 파인튜닝된 GPT-like LLM들을 소개시켜드리겠습니다. 

 

1. Polyglot-ko

깃허브 링크

허깅페이스 링크(12.8B)   

 

Polyglot은 비영리 AI 연구단체인 EleutherAI 에서 개발한 GPT-NeoX 기반의 multilingual pretrained 모델입니다. 

 

한국어 데이터로 사전학습된 Polyglot-ko모델은 TUNiB에서 수집한 1.2TB의 한국어 데이터를 다양한 방식의 전처리를 거쳐 가공한 뒤 사전학습시켰습니다. 자세한 학습과정에 대해서는 EleutherAI에서 Polyglot 개발 팀 리드를 맡으신 고현웅님의 발표자료에서 확인해보실 수 있습니다. 

 

모델 평가 데이터셋으로는 한국어로 구성된 5개의 벤치마크 데이터셋이 들어있는 skt/kobest를 사용했습니다.

 

Polyglot은 뒤에서 소개드릴 Koalpaca모델의 백본 모델로 쓰이기도 했습니다.

 

 

 

2. KoAlpaca

깃허브 링크

허깅페이스 링크(Polyglot-5.8B기반)  

 

KoAlpaca는 한국어 데이터를 Stanford Alpaca와 같은 방식으로 학습한 fine-tuned 모델입니다.

 

KoAlpaca에 대해 이해하기 위해서는 먼저 LLaMAAlpaca에 대해 이해하는 것이 필요합니다.

 

간락하게는 다음과 같습니다. 

 

LLaMA

- GPT-3 구조와 유사한 pretrained 모델

- 7B, 13B, 33B, 65B 사이즈를 가지고 있으며 파라미터가 커질수록 성능도 좋아짐

- 웹 크롤링 데이터를 대량으로 수집하고 자체 모델로 정제하여 사용

- 토크나이저 : sentencepiece, 활성화함수 : SwiGLU, 임베딩 : Rotary Position Embedding 사용

 

Alpaca

- LLaMA를 Instruction-following 데이터로 학습시킨 fine-tuned 모델

- 사람이 직접 만든 175개의 seed 데이터셋을 기반으로 데이터를 약 52,000개까지 추가 생산을 하고, 이 데이터를 학습셋으로 활용

 

두 모델에 관하여 한국어로 자세히 설명해둔 포스트가 있어 여기에 첨부하니, 참고하시길 바랍니다.

Meta AI에서 개발한 ChatGPT의 대항마, LLaMA

ChatGPT, LLaMA 그리고 이젠 Alpaca?  

 

KoAlpaca는 위에서 소개한 LLaMA나 Polyglot에 한국어 instruction-following data를 학습시킨 모델입니다.

 

데이터셋의 경우 Stanford Alpaca를 학습시킨 데이터를 DeepL 번역기를 사용하여 번역하여 사용했을 때 대답을 짧게 하는 경향,

그리고 맥락을 이해하지 못하는 경향이 발생하여(v1) 

 

네이버 지식인 베스트 전체 질문을 수집한 뒤 그것을 시드 데이터로 활용하여 ChatGPT에게 데이터를 생성하도록 하였습니다.(v1.1)

 

학습한 모델의 성능을 웹 데모, 카카오톡, 텔레그렘 등 다양한 방식으로 확인할 수 있으며,

 

대표적인 Parameter efficient tuning 방법중 하나인 LoRA를 적용해 파인튜닝한 모델 가중치와 코드를 공개하고 있기 때문에, 고성능 컴퓨팅 리소스에 접근하기 어려운 여러 개인 연구자에게 굉장히 유용한 오픈소스 모델이기도 합니다. 

 

3. KoVicuna

깃허브 링크

허깅페이스 링크(7B)  

 

KoVicuna는 Vicuna 모델을 한국어 데이터로 학습시킨 fine-tuned 모델입니다.

 

Vicuna 모델은 다음과 같은 Fine-tuned 모델입니다.

- LLaMA를 sharegpt 데이터셋(70k개)로 파인튜닝한 모델

- Alpaca와 유사하지만 다음과 같은 개선점을 가지고 있음

  • context length를 늘리고(512->2048), 이에 따른 메모리 요구량을 gradient checkpointing와 flashattention을 통해 최적화시킴
  • training loss를 multi-turn 대화를 고려하여 조정하고 fine-tune시 챗봇의 출력 결과만을 고려해 loss를 계산함
  • SkyPilot의 spot instance 도입을 통해 학습 비용을 절감함(spot instance란?)

 

KoVicuna는 Vicuna를 학습시킨 shareGPT 데이터셋을 deepL로 번역한 뒤 학습시킨 모델입니다.

 


하루가 빠르게 변하고 있는 자연어처리 연구 동향을 본 포스트를 통해 따라잡을 수 있었으면 좋겠습니다. 새로운 모델이 등장하면 업데이트하겠습니다!

 

개인적으로는 databricks의 dolly 모델의 한국어 버전도 어서 공개가 되었으면 하는 바람을 가지고 있습니다.