트랜스포머·PEFT 2일 과정5장 · Decoder-only LLM과 학습 단계10 / 15← 이전목차다음 →MetaContents

5장. Decoder-only LLM과 학습 단계

1일차 정리

요리 학원 첫날을 마치며 칼질, 불 조절, 양념, 소스를 배운 뒤 마지막에 완성 요리 한 접시를 맛본 것과 같습니다. 1장의 벡터와 행렬부터 4장의 Decoder 까지 배운 부품을 모두 모으면, 이 장의 Qwen 같은 Decoder-only LLM 한 접시가 됩니다.

준비 수학, 입력 표현, Attention, Decoder, LLM 의 다섯 칸으로 1일차를 한 줄로 이은 흐름도

그림의 다섯 칸이 1장부터 5장까지의 순서입니다. 각 칸의 부품이 Qwen 의 print(model) 어딘가에 들어 있습니다. 행렬곱은 모든 Linear 에, 토큰과 임베딩은 embed_tokens 에, Attention 은 self_attn 에, Masked 는 Decoder 블록 안에 있습니다.

1일차 핵심

구분핵심 내용
RNN·Seq2Seq 의 한계순차 계산으로 병렬화가 어렵고, 고정 길이 벡터 병목과 장거리 의존성 문제가 있음
Attention·Transformer필요한 위치를 가중치로 골라 참고하며, 모든 단어 쌍을 행렬곱으로 한 번에 계산(softmax(QKᵀ / √d_k) V)
입력 표현토큰화 → 정수 ID → 임베딩 + 위치 정보
Encoder·Decoder 블록Attention 과 FFN 사이에 Add & Norm. Decoder 는 Masked Self-Attention 과 Cross-Attention 을 추가
Decoder-only LLMCross-Attention 없이 Decoder 블록만 쌓아 다음 토큰 예측으로 학습(GPT, Qwen)
학습과 추론학습은 정답을 넣고 위치별로 병렬 계산, 추론은 토큰을 하나씩 이어 생성
업무 적용 방법Prompt / RAG / Fine-tuning 을 목적에 맞게 조합

노트북은 1일차를 세 줄로 줄입니다. Transformer 는 단어 간 관계를 Attention 으로 계산합니다. Decoder-only LLM 은 Causal Mask 로 다음 토큰을 예측하도록 대규모로 학습합니다. 2일차에는 SFT 데이터 구성, LoRA 파인튜닝, 평가를 합니다.

짧은 예시

Python
# 문장 하나(토큰 10개)가 Qwen 안에서 지나가는 모양(shape)을 숫자로만 따라간다
n_tokens, hidden, vocab, layers = 10, 896, 151936, 24

steps = [
    ("토큰 ID", (n_tokens,)),                 # 2차시: 토큰화
    ("임베딩", (n_tokens, hidden)),           # 2차시: 번호 → 896칸 성격표
    (f"Decoder {layers}층", (n_tokens, hidden)),  # 3~4차시: Attention + FFN, 모양은 그대로
    ("lm_head", (n_tokens, vocab)),           # 5차시: 위치마다 다음 토큰 점수 151,936개
]
for name, shape in steps:
    print(f"{name:>12}: {shape}")
# 결과:
#        토큰 ID: (10,)
#         임베딩: (10, 896)
#   Decoder 24층: (10, 896)
#      lm_head: (10, 151936)

이 코드가 뜻하는 것

요리 한 접시가 만들어지는 동안 그릇 크기가 어떻게 바뀌는지만 적어 본 것입니다. 1장에서 연습한 shape 따라가기를 실제 Qwen 의 숫자로 했습니다. 24층을 지나는 동안 모양은 (10, 896) 그대로입니다. 그래서 같은 블록을 몇 층이든 쌓을 수 있습니다.

줄하는 일쉽게 말하면
(n_tokens,)토큰 번호 10개상품 번호 열
(n_tokens, hidden)토큰마다 896칸행 10개, 열 896개인 표
(n_tokens, vocab)위치마다 후보 151,936개의 점수다음 토큰 점수표

생성할 때는 마지막 행(10번째 위치)의 점수표에서 다음 토큰 하나를 골라 붙이고, 다시 처음부터 계산합니다. 이것이 "추론은 토큰을 하나씩 이어 생성"의 뜻이고, 6장에서 generate 로 직접 봅니다.

주의할 점

  • 4장의 번역기는 Encoder-Decoder 였고, Qwen 은 Decoder-only 입니다. 둘 다 Decoder 를 쓰지만 Qwen 에는 Cross-Attention 이 없다는 점을 섞어 기억하지 않습니다.
  • 2일차의 코드는 GPU 가 있어야 제대로 돕니다. 1일차의 Qwen 구조 보기는 CPU 로도 되지만, 생성과 학습은 CPU 로 매우 느립니다. 설치 안내를 보고 GPU 환경(또는 Colab T4)을 미리 준비합니다.
← 이전 절5장 · Prompt, RAG, Fine-tuning 고르기다음 절 →5장 · 실습 지도