본문 바로가기
Natural Language Processing/NLG 이모저모

LLM 을 Pretrain 학습하려면,,

by beeny-ds 2024. 1. 25.
많은 기업이 ChatGPT 와 같은 LLM 을 만들어 서비스화 하고자 한다. 
이를 위해 LLM 을 학습하여 서비스화하는 프로젝트를 수행할 인력을 불철주야 찾고 있다. (고 들었다..)
이번 포스팅은 LLM 을 학습하는 방법 중 가장 원초적인 방법인 Pretrain 이 왜 어려운지, 왜 많은 기업에서 LLM 을 학습할 인력을 구인하는지 그 이유에 대해 알아보겠다.

※ LLM 학습에 관심이 깊은 사람에게 도움이 되는 글임을 유의하길 바란다.

 
목차
1. Pretrain for LLM 방법s
    a. Pretrain LLM 처음부터 만들기
    b. 배포된 Pretrain LLM 을 base 로 추가 Pretrain 하기
2. 기업이 말하는 '우리'가 만든 LLM 이란
3. 결론 (LLM 전문가를 구인하는 이유)
 


 

1. Pretrain for LLM 방법s

LLAMA, Polyglot, solar 와 같은 모델을 흔히 LLM 이라 말한다.
LLM 모델의 개발 시작은 당연히 우리나라는 아니다.
하지만 개발하는 기술이 공유됨에 따라 한국어 특화 LLM 들이 하나 둘 나오기 시작했다.
 
그렇다면 한국어 특화 LLM  이 어떻게 개발되었는지 알아보기 전에 Pretrain 방법은 무엇이 있는지를 먼저 알아보자.

a. 처음(=scratch)부터 Pretrain 모델 개발
b. 기존 Pretrain 모델에 추가로 Pretrain 학습하기 

 
이제 각 학습 방법의 특징과 비용에 대해 알아보자.
 

a. Pretrain LLM 처음부터 만들기

처음부터 Pretrain 모델을 개발하는 걸 이쪽 업계에서는 이렇게 표현한다.

Pretrain from scratch with only model structure

 
scratch 부터 Pretrain 을 하는데 오직 모델 구조만을 사용한다는 뜻이다.
사실 Tokenizer 부터 만들어야 하지만 이는 생략하도록 하자.
 
자, 그럼 여기서 퀴즈.!
이러한 학습 방법으로 LLM 을 개발하는데 어느 정도의 비용이 필요할까? 
 
놀라지 말라. 무려 3억 원이다.. 시간적으로는 90일이 소요된다.
(3억 원의 근거는 클라우드 렌트 비용을 기준으로 했다.)
 
때문에 국내 대부분의 AI 기업들은 자체 LLM 개발을 하지 않는다. 아니 못한다.
대신 다른 방법을 사용한다. 그 방법이 바로 b 에 있다.
 

b. 배포된 Pretrain LLM 을 base 로 추가 Pretrain 하기

몇몇 기업들은 이미 배포되어 있는 Pretrain LLM 을 사용하여 추가로 Pretrain 하여 사용한다.
몇몇이라 표현한 이유는 사실 b 방법도 굉장히 많은 리소스가 필요하기 때문이다.
즉, 웬만한 AI 기업들은 이 방법으로도 자체 LLM 개발을 하지 않는다. 아니 못한다가 더 정확한 표현이다.
 
이 방법 또한 최소 2.5억 원 이상은 필요하다.
(a에 비해 0.5억이 줄어든 이유는 a에 비해 학습을 위한 코퍼스가 더 적어도 되기 때문이다.)
 
기 개발된 Pretrain LLM 에 추가로 Pretrain 하는 방법을 이쪽 업계에서는 이렇게 표현한다.

Domain Adaptive Pre-Training (a.k.a DAPT)
Task Adaptive Pre-Training (a.k.a TAPT)

 
두 방법 모두 목적은 같다.
'내가 하고자 하는 Domain(or Task)에 특화된 데이터를 활용해서 추가 Pretrain 하겠다.'
리더보드에 올라와 있는 LLM 의 경우, '내가 하고자 하는 Domain(or Task)' 는 한국어가 된다.
 
그렇다면 어떻게 이 방법을 통해 학습된 Pretrain LLM 이 외국어서 배포한 Pretrain LLM 보다 좋을까?
이유는 2가지다.
 
1. 기존 Tokenizer 에 한국어 Token 추가

한국어 Token 을 추가해서 Vocab 이 늘어남

 
위 사진의 빨간 박스를 보라. Original 대비 약 1.4만 개의 vocab 이 추가되었다.
같은 Sentencepiece BPE 를 사용하지만 Original 과의 차이는 한국어 vocab 을 추가해 줬다는 데에 있다.
이를 통해 한국어를 더 잘 이해할 수 있는 능력을 LLM 에게 심어주었다.
 
실제로 모델 구조로 보면 이렇게 생겼다.

word embedding 차원이 늘어난 vocab 만큼 늘어났다.

 
2. 대량의 한국어 코퍼스를 사용해서 추가 Pretrain

Train data Train tokens 
61 GB corpus15,000,000,000

AI Hub 데이터, Modu 코퍼스 데이터, 위키 데이터 등의 한국어 코퍼스를 사용해서 모델을 학습시켰다.
이게 얼마나 많은 거냐면,,,,
text 만으로 61 GB 를 가득 채울 만큼 많다고 생각하면 된다...
 
이렇게 탄생한 Pretrain LLM 이 바로
Llama-2-ko, Expanded SOLAR-KO, Yi-ko 가 있다.
필자가 알기로는 해당 모델들 모두 라이선스 이슈 없이 사용할 수 있는 모델들로 알고 있다.
아아... 은혜로워라... 이런 걸 배포해 주시고.!
 
(필자가 계산해 봤는데 H100 2장 만을 가지고 7B sLLM 모델을 61 GB 코퍼스 데이터로 학습시키는데 2년이 걸리더라...)


 

2. 기업이 말하는 '우리'가 만든 LLM 이란

1번에서 Pretrain LLM 을 만들기 힘든 이유를 알아봤다.
쉽게 말해... 많이 많이 비싸다.
가격 대비 엄청 좋냐? 그건 또 아니다.
 
때문에 현시점에서 Pretrain LLM 은 개발의 니즈가 적다.
자체 데이터센터를 보유한 AI 기업이 아니면 배포된 Pretrain LLM 을 사용하는게 상식이 된 이유다.
 
그렇다면 많은 기업에서 홍보하는 본인들이 만든 LLM 은 도대체 무엇일까?
이에는 2가지 밝히지 않은 사실이 있다.

  1. 본인들이 만든 LLM 은 Pretrain LLM 이 아닌 Supervised Fine-Tuning(a.k.a SFT) LLM 이다.
    • SFT 는 Pretrain 대비 학습에 필요한 비용도, 코퍼스도 적다. (최소 90% 이상 적어도 된다.)
  2. Pretrain LLM 은 이미 누군가가 만들어둔 배포된 모델을 사용하는 거다.
    • 말이 LLM 이지 사실 sLLM 이다. 보통 3, 7, 13B 인 sLLM 을 SFT 하여 사용한다.

 
뭐... 사실 SFT 를 '잘' 하는 것도 굉장한 기술력이다.
중요한 건 시중에 배포되어 있는 재료를 얼마나 '잘' 활용하여 요리하느냐 이기에....
 
 


 

3. 결론

LLM 을 Pretrain 학습하는건 기술력을 떠나서 비용이 굉장히 많이 든다. 
엄청난 비용을 지불하여 자체 Pretrain LLM 을 개발했다고 해도 문제다.
이것만으로는 돈이 안 된다.
결국 서비스하고자 하는 무언가에 맞춰 SFT 해줘야 된다.
(당신이 Open-AI 에 있는 천재적인 연구원들과 레벨이 같다면 이 말은 취소하겠다.) 
 
참 아이러니하지 않은가?
Pretrain 에 그 많은 돈이 필요하면서 막상 개발하면 바로 사용하기에는 제한된다니....
그래서 많은 기업에서 배포된 sLLM 으로 이러쿵저러쿵하는 거다.
 
그 이러쿵저러쿵 중 가장 좋은 방법이 배포된 sLLM 을 SFT  하는 기술이다. (좋은 방법 = 보편적인 방법)
현재는 대세가 된 sLLM SFT 를 얼마나 잘하느냐에 따라 서비스의 품질이 달라진다.

때문에 많은 기업에서 sLLM 을 SFT 하는 경험이 있는 사람을 구인하는 거다.
구인하는 기업의 니즈는 적은 리소스로 좋은 성능을 보일 수 있도록 LLM 을 SFT 학습하는 사람이다.


 

마무리,,

오늘 이 포스팅은 사실 다음 포스팅을 위한 들어가는 글에 지나지 않는다.
다음 포스팅이 바로 배포된 sLLM 을 적은 리소스만으로 좋은 성능을 보이도록 SFT 학습하는 방법에 대한 글이기 때문이다.
 
관련 기술의 용어는 이렇다.
PEFT(ex LoRA), device parallel(ex FSDP)

반응형

댓글