에코프로.AI

[Hugging Face - 2] Transformer? 본문

AI Tutorial

[Hugging Face - 2] Transformer?

AI_HitchHiker 2024. 12. 24. 17:03

https://cdn.mos.cms.futurecdn.net/v2/t:0,l:0,cw:0,ch:0,q:80,w:650/dPo92zYeAz7Joxh7HWooJ3.jpg.webp

 


트랜스포머 역사에 대한 간단한 소개

https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_chrono.svg

 

 

Transformer 아키텍처는 2017년 6월에 도입되었습니다. 원래 연구의 초점은 번역 작업에 맞춰져 있었습니다. 그 후 다음을 포함한 여러 영향력 있는 모델이 도입되었습니다.

  • 2018년 6월 : 다양한 NLP 작업에 대한 미세 조정에 사용된 최초의 사전 학습된 Transformer 모델인 GPT 통해 최고의 결과를 얻었습니다.
  • 2018년 10월 : 또 다른 대규모 사전 학습된 모델인 BERT 문장을 더 잘 요약하도록 설계되었습니다
  • 2019년 2월 : 윤리적 문제로 인해 즉시 대중에 공개되지 않은 GPT의 개선된(그리고 더 큰) 버전인 GPT-2
  • 2019년 10월 : DistilBERT 는 BERT의 증류 버전으로 60% 더 빠르고 메모리는 40% 더 가벼우며 BERT 성능의 97%를 그대로 유지합니다.
  • 2019년 10월 : BART  T5 , 원래 Transformer 모델과 동일한 아키텍처를 사용하는 두 개의 대형 사전 학습 모델(이를 구현한 최초의 모델)
  • 2020년 5월 , GPT-3는 미세 조정( 제로샷 학습 이라고 함 ) 이 필요 없이 다양한 작업에서 우수한 성능을 발휘할 수 있는 GPT-2의 훨씬 더 큰 버전입니다.

 

이 목록은 포괄적이지 않으며, 단지 다양한 종류의 Transformer 모델 중 몇 가지를 강조하기 위한 것입니다. 대체로 세 가지 범주로 그룹화할 수 있습니다.

  • GPT 유사( 자기 회귀 변환기 모델이라고도 함)
  • BERT 유사( 자동 인코딩 Transformer 모델이라고도 함)
  • BART/T5 유사( 시퀀스 대 시퀀스 변환기 모델이라고도 함)

 

Transformer 는언어 모델입니다

위에서 언급한 모든 Transformer 모델(GPT, BERT, BART, T5 등)은 언어 모델로서 학습되었습니다. 즉, 대량의 원시 텍스트에 대해 자가 지도 학습 방식으로 학습되었습니다. 자기 지도 학습은 모델의 입력으로부터 목표가 자동으로 계산되는 훈련 유형입니다. 즉, 사람이 데이터에 레이블을 지정할 필요가 없습니다!

 

이러한 유형의 모델은 학습된 언어에 대한 통계적 이해를 발전시키지만 특정 실제 작업에는 그다지 유용하지 않습니다. 이 때문에 일반적인 사전 학습 모델은 전이 학습이라는 과정을 거치게 됩니다. 이 과정에서 모델은 주어진 작업에 대해 사람이 주석이 달린 레이블을 사용하는 감독 방식으로 미세 조정됩니다.

 

트랜스포머는 큰 모델입니다

DistilBERT와 같은 몇 가지 모델을 제외하면, 더 나은 성능을 달성하기 위한 일반적인 전략은 모델의 크기와 사전 학습되는 데이터의 양을 늘리는 것입니다.

https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/model_parameters.png

 

 

Transformer 모델의 일반 아키텍처

이 모델은 주로 두 개의 블록으로 구성됩니다.

  • 인코더(왼쪽) : 인코더는 입력을 받고 그것의 표현(특징)을 구축합니다. 즉, 모델은 입력으로부터 이해를 얻도록 최적화됩니다.
  • 디코더(오른쪽) : 디코더는 인코더의 표현(특징)과 다른 입력을 함께 사용하여 대상 시퀀스를 생성합니다. 즉, 모델은 출력을 생성하기 위해 최적화됩니다.

https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_blocks.svg

 

각 부분은 작업에 따라 독립적으로 사용할 수 있습니다.

  • 인코더 전용 모델 : 문장 분류 및 명명된 엔터티 인식과 같이 입력에 대한 이해가 필요한 작업에 적합합니다.
  • 디코더 전용 모델 : 텍스트 생성과 같은 생성 작업에 적합합니다.
  • 인코더-디코더 모델 또는 시퀀스-시퀀스 모델 : 번역이나 요약 등 입력이 필요한 생성 작업에 적합합니다.

 

Attention layers

트랜스포머 모델의 핵심 특징은 Attention Layers 라는 특수 레이어로 구축되었다는 점입니다. 실제로 트랜스포머 아키텍처를 소개하는 논문의 제목이 “Attention Is All You Need”!  입니다. 주의 계층에 대한 자세한 내용은 강좌의 뒷부분에서 살펴보겠지만, 지금은 이 계층이 각 단어의 표현을 처리할 때 모델에 전달한 문장의 특정 단어에 주의를 기울이고 다른 단어는 다소 무시하도록 지시한다는 것만 알아두면 됩니다.

 

 

Transformer 모델 분류

모델 예시 작업
Encoder ALBERT, BERT, DistilBERT, ELECTRA, RoBERTa Sentence classification, named entity recognition, extractive question answering
Decoder CTRL, GPT, GPT-2, Transformer XL Text generation
Encoder-decoder BART, T5, Marian, mBART Summarization, translation, generative question answering

 


 

HuggingFace - Transformer 라이브러리

Transformer 모델은 일반적으로 매우 큽니다. 수백만에서 수십억 개의 매개변수가 있으므로 이러한 모델을 훈련하고 배포하는 것은 복잡한 작업입니다. 게다가 거의 매일 새로운 모델이 출시되고 각각 고유한 구현이 있으므로 모든 모델을 시도하는 것은 쉬운 일이 아닙니다.

 

🤗 Transformers 라이브러리는 이 문제를 해결하기 위해 만들어졌습니다. 그 목표는 모든 Transformer 모델을 로드, 학습, 저장할 수 있는 단일 API를 제공하는 것입니다. 라이브러리의 주요 기능은 다음과 같습니다.

  • 사용 편의성 : 추론을 위한 최첨단 NLP 모델을 다운로드, 로드하고 사용하는 작업은 단 두 줄의 코드로 완료할 수 있습니다.
  • 유연성 : 모든 모델의 핵심은 간단한 PyTorch nn.Module또는 TensorFlow tf.keras.Model클래스이며, 각각의 머신 러닝(ML) 프레임워크에서 다른 모델과 마찬가지로 처리할 수 있습니다.
  • 단순성 : 라이브러리 전체에서 추상화가 거의 이루어지지 않습니다. "All in one file"은 핵심 개념입니다. 모델의 포워드 패스는 단일 파일에 완전히 정의되어 코드 자체를 이해하고 해킹할 수 있습니다.

이 마지막 기능은 🤗 Transformers를 다른 ML 라이브러리와 상당히 다르게 만듭니다. 모델은 파일 간에 공유되는 모듈에 기반하지 않습니다. 대신 각 모델에는 자체 레이어가 있습니다. 모델을 더 접근하기 쉽고 이해하기 쉽게 만드는 것 외에도 다른 모델에 영향을 미치지 않고도 한 모델을 쉽게 실험할 수 있습니다.

 


 

[참고자료] - Transformer 작동원리 추가 스터디

Transformer는 어떻게 작동하나요?

https://huggingface.co/learn/nlp-course/chapter1/4?fw=pt

Illustrated: Self-Attention

https://towardsdatascience.com/illustrated-self-attention-2d627e33b20a

 

논문 - Attention Is All You Need

https://arxiv.org/abs/1706.03762

 

끝~