Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

2장. AI는 도대체 어떻게 글자를 만들어내는가

이 장의 목표 ChatGPT나 로컬 AI가 “어떻게 사람처럼 글을 쓰는지” 그 원리를 큰 그림으로 이해합니다.

수학은 안 나옵니다. 대신 앞으로 이 책에서 만날 모든 용어가 여기서 한 번씩 미리 등장합니다.


2.1 AI는 “생각“하지 않습니다. “예측“합니다

먼저 충격적인 사실 하나.

ChatGPT도, Claude도, 우리가 받을 로컬 모델도 문장을 “생각해서” 쓰는 게 아닙니다.

이들이 실제로 하는 일은 딱 하나입니다.

“지금까지의 글자를 보고, 그 다음에 올 가장 그럴듯한 글자를 골라라.”

그게 전부입니다.

예를 들어 여러분이 이렇게 입력했다고 합시다.

오늘 날씨는

모델은 속으로 이런 생각을 합니다.

다음에 올 단어로 뭐가 제일 그럴듯할까?

  "맑습니다"  → 가능성 35%
  "흐립니다"  → 가능성 22%
  "춥습니다"  → 가능성 15%
  "비가"      → 가능성  9%
  "치킨"      → 가능성  0.01%
  ...

이 중에서 하나를 골라 출력합니다.

오늘 날씨는 맑습니다

그러고는 끝이 아니라, 방금 자기가 출력한 글자까지 포함해서 다시 다음을 예측합니다.

오늘 날씨는 맑
   ↓
다음은? → "습"

오늘 날씨는 맑습
   ↓
다음은? → "니"

오늘 날씨는 맑습니
   ↓
다음은? → "다"

이걸 끝없이 반복합니다.

이게 다입니다.


2.2 “그게 어떻게 지능이 되죠?”

처음 들으면 다들 이렇게 반문합니다.

“고작 다음 글자 맞히기인데 어떻게 코딩하고, 번역하고, 농담까지 하지?”

핵심은 이겁니다.

다음 글자를 진짜 잘 맞히려면, 그 앞 문장의 의미를 이해해야 합니다.

예를 들어 보겠습니다.

A: "어제 회의 어땠어요?"
B: "사장님이 화나셔서 분위기가 ___"

빈칸에 올 단어를 진짜로 잘 맞히려면 뭘 알아야 할까요?

  • “회의“가 뭔지 알아야 하고
  • “사장님이 화나셨다“가 부정적 상황이라는 걸 알아야 하고
  • 한국어 어법을 알아야 하고
  • “분위기“라는 단어 뒤에 자주 오는 표현을 알아야 합니다

이걸 다 종합해야 “얼어붙었어요” 같은 그럴듯한 답이 나옵니다.

즉:

“다음 글자 잘 맞히기“라는 단순한 과제를 진짜 잘하려면, 결과적으로 세상을 이해하게 됩니다.

이게 LLM의 신기한 성질입니다.

아주 단순한 과제를 아주 많은 글에 대해 아주 큰 규모로 시켰더니, 부산물로 지능 비슷한 게 생겼습니다.


2.3 토큰 — 모델이 진짜로 다루는 단위

방금 “다음 글자“라고 했는데, 사실 모델은 글자 단위로 다루지 않습니다.

토큰(token) 이라는 단위로 다룹니다.

토큰은 글자보다는 크고 단어보다는 작은 조각입니다.

영어 예시:

"unbelievable"
     ↓
[ "un", "believ", "able" ]

한국어 예시:

"오늘 날씨는 맑습니다"
     ↓
[ "오늘", " 날씨", "는", " 맑", "습니다" ]

모델마다 토큰을 쪼개는 방식이 다릅니다. 같은 문장이어도 모델이 다르면 토큰 수가 다릅니다.

지금 단계에서 기억할 건 이거 하나입니다.

모델이 보는 세상은 “글자“가 아니라 “토큰“입니다.

토큰은 3장에서 더 깊이 봅니다.


2.4 그러면 이 모델은 어떻게 만들어졌나?

여기서부터가 정말 중요합니다.

같은 “다음 토큰 예측 기계“인데 어떤 모델은 멍청하고 어떤 모델은 똑똑한 이유,

그리고 같은 모델인데도 “Base”, “Instruct”, “Chat” 같은 여러 버전이 존재하는 이유가 여기서 결정됩니다.

LLM은 보통 3단계를 거쳐서 만들어집니다.

[1단계] 사전학습  →  세상의 글을 다 읽음
   ↓
[2단계] 지도학습  →  "이런 질문엔 이렇게 답해" 가르침
   ↓
[3단계] 정렬학습  →  "이런 답은 좋고, 이런 답은 나쁘다" 교정

하나씩 봅니다.

1단계 — 사전학습 (Pre-training)

인터넷의 거의 모든 글을 보여주고 “다음 토큰을 맞혀라” 라고 시키는 단계입니다.

  • 위키백과
  • 책, 논문
  • 코드 저장소(GitHub)
  • 뉴스 기사
  • 포럼, 블로그

이런 글을 수조 개 토큰 단위로 읽힙니다.

이 단계는 돈과 시간이 어마어마하게 듭니다. GPU 수천 장을 몇 달 동안 돌립니다.

이 단계를 마친 모델을 Base 모델 이라고 부릅니다.

Base 모델의 특징:

  • 글은 그럴듯하게 잇습니다
  • 그런데 질문에 답을 잘 못합니다
  • “한국의 수도는?” 이라고 물으면 “한국의 수도는?” 으로 이어 쓸 수도 있습니다
  • 그냥 다음 토큰만 맞히는 데 익숙해서요

즉 Base 모델은 재료입니다. 바로 쓰기엔 아직 다듬어지지 않은 상태입니다.

2단계 — 지도학습 (SFT, Supervised Fine-Tuning)

이번에는 “질문 ↔ 모범 답안” 쌍을 잔뜩 보여줍니다.

질문: 한국의 수도는?
답:   서울입니다.

질문: 다음 코드를 설명해줘. ...
답:   이 코드는 ...

사람이 직접 쓴 모범 답안이거나, 다른 좋은 AI가 만든 답안을 사용합니다.

이 과정을 거치면 모델은 점점:

  • “질문이 오면 답을 한다”
  • “지시가 오면 따른다”

는 패턴을 익히게 됩니다.

이 단계를 거친 모델을 Instruct 모델 또는 Chat 모델 이라고 부릅니다.

우리가 ChatGPT에서 익숙하게 보는 “질문하면 답하는 모델” 이 단계까지 와야 만들어집니다.

3단계 — 정렬학습 (Alignment, RLHF 등)

마지막으로 모델에게 취향과 매너를 가르칩니다.

같은 질문에 대해 모델이 답안 A, B 두 개를 만들었을 때, 사람이 평가합니다.

질문: "내가 회사에서 화났는데 어떡하지?"

답안 A: "그냥 다 때려쳐."
답안 B: "잠깐 자리를 비우고 산책을 권합니다.
         이유는 ..."

→ 사람: B가 더 좋음

이런 비교를 수십만 번 시켜서 모델을 교정합니다.

이 단계에서 모델은 이런 걸 배웁니다.

  • 위험한 요청은 거절한다
  • 정중하게 답한다
  • 모르면 모른다고 한다
  • 너무 길거나 짧지 않게 답한다

이 단계가 약하면 모델이 막말을 하거나, 이상한 답을 자신만만하게 합니다.

이 단계가 너무 세면 멀쩡한 질문에도 자꾸 거절합니다.

이걸 alignment(정렬) 이라고 부릅니다.

영어로는 보통 RLHF (Reinforcement Learning from Human Feedback) 또는 DPO 같은 기법으로 합니다.

지금은 이름까지 외울 필요는 없습니다.


2.5 그래서 모델 이름이 그렇게 복잡했던 거구나

Hugging Face 같은 사이트에서 모델을 찾으면 이런 이름을 자주 봅니다.

Qwen3-32B
Qwen3-32B-Instruct
Qwen3-32B-Chat

이제 차이를 짐작할 수 있을 겁니다.

이름어디까지 왔는가쓸 만한가
Qwen3-32B (Base)1단계까지만대화용으로는 ❌
Qwen3-32B-Instruct1+2단계대화용으로 ✅
Qwen3-32B-Chat1+2+3단계대화용으로 ✅

초보자 기준 한 줄 결론 모델을 받을 때는 거의 항상 Instruct 또는 Chat 이 붙은 걸 받으면 됩니다.

Base는 “재료“라서 그대로 쓰면 답이 이상하게 나옵니다.

이 얘기는 9장에서 다시 자세히 다룹니다.


2.6 그럼 “32B” 이런 숫자는 뭐죠?

자주 보는 표기입니다.

Qwen3-32B
Llama-3-70B
Gemma-3-27B

BBillion(10억) 이라는 뜻이고, 모델 안에 들어있는 “숫자(파라미터)“의 개수를 가리킵니다.

7B    →  약 70억 개
14B   →  약 140억 개
32B   →  약 320억 개
70B   →  약 700억 개

파라미터는 모델이 학습하면서 결정한 가중치 숫자들입니다.

쉽게 말하면:

모델 안에 있는 “세상에 대한 지식이 적힌 숫자 메모” 가 몇 개냐.

  • 숫자가 많을수록 보통 더 똑똑합니다
  • 숫자가 많을수록 더 무겁습니다
  • 숫자가 많을수록 더 큰 메모리가 필요합니다

이 숫자가 왜 메모리와 직결되는지는 4장 에서 직접 계산해봅니다.


2.7 한 장면 요약

지금까지를 한 그림으로 정리하면 이렇게 됩니다.

                ┌─────────────────────┐
                │  내가 입력한 글자    │
                └──────────┬──────────┘
                           │
                ┌──────────▼──────────┐
                │  토큰으로 쪼갬       │   ← 2.3절
                └──────────┬──────────┘
                           │
                ┌──────────▼──────────┐
                │  모델이 "다음 토큰"  │   ← 2.1절
                │   예측              │
                └──────────┬──────────┘
                           │
                ┌──────────▼──────────┐
                │  방금 만든 토큰을    │
                │  다시 입력에 붙임    │   ← 2.1절
                └──────────┬──────────┘
                           │
                       (반복)
                           │
                ┌──────────▼──────────┐
                │  최종 답변           │
                └─────────────────────┘

그리고 이 “모델“은 사실

[Base] 사전학습   →  글을 잘 잇는 기계
       ↓
[+SFT] 지도학습   →  질문에 답하는 기계
       ↓
[+정렬] 정렬학습  →  안전하고 매너 있는 기계

이 단계를 거쳐 만들어진 결과물입니다.


이 장에서 기억할 한 가지

LLM은 “다음 토큰을 예측“하는 기계입니다.

다만 그 단순한 과제를 인터넷 규모로 시키고(=사전학습), 질문/답 형태로 다듬고(=SFT), 사람 취향에 맞게 정렬(=alignment) 했더니 결과적으로 우리가 보는 ChatGPT가 됐습니다.

그래서 모델을 받을 때 Base / Instruct / Chat 같은 꼬리표가 붙고, 7B / 14B / 32B 같은 크기가 붙는 겁니다.


손으로 해볼 것

이번에도 가볍게 두 가지만 해보세요.

1. 토큰 직접 보기

브라우저에서 다음 사이트에 들어가 보세요.

tiktokenizer.vercel.app

(실시간으로 문장을 토큰으로 쪼개주는 사이트입니다. 가입은 필요 없습니다.)

거기에 다음 문장을 그대로 넣어보세요.

나는 오늘 회사에서 ollama로 로컬 AI를 처음 돌려봤다.

영어 문장도 한 번 넣어보세요.

I tried running a local AI model on my Mac for the first time today.

같은 길이의 한국어가 영어보다 토큰이 더 많이 쪼개진다는 걸 보게 될 겁니다.

이게 나중에 “왜 한국어는 더 느린가“의 이유가 됩니다.

2. 모델 한 개 이름 뜯어보기

Hugging Face에서 아무 모델이나 골라보세요. 예: Qwen3-30B-A3B-Instruct-2507

이름을 보면서 머릿속으로 답을 만들어보세요.

  • 이건 Base인가, Instruct인가, Chat인가?
  • 파라미터는 몇 B인가?
  • 회사에서 그대로 쓸 만한가? (직감으로)

답이 안 나와도 괜찮습니다. 앞으로 11장(모델 이름 해독법)까지 가면 자연스럽게 다 풀립니다.


다음 장에서는 “토큰“과 “파라미터“를 본격적으로 숫자와 함께 봅니다.

“내 맥의 메모리 64GB에 32B 모델이 들어가긴 하는 건가?” 같은 질문에 직접 답할 수 있게 됩니다.