AIFactory (인공지능 팩토리)에서 진행했던 세미나입니다.
영상의 길이는 총 1시간 45분 정도입니다.
url: https://aifactory.space/task/2415/overview
발표자: 이준범님 (이력: 현) Ed-tech 스타트업 데이터드리, 한국어 NLP 오픈소스 프로젝트 개발자, 전) NAVER Clova, NEXON Korea)
Intro
1. LLM?
* 자주 나오는 용어
- LM (Language Model): 다음 단어를 맞추는 확률 모델
- LLM (Large Language Model): 말 그대로 "큰" 언어 모델
- Instruction: 모델이 조금 더 똑똑하게 우리가 원하는 무언가를 실행할 수 있는 능력을 갖추게 되는 것 (질문에 대한 답을 하게 되는 과정)
Q1. 그럼 얼마나 큰 모델이어야 할까?
A1. 과거에는 BERT, GPT-2 등 1B이 되지 않는 모델들도 큰 모델이라고 생각했지만, 점차 대규모 언어 모델들이 등장함에 따라 상대적인 개념으로 생각해 볼 수 있음. 현재 개발 중인 언어 모델들의 경우, 1T의 모델들도 있음.
Q2. 왜 LLM이 이렇게 인기가 많을까?
A2.
- 사람보다 넓고 다양한 지식을 학습.
- 언어 이해 능력 - 긴 맥락의 문장을 이해할 수 있고, 앞 선 대화도 기억할 수 있음.
- In-context-learning (ICL) - 학습 없는 학습이 가능함.
즉, 예시만 몇 개 주면서 언어 모델에게 답변을 시키면 이전에 학습해 보지 못했던 문제라고 하더라도 prompt상에서 마치 학습을 진행한 것처럼 해당 문제에 대한 답변을 수행할 수 있는 능력을 갖춤.
- 쉬운 API 서비스 (ChatGPT)
화자는 쉬운 API 서비스가 LLM이 인기가 많아지 주된 요인으로 생각함. 위 3가지 역량의 경우, 이전 언어 모델들에서도 찾아볼 수 있는 특징이었지만, ChatGPT와 같은 유저들이 보다 쉽게 사용할 수 있는 서비스들이 개발되면서 LLM이 폭발적으로 인기를 얻게 되는 계기가 됨.
Q3. 그럼 왜 바로 개발하지 못할까?
A3. 여러가지 현실적인 이슈들로 개발에 어려움이 존재함. 인력, 예산, 데이터, 보안 문제 등
2. LLM 활용방안
그렇다면, 이런 LLM을 어떻게 활용해볼 수 있을까?
1) Big-tech의 API 서비스 활용하기
2) 작은 전용 LM을 쓰기 (BERT, GPT-2 등)
- 장점: 원하는 형태의 출력이 가능, 비싸지 않은 학습 비용, CPU등으로 서빙할 수 있어 비용 절감도 가능.
- 단점: 문장 생성 능력이 현저하게 떨어짐, 새로운 Task에 적응하는 능력이 떨어짐, Task별 Finetune용 데이터 구축이 필요함 등
3) 오픈소스 LLM 활용 - LLaMa, Polyglot-ko 등 100B 이내의 작은 LLM 서비스 개발하기
- 장점: Big-tech 제공 GPT급은 아니어도 어느 정도 나오는 성능, 도메인 지식을 추가로 학습 시킬 수 있음.
- 단점: 여전히 100B 이상의 LLM보다 낮은 성능, 도메인 학습 시 최소 관련 Text 데이터 필요, GPU 서빙에 대한 비용
*각 방법마다 장, 단점이 있기 때문에 본인의 상황에 맞게 사용하는 것이 좋음.
3. Local LLM 사용해보자!
"토큰에 대한 걱정을 덜 하면서 모델에 추가적인 지식을 넣되 유출 가능성이 낮으면서도 내부망에 서빙이 가능할까?"
1) 토큰에 대한 걱정
API를 호출하여 사용하는 LLM 모델들은 보통 토큰당 요금이 부과됨. 즉 글자 수 (=토큰 수)가 비용이라고 생각할 수 있음.
토큰 수를 미리 계산해 볼 수 있는 사이트 - Tiktokenizer -를 통해 확인해보면, gpt-4o를 기준으로 같은 문자열 길이임에도 한국어에 대해 더 많은 토큰을 사용하는 것을 볼 수 있음. → 토큰에 대한 과금 현상 심화
2) 모델에 추가적인 지식 학습
general한 지식은 LM에 학습되어 있지만 조금 더 전문적이고 세부적인 지식은 LM에 없을 수 있음.
OpenAI에서 제공하는 GPT모델을 Custom하여 사용할 수 있지만, 학습에 많은 비용이 들어가고 여전히 API로만 사용이 가능함.
3) 데이터 유출 예방
인터넷 + 서비스 제공자에서 데이터가 넘어가는 외부 LLM API 서비스
데이터 유출 문제가 발생할 경우, 사후처리는 가능할 수 있으나 사전적으로 예방할 수 없는 문제
▶ 이런 예상되는 문제점들을 바탕으로 화자는 한국말 지원이 가능한 LLM 서비스를 개발하고자 함.
KoAlpaca 개발 과정
1. Alpaca: A Strong, Replicable, Instruction-Following Model
https://crfm.stanford.edu/2023/03/13/alpaca.html
Instruction-following LM이란? 명령어를 따르는 언어 모델을 의미
Alpaca는 Stanford에서 LLaMa 7B를 기반으로 Finetuning한 모델
가정: 언어 모델은 이미 많은 말들을 배웠지만, 단순히 어떻게 말을 해야 하는지 모르는 것일 뿐! 따라서, 어떻게 말을 할지 가르쳐 주면 된다.
말 이어쓰기 vs 명령어 따르기
기존의 모델은 말을 배워 그냥 어울리는 단어들을 나열하며 말을 이어쓴다면,
명령어에 따라 말을 쓸 수 있다면, 조금 더 가치있는 답변을 하는 언어 모델을 만들 수 있음.
예시1) 말 이어쓰기
버스 정류장에 혼자 앉아있으니까 쓸쓸하다. 쓸쓸하니깐 괜히 더 춥다.
예시2) 명령어 따르기
버스 정류장에 혼자 앉아 있다는 주제로 두 줄의 시를 써줘.
버스 정류장, 바람에 실린 고독,
시간이 멈춘 듯, 지나가는 그림자들.
How to obtain Alpaca model?
- 175개의 Instruction 데이터 생성 후, Text-davinci-003 모델을 활용하여 데이터 augmentation
- 최종적으로 52K개 규모의 Instruction 데이터 생성
- 해당 데이터로 LLaMa 7B 모델 학습
2. KoAlpaca
https://github.com/Beomi/KoAlpaca
대표적인 오픈소스 한국어 LM인 Polyglot-ko 모델을 기반으로 학습된 모델
- KoAlpaca v1.0: Alpaca 데이터를 번역하여 데이터 생성 및 학습
- KoAlpaca v1.1a: 네이버 지식인 데이터를 기반으로 데이터 생성 및 학습
- KoAlpaca v1.1b: 1.1a 기반에 맥락을 이해하도록 추가 학습
https://arxiv.org/abs/2306.02254
Q. EleutherAI의 Polyglot-ko?
A. 'ElutherAI'라는 연구소에서 개발한 한국어 중심의 LLM 모델로 TUNiB에서 수집한 1.2B의 한국어 데이터를 다양한 방식의 전처리를 거쳐 가공한 뒤 사전 학습함. 1/3/5/12.8B 크기의 모델 보유.
+ 화자는 multilingual 혹은 영어 중심의 LLM에 비해 한국어 중심의 LLM이 Finetuning 결과 성능이 좋았다고 설명함.
2.1 KoAlpaca v1.0 - "한국어 명령어"를 따르는 한국어 LM만들기
- Alpaca 52K 데이터 구성: Instruct + Output / Instruct + Input + Output
- Alpaca 52K 데이터셋에 대하여 'Instruct'와 'Input'만을 Deep L을 활용하여 번역 (~$100 소모)
- 답변 (Output)을 생성할 때, batch decoding 기법을 활용해서 비용 절감 및 생성 효율성을 높임.
+ Polyglot-ko 5.8B vs LLaMa 7B 학습 후 비교 결과, Polyglot 모델이 더 좋은 답변 성능을 보임. LLaMa의 경우, 언어를 혼동하는 경우가 있었음.
Q1. 원데이터가 GPT를 활용해서 답변을 생성했는데, 이를 번역할 필요가 있을까?
A1. Output은 번역하지 말고 Instruct와 Input만 번역해서 활용하자! 번역된 Instruct와 Input을 넣고 OpenAI GPT로 새롭게 답변을 생성하자!
Q2. Batch decoding 기법이 뭘까?
A2. 인터넷을 보면 Batching 기법이라고도 표현하는 것 같음. batch는 한 번에 데이터를 처리하는 단위인데, 여기서 batch decoding이란 답변 생성을 위해 API 요청을 할 때, API 요청을 최소화하기 위해 한 번에 여러 개의 답변을 받는 방식을 의미함. 이렇게 하면 중복되는 prompt의 수를 최소화할 수 있기 때문에 비용 측면에서도 많은 절약이 가능해짐.
2.2 KoAlpaca v1.1a - "친절하게 답변하는" 한국어 LM만들기
- v1.0 모델은 답변을 단답으로 하는 한계점 존재
- 답을 조금 더 자세하게 하는 모델 개발을 위해 네이버 지식인 데이터 가공 (아래 그림 참조)
1) 질문 재 생성 (Q: Title + Q: Content를 OpenAI GPT의 Input으로 넣어 질문 Rewriting)
2) 답변 재 생성 (채택된 답변의 Content를 재생성된 질문을 참조해서 새롭게 답변할 수 있도록 함)
- 결과적으로 이전 모델에 비해 훨씬 더 길고 자세하게 답변함.
2.3 KoAlpaca v1.1b - "맥락을 이해하는" 한국어 LM만들기
- v1.1a의 경우, 질문 앞에 추가적인 맥락을 함께 넣어줘도 그것에 대해 참고하는 능력이 없었음.
- 새로운 지식에 대해서 답하지 못하기 때문에 답변 내에 hallcination이 많이 발생.
- 기존의 네이버 지식인 답변 (Rewriting 이전)을 Input, 즉 맥락으로 추가하여 넣어주면 되지 않을까?
- Original html text를 Input으로 넣어서 데이터를 재가공함.
- 결과적으로, prompt에 지식을 넣어주면 이를 바탕으로 답변을 생성할 수 있게 됨.
3가지 KoAlpaca 모델 개발을 통해 화자는 Alignment를 시켜줄 수 있는, 즉 어떠한 방향으로 답을 하는게 가장 좋은 지 잘 알려줄 수 있는 소량의 데이터가 매우 중요함을 밝힘.
+ Emergent vs Instruction-Tuning
Q. Emergent가 뭘까? LLM에서 의미하는 Emergent ability?
A. LLM은 특정 task에서의 성능 향상보다는 사용자의 지시문에 따라 결과물을 생성 혹은 학습하지 않은 task들을 수행하는데 그 의미가 있음. 이런 LLM의 성능은 모델의 크기에 비례하지 않고 특정 크기를 기준으로 갑작스럽게 상승하게 되는데, 이를 emergent ability라고 함. 즉 작은 모델에서는 발생하지 않음.
https://arxiv.org/abs/2206.07682
+ "LLLarge" Model?
Q.그렇다면 무조건 큰 모델? Emergent ability가 발현될 수 있는 모델을 개발해야할까?
A. 개발에 앞서 "데이터 가성비", "학습 비용 가성비", "서빙 비용 가성비"를 따져봐야 함.
A1-1. 데이터 가성비: 내가 가지고있는 데이터 사이즈에 맞게 선택함 (결국 없으면, 할 수 없음)
A1-2. 학습 비용 가성비: 학습 비용의 경우, pretraining부터 시작할 경우, 엄청나게 많은 비용이 소모됨.
A1-3. 서빙 비용 가성비: LM크기에 따라 서빙 비용이 달라지기 때문에 이를 고려한 개발이 필요함.
이후, Research Agendas LIMA 모델에 대해 언급해주셨지만, 이는 Paper Review에서 자세하게 다뤘기 때문에 생략합니다.
LM 모델을 개발하기 전에 항상 아래와 같은 궁금증들이 많았는데,
어느 정도 데이터를 수집해야 Fine-tuning을 할 수 있을까?
그렇다면 데이터는 어떤 식으로 구축해야할까?
내가 가진 GPU로 모델이 정상 작동할 수 있을까?
해당 세미나를 통해 sLLM이라고 불리우는 10B 이하의 모델에 대한 이해가 깊어진 것 같습니다
'Seminar Review' 카테고리의 다른 글
NCIA 교육센터 - 생성자 모델 이해 (10/28 ~ 10/30) (8) | 2024.10.30 |
---|