23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
안녕하세요. Teus입니다.
지난번 포스팅을 통해서, GPT의 구조가 대략적으로 어떻게 생겼고
해당하는 구조를 통해서 다음단어 예측기(Decoder Only Transformer)가 대략적으로 어떻게 동작하는지 확인했습니다.
이번 포스팅에서는 해당하는 다음단어 예측기를 통해서
어떻게 GPT가 Chat이 가능한지 알아봅니다.
GPT는 문장이 주어졌을 때, 앞에있던 단어들을 가지고 다음에 올 단어을 예측합니다.
이러한 문장의 경우 대부분 위키피디아 등에 존재하는 문서 형태이기 때문에
인터넷의 수많은 문서를 학습한 상태의 LLM에게(이를 pre-trained상태라고 합니다)
오늘 날씨는 어때? 라고 물어본다면
이처럼 정상적이지 못한 다음단어만 예측을 하면서, LLM이 예상치 못한 결과만을 줄 뿐 입니다.
이때 조금 책과 비슷한 형태의 텍스트를 입력하면, 아래와 같이 됩니다.
서울의 날씨는 맑음. 부산은 아래지방 이므로
이처럼 GPT는 Text를 받고, 해당하는 Text의 다음 단어를 예측할 뿐입니다.
때문에 이런 GPT한테 어떻게 유저와 Chat을 할지를 알려줘야하고
이 과정을 instrunction tunning 이라고 합니다.
pre-traind상태에서
이제 유저와의 Chat이 가능하게 만드는 post training(또는 fine tuning)의 일종입니다.
LLM의 경우 문장을 집어넣으면, 해당 문장 다음에 올 단어를 예측했었죠?
이점을 동일하게 이용 합니다.
일단 설명에 앞서, ChatGPT가 받아들이는 문자가 어떤 형태인지 볼 필요가 있습니다.
https://tiktokenizer.vercel.app/
유저가 chatGPT한테 너의 이름은 뭐야? 라고 입력할 경우
아래와 같은 형태로 입력이 됩니다.
우리는 단순하게 너의 이름은 뭐야?라고 입력했다고 생각하지만
실제로는 <|im_start|>, <|im_sep|>과 같은 특수 문자들이 삽입되어 있는 것을 확인할 수 있습니다.
해당 문자들의 경우 instruction tuning과정에서 chatGPT가 학습을 했고,
첫<|im_start|>다음에는 system이라는 글자가 나와야하고, 그 다음은 <|im_sep|>이 나오게 학습된것 이라고 볼 수가 있습니다.
그럼 도대체 어떻게 학습했길래 이게 가능 했을까요?
ChatGPT의 instruction tuning 과정을 알 수는 없지만
llama를 가지고 Alpaca를 만든 과정이 완벽하게 오픈소스로 공개되어서,
어떤 과정으로 학습을 했을지 대략적으로 추측을 할 수가 있습니다.
https://github.com/tatsu-lab/stanford_alpaca
Alpaca의 경우, Meta의 llama를 사용해서 Chat이 가능하게 만든 오픈소스 모델 입니다.
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
이런 수많은 데이터를 학습한 이후에
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 모델로 표기되는것을 볼 수 있습니다.
이제 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|>
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.