티스토리 뷰

728x90
반응형

안녕하세요. Teus입니다.

지난번 포스팅을 통해서, GPT의 구조가 대략적으로 어떻게 생겼고

 

해당하는 구조를 통해서 다음단어 예측기(Decoder Only Transformer)가 대략적으로 어떻게 동작하는지 확인했습니다.

 

이번 포스팅에서는 해당하는 다음단어 예측기를 통해서 어떻게 GPT가 Chat이 가능한지 알아봅니다.

1. 다음단어 예측기의 한계

GPT는 문장이 주어졌을 때, 앞에있던 단어들을 가지고 다음에 올 단어을 예측합니다.

 

이러한 문장의 경우 대부분 위키피디아 등에 존재하는 문서 형태이기 때문에

 

인터넷의 수많은 문서를 학습한 상태의 LLM에게(이를 pre-trained상태라고 합니다)

 

오늘 날씨는 어때? 라고 물어본다면

image.png

이처럼 정상적이지 못한 다음단어만 예측을 하면서, LLM이 예상치 못한 결과만을 줄 뿐 입니다.

 

이때 조금 책과 비슷한 형태의 텍스트를 입력하면, 아래와 같이 됩니다.


서울의 날씨는 맑음. 부산은 아래지방 이므로

image.png

이처럼 GPT는 Text를 받고, 해당하는 Text의 다음 단어를 예측할 뿐입니다.

 

때문에 이런 GPT한테 어떻게 유저와 Chat을 할지를 알려줘야하고

 

이 과정을 instrunction tunning 이라고 합니다.

2. instruction tunning

pre-traind상태에서

이제 유저와의 Chat이 가능하게 만드는 post training(또는 fine tuning)의 일종입니다.

 

LLM의 경우 문장을 집어넣으면, 해당 문장 다음에 올 단어를 예측했었죠?

 

이점을 동일하게 이용 합니다.

 

일단 설명에 앞서, ChatGPT가 받아들이는 문자가 어떤 형태인지 볼 필요가 있습니다.
https://tiktokenizer.vercel.app/

 

유저가 chatGPT한테 너의 이름은 뭐야? 라고 입력할 경우

 

아래와 같은 형태로 입력이 됩니다.

image.png

우리는 단순하게 너의 이름은 뭐야?라고 입력했다고 생각하지만

 

실제로는 <|im_start|>, <|im_sep|>과 같은 특수 문자들이 삽입되어 있는 것을 확인할 수 있습니다.

 

해당 문자들의 경우 instruction tuning과정에서 chatGPT가 학습을 했고,

<|im_start|>다음에는 system이라는 글자가 나와야하고,

그 다음은 <|im_sep|>이 나오게 학습된것 이라고 볼 수가 있습니다.

 

그럼 도대체 어떻게 학습했길래 이게 가능 했을까요?

 

ChatGPT의 instruction tuning 과정을 알 수는 없지만

 

llama를 가지고 Alpaca를 만든 과정이 완벽하게 오픈소스로 공개되어서,

 

어떤 과정으로 학습을 했을지 대략적으로 추측을 할 수가 있습니다.

3. Alpaca의 instruction tunning

https://github.com/tatsu-lab/stanford_alpaca
Alpaca의 경우, Meta의 llama를 사용해서 Chat이 가능하게 만든 오픈소스 모델 입니다.

 

GitHub - tatsu-lab/stanford_alpaca: Code and documentation to train Stanford's Alpaca models, and generate the data.

Code and documentation to train Stanford's Alpaca models, and generate the data. - tatsu-lab/stanford_alpaca

github.com

 

 

Alpaca가 단순한 다음문자 예측기를 어떻게 Chat이 가능하게 했는지는, 아래 형태를 통해서 알 수 있습니다.

Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.

### Instruction:
Classify the following into animals, plants, and minerals

### Input:
Oak tree, copper ore, elephant

### Response:
Oak tree: Plant\n Copper ore: Mineral\n Elephant: Animal

학습에 사용된 실제 데이터 입니다.

 

보면 알 수 있듯, pre-train때와는 다르게 질문에 대한 답변세트로 구성되어있는것을 확인할 수 있습니다.
https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json

 

stanford_alpaca/alpaca_data.json at main · tatsu-lab/stanford_alpaca

Code and documentation to train Stanford's Alpaca models, and generate the data. - tatsu-lab/stanford_alpaca

github.com

 

이런 수많은 데이터를 학습한 이후에

 

Alpaca와 Chat을 하기 위해서는 아래와같이 text를 만들 뒤 다음 단어를 예측하게 만들면 됩니다.

Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.

### Instruction:
Classify the following text as formal or informal.

### Input:
Hey, what's up? Wanna grab lunch later?

### Response:

pre-trained상태의 LLM의 경우 평문에 대한 다음 단어 예측만 학습했기 때문에 Chat이란게 불가하지만

 

위처럼 instrunction과 input이 주어지고, 그 다음 Response: 다음에는 어떤 식으로 단어를 예측 해야할지를 instrunction tuning과정에서 배웠기 때문에

 

단순한 다음단어 예측기 상태에서, Chat이 가능한 LLM으로서 활용이 가능하게 됩니다.

 

huggingface에서

pre-trained상태의 모델을 Base 모델 이라고 하고,

instruction tuning이 완료된 모델은instruct 모델로 표기되는것을 볼 수 있습니다.

image.png

이제 ChatGPT로 돌아가 볼까요?

 

ChatGPT의 경우

<|im_start|>system<|im_sep|>You are a helpful assistant<|im_end|>
<|im_start|>user<|im_sep|>너의 이름은 뭐야?<|im_end|>
<|im_start|>assistant<|im_sep|>

형태로 유저의 질문이 ChatGPT한테 입력되고, 그 뒷부분에 올 단어를 예측하게 되어있습니다.

 

그러므로, ChatGPT의 경우 아래형태의 데이터를 사용해서 instruction tuning을 진행했을 것이란걸 예상해 볼 수 있습니다.

<|im_start|>system<|im_sep|>{System_instruction}
<|im_end|><|im_start|>user<|im_sep|>{User_Query}<|im_end|>
<|im_start|>assistant<|im_sep|>{LLM_Response}<|im_end|>
728x90
반응형

'Ai' 카테고리의 다른 글

쉽게이해하는 GPT. 1편(다음단어 예측기. Base모델)  (1) 2025.04.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함