본문 바로가기
제품/AI

Transformer 모델

by 헬로웬디 2025. 12. 18.

요즘 우리가 사용하는 대부분의 인공지능 모델—ChatGPT, BERT, LLaMA, Qwen 같은 LLM—의 공통된 기반에는 Transformer 모델이 있습니다. Transformer는 단순히 "성능이 좋은 모델”을 넘어, 자연어 처리의 패러다임을 완전히 바꾼 구조라고 할 수 있습니다. 

 

본 글에서는 Transformer가 무엇인지 살펴보고, 실제 Hugging Face의 LLaMA 모델을 예시로 하여 Transformer를 구성하는 Neural Network 레이어들을 살펴볼께요. .

먼저 Transformer는 왜 등장했을까요?

Transformer 이전의 자연어 처리 모델은 주로 RNN(Recurrent Neural Network) 계열이었습니다. 기존 RNN 계열은,

 

  • 문장을 앞에서부터 순차적으로 처리
  • 문장이 길어질수록 앞부분 정보를 잘 잊음
  • 병렬 처리가 불가능해 학습 속도가 느림

과 같은 한계가 있었고, 이를 극복하기 위해 문장을 한 번에 보고, 중요한 관계만 골라보자 라는 발상에서 Transformer가 등장했습니다.

Transformer의 핵심 아이디어: Attention 

Transformer를 이해하는 가장 중요한 키워드는 Attention 입니다. 특히 self-attention은 문장 내 각 토큰이 “이 문장에서 나와 가장 관련이 깊은 다른 토큰은 무엇인가?”와 같은 질문을 스스로에게 던지는 과정입니다.

예를 들어,

나는 어제 먹은 사과가 맛있었다.

라는 문장에서, 

  • 맛있었다”는 “사과”와 강하게 연결되고,
  • “먹은” 역시 “사과”와 높은 연관성을 가지며,
  • “어제”는 “먹은”이라는 행위와 연결됩니다.

Transformer는 이러한 토큰 간 관계의 중요도를 수치로 계산하고, 중요한 관계에 더 많은 가중치를 부여합니다. 이 메커니즘이 바로 Self-Attention입니다.

Transformer는 문장을 어떻게 처리할까?

Transformer는 문장을 순서대로 읽지 않습니다. 대신 문장 전체를 동시에 처리합니다.

단어 → 숫자 벡터(Embedding) → Self-Attention → Feed Forward Network → (이 블록을 여러 층 반복)
  1. Embedding : 단어를 숫자 벡터로 변환, 의미가 비슷한 단어는 비슷한 위치에 매핑됨
  2. Self-Attention : 단어들 간의 관계 중요도를 계산, 문맥 이해의 핵심 단계
  3. Feed Forward Network : Attention 결과를 기반으로 정보를 정제, 모델의 표현력을 높이는 역할  

Qwen2 트랜스포머 아키텍처 이해하기

Hugging Face에서 출력한 Qwen2 모델 구조를 출력해 보고, 이를 = 바탕으로 Transformer 아키텍처가 실제로 어떻게 구현되어 있는지 살펴보겠습니다.

!pip install -q --upgrade bitsandbytes accelerate

from google.colab import userdata
from huggingface_hub import login
from transformers import AutoTokenizer, AutoModelForCausalLM, TextStreamer, BitsAndBytesConfig
import torch
import gc
from transformers import AutoModelForCausalLM, AutoTokenizer

#hugging face 로그인
hf_token = userdata.get('hugging')
login(hf_token, add_to_git_credential=True)

Qwen = "Qwen/Qwen2.5-1.5B-Instruct"

model = AutoModelForCausalLM.from_pretrained(Qwen, device_map="auto", torch_dtype=torch.float16)

model

 

model을 프린트해보면 다음과 같이 표시됩니다.

1. Embedding Layer

Embedding(151936, 1536)

어휘 크기(Vocab Size)가 151,936이고, 히든 차원(Hidden Size)이 1,536이라는 것은 각 토큰이 모델 내부에서 1,536개의 숫자로 이루어진 벡터로 변환된다는 의미입니다. 여기서 어휘 크기란 사전(dictionary)에 들어 있는 단어의 총 개수입니다. 즉 토크나이저가 151,936개의 서로 다른 토큰을 정의하고 있다는 뜻입니다.

 

여기서 중요한 질문은 다음과 같습니다.
“각 토큰마다 실제로 몇 개의 숫자가 입력으로 들어가며, 그 숫자들은 어떤 값의 범위를 가질까?”

입력으로 들어오는 것은 단순한 **토큰 ID(정수 하나)**이지만, Embedding 레이어를 통과하면 이 토큰은 1,536개의 실수 값으로 이루어진 벡터로 변환됩니다. 즉, 각 토큰마다 1,536개의 숫자가 모델에 입력되는 것입니다. 이 숫자들은 미리 정해진 값이 아니라,
모델이 학습 과정에서 획득한 **“해당 토큰을 가장 잘 표현한다고 판단한 값들”**입니다.
각 차원은 특정 의미를 명시적으로 갖고 있지는 않지만, 전체 벡터 공간에서 이 숫자들의 조합이 토큰의 의미, 문맥적 특성, 사용 패턴을 함께 담아내는 역할을 합니다. 정리하면, Transformer 모델은 입력으로 들어온 토큰들을 그대로 처리하는 것이 아니라,
각 토큰을 수천 개의 실수로 이루어진 고차원 벡터로 변환하여 자신이 이해할 수 있는 형태로 표현한 뒤, 이 벡터들을 기반으로 Attention과 MLP 연산을 수행하게 됩니다.

즉, Embedding은 “토큰 하나를 숫자 하나로 보는 단계”에서
“토큰 하나를 의미를 담은 수많은 숫자의 집합으로 확장하는 단계”라고 이해할 수 있습니다.

2. Decoder Layer 반복 구조

(0-27): 28 x Qwen2DecoderLayer

Qwen2는 총 28개의 Decoder Layer를 쌓아 올린 Decoder-only Transformer 모델입니다. 각 레이어는 동일한 구조를 가지며, 다음 세 가지 핵심 블록으로 구성됩니다.

3. Self-Attention 구조

q_proj: 1536 → 1536
k_proj: 1536 → 256
v_proj: 1536 → 256
o_proj: 1536 → 1536

 

  • Query는 전체 차원(1536)을 유지
  • Key / Value는 **저차원(256)**으로 투영

 

이는 Grouped Query Attention(GQA) 또는 Multi-Query Attention(MQA) 계열 설계로, 메모리 사용량과 연산 비용을 크게 줄이기 위한 구조입니다.

4. LM Head (출력 레이어)

Linear(1536 → 151936)
  • 각 위치의 hidden state를 어휘 전체에 대한 로짓(logits)으로 변환
  • 다음 토큰을 예측하는 언어 모델링의 최종 단계입니다.

Transformer는 문장을 어떻게 처리할까?

Transformer는 Encoder와 Decoder 두 부분으로 구성되는데요,

Encoder

  • 입력 문장을 이해하는 역할
  • 문장의 의미를 벡터 표현으로 변환

Decoder

  • Encoder의 결과를 바탕으로 새로운 문장을 생성
  • 예: 번역, 요약, 텍스트 생성

 

 

'제품 > AI' 카테고리의 다른 글

Hugging Face Transformers  (0) 2025.12.08
Ollama 설치부터 구글 Gemma 모델 실행까지  (0) 2025.12.07
AI 에이전트의 종류와 특징  (1) 2025.05.11