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

신고하기

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

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

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

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

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

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

      임시저장함

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

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

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

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

      회원정보 연결

      Hugging Face에서 살펴보는 다양한 Transformer 모델들

      공장직원 24.02.28
      12,035 11 0
      DEVOTEE 요약
      Hugging Face에서 제공하는 transformers 라이브러리는 여러 가지 아키텍처의 Transformer 기반 모델을 쉽게 활용할 수 있게 해줍니다. Encoder-Only, Decoder-Only, Encoder-Decoder 아키텍쳐로 구분되는 이 모델들은 각각의 Task 별 성능 차이가 있다고 알려져 있습니다. 대표적인 모델로는 BERT(Encoder-Only), GPT(Decoder-Only), T5(Encoder-Decoder) 등이 있으며, 이러한 모델들은 텍스트 예측, 감정 분석, 텍스트 생성 등 다양한 NLP 작업에서 사용됩니다.
      DEVOTEE 추천 블로그

      LLM 기반의 Application 을 개발하기 시작했다면 가장 많이 방문하는 페이지는 아마 Hugging Face 일것 같습니다.


      Transformer 의 등장과 이후 GPT / BERT 의 성공으로 정말 다양한 아키텍쳐를 가진 transformers 모델이 등장했고,

      Huggingface 덕분에 쉽게 NLP Task 에 접근할 수 있게 되었는데요.

      오늘은 Huggingface에 올라온 다양한 Transformers 모델들에 대해 이야기해보려고 합니다.

      image.png

      1. Transformer 모델

      Attention Is All You Need 논문에서 소개된 Transformer는 이전의 많은 Seq2Seq Model들 처럼 Encoder-Decoder 구조를 가지고 있습니다.

      ( Transformer의 자세한 설명은 tensorflow의 Transformer 튜토리얼 페이지를 참고 부탁드립니다. )


      이후 Transformer는 왼쪽의 Encoder 부분을 활용한 Encoder-Only 아키텍쳐와 오른쪽의 Decoder를 활용한 GPT 계열의 Decoder-only 아키텍쳐 그리고,

      Encoder와 Decoder 모두를 활용하는 Encoder-Decoder 아키텍쳐로 나눠 발전하고 있습니다.

      image.png

      2. Encoder-Only

      Encoder-Only 아키텍쳐의 대표주자는 2018년 구글에서 발표한 BERT(논문) 입니다.

      BERT는 Bidirectional Encoder Representations from Transformers 의 약자로 모델명에 표현된것처럼 Transformer의 Encoder를 활용한 모델입니다.

      BERT는 텍스트에서 마스킹된 토큰을 예측(Masked Language Modeling, MLM) 과 다음 문장을 예측(Next Sentence Prediction, NSP) 를 목표로 학습된 모델인데요.

      Input 정보를 인코딩된 표현으로 만드는 Transformer Encoder의 특성을 이용하여 Task의 목적에 따라 적용 방식입니다.

      image.png

      ( 출처 : https://huggingface.co/blog/bert-101 )


      이제, Huggingface의 transfomrer 라이브러리를 활용하여 BERT 모델을 살펴 보겠습니다.

      Huggingface 의 모델들은 AutoModel 이라는 기본 모델을 바탕으로

      AutoModelFor{XX} ( Ex. AutoModelForSequenceClassification ) 처럼 NLP Task에 맞는 모델을 불러 올 수 있습니다.

      오늘은 BERT의 기본 구조를 살펴 보기 위해 AutoModel 을 사용해서 pretrain된 BERT 모델을 먼저 불러오겠습니다.

      from transformers import AutoModel
      model = AutoModel.from_pretrained("bert-base-uncased")

      image.png

      입력된 시퀀스를 Token Embedding + Positional Embedding 하는 Embeddings Layer 를 지나 12개의 Multi-Head Attention Layer

      그리고 Linear Layer( Feed Forward ) 를 가진 모델 구조가 출력됩니다.

      이제, 마스킹된 Token을 예측하는 Task를 수행하기 위해 transformers library의 AutoModelForMaskedLM 를 사용하여

      AutoModel 뒤에 어떤 Layer가 추가로 붙는지 확인해보겠습니다.

      from transformers import AutoModelForMaskedLM
      model = AutoModelForMaskedLM.from_pretrained("bert-base-uncased")

      image.png

      AutoModel에서 출력한 Model 구조와 다르게 Encoder 에서 나온 값을 BertOnlyMLMHead 라는 Layer에 통과시키는 구조가 출력됩니다.

      이처럼, 입력된 문장을 잘 표현하는 Embedding vectors(Hidden State)를 만든 뒤

      그 값을 마스킹된 Token을 예측하는 Task(Masked Language Modeling, MLM) 에서 활용하는 구조가 나오게 됩니다.

      GPT 모델과 다르게 BERT 같은 아키텍쳐의 경우 문장의 좌/우(앞/뒤) 에서 bidirectional self-attention 을 계산하기 때문에

      오른쪽에 위치한 문맥을 같이 이해해야 풀 수 있는 MLM 같은 Task 를 잘 수행하는것으로 알려져있습니다.

      ( BERT 가 처음 등장했을때, 감정 분석/문장 예측/문장 요약 등 11개 이상의 NLP Task 에서 좋은 성능을 보여주었습니다. 꼭 MLM 만 잘 한다는 의미는 아닙니다. )


      현재 Huggingface에서 사용가능한 Encoder-only 아키텍쳐 모델은 BERT 이후 등장한 DistilBERT, RoBERTa , XML, ALBERT 같은 모델들이 있습니다.


      3. Decoder-Only

      GPT 모델은 Decoder-Only 아키텍쳐의 대표 모델로 ChatGPT의 성공을 이끌며 어떤 관점에서는 LLM 모델 중 가장 유명한 모델이 되었습니다.

      GPT는 Generative Pre-trained Transformer 의 약자로 2018년 Open AI 에서 발표한

      Improving Language Understanding by Generative Pre-Training 논문에서 처음 소개되었습니다.

      지난 출력과 현재 토큰만 사용해 다음 토큰을 생성하는 Transformer Decoder 의 특징을 활용한

      Decoder-Only 아키텍쳐는 다음 단어를 예측하는데 뛰어나다고 알려져 있습니다.

      특히, GPT 는 transformer Decoder 아키텍쳐와 전이학습을 효율적으로 결합하여

      단순 다음 단어를 예측하는것이 아닌 Text 분류 같은 다양한 NLP Task에서도 뛰어난 성과를 보여주었습니다.

      image.png


      ( 출처 : https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf )


      Transformer의 Decoder layer 와 비교해서 Masked Multi-Head Attention Layer 이후 바로 Feed Forward 로 들어가는 구조입니다.

      Encoder에서 넘어오는 입력이 없기 때문에 해당 layer는 생략된채 Transformer의 Decoder 가 구성된 걸로 볼 수 있습니다.


      Huggingface에서는 GPT 모델도 제공하고 있습니다.

      동일하게 AutoModel 로 GPT의 구조를 먼저 살펴 봅니다.

      from transformers import AutoModel
      model = AutoModel.from_pretrained("openai-gpt")

      image.png

      BERT 모델과 동일하게 입력 값을 Token Embedding + Positional Embedding 하는 Embedding layer들을 지나

      Masked Multi-Head Attention 을 계산하는 12개의 Attention layer가 있습니다.

      하지만 BERT와 다르게 Feed Forward netword를 구성하기 위해 Fully Connected( pytorch 기준 Linear Layer ) 가 아닌 Conv1D Layer를 사용 했는데요.

      FC(Fully Connected) Layer와 Conv1D Layer는 유사한 결과를 얻을 수 있다고 알려져 있습니다.

      다만, GPT 처럼 대규모 학습 데이터를 사용할때는 Conv1D 가 모델의 성능을 높이는데 도움을 준다고 알려져 있습니다.


      이제 Decoder 기반의 GPT 모델이 잘 수행한다고 알려져 있는 텍스트 생성 Task를 위해 AutoModelForCausalLM 를 사용해보겠습니다.

      흔히, 시작 프롬프트가 주어 질 때 텍스트에 등장하는 토큰 시퀀스를 추정하는 조건부 확률 모델을 자기 회귀 모델(Autoregressive model)

      혹은 인과 언어 모델(Causal Language Model) 이라고 부르고 Huggingface에서는 {xx}ForCausalLM 의 형태로 문장 생성 모델을 제공합니다.

      from transformers import AutoModelForCausalLM
      model = AutoModelForCausalLM.from_pretrained("openai-gpt")

      image.pngGPT 논문에서 제시한 Task 별 layer 처럼 마지막 Layer에 Linear Layer가 추가 되었습니다.

      추가된 Linear Layer의 out_features 값은 단어 사전의 크기 (vocab size) 가 될 것 입니다.


      Huggingfafce 에서는 GPT-2, CTRL, GPT-Neo 같은 Decoer-only 모델을 제공하고 있습니다.


      4. Encoder-Decoder

      BERT와 GPT 의 성공 이후 Transformer의 Encoder나 Decoder 스택을 사용해 모델을 만드는것이 일반적인 일이 되었지만,

      번역 같은 전통적인 Seq2Seq Task 를 해결하기 위해 Encoder-Decoder 아키텍쳐는 여전히 유효합니다.

      Encoder-Decoder 모델의 가장 대표적인 모델은 2019년에 구글에서 발표한 T5(논문) 입니다.

      T5는 Text-to-Text Transfer Transformer 의 약자인데 NLP Task 들을 모두 Text to Text Task 로 접근하는 모델입니다.

      아래 이미지처럼 번역/판정/감정유사도/요약 같은 NLP Task 들을 prefix를 포함한 Text 형태로 입력하고 text 를 출력하는 형태인데요.

      BERT나 GPT 와 가장 큰 차이점은 Transformer 원본 아키텍쳐를 사용한다는 점입니다.

      image.png

      ( 출처 : https://arxiv.org/pdf/1910.10683.pdf )


      BERT/GPT 와 동일하게 Huggingface 의 AutoModel를 사용하여 모델 구조를 살펴보겠습니다.

      from transformers import AutoModel
      model = AutoModel.from_pretrained("google-t5/t5-base")

      image.png

      image.png

      Encoder/Decoder를 가진 Transformer 원본 아키텍쳐를 사용하기 때문에 BERT/GPT 에 비해 모델 구조가 길게 출력 됩니다.

      특이한 점은 Multi-Head Attention layer을 바로 12번 반복하는게 아니라 최초 1회는 FeedForward layer를 통과하고

      나머지 11번을 반복하는 구조가 Encoder/Decoder에 나타나고 있습니다.


      T5 모델의 경우 AutoModelFor{xx} 같은 Task 별 모델을 사용하는게 아닌

      T5ForConditionalGeneration 라는 모델을 호출하여 prefix에 따른 seq2seq Task를 수행할 수 있습니다.


      Encoder-Decoder 유형으로 BART, M2M-100, BigBird 같은 모델을 huggingface 에서 사용할 수 있습니다.


      5. 마무리

      Hugging Face 에서 제공하는 transformers 라이브러리를 사용하여 Transformer 기반의 다양한 모델들을 살펴 봤습니다.

      Encoer-Only, Decoder-Only 그리고 Encoder/Dedocer 아키텍쳐의 대표 모델들을 살펴봤는데, 아키텍쳐에 따라 Task 별 성능이 차이가 있는걸로 알려져 있습니다.


      현재까지는 chatGPT의 성공으로 GPT 계열의 Decoder-Only 아키텍쳐가 가장 성과를 내고 있습니다.

      Encoder, Encoder/Decoder 아키텍쳐들이 분발해서 LLM 영역에서 새로운 성과를 만들어 낼 수 있을지, 혹은 역사 속 모델들 중 하나가 될지 앞으로 지켜보는것도 좋을것 같습니다.


      출처

      https://github.com/nlp-with-transformers/notebooks, Natural Language Processing with Transformers, O'Reilly Media,

      https://blog.tensorflow.org/2019/05/transformer-chatbot-tutorial-with-tensorflow-2.html

      https://huggingface.co/blog/bert-101

      https://openai.com/research/language-unsupervised

      https://huggingface.co/docs/transformers/en/model_doc/openai-gpt

      https://arxiv.org/pdf/1910.10683.pdf

      댓글 0

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

      공장직원 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기