
- Transformer의 최적화 기법
- Attention의 최적화
- KV caching
- Motivation
- KV Caching 구조
- Local / Sparse attention
- Multi-query and grouped-Query Attention
- Multi-query attention
- Grouped-query attention (GQA)
- Flash attention
- Transformer Block 최적화
- Pre-normalization
- RMSNorm
- Positional Embedding
- Transformer Application
- Foundation Model
- BERT
- OpenAI GPT
- OpenAI GPT-2
- OpenAI GPT-3
- 아키텍처적인 최적화와 variation 기법들
- RoBERTa
- 1. 더 많은 데이터와 더 긴 훈련 시간
- 2. 다양한 배치 크기 및 학습률 조정
- 3. Dynamic Masking 적용
- 4. Next Sentence Prediction (NSP) 제거
- BART (Bidirectional and autoregressive Transformer)
- 주요 마스킹 방식
- BART의 아키텍처
- T5 (Text-toText Transfer Transformer)
- 모든 NLP 문제를 Text-to-Text 형태로 변환
- Modeling과 Training시의 효율 향상 방법
- Motivation
- DistillBERT
- ALBERT
- ELECTRA

Transformer 바닥부터 이해하기 - 1. Attention 이해하기
Attention의 내부를 뜯어보고 이해하기 위한 포스트를 작성합니다. Attention을 이해하기 위한 기반 지식Encoder-decoder ArchitectureAttention을 이해하기 위해서는 Encoder-decoder 아키텍처에 대해서 이해를 해
ray5273.tistory.com
Transformer 바닥부터 이해하기 - 2. Transformer 구조
Transformer 바닥부터 이해하기 - 1. Attention 이해하기Attention의 내부를 뜯어보고 이해하기 위한 포스트를 작성합니다. Attention을 이해하기 위한 기반 지식Encoder-decoder ArchitectureAttention을 이해하기 위
ray5273.tistory.com
앞선 두 글에 이어서 이번 포스트에서는 최적화 기법과 Transformer를 활용한 모델들을 살펴보려고 합니다.
Transformer의 최적화 기법
Transformer를 최적화하기 위한 중요한 영역은 바로 Attention layer입니다.
왜나면 attention 계산이 엄청 비싼 동작이기 때문입니다.
Attention의 최적화
핵심 아이디어는 4가지 정도 있습니다.
- KV Caching
- local/sparse attention
- multi-query and grouped-query attention
- flash attention
먼저 KV Caching입니다.
KV caching
Motivation
transformer LLM에는 두가지 사실이 있습니다.
1. 한번에 하나의 토큰만 생성한다. 즉, 병렬적이지 않다는 것입니다.

2. 생성된 출력 토큰은 다시 Prompt에 추가된 뒤 입력으로 사용된는 것입니다.

그래서 중복 되는 계산의 부분을 캐싱하자는게 핵심입니다.
이 방법은 기존의 컴퓨터에서도 많이 사용하던 방식이라서 익숙합니다.
KV Caching 구조
auto-regressive한 텍스트 생성에 효율을 증가시키는 디자인입니다.
이전에 계산된 토큰의 key 와 value 행렬을 캐싱합니다.

또한 너무 기본적인 동작이라서 일반적으로 caching은 enabled 되어있다고 합니다. (e.g. hugging face transformers)
Local / Sparse attention
sparse attention의 개념은 모든 단어/토큰에 대해서 attention을 하는게 아니라 가장 근처에 있는 몇개의 단어에 대해서만 attention을 하겠다는 것입니다.
그렇게 함으로써 관련있는 단어에만 집중하고 연산량을 줄일 수 있겠죠.

Multi-query and grouped-Query Attention
먼저 Multi-query attention을 보겠습니다.
Multi-query attention
이전 포스트에서 multi-head attention이라는것을 배웠었죠.
각 attention head가 개별적으로 QKV 행렬가지고 있는것입니다.
그에 반해 multi-query attention의 경우에는 조금 다른것은 key, value 행렬을 모든 head와 공유하겠다는 것이죠.
이렇게 해서 연산량을 줄이는 대신에 성능은 떨어질 수 있습니다.

Grouped-query attention (GQA)
모델 사이즈가 커짐에 따라서 multi-query attention은 너무 성능을 많이 떨어뜨리는 경향이 있었습니다.
그래서 GQA가 도입이 됩니다.
적당한 개수의 group을 나누어서 shared key,value 행렬을 공유하게하자가 바로 그 핵심입니다.

Flash attention
마지막으로 Flash attention인데 이 부분은 GPU의 SRAM와 HBM을 잘 써서 메모리 활용을 잘 하자는 개념입니다.
개념도만 포함하겠습니다.

.attention 다음에는 transformer block에 대한 최적화가 있습니다.
Transformer Block 최적화
2024년도의 Transformer도 처음의 transformer와 마찬가지로 동일한 구조를 가지고 있으나 각각의 component에 대한 최적화는 계속 진행되어왔습니다.

몇가지 방법론이 여기에 반영되었는데 하나하나씩 살펴 보겠습니다.
Pre-normalization
기존에는 normalize를 self-attention과 FFNN 이후에 넣었었는데 그러지 말고 그 전에 normalize를 하자는게 첫 번째 개념입니다.
아주 쉬운 방법인데 이 방법을 통해서 학습 초기에 매우 큰값이 발생하는 경우를 방지해 계산량을 줄여서 Training 시간을 줄이는데 목적을 두고 있습니다. (학습 속도가 빨라지고, 수렴 속도가 개선됩니다)

OpenAI의 GPT-2 및 GPT-3, Meta의 LLaMA 등 현대적인 대규모 모델들은 대부분 Pre-normalization 방식을 채택하고 있습니다.
RMSNorm
RMSNorm이라는것을 쓰는데요.
기존의 LayerNorm의 변형이라고 보면 됩니다.
기존의 LayerNorm의 계산 형태는 아래와 같습니다.

LayerNorm은 요약하자면 re-centering + re-scaling 하는것입니다.
- 근데 각 벡터의 평균을 빼는 작업으로 추가적인 연산에 부담이 있고
- 평균을 빼는 과정이 필수적인지에 대한 의문이 있었습니다.
그래서 그런 계산을 빼고 필요한 계산만하자는게 바로 RMSNorm입니다.
식은 아래와 같습니다.

아무튼 더 계산을 적게하면서 성능은 비슷하게 했다.
이것이 요약입니다.
Positional Embedding
그리고 Positional Embedding에서도 개선이 있었습니다.
Positional Embedding 방식에는 3가지 정도가 있습니다.
- absolute positional embedding (APE)
- 구현이 쉽습니다.
- 다만, 긴 입력에 대한 일반화가 어렵고
- 단어간 상대적 거리정보를 명시적으로 표현이 힘듭니다.
- relative positional embedding (RPE)
- 위치간 상대적인 관계를 명시적으로 모델링 가능합니다.
- 다만 연산이 많아집니다.
- rotary positional embedding (RoPE)
- 위의 두가지의 장점을 적절히 섞은 방식입니다.
행렬의 회전 계산을 이용해서 절대적 + 상대적인 위치를 둘 다 표현하자는것입니다.
PaLM (Google), GPT-Neo and GPT-J (Eleuther), LLaMA (Meta) 등의 많은 모델들에서 RoPE를 사용하고있습니다.
핵심 아이디어는 아래와 같습니다.
1. absolute PE와 같은 성질
아래와 같이 절대적인 위치를 표현할 수 있습니다.

2. relative PE와 같은 성질
아래와 같이 행렬 곱을 통해서 상대적인 위치를 계산할수도 있습니다.

요약하면 아래와 같이 표로 정리가 가능합니다.

그래서 이제는 이런 Transformer를 어떤식으로 만들어서 Transformer Application을 작성했는지를 알아 볼 시간입니다.
Transformer Application
결국은 Transformer를 사용해서 어떤 모델과 Application을 만들것인가가 중요합니다.
그러려면 먼저 Foundation Model에 대해서 이해해야합니다.
Foundation Model
Foundation Model의 개념은 아래와 같은 특징을 가지고 있습니다.
- Large
- Pre-trained
- General-purpose model 입니다.
예시로는 BERT, GPT, CLIP, LLAMA가 있죠.
1. self-supervised learning 방식으로 막대한 양의 데이터로 학습이 되었으며
2. 추가적인 tuning을 통해서 다른 downstream task들과 결합 될 수 있는 특징을 가지고있습니다.

그러면 발전의 흐름을 따라 가장 먼저 BERT에 대해서 알아보도록 하겠습니다.
BERT
BERT는 Bidirectional Encoder Representations from Transformers의 약자를 가지고 있습니다.
기존의 BERT 이전의 언어 모델은 단방향(한쪽 방향)으로만 문장을 학습했지만, BERT는 왼쪽과 오른쪽 문맥을 동시에 고려하는 '양방향(bi-directional)' 학습을 통해 더 정확한 문맥적 의미를 학습했습니다.
Pre-trained된 BERT 모델 + Fine Tuned 된 adaption layer를 사용한다는 것입니다.
바로 위의 Foundation Model + Adaption 구조가 바로 여기서부터 시작됐습니다.
그래서 BERT 논문의 중요성은 BERT에서 사용한 구조가 현재의 LLM들에 까지 영향을 줘서 그 구조가 아직까지 사용되고 있다는것입니다.
과정에 대해서 조금 더 서술하자면 아래와 같습니다.
1. BERT - pre-training
많은 양의 unlabeled 텍스트(책, wikipedia)들을 unsupervised learning을 통해서 모델을 학습합니다.

2. BERT - fine-tuning
특정 목적의 작업과 labeled data를 통해서 supervised learning을 합니다.
그래서 이 과정에서는 Foundation Model이 아니라 labeled data를 통해서 classifier만 학습하는 동작입니다.

당시 language model의 문제점으로 언급한것은
주로 auto-regressive하게 다음 단어를 예측한다는 점이었습니다.
그래서 한쪽 방향만으로 문맥 파악을 이해하기 힘들다는 점을 언급했습니다.
이를 해결하기위해서 BERT에서는 최초로 도입한 두가지 개념이 있습니다.
1. masked language model (MLM)
2. next sentence predition (NSP)
이 두가지를 pre-training에 도입했습니다.
Masked Language Model (MLM)
학습시에 문장 내 일부 단어를 가리고 (masking) 이를 예측 하도록 학습하는것입니다.

실제로는 BERT에 문장을 전달할때 아래와 같은 방식을 사용했습니다.
1. 각 단어에서 15%의 단어를 선택합니다.
2. 그 중 80%를 [MASK] token으로 교체하고
3. 그중 10%를 random word (아무 단어)로 교체합니다.
4. 나머지 10%는 그대로 둡니다.
이런 방식으로 학습하면 masked word를 예측하려는 시도를 학습도중에 하게 됩니다.
즉, non-masked word를 통해서 masked word를 예측하는 능력을 기르게 됩니다.
다음은 NSP입니다.
Next Sentence Prediction (NSP)
이 학습은 서로 다른 두 문장이 연결되는지를 학습하기 위함입니다.
즉, A, B 두 문장을 주면 A -> B로 이어지는게 자연스러운지를 판단하는것입니다.
이를 학습하기 위해서 학습 데이터를 아래와 같이 준비합니다.
1. 50%는 실제 제대로 작성된 문서에서 나온 2개의 문장 pair들
2. 나머지 50%는 random으로 선택된 2개의 pair들
이를 학습함으로써 1을 통해 맞는 문장의 흐름을 학습하고, 2를 통해서 잘못된 문장의 흐름을 학습하는거죠.
실제로 이런 input을 만들기 위한 처리의 예시는 아래와 같습니다.

CLS, SEP 토큰을 활용해서 문장의 처음과 끝을 구분하고
Segment Embedding을 통해서 각 단어가 몇번째 문장에 속하는지 추가하고
Positional Embedding을 통해서 각 단어의 위치를 반영할 수 있게 추가했습니다.
이런 학습을 통해서 BERT Foundation model을 만들 수 있고 이것에 더해서 fine-tuning을 하면
1. Classification
2. Question answering (QA)
3. Named entity recognition (NER)
4. Natural language inference (NLI)
들에 활용할 수 있습니다.

BERT 다음 발표된 Open AI GPT 모델입니다.
OpenAI GPT
GPT는 Generative Pre-trained Transformer의 약자입니다.
BERT와 마찬가지로 Transformer based 모델이고, pre-traning + supervised fine-tuning을 도입했습니다.
BERT와 GPT의 중요한 차이는
BERT는 encoder만 있는 bi-directional Transfomer이고
GPT는 decoder만 있는 left to right transformer입니다.
간단하게 BERT와 GPT를 비교하는 표를 그리자면 아래와 같습니다.

BERT는 left-to-right 모델을 저격한 구조이지만, 2025년 지금 보면 현재는 GPT 버전이 4.5까지 나왔죠.
대부분의 모델도 GPT-like 모델이 되어가고 있구요.
그래서 결국은 현재까지의 승자는 BERT가 아니라 GPT에 가깝다고 해석해도 무방할 것 같긴합니다.
OpenAI GPT-2
GPT2는 GPT의 scale-up 버전입니다.
parameter를 10배로 늘려서 150억개의 parameter, 그리고 학습 데이터도 10배로 늘려서 800만개의 web page를 학습시켰습니다.

OpenAI GPT-3
GPT3는 또 GPT2의 scale-up 버전입니다.
- 1750억개의 parameter (GPT2의 10배)
- 4990억개의 단어, 350GB의 GPU 메모리로 학습했습니다.
- 또한, few-shot learning으로 테스트 했습니다. (fine-tunig없이)
- GPT-3부터 인간이 쓴글 처럼 답변을 하기 시작했습니다.
GPT의 구조 변화를 대략적으로 아래와 같이 요약할 수 있습니다.

아키텍처적인 최적화와 variation 기법들
RoBERTa, BART, T5 라는것이 있습니다.
RoBERTa
RoBERTa(Robustly optimized BERT Approach)
기존의 BERT를 개선한것인데 개선 항목은 아래와 같습니다.
1. 더 많은 데이터와 더 긴 훈련 시간
BERT는 16GB의 텍스트 데이터(Corpus)로 학습했지만, RoBERTa는 160GB 이상의 데이터를 사용하여 학습했습니다.
더 많은 데이터를 활용함으로써 일반화 성능이 향상되었습니다.
2. 다양한 배치 크기 및 학습률 조정
RoBERTa는 매우 큰 배치(batch) 크기(최대 8K)를 활용하여 더욱 효과적인 사전 훈련을 수행했습니다.
3. Dynamic Masking 적용
BERT는 입력 데이터에 대해 한 번만 마스킹을 수행하지만, RoBERTa는 학습 도중에 마스킹 패턴을 동적으로 변경하여 더욱 일반화된 모델을 학습할 수 있도록 했습니다.
4. Next Sentence Prediction (NSP) 제거
BERT에서는 두 문장이 연속적으로 등장하는지 여부를 판단하는 NSP(Next Sentence Prediction) 태스크가 포함되어 있었습니다.
하지만 RoBERTa 연구 결과, NSP가 성능 향상에 기여하지 않는다는 점을 발견하여 이를 제거했습니다.
대신, 문장을 더 길게 구성하여 학습 데이터를 더 잘 활용했습니다.
BART (Bidirectional and autoregressive Transformer)
BART는 텍스트 복원(Text Reconstruction) 기반의 사전 훈련 방식을 사용하여 다양한 NLP 태스크에서 뛰어난 성능을 보입니다.
이를 위해 입력 문장을 인위적으로 손상시키고(corruption), 원래 문장을 복원하도록 학습합니다.
주요 마스킹 방식
- Token Masking: 일부 단어를 [MASK]로 가림 (BERT와 유사)
- Token Deletion: 랜덤한 단어를 완전히 제거
- Token Permutation: 문장 내 단어 순서를 임의로 변경
- Sentence Shuffling: 문장 내 단어가 아닌, 전체 문장의 순서를 섞음
- Text Infilling: 여러 연속된 단어를 [MASK]로 대체하여 복원하도록 학습
이러한 방식으로 손상된 문장을 원래 문장으로 복원하는 과정을 학습함으로써, BART는 다양한 텍스트 생성 및 이해 태스크에서 강력한 성능을 발휘합니다.
BART의 아키텍처
BART는 Transformer 기반의 인코더-디코더(Encoder-Decoder) 구조를 가집니다.
Encoder (BERT 스타일)
- 입력 문장을 양방향(Bidirectional)으로 인코딩
- 문맥(Context)을 풍부하게 이해할 수 있음
Decoder (GPT 스타일)
- 왼쪽에서 오른쪽(Left-to-Right) 방향으로 Auto-Regressive 방식으로 텍스트 생성
- Seq2Seq 태스크에 강함

T5 (Text-toText Transfer Transformer)
T5의 핵심 아이디어는 아래와 같습니다.
모든 NLP 문제를 Text-to-Text 형태로 변환
기존 NLP 모델들은 태스크마다 서로 다른 방식으로 모델을 훈련해야 했습니다.
예를 들어:
- 감성 분석 → 문장을 입력하고 "긍정"/"부정" 레이블 출력
- 질의 응답 → 질문과 문서를 입력하고, 정답 단어 출력
- 태스크 종류 : translation, Q&A, classification, summarization
하지만 T5는 모든 NLP 태스크를 "텍스트 입력 → 텍스트 출력" 형식으로 합니다.

Modeling과 Training시의 효율 향상 방법
Motivation
기본적인 Motivation은 바로 많은 데이터에 의한 큰 규모의 학습입니다.
- 연구자들은 모델의 파라미터 사이즈가 커짐에 따라서 성능이 향상하는것을 보았고
- 많은 데이터를 학습하면서 의도하지 않은 능력을 얻는것을 확인했기 때문입니다.
- 이는 "emergent abilities" 라고 불립니다.
- 임계점을 넘으면 갑자기 성능이 급격히 좋아지는 현상입니다.;
이와 관련된 교수님과의 질의응답
Q1. OpenAI에서 지금도 model 사이즈에 대한 scaleup을 시도하고 있는것인지?
A1. 아직 데이터가 있으니 성능을 더 향상 시킬수 있다고 예상한다고 함.
Q2. 인터넷에 존재하는 Text 데이터는 다 학습해버려서 고갈됐다고 알려졌는데 Scale-up이 가능한 상황은 맞는지?
A2. 있는 데이터를 또 다른 방식으로 변형해서도 많이 학습한다고함. 또한, Video, RL의 데이터는 아직 많이 남아서 더 학습할 여지가 있을것
O1. (제 의견) 샘 알트먼이 여러 회사들과 협업하려는 동작 자체가 새로운 데이터를 추가하기 위함으로 생각됨. (카카오, 삼성 등의 회사들과 협업)
교수님의 의견
GPT로 생성한 데이터로 학습을 하면 결과가 이상해 진다는 실험 결과도 있었음.
이 과정에서의 이슈는 Training과 inference cost가 기하 급수적으로 늘어난다는 것입니다.

그래서 어떤 방식으로 model 사이즈를 효율적으로 줄일 수 있는가가 중요한 이슈입니다.
그것에 대한 해결을 몇가지 가져왔습니다.
DistillBERT
기존 성능에서 97% 의 성능을 내면서 모델 사이즈는 60%로 줄인 방법입니다.
목표는 아래와 같습니다.
- Distillation Loss (L_ce) → Teacher Model의 확률 분포를 학습,
- Cosine Embedding Loss (L_cos) → Teacher와 Student의 Hidden Representation을 유사하게 유지,
- MLM Loss (L_MLM) → BERT의 Masked Language Model 학습 방식 유지.
이를 통해 모델 크기는 40% 감소, 속도는 60% 증가, 성능은 97% 유지하여 실시간 NLP 애플리케이션에 적합합니다.

ALBERT
BERT의 성능을 유지하면서 더 가볍고 효율적인 버전으로 설계된 모델입니다.
주요 최적화 기법은
- Parameter Sharing → Transformer 레이어 간 가중치를 공유해 모델 크기 감소,
- Factorized Embedding → 임베딩 차원을 줄여 학습 효율 향상,
- Sentence-Order Prediction (SOP) → BERT의 NSP보다 더 효과적인 문장 관계 학습.
이로 인해 메모리 사용량과 연산 비용이 감소하면서도 성능은 BERT와 동등하거나 향상되어 대규모 NLP 모델 학습에 적합합니다
조금 더 적자면 SOP에 대해서 적어보겠습니다.
Sentence-Order Prediction (SOP)는 ALBERT가 도입한 새로운 사전 학습 목표입니다.
- BERT의 Next Sentence Prediction (NSP)보다 더 효과적으로 문장 관계를 학습하도록 설계되었습니다.
- NSP는 서로 다른 주제의 문장도 연속된 문장으로 예측할 가능성이 있어 비효율적인 반면,
- SOP는 동일한 문서에서 연속된 문장(Positive)과 순서를 바꾼 문장(Negative)을 분류하는 방식으로 학습합니다.
- e.g. A -> B 문장을 B -> A로 순서만 뒤집어서 학습
- 이를 통해 문장 간 논리적 연결을 더 정확하게 모델링할 수 있어 문장 이해 성능이 향상됩니다.
ELECTRA
ELECTRA (Efficiently Learning an Encoder that Classifies Token Replacements Accurately)는 BERT보다 더 효율적인 사전 학습 방식을 도입한 모델입니다.
주요 특징은
- Replaced Token Detection (RTD) → MLM 대신 생성된(fake) 토큰을 식별하는 태스크를 학습,
- Generator-Discriminator 구조 → 작은 Generator가 가짜 토큰을 생성하고, 큰 Discriminator가 이를 판별,
- Sample Efficiency → 전체 토큰을 학습하여 BERT 대비 같은 계산량으로 더 많은 학습 효과를 제공.
이로 인해 ELECTRA는 BERT보다 빠르게 학습하면서도 성능은 동등하거나 우수하여 효율적인 NLP 모델로 활용됩니다.

'CS 지식 > AI 관련' 카테고리의 다른 글
Transformer 바닥부터 이해하기 - 2. Transformer 구조 (1) | 2025.03.09 |
---|---|
Transformer 바닥부터 이해하기 - 1. Attention 이해하기 (0) | 2025.03.08 |
Word Embedding에 관련된 질문 그리고 해답 찾기 (0) | 2025.03.05 |
Effective LLMs and MoE (Mixture of Experts) (0) | 2025.02.12 |
Transformer 바닥부터 이해하기 - 0. Transformer 이전의 NLP 역사들 (0) | 2025.02.12 |
개발 및 IT 관련 포스팅을 작성 하는 블로그입니다.
IT 기술 및 개인 개발에 대한 내용을 작성하는 블로그입니다. 많은 분들과 소통하며 의견을 나누고 싶습니다.