데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      쉽게이해하는 GPT. 2편(어떻게 GPT는 Chat을 하는가, instruct모델)

      Teus 25.05.20
      1,521 3 1
      DEVOTEE 요약
      본 블로그는 GPT 모델이 단순히 다음 단어를 예측하는 구조에서 실제 대화가 가능해지기 위한 과정인 'instruction tuning'에 대해 설명합니다. 기존에는 사전 학습된 GPT가 다음 단어만 예측했지만, 사용자의 입력에 맞는 응답을 생성하기 위해 질문과 답변 구성 데이터를 추가 학습시켰습니다. Alpaca 모델의 사례를 통해 이러한 과정을 구체적으로 보여주며, ChatGPT도 이와 유사한 방법으로 학습되어 대화 기능을 수행한다고 추정합니다.
      DEVOTEE 추천 블로그

      안녕하세요. 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이 가능하게 만든 오픈소스 모델 입니다.

      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 모델로 표기되는것을 볼 수 있습니다.

      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|>

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      Teus 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기