통계 실험실 차트
넘스탯 로고
넘스탯
LEARN · SIMULATE · VERIFY

확률부터 LLM까지, 원리부터 제대로 배우는 자기주도 학습 플랫폼

로그인
학습 메뉴
도움말

miniLLM 실행실 — 밑바닥부터 LLM 만들기

디코더 아틀라스와 같은 구조를 진짜로 학습한 160M 한국어 모델 — 파이프라인·학습 곡선·토크나이저·브라우저 생성까지

원하는 개념·랩·가이드를 검색해보세요

Ctrl K
LLM 실습실로먼저 디코더 아틀라스 (구조를 숫자로)

"LLM은 어떻게 만들어지나요?"에 그림 대신 실제 로그와 실제 모델로 답하고 싶다면

디코더 아틀라스가 가중치 없는 구조를 보여줬다면, 여기서는 학습된 가중치가 어떻게 만들어지고 무엇을 하는지를 봅니다. RTX 4080 한 장으로 직접 학습한 160M 파라미터 한국어 모델(miniLLM)의 파이프라인·로그·GGUF 파일을 그대로 가져왔고, 생성은 llama.cpp의 WebAssembly 빌드가 브라우저 안에서 CPU만으로 수행합니다 — 서버로 아무것도 보내지 않습니다.
이 페이지에서 배우고 나면
  • 데이터 정제 → 토크나이저 → 사전학습 → SFT → DPO → 배포, 여섯 공정이 각각 무엇을 하고 왜 필요한지 카드 하나씩 열어 봅니다.
  • 손실이 ln(65,536)=11.1에서 2.27까지 떨어지는 실제 학습 곡선(14.5시간, 19.6억 토큰)과 학습률·처리량·DPO 선호정확도를 마우스로 읽습니다.
  • 176MB 모델을 브라우저에 올려 토큰별 확률을 보며 생성합니다 — 디코더 아틀라스의 ⑨단계가 실제 모델에서 반복되는 모습입니다.
예측 먼저 — 실험 전에 답을 정해 보세요
예측 → 실험 → 확인

정답을 몰라도 괜찮습니다 — 먼저 예측을 정해야 시뮬레이션 결과가 기억에 남습니다. 예측을 고른 뒤 아래 시뮬레이션으로 직접 확인하고, 그다음 결과를 열어 보세요.

1. 사전학습만 끝난 base 모델에 "한국의 수도는?"이라고 물으면 어떻게 될까요?
2. 학습 곡선이 손실 11.1 근처에서 시작합니다. 이 숫자의 정체는?
로그인하면 예측 기록이 계정에 저장됩니다

어느 기기에서든 이어서 학습하고, 오답 기반 복습 추천을 받을 수 있습니다.

카카오로 시작하기네이버로 시작하기구글로 시작하기
회원가입 절차 없음 — 닉네임만 저장하며, 이메일·연락처는 수집하지 않습니다.
FROM TOY TO REAL · MINI LLM — 밑바닥부터 LLM 만들기
같은 구조를 진짜로 학습하면

디코더 아틀라스는 어휘집만 학습하고 가중치는 고정 수식이었습니다. 이 디코더 구조를 그대로 키워 한국어 코퍼스 사전학습부터 SFT·DPO 정렬까지 직접 만든 163.6M 파라미터 모델 miniLLM-160M이 아래에서 브라우저 안에서, GPU 없이 CPU만으로 돌아갑니다. 어휘는 편의상 Qwen3.8에서 빌렸지만 토크나이저를 진짜 밑바닥부터 훈련하는 법도 다룹니다 — 서재의 "BPE 직접 훈련" 문서.

HOW AN LLM IS MADE

LLM은 어떻게 만들어지는가 — 전체 그림

GPT·클로드·제미나이 같은 LLM은 마법이 아니라, 몇 개의 공정을 순서대로 거쳐 만들어지는 소프트웨어입니다. 어느 회사든 큰 틀은 같습니다:

  1. 1
    재료 준비 (데이터 수집·정제)

    웹 문서·책·코드 수조 토큰을 모아 광고·중복·저품질을 걸러냅니다. 모델의 말투·지식·편향이 모두 여기서 결정되므로, 실무에서는 이 단계에 가장 많은 공이 들어갑니다.

  2. 2
    토크나이저 훈련

    신경망은 숫자만 다루므로, 텍스트를 숫자로 바꾸는 "어휘사전"을 만듭니다. 사람이 단어장을 짜는 게 아니라, 코퍼스에서 자주 붙어 나오는 글자 조각을 통계적으로 병합(BPE)해 사전이 저절로 자라나게 합니다.

  3. 3
    사전학습 (Pre-training)

    "지금까지 글을 보고 다음 토큰을 맞혀라"라는 단 하나의 게임을 수개월간 GPU 수천 장으로 반복합니다. 이 게임을 잘하려면 문법·지식·추론이 모두 필요하기에, 모델은 언어 능력 전반을 흡수합니다. 전체 비용의 90% 이상이 여기에 들며, 결과물은 아직 질문에 답할 줄 모르는 "이어쓰기 기계"(base 모델)입니다.

  4. 4
    지도 미세조정 (SFT)

    사람이 만든 "질문 → 좋은 답변" 예시 수십만 개로 대화의 형식을 가르칩니다. 이어쓰기 기계가 비로소 AI 비서처럼 응답하기 시작합니다.

  5. 5
    선호 정렬 (RLHF / DPO)

    같은 질문에 대한 두 답변 중 사람이 더 좋아한 쪽을 고르도록 조정합니다. ChatGPT를 ChatGPT답게 만든 마지막 조각(RLHF)이며, 안전성·말투가 여기서 다듬어집니다.

  6. 6
    평가·배포

    벤치마크와 사람 평가로 검증하고, 양자화·서빙 최적화를 거쳐 제품이 됩니다.

이 프로젝트는 위 전 과정을 축소판으로 전부 직접 수행했습니다. 유일한 예외가 2번 어휘사전 — 편의상 Qwen3.8의 것을 빌렸습니다. 하지만 직접 만들어보고 싶다면 아래 파이프라인의 ⓪ 토크나이저 훈련 카드와 서재의 실4 "BPE 토크나이저 직접 훈련" 문서에 방법을 자세히 설명해 뒀습니다 — 실제로 훈련해 보면 한국어 전용 어휘가 Qwen보다 효율적이라는 반전도 확인할 수 있습니다.

PIPELINE AT A GLANCE

파이프라인 한눈에 보기

위 ⓪~⑤ 공정을 이 프로젝트의 실제 진행 상태로 보여줍니다. 각 카드의 초록 점은 해당 단계의 산출물이 준비되었다는 뜻이며, 카드를 클릭하면 그 단계가 무엇인지·왜 필요한지·어떻게 동작하는지(만드는 방법 포함) 상세 설명을 볼 수 있습니다.

텍스트 코퍼스어휘사전(BPE)토큰 id다음 토큰 예측 학습기반 모델(base)대화 형식 미세조정채팅 모델선호 정렬최종 모델

ARCHITECTURE

모델 아키텍처

GPT·Llama·Qwen이 공유하는 구조입니다. 입력 토큰은 임베딩을 거쳐 같은 모양의 블록 18개를 통과하고, 마지막에 임베딩과 가중치를 공유하는 lm_head가 "다음 토큰"의 확률분포를 출력합니다.

파라미터163.6M임베딩 50.3M + 블록 113.3M
디코더 블록18아틀라스는 2
은닉 차원768아틀라스는 4
어텐션12Q / 4KV헤드당 64차원 · GQA
어휘65,5362¹⁶ · uint16 저장
문맥 길이1,024토큰
학습17.1hRTX 4080 16GB · 1.96B tokens
파일176MBGGUF · Q8_0 · CPU 전용
토큰 id[B, T]임베딩65,536×768트랜스포머 블록 × 18RMSNorm어텐션GQA 12Q/4KV + RoPERMSNormSwiGLU FFN768 → 2,048 → 768+ 잔차 연결(residual) → 아래로RMSNormfinallm_head임베딩과 가중치 공유
구성 요소파라미터비고
임베딩 (= lm_head)50.3M65,536 어휘 × 768차원, 가중치 공유
트랜스포머 블록 18113.3M블록당 6.3M (어텐션 1.6M + FFN 4.7M)
합계163.6Mbf16 기준 약 327MB · Q8_0 GGUF 176MB
WHAT CHANGED

디코더 아틀라스에서 miniLLM으로 — 바뀐 다섯 부품

흐름(토큰 → 임베딩 → 어텐션 → FFN → 로짓)은 같습니다. 각 부품이 2017년 원본 트랜스포머에서 Llama/Qwen 계열의 현대 표준으로 교체됐을 뿐입니다.

위치사인·코사인 덧셈RoPE
아틀라스X⁽⁰⁾ = E + PE(pos)miniLLMq′ = R(pos)·q, k′ = R(pos)·k

위치 벡터를 입력에 더하는 대신 Q와 K를 위치만큼 회전시킵니다. 두 벡터의 내적이 절대 위치가 아니라 상대 거리에만 의존하게 되어 학습 길이보다 긴 문맥에도 잘 일반화됩니다.

어텐션 안, Q·K를 곱하기 직전
정규화LayerNorm · Post-NormRMSNorm · Pre-Norm
아틀라스Y = LayerNorm(X + Attn(X))miniLLMY = X + Attn(RMSNorm(X))

평균을 빼지 않고 제곱평균으로만 크기를 맞춰 계산이 가볍고, 정규화를 서브층 앞에 두면 깊은 모델의 초기 학습이 안정됩니다. 잔차 경로가 정규화 없이 곧장 흐릅니다.

블록마다 2개 · 마지막에 1개
어텐션MHA · 2 headsGQA · 12Q / 4KV
아틀라스Q,K,V ∈ ℝᵀˣ⁴ (헤드당 2차원)miniLLMQ: 12×64, K,V: 4×64 (쿼리 3개가 KV 1개 공유)

K와 V 헤드를 쿼리보다 적게 두어 파라미터와 생성 시 KV 캐시 메모리를 줄입니다. 품질 손실은 거의 없어 Llama-2 이후 표준이 되었습니다.

18개 블록 전부
FFNGELU · 4→8→4SwiGLU · 768→2048→768
아틀라스GELU(YW₁ + b₁)W₂ + b₂miniLLMdown( SiLU(gate(x)) ⊙ up(x) )

행렬 3개(gate·up·down)와 게이트 곱셈으로 표현력을 높입니다. 파라미터를 맞추기 위해 중간 차원을 4d 대신 약 2.7d로 잡습니다.

블록당 472만 파라미터 · 전체의 52%
출력임베딩 재사용 (아틀라스도 같은 방식)Weight tying
아틀라스logits = h·Eᵀ / √4 + bminiLLMlogits = RMSNorm(h)·Eᵀ

'id → 벡터'와 '벡터 → id 점수'는 역방향 관계이므로 같은 행렬 E(65,536×768)를 공유합니다. 5033만 파라미터를 절약하고 소형 모델에서는 품질도 좋아집니다.

마지막 투영 · GGUF에는 output.weight 가 없음
TRAINING MONITOR

학습 모니터 — 파이프라인 다섯 단계와 실제 곡선

손실(loss)은 "다음 토큰을 얼마나 못 맞히는가"입니다. 무작위 초기화면 ln(65536)≈11.1에서 시작해, 학습이 진행되며 떨어집니다. perplexity = e^loss 는 "몇 개 중에 하나를 찍는 수준인가"로 읽으면 됩니다. 디코더 아틀라스 ⑧단계의 “로짓 4행” 카드에서 “행 하나 = 학습 예제 하나”를 봤습니다. 실제 학습은 그 표를 1,024칸으로 넓혀 수십억 번 반복하는 일입니다.

  1. 01토크나이저 · 전처리

    Qwen3.8의 BPE 어휘 248,077개 중 한국어 말뭉치에 실제 쓰인 65,536개(2¹⁶)만 남깁니다. 바이트 256개는 강제로 포함해 어떤 글자도 <unk>로 떨어지지 않게 하고, 토큰은 uint16 2바이트로 저장합니다.

    scripts/01_pretokenize.py6.9GB → 19.9억 토큰
  2. 02사전학습

    '지금까지의 토큰을 보고 다음 토큰을 맞혀라'는 단 하나의 목표. 디코더 아틀라스 ④단계의 어텐션 표에서 봤듯 한 번의 순전파로 1,024개 위치를 동시에 학습합니다. 한국어 말뭉치 85% + 위키 15% 혼합, 유효 배치 65K 토큰, AdamW, 코사인 학습률.

    scripts/02_pretrain.py29,980스텝 · 14.52시간
  3. 03SFT (지도 미세조정)

    질문–답변 예시를 <|im_start|>user … <|im_end|> 형식으로 보여 주며 '이 패턴 다음엔 답변이 온다'를 가르칩니다. 손실은 답변 토큰에만 계산합니다(loss masking). 새 지식이 아니라 대화 형식을 배우는 단계입니다.

    scripts/04_sft.py4,580스텝 · 2.26시간
  4. 04DPO (선호 정렬)

    같은 질문에 대한 채택/거절 답변 쌍 6,400개로 '더 좋은 답변'의 방향을 배웁니다. 동결한 SFT 모델을 기준 삼아 상대적 변화만 허용하므로 언어 능력은 보존되고, 장황하게 탈선하는 스타일에 페널티가 붙습니다.

    scripts/11_dpo.py790스텝 · 선호정확도 97.5%
  5. 05GGUF 변환 · CPU 추론

    구조가 Llama 계열이라 GGUF 'llama' 아키텍처로 그대로 매핑됩니다. RoPE 배선 순열과 축소 어휘 이식만 맞추면 llama.cpp — 그리고 그 WebAssembly 빌드 — 가 파이썬·GPU 없이 모델을 실행합니다. 지금 이 페이지가 그렇게 돌아갑니다.

    scripts/18_export_gguf.pyfp16 327MB → Q8_0 176MB
학습 손실 (cross-entropy, EMA) · train / ○ val가로축은 사전학습→SFT를 이어 붙인 스텝 · 마우스를 올려 값 확인
사전학습SFT0246810무작위 추측 ln(65,536) = 11.092.271.88step 0누적 34,560스텝
사전학습한국어 말뭉치 85% + 위키 15% · 다음 토큰 예측 · 30,000스텝29,980스텝 · 14.52h · 1.96B tokens · loss 11.24 → 2.27 (val 2.70)
SFTsft2 대화 41.2만 쌍 · ChatML · 답변 토큰에만 손실4,580스텝 · 2.26h · loss 3.11 → 1.88 (val 1.95)
DPO선호 쌍 6,400 × 2에폭 · 채택/거절 격차 학습790스텝 · 0.27h · 선호정확도 → 97.5%

손실 11.09는 65,536개 어휘를 균등하게 찍는 상태(ppl 65,536)이고, 사전학습이 끝난 2.27는 ppl 약 10 — 매 위치에서 후보를 열 개 남짓으로 좁혔다는 뜻입니다. SFT 손실은 답변 토큰에만 계산되어 스케일이 다르고, DPO는 손실 대신 선호정확도로 읽습니다(아래 실행 선택에서 dpo160).

step 29,980 · 학습한 토큰 1.96B · ppl 9.69 · 14.52h
학습률 (cosine schedule)워밍업 후 코사인으로 감쇠 · 최고 6.0e-4
-3.5e-51.3e-43.0e-44.7e-46.4e-407,49514,99022,48529,9806.0e-5
처리량최고 41K tok/s · RTX 4080 16GB
34K35K36K37K38K207,51015,00022,49029,98038K
TOKENIZER PLAYGROUND

토크나이저 체험

모델은 글자가 아니라 토큰 id의 나열을 봅니다. Qwen3.8의 BPE 어휘 248,077개 중 우리 코퍼스에서 실제로 쓰이는 상위 65,536개만 남겨 임베딩 크기를 1/4로 줄였습니다(어휘 축소). 어휘 파일은 첫 토큰화 때 한 번만 내려받고, 계산은 전부 브라우저에서 합니다.

GENERATION PLAYGROUND

생성 플레이그라운드

이어쓰기는 사전학습 모델의 본능(다음 토큰 예측)을 그대로 보여주고, 질문하기는 SFT·DPO를 거친 모델이 <|im_start|> 대화 형식을 따르는 모습을 보여줍니다. 브라우저에 올리는 모델은 miniLLM 프로젝트가 마지막으로 만든 최종 모델 하나 — 저사양 CPU 배포판에 든 바로 그 GGUF 파일입니다.

RUN IN YOUR BROWSER · CPU ONLY · llama.cpp → WebAssemblyminiLLM-160M 실행실 — 생성 플레이그라운드
모델 미적재

버튼을 누르면 /models/minillm-160M.Q8_0.gguf (176MB, Q8_0 양자화 · pretrain160 → sft160 → dpo160 완주판)을 내려받아 브라우저 안의 llama.cpp(WebAssembly)에 올립니다. GPU도 서버도 쓰지 않으며, 한 번 받은 파일은 브라우저 캐시에 남아 다음에는 즉시 열립니다.

Ctrl+Enter로 실행
모델이 실제로 받는 문자열
<|im_start|>user
대한민국의 수도는 어디인가요?<|im_end|>
<|im_start|>assistant

SFT 때 본 것과 같은 ChatML 틀입니다. 모델은 <|im_start|>assistant\n 뒤를 이어 쓰다가 <|im_end|>를 내면 멈춥니다.

0이면 항상 1위 토큰(greedy) · 0.1 단조로움 ↔ 1.5 창의적이지만 무너짐
누적 확률이 p가 될 때까지만 후보로
확률 상위 k개만 후보로
최근 64토큰의 로짓 감점 · 1.0 = 끔 (퇴행적 반복을 직접 관찰)
생성을 멈추는 상한
생성 결과대기 중
먼저 모델을 적재하세요

163.6M 파라미터가 브라우저 안에서 한 토큰씩 답을 만듭니다. 디코더 아틀라스의 9단계(다음 토큰 확률)가 반복되는 것입니다.

miniLLM-160M은 GPT-4 같은 대형 모델이 아닙니다 — 문법과 말투는 배우지만 지식과 추론은 얕습니다. "작은 모델이 무엇을 배우고 무엇을 못 배우는지"를 관찰하는 것이 이 실습의 핵심입니다.

같은 말이 끝없이 반복된다면("먹을까? 먹을까?…") 그것이 바로 퇴행적 반복(degenerate repetition)입니다 — 반복이 문맥에 쌓일수록 다음에도 같은 구절이 나올 확률이 커지는 자기 강화 루프로, 학습 초기·소형 모델의 대표 증상입니다. 반복 감점을 올리면 토큰 단위 반복이 억제되고, 1.0으로 끄면 현상을 그대로 관찰할 수 있습니다. (miniLLM 대시보드의 n-gram 차단은 파이썬 서버 쪽 구현이라, 브라우저 빌드에서는 llama.cpp의 반복 감점(repeat penalty)을 대신 씁니다.)

CPU-ONLY DEPLOYMENT저사양 CPU 서버 배포판과 같은 모델

miniLLM 프로젝트의 마지막 작업물은 GPU·PyTorch 없이 CPU 만으로 도는 슬림 배포판(deploy/bundle-slim, 약 190MB)입니다. 그 안에 든 유일한 모델이 이 miniLLM-160M GGUF 파일이며, 필요 사양은 CPU 2코어·RAM 1GB(생성 시 약 300MB)·디스크 1GB — llama.cpp 네이티브에서 43~49 tok/s가 나옵니다. 이 페이지는 같은 파일을 llama.cpp의 WebAssembly 빌드로 열어, 서버 없이 브라우저 CPU 한 스레드에서 실행합니다.

배포 형태
GGUF Q8_0 단일 파일 + llama.cppDocker compose 두 컨테이너(대시보드·llama-server)
필요 사양
CPU 2코어+ · RAM 1GB+유휴 ~100MB, 생성 시 ~300MB
속도
43~49 tok/s (네이티브 CPU)브라우저 wasm 단일 스레드는 이보다 느립니다
AVX 없는 CPU
SSE 커널로 자동 하향J3160 등 Braswell도 소스 빌드로 실행
READING ROOM

학습 문서 서재

읽은 문서는 초록색으로 표시됩니다. 딥러닝이 처음이라면 주황 배지가 붙은 문서부터 시작하세요. 문서 안에서 ←/→ 키로 이전·다음 문서로 이동할 수 있습니다.

시작하기

본편 — 파이프라인 5단계

실험 기록

부록 — 실무 감각

수치 출처: miniLLM configs/miniLLM-160M.json · artifacts/logs/{pretrain160,sft160,dpo160}_metrics.jsonl · artifacts/data/pretrain/stats.json(1,990,719,088 토큰) · artifacts/data/sft2/stats.json(412,258 대화) · artifacts/vocab/vocab_meta.json(커버리지 99.997%).

실측 요약 — 이 실습이 보여주는 것

디코더 아틀라스와 같은 디코더 구조를 실제로 학습한 160M 파라미터 한국어 모델(miniLLM)의 전 과정을 한 페이지에 담은 실행실입니다. ⓪ LLM이 만들어지는 여섯 공정 개요, ① 파이프라인 카드(클릭하면 원리·방법 상세), ② 아키텍처(RMSNorm·GQA+RoPE·SwiGLU·weight tying, 파라미터 표), ③ 학습 모니터(사전학습·SFT·DPO 실제 손실·학습률·처리량·선호정확도 곡선), ④ 토크나이저 체험(Qwen3.8 BPE 축소 어휘 65,536), ⑤ 생성 플레이그라운드(176MB Q8_0 GGUF를 llama.cpp WebAssembly로 브라우저에서 실행, 토큰별 top-5 확률), ⑥ 학습 문서 서재 16편. 정직성 규약 — 곡선은 metrics.jsonl 로그 원본, 생성·토큰화는 브라우저에서 지금 계산, 어휘는 Qwen에서 빌렸음을 명시(직접 훈련법도 문서로 제공).

  • 학습 실측: 사전학습 29,980스텝·14.5시간(RTX 4080)·19.6억 토큰, 손실 11.24 → 2.27(val 2.70, ppl 9.7). 시작값 11.1 = ln(65,536)은 어휘를 균등하게 찍는 무작위 모델의 교차 엔트로피 — 학습이 그것을 "후보 열 개 남짓"으로 좁혔다는 뜻
  • 구조 실측: d=768·18층·12Q/4KV 헤드·FFN 2,048·어휘 65,536·문맥 1,024. 파라미터 = 임베딩 50.3M(lm_head와 공유) + 블록 18개(블록당 어텐션+SwiGLU FFN+RMSNorm) — Q8_0 GGUF 176MB. 어휘 축소: Qwen3.8 248,077개 중 코퍼스 빈도 상위 65,536개만 남겨도 커버리지 99.997%, 20억 토큰 중 바이트 폴백 5.6만 회(0.003%)
  • 같은 가중치, 다른 틀: 채팅 모드는 ChatML(<|im_start|>user … <|im_start|>assistant)로 감싸 SFT+DPO가 가르친 답변 형식을 끌어내고, 이어쓰기 모드는 틀 없이 넣어 사전학습 본능(다음 토큰 예측)만 드러낸다. temperature·top-p·top-k·repeat penalty는 분포에서 "어떻게 뽑느냐"만 바꾸고 분포 자체는 가중치가 만든다 — 토큰별 확률 막대에서 그대로 보인다

바로잡는 오개념: "LLM은 회사가 만드는 블랙박스라 개인은 원리만 알 수 있다"는 생각 — 공정은 여섯 개뿐이고(데이터 → 토크나이저 → 사전학습 → SFT → 정렬 → 배포) 각 단계는 스크립트 한 편 규모다. GPU 한 장으로 학습한 모델이 브라우저 안에서 CPU만으로 대답한다는 사실 자체가, 규모가 다를 뿐 GPT·클로드와 같은 공정임을 보여준다. 반대로 "작아도 학습했으니 똑똑하다"도 오해다 — 160M은 자주 틀리고, 그 틀리는 방식(반복·환각)이 바로 관찰 대상이다.

AI 튜터에게 물어보기
베타

— 정답 대신 힌트로 유도합니다. 지금 화면의 실험 상태를 알고 답해요.

예: “방금 결과가 이론과 다른데 왜죠?”, “이 값을 올렸는데 왜 반대로 변하죠?”

AI 답변은 부정확할 수 있습니다. 핵심 개념은 반드시 시뮬레이션 실측으로 확인하세요. 질문 0/5 · 하루 질문 한도가 있습니다
직접 해보기 — 실습 과제
  1. 공정 순서 말하기: ① 파이프라인 카드를 보지 않고 여섯 공정을 순서대로 말해 보고, 각 공정이 "무엇을 입력받아 무엇을 내놓는지" 한 줄씩 적어 보세요
  2. 토크나이저 효율: ④에서 흔한 한국어 문장과 이모지·외국어가 섞인 문장을 넣어 토큰당 글자 수와 바이트 폴백 개수를 비교하세요
  3. 온도 실험: ⑤에서 temperature 0(greedy)과 1.2로 같은 프롬프트를 생성해 토큰별 확률 막대가 어떻게 달라 보이는지 관찰하세요 — 분포는 같고 뽑는 방식만 다릅니다
  4. 반복 감점 끄기: repeat penalty를 1.0으로 내리고 이어쓰기를 해 "퇴행적 반복"이 실제로 나타나는지 확인하세요
  5. base vs chat: 같은 질문을 두 모드로 넣고 결과 차이를 SFT의 역할로 설명해 보세요
  6. 서재 읽기: ⑥에서 "시작하기" 그룹의 문서 두 편을 읽고, 이 프로젝트가 Qwen 어휘를 빌린 이유와 직접 훈련했을 때의 반전을 요약하세요
📖 더 깊이 학습하기
  • Radford et al. (2019): "Language Models are Unsupervised Multitask Learners" (GPT-2) — 다음 토큰 예측 사전학습만으로 다양한 능력이 생긴다는 관찰
  • Ouyang et al. (2022): "Training language models to follow instructions with human feedback", NeurIPS — SFT → 보상 모델 → RLHF의 InstructGPT 3단계
  • Rafailov et al. (2023): "Direct Preference Optimization: Your Language Model is Secretly a Reward Model", NeurIPS — 보상 모델 없이 선호 쌍으로 직접 정렬하는 DPO
  • Sennrich, Haddow & Birch (2016): "Neural Machine Translation of Rare Words with Subword Units", ACL — BPE 토큰화