본문 바로가기
Natural Language Processing/Large Language Model (LLM)

[강의 후기] 한국어 LLM 민주화의 시작 KoAlpaca! - 이준범

by 지구킹 2023. 6. 1.
728x90

KoAlpaca를 제작한 이준범님께서 AI factory를 통해 강연을 "한국어 LLM 민주화의 시작 KoAlpaca!"라는 주제로 진행하셨다. 

 

목차는 아래와 같이 구성되어 진행되었다.

  • LLAMA와 Polyglot-ko 그리고 Alpaca 소개 
  • KoAlpaca 데이터셋 제작 및 모델 학습 
  • KoAlpaca의 현재와 미래

 

1. LLAMA와 Polyglot-ko 그리고 Alpaca소개

LLM 이전에는 LM이 있었다. 먼저 이 둘의 차이는 LM의 경우 문장이 주어진 경우 다음에 어떤 단어가 올지 예측하는 task이고, LLM의 경우 Instruction (대 용량의 질문과 답변 set)이 주어질 경우, 입력한 문장에 대해 답변을 예측하는 task라고 볼 수 있다.

 

그렇다면 LLM이 인기가 많아진 이유는 무엇일까? 라고 했을때 강연자는 다음과 같이 답변했다.

  1. 다양한 text 학습: 사람보다 더 많은 지식을 알고 있음
  2. 언어 이해 능력: 긴 맥락의 문맥을 이해하고 있음
  3. ICL: 학습없는 학습으로 적은양의 예제만으로도 높은 few-shot성능을 낼 수 있음
  4. 쉬운 API 서비스들: 예를들어, ChatGPT

하지만, 실제 기업이나 기관에서 LLM을 활용하려면 현실적인 벽과 부딛혀야 한다.

  1. LLM을 학습하거나 응용할 AI 개발자의 부재
  2. 데이터의 부재
  3. 예산의 부재

 

그렇다면, 이대로 LLM을 활용할 수 없는걸까?
답은 No!

 

고 성능을 갖고 바로 기업에서 가지고 있는 서비스에 적용시킬 수 있는 ChatGPT, GPT-4와 같은 API를 통해 활용할 수 있는 방안이 있다. 하지만 아무래도 API회사가 갑자기 서비스를 중단하거나, 서버관리가 잘 안될 경우, 요청 수의 제한이 있고 더 많은 요청을 보내려고 할 경우 비용도 무시하지 못하는 측면이 있다.

 

혹은, 원하는 형태로 출력할 수 있고, 서빙과 학습 비용 측면에서 비교적 저렴한 LM (BERT, GPT-2)를 활용해 서비스를 만드는 방법도 있다. 하지만 (LLM 학습용 데이터 구축보다 어려운) 원하는 task별 fine-tuning용 데이터를 구축해야 한다. 또한 개발 인력과 LLM과 비교했을 때 성능 이슈가 발생할 수 있다.

 

또 다른 대안으로는 오픈소스 LLM (LLAMA, Polyglot-ko 등 <100B이내)을 활용하는 방법이 있다. 비록 GPT-4와 비교했을 때 성능이 좋진 않겠지만 도메인 지식을 추가적으로 넣는 등 모델의 성능을 개선시킬 수 있는 여지가 있다. 하지만 이 방법 역시 100B 이상 LLM에 비해선 성능이 떨어진다. 또한, AI연구 개발인력이 필요하고 GPU 서빙에 대한 고려와 도메인 관련 text가 필요하다는 점이 있다.

 

 

비용이 한정적이라면, 어떤 방법을 쓰는것이 좋을까?

 

강연자는 3가지 단계로 구분지어 방법을 제안하고 있다.

  1. 가장 저렴한 비용> LLM API 응용 개발: API로 서비스를 개발하는 방법이 있다.
  2. 중간 정도의 비용> LLM Finetune: KoAlpaca, Vlcuna 등을 활용해 fune-tuning하는 방법이 있다.
  3. 제일 비싼 비용> Core LLM 개발: 아예 LLM 모델을 가져와 Pre-train을 시키는 방법이 있다.

 

비용적인 측면 뿐만 아니라, 각자가 처한 현실에 따라 어떻게 접근할지도 매우 중요하다.

  • 큰 IT 기업 혹은 대기업일 경우 자체 데이터와 GPU를 활용해 Core LLM을 활용하면 된다.
  • 고객 privacy, 보안, 법률적인 문제들을 신경써야할 경우, 작은 데이터로 Alpaca를 도메인 특성에 맞게 finetune해서 활용하면 된다.
  • 규제가 적은 도메인인 경우 ChatGPT/GPT-4를 활용하면 된다.

 

 

Alpaca란?

OpenAI InstructGPT (GPT3.5)로 Instruct Set 52k 데이터셋을 활용해 LLAMA 7B 모델을 Full로 finetune한 모델이다.

따라서 Instruct에 맞게 행동하는 LM이라고 할 수 있다.

 

 

2. KoAplaca

한국어 Instruction Set을 제작하여 한국어 LM인 Polyglot-ko 모델들을 기반으로 학습한 모델이다. 

 

데이터셋 제작 과정

  • v1.0: Alpaca 데이터셋 52k개의 Instruct와 Input을 DeepL로 번역하눟, Output을 ChatGPT API로 새로 생성하고, Batch Decoding을 활용했다고 한다.
  • v1.1a: 네이버 지식인 데이터를 기반으로 질문-답변 데이터쌍을 생성하였지만 노이즈 문제로 인해 ChatGPT를 활용해 다시 데이터 셋을 만들어 학습데이터로 활용했다고 한다.

 

  • v1.1b: 맥락을 넣어준 문장을 생성하여 학습 시켰다.

이로써, 언어 모델의 크기가 작어도 좋은 finetune 데이터로 새 능력을 넣어줄 수 있게 되었다. 어떤 형식으로 들어왔을 때, 어떤 답변을 할지에 대한 alignment 데이터 셋이 매우 중요하기 때문이다.

 

게다가 모든 상황에 대해 프롬포트만 있으면, 모든 task의 만능 도구가 될 수 있다. 왜냐하면 모델이 학습하지 않은 범위에서 새롭게 발견되는 기능 (Emergent)이 발생되기 때문이다.

 

※ 참고로, Emergent는 100B 이상 크기의 LLM에서 나타난다고 한다. (꼭 100B가 아니어도 60B 수준에서도 발견되기도 한다.) 게다가 Few-shot, Zero-shot에서 뛰어난 능력을 발휘한다.

 

모델 학습

그렇다면, 모든 상황에 대한 프롬프트 데이터를 구축해야 할까?
답은 No, 가성비를 따지는 접근법을 활용해야 한다.

 

물론 모델의 크기가 커지면 성능이 좋아지겠지만, 어느 크기 수준의 LM을 어느 수준의 데이터얼마를 들여서 학습할지도 굉장히 중요한 요소이다. 따라서 아래와 같이 비용적인 측면을 고려해 방법을 결정해야 한다.

 

  • Pretrain을 하기 위해선 최소 1TB 데이터 셋이 필요
    • Polyglot-Ko 5.8B의 경우 학습 비용 = A100 * 256대 * 12일 = 3.8억원
    • KoLLAMA 7B의 경우 학습 비용 = TPUv4.64 * 90 = 2.89억원
    • KoLLAMA 13B의 경우 학습 비용 = TPUv4.128 * 90 = 5.8억원
  • [Fine-tuning] Domain Dataset에 적용하기 위해선 최소 10GB 데이터 셋이 필요
    •   Polyglot-Ko 5.8B = A100 80G * 12시간 = 5만원
    •   Polyglot-Ko 12.8B = A100 80G * 4대 * 12시간 = 20만원
  • [Fine-tuning] 특정 Task에 적용하기 위해선 최소 5k 데이터 셋이 필요

 

학습적인 측면 뿐만 아니라, 실제 모델을 개발해서 배포하는데 있어서도 비용을 고려해야 한다.

추가적으로 서빙을 하기 위해 BentoML, NVIDIA Triton, Text-generation-inference와 같은 툴도 활용할 수 있다.

 

3. KoAplaca의 현재와 미래

새로나온 오픈소스 LM들의 경우 (OpenLLAMA, MPT, StarCoder 등) 여전히 한국어 능력은 없다. 따라서 질 좋은 한국어 데이터셋과 컴퓨팅 파워를 통해 finetune모델을 만들 수 있다.

 

하지만, 더 작고 더 고품질의 데이터를 활용한다면 원하는 수준과 성향의 Output을 도출할 수 있다. (LIMA라는 논문에서 언급되었다.)

 

그리고 4000토큰을 넘어 긴 Context를 활용해 이전에 질문했던 것을 기억해 답변을 도출하고 싶다면 RWKV를 활용할수도 있다. 

 

이때, 학습을 시키기 위해선 LoRA의 방식에 기반한 QLoRA를 활용해서 튜닝하면 낮은 사양의 GPU환경에서도 모델을 학습시킬 수 있다. 뿐만 아니라, 3/4bit-PEQA 방식을 활용해 QLoRA보다 더 빠르게 학습시킬 수 있다.

 


이번 강연을 통해 KoAlpaca가 어떻게 제작되었는지 데이터 처리 과정부터, 각자 주어진 환경에서 어떻게 finetuning혹은 pretrain된 모델을 만들지 가이드 라인을 들을 수 있게되어서 굉장히 의미있었다.

 

가장 중요한 것은 역시 데이터셋이라는 것을 깨닫게 되었다. 게다가 특정 task에 맞는 양질의 데이터 셋만 있다면 성능이 좋은 모델을 만들 수 있다는 것에 세상이 정말 빠르게 발전하고 있구나를 다시한번 느끼게 되었다.

 

앞으로 LLM 프로젝트를 진행할 것 같은데, 미리 대비해서 LLM 모델 부터 LLM에 적용시킬 수 있는 LoRA, QLoRA 또 이번에 새롭게 나온 PEQA방식까지 빠르게 follow-up 해야겠다.

 

마지막으로, 현업에 있는 사람이라면 이 강연을 정말 추천한다.

 

출처

https://aifactory.space/learning/detail/2415

728x90

댓글