생각하는 아져씨

[Coursera] Pre-training LLM 구별하기 본문

Machine & Deep Learning/Generative AI

[Coursera] Pre-training LLM 구별하기

azeomi 2023. 8. 16. 13:01

앤드류 응 교수님의 강의를 듣고 정리 및 공부한 글임을 알려드립니다.

Generative AI with LLMs

In Generative AI with Large Language Models (LLMs), created in partnership with AWS, you’ll learn the fundamentals of how generative AI works, and how to deploy it in real-world applications.

 

 

Generative AI 프로젝트 시작하기 전에

 

Large Language Models(이하 LLMs)를 활용해 어떤 Generative AI 프로젝트를 시작할 때 가장 먼저 하는 것은 주제를 정하는 것입니다.

Use case를 정의하고 application 속에서 LLM이 작동해야 하는 방식까지 계획했다면 이제 그 동작에 적합한 모델을 선택해야 합니다.

Your next step is to select a model to work with!

 

우리는 이미 존재하는 모델을 사용할 수도 있고 직접 처음부터 학습하는 방법을 선택할 수도 있습니다.

Using existing model VS Train own from scratch

수행해야 하는 Task에 따라 선택방법이 달라지게 되므로 Transformer의 다양한 변형 모델이 어떤 Task에 적합한지 파악할 수 있다면 Hugging Face 또는 Pytorch를 사용해 use case에 적합한 모델을 찾고 활용할 수 있습니다. 😙

 

LLM의 pre-training 살펴보기

 

적합한 모델을 파악하기 전에 LLM의 초기 학습 프로세스에 대한 기초를 복습해봅니다. 이 과정을 바로 Pre-training이라고 합니다.

LLMs은 구조화 되지 않은(unstructure) 방대한 textual data로부터 학습하는 “pre-training”을 과정을 거치게 되고 그 결과로 Language의 deep statistical representation을 Encode 할 수 있게 됩니다.

따라서 위 표처럼 Encoder는 각각의 토큰에 대해 embedding 또는 Vector representation을 만들어냅니다.

만약 나만의 pre-train 모델을 만들고 싶다면 주의할 점이 있습니다.

인터넷과 같은 공공 사이트에서 Train dataset을 수집할 때는 Data Quality Filtering을 거쳐야 합니다. Bias나 유해한 내용은 제거해서 데이터 품질을 높이면 학습 데이터셋의 토큰 중 1-3%만 pre-training에 사용됩니다.

따라서 이 양을 고려해 데이터를 수집해야 합니다.😙

 

Transformer 의 변형 모델들

저번 포스팅에서 간략하게 설명했던 Transformer 모델의 3개 변형을 살펴봅니다.

  • Encoder only
  • Encoder-Decoder
  • Decoder only

→ 각각의 모델은 서로 다른 Objective로 훈련되고 다른 Task에 동작하도록 학습합니다.

 

1. Encoder only models (Autoencoding)

Autoencoding model 이라고도 불립니다. Masked Language Modeling을 사용해 사전학습되는 모델입니다.

입력 시퀀스의 토큰이 랜덤으로 마스킹되면, training objective는 original sentence를 재구성하기 위해 마스크 토큰을 예측하는 것입니다. 이 작업을 denoising obejctive라고 부릅니다.

Autoencoding model은 입력 시퀀스의 양방향(bi-directional) 표현을 학습해서 앞에 오는 단어뿐만 아니라 전체 문맥을 이해하도록 합니다. 따라서 Encoder-only 모델은 양방향 context의 이점을 활용하는 task에 적합합니다.

대표적으로 다음 use case에 활용될 수 있습니다. 👍

좋은 Use cases:

  • sentence classification
  • sentiment analysis
  • named entity recognition (token-level tasks)
  • word classification(token-level tasks)

예시 모델:

  • BERT
  • RoBERTa

 

2. Decoder-only models (Autoregressive)

Autoregressive model 라고도 합니다. Causal language modeling을 사용해 사전학습 됩니다.

여기서 training objective 는 이전 토큰 시퀀스를 기반으로 다음 토큰을 예측하는 것입니다.

Decoder 기반 autoregressive 모델은 입력 시퀀스를 마스킹하여 해당 토큰까지 이어지는 입력 토큰만 볼 수 있습니다.

그래서 이 모델은 문장의 끝 부분에 대한 정보가 없는 채로 입력 시퀀스를 하나씩 반복하여 다음 토큰을 예측하는 방식입니다.

즉, 앞의 Encoder-only 모델과 달리, Context가 양방향이 아닌 단방향(unidirectional)입니다. 방대한 example로부터 다음 토큰을 예측하도록 학습함으로써 언어의 statistical representation을 구축하게 됩니다.

대표적으로 다음 use case에 활용될 수 있습니다.👍

좋은 Use cases

  • Text generation
  • Other emergent behavior
    • Larger decoder-only models는 zero-shot inference에도 강하기 때문입니다.

예시 모델:

  • GPT
  • BLOOM

 

3. Encoder-Decoder models (Sequence-to-Sequence)

Sequence-to-Sequence 으로도 불립니다. 널리 사용되는 모델에는 T5가 있습니다.

T5 같은 경우, 입력 토큰의 무작위 시퀀스를 뽑아 마스킹하는 Span corruption을 사용해서 인코더를 사전학습 합니다. 그런 다음 이러한 대량 시퀀스는 고유한 Sentinel token으로 대체되며, 여기서는 <x>로 표시됩니다.

Sentinel token은 vocabulary에 추가된 특수 토큰이지만 입력 텍스트의 실제 단어와 일치하지 않습니다.

이후 디코더는 마스크 토큰 시퀀스를 auto-regressively로 재구성하는 작업을 수행합니다.

출력은 sentinel token과 그 뒤에 예측된 토큰으로 나옵니다.

대표적으로 다음 use case에 활용될 수 있습니다.👍

좋은 Use cases:

  • Translation
  • Text summarization
  • Question Answering

모델 예시:

  • T5
  • BART

자, 이제 다양한 모델 아키텍처가 어떻게 학습되는지, 어떤 Task에 적합한지 살펴보았으므로 use case에 가장 적합한 모델 유형을 선택할 수 있습니다.

 

점점 커지는 LLMs

한 가지 염두에 두어야 할 점 : 아키텍처의 규모가 큰 모델일수록 일반적으로 작업을 더 잘 수행할 수 있다는 것

연구자들은 모델이 클수록 추가적인 상황별 학습이나 추가 교육 없이도 필요한 대로 작동할 가능성이 높다는 사실을 발견했습니다. 규모가 커질수록 모델 성능이 향상되는 이러한 추세는 최근 몇 년 동안 점점 더 큰 규모의 모델 개발을 촉진했습니다.

다음 3가지로 이렇게 성장할 수 있었죠!

  • 트랜스포머의 도입
  • 방대한 데이터셋 접근
  • 강력한 컴퓨팅 파워

모델 크기가 꾸준히 증가함에 따라 일부 연구자들은 LLM에 대한 새로운 무어의 법칙이 존재한다는 가설을 세우기도 했습니다.

그렇다면, 파라미터를 계속 추가하여 성능을 높이고 모델을 더 똑똑하게 만들 수 있을까요? 이러한 모델 성장은 어디로 이어질 수 있을까요?

그럴듯하게 들릴지 모르지만, 이러한 거대한 모델을 훈련하는 것은 어렵고 비용이 많이 들기 때문에 점점 더 큰 모델을 지속적으로 훈련하는 것은 불가능할 수도 있습니다