랜덤 가중치에서
프론티어 모델까지.
"파운데이션 모델을 처음부터 만든다"는 말은 가중치 얘기지 아이디어 얘기가 아니에요. Llama 3·DeepSeek-V3·Qwen3·OLMo 2 보고서에 적힌 숫자로만 15강을 썼고, 7B 모델의 파라미터를 직접 계산하고 1B 모델을 이틀에 만드는 비용을 눌러 볼 수 있는 계산기를 넣었어요.
목차 펼치기
"처음부터"는 가중치를 말하고, 아이디어를 말하지 않는다
LLM 업계에서 "처음부터(from scratch)"는 세 가지를 동시에 뜻해요. 첫째, 모델의 모든 가중치가 다른 모델에서 복사되지 않고 무작위 초기화에서 출발해요. 둘째, 사전학습 데이터를 자체 파이프라인으로 모으고 거르고 섞어요. 셋째, 수천~수만 GPU에서 이 학습을 돌리는 학습 코드와 인프라를 스스로 운영해요. 반면 아키텍처와 알고리즘은 거의 전부 공개 논문에서 가져와요.
세계 최대 규모의 from-scratch 학습도 예외가 아니에요. Meta는 Llama 3 논문에서 "표준적인 밀집 Transformer에 사소한 변경만 가했다"고 적었고, 128K 어휘 중 100K는 OpenAI의 tiktoken에서 가져왔다고 밝혀요. Moonshot의 Kimi K2는 DeepSeek-V3의 61층·hidden 7168 레이아웃을 그대로 쓰고 expert 수와 head 수만 바꿨다고 보고서에 적었어요. OpenAI의 gpt-oss도 GPT-3의 교대 attention 패턴과 Google의 GQA를 쓴다고 명시해요. 가장 투명한 OLMo 2는 가중치·데이터·코드·로그·중간 체크포인트를 전부 공개했는데, 그 아키텍처 역시 RMSNorm·SwiGLU·RoPE·QK-norm이라는 공개 부품의 조합이에요.
가중치를 가져오는 것과 논문을 쓰는 것은 층위가 다르다
가중치 재사용은 다른 조직이 수천만 달러를 들여 학습한 숫자 행렬 자체를 가져오는 거예요. 그 순간 모델의 지식·언어 분포·토크나이저·아키텍처가 그 모델에 고정돼요. Qwen3를 파인튜닝하면 Qwen3가 36조 토큰에서 배운 것이 내 모델의 지식 전부가 되고, 어휘 151,669개와 36층·4096차원 구조를 바꿀 수 없어요. 아이디어 재사용은 "행렬을 어떻게 배치하고 어떤 수식으로 갱신할지"라는 설계도를 가져오는 거예요. 설계도가 같아도 무작위 초기화에서 시작하면 학습된 숫자는 완전히 다르고, 데이터·토크나이저·문맥 길이·expert 수·정밀도를 전부 직접 정해야 해요.
2026년 한국 정부의 "독자 AI 파운데이션 모델" 사업이 정확히 이 기준을 썼어요. 1차 평가에서 네이버클라우드 팀은 "가중치 초기화 이후 전면 학습을 수행한 독자 모델로 보기 어렵다"는 판단으로 탈락했고, SK텔레콤의 A.X K1(519B MoE, 약 10T 토큰, H200 1,536장, 73일)과 업스테이지의 Solar Open 100B(19.7T 토큰)는 무작위 초기화부터 학습한 모델로 인정받았어요. "처음부터"는 규제와 조달의 기준으로도 쓰이는 정의예요.
| 랩 | 직접 만드는 것 (확인된 것) | 공개 연구에서 가져오는 것 | 공개되지 않은 것 |
|---|---|---|---|
| Meta (Llama 3/4) | 가중치, 3단계 중복제거 데이터 파이프라인, 4D 병렬 학습 코드, NCCL 포크, 16K H100 운영 | Transformer, GQA(Google), RoPE, SwiGLU, AdamW, tiktoken 100K 어휘(OpenAI) | Llama 4 상세 논문, 데이터 소스 목록 |
| DeepSeek (V3/R1/V4) | 가중치, MLA·DeepSeekMoE·aux-loss-free 라우팅·MTP, FP8 프레임워크, DualPipe, DeepEP 커널 | Transformer, RoPE, SwiGLU, AdamW→Muon, Switch Transformer의 MoE 개념 | 데이터 소스와 도메인 비율 |
| Alibaba (Qwen3/3.5) | 가중치, 36T 토큰 119개 언어 데이터, 인스턴스 단위 혼합, Gated DeltaNet 하이브리드 | GQA, SwiGLU, RoPE, QK-Norm, DeepSeekMoE식 expert, MTP | 언어별 비율, 필터 임계값 |
| Google (Gemini/Gemma) | 가중치, TPU Ironwood 9,216칩 pod, JAX/XLA 스택, 262K SentencePiece | Transformer, GQA, RoPE, RMSNorm, 지식 증류 | Gemini의 크기·층·expert·연산량·데이터 |
| OpenAI (GPT-5, gpt-oss) | 가중치, tiktoken(o200k 공개), RLHF, 추론 RL | gpt-oss 기준: GPT-3 교대 attention, GQA, RoPE, YaRN, SwiGLU | GPT-4 이후 모든 모델의 아키텍처·크기·연산량·데이터·학습법 |
| Anthropic (Claude) | 가중치, Constitutional AI·RLAIF·캐릭터 학습·Constitutional Classifiers, Trainium/TPU/GPU 혼합 운용 | 확인 불가 (아키텍처 미공개) | 아키텍처, 파라미터 수, 연산량, 토크나이저, 프레임워크 |
왜 다들 Transformer·Adam·PyTorch를 그대로 쓰나
이유는 넷이에요. 예측 가능성 — GPT-4 보고서는 1,000~10,000배 적은 연산의 작은 모델로 최종 성능을 예측했다고 밝혀요. 수천만 달러짜리 학습은 결과가 예측돼야 시작할 수 있고, 예측은 검증된 부품 위에서만 돼요. 하드웨어 적합성 — FlashAttention-3는 H100에서 FP16 forward 740 TFLOPs/s(75% 활용)를 내는데, 커널이 Transformer 구조에 맞춰 짜여 있기 때문이에요. 구조를 바꾸면 커널을 다시 써야 해요. 안정성 — Llama 3는 학습 안정성을 위해 MoE 대신 dense를 택했고, Qwen3는 안정적 학습을 위해 QK-Norm을 넣었어요. 차별화의 위치 — 공개 모델들의 부품은 사실상 같은데 성능이 갈리는 건 데이터·규모·사후학습 레시피 때문이에요추론.
"완전히 0부터"는 기술적으로 애매하다
어느 층에서든 외부 산출물이 섞여요. Llama 3의 어휘 100K는 OpenAI에서 왔어요. NVIDIA의 Nemotron-CC-v2 데이터셋 6.6T 토큰 중 2.28T는 Qwen3와 Mistral이 생성한 합성 데이터라서, 이걸로 학습한 모델은 가중치가 무작위였어도 다른 모델의 출력 분포를 흡수해요. DeepSeek-V3의 SFT 데이터는 R1에서 증류했고, R1은 다시 V3-Base 위에서 만들었으니 세대 간 순환이 생겨요. 그래서 실무에서 의미 있는 경계선은 두 개예요. 남의 학습된 가중치를 초기값으로 쓰지 않았는가, 그리고 데이터·토크나이저·학습 시스템의 결정권이 우리에게 있는가.
출처: Llama 3 · Kimi K2 · gpt-oss · OLMo 2 · AI타임스 (2026-01-15) · A.X K1 · GPT-4 보고서 · Nemotron-CC-v2
만드는 순서는 직선이 아니라 루프다
연구 → 설계 → 토크나이저 → 데이터 → 인프라 → 초기화 → 사전학습 → 사후학습 → 서빙. 이 순서는 실제 랩의 작업 순서와 거의 맞아요. 다만 두 가지를 먼저 짚어야 해요. 첫째, 평가가 두 번 이상 끼어드는 루프예요. 사전학습 중엔 체크포인트마다 손실과 벤치마크를 재서 스케일링 예측과 맞는지 보고, 사후학습 뒤엔 다른 벤치마크와 안전성 평가를 다시 돌려요. 둘째, 단계별 비용 비중이 극단적으로 비대칭이에요. DeepSeek-V3의 총 278.8만 H800 GPU시간 중 사전학습이 266.4만, 문맥 확장이 11.9만, 사후학습은 단 5천 시간이었어요.
| 단계 | 실제로 하는 일 | 대표 수치 |
|---|---|---|
| Research | 40M~16B 프록시 모델로 스케일링 법칙·소거 실험, 하이퍼파라미터 전이 규칙 | Llama 3: 6×10¹⁸~10²² FLOPs 실험으로 3.8×10²⁵ 예산에서 402B/16.55T 예측 |
| Architecture | 층·폭·head·FFN·vocab·문맥·dense/MoE·정밀도 결정 | V3: 61층, d=7168, 256+1 expert, top-8 |
| Tokenizer | 코퍼스 샘플로 BPE 학습, 정규식, 특수토큰 | Llama 3 128K, Gemma 3 262K |
| Data 수집→정제→필터→혼합 | CC 스냅샷·코드·논문·도서·합성 → 추출·언어·휴리스틱·중복제거·분류기 → 비율 | DCLM: 240T 중 3.8T(1.6%) 유지 · Llama 3 혼합 50/25/17/8 |
| Training Infra | 클러스터·네트워크·스토리지·병렬화·체크포인트·장애 복구 | Llama 3: 24K GPU Clos, 400Gbps, 2~7TB/s 스토리지 |
| Init → Pretraining | 정규분포 초기화, 수십만 step forward/backward/AdamW | 405B: 1.2M step, 16M 토큰 배치, LR 8e-5 · 54일간 466회 중단 |
| Mid-training / 장문맥 | 고품질 데이터로 annealing, 4K→128K 확장 | Qwen3: 30T 일반 → 5T 추론 → 수천억 장문맥 |
| SFT → RL → Alignment | ~100만 쌍 지도학습, 검증기 보상 GRPO, DPO/RLHF | V3 SFT 1.5M · R1-Zero 10,400 step · Llama 3 6라운드 |
| Inference → Deployment | FP8/FP4 양자화, 페이지드 KV, 추측 디코딩, prefill/decode 분리, 라우터·분류기 | DeepSeek: 평균 226.75 노드, 일 $87K, KV 적중 56.3% |
Research는 "무엇을 만들지"를 숫자로 정하는 단계예요. 본 학습의 1~3% 규모 프록시 모델을 여러 개 학습해 손실 곡선을 외삽하고 최종 크기와 토큰 수를 정해요. Kimi K2는 sparsity를 8·16·32·48로 바꿔 가며 실험해 48을 택했고, head 수를 64→128로 늘리면 추론 FLOPs가 83% 늘지만 손실 개선은 0.5~1.2%뿐이라 64를 유지했어요. muP 논문은 40M 모델에서 찾은 하이퍼파라미터를 옮겨 GPT-3 6.7B의 공개 성능을 넘겼고, 튜닝 비용은 전체의 7%였다고 보고해요.
토크나이저는 데이터 수집과 병행되지만 논리적으로 앞서요. 토큰 데이터셋을 만들려면 토크나이저가 먼저 확정돼야 하니까요. "데이터 일부 → 토크나이저 → 전체 데이터 토큰화" 순서가 돼요. 인프라는 데이터와 독립적으로 수개월 전부터 준비돼요. DeepSeek는 H800의 NVLink 제약에 맞춰 FP8 프레임워크와 DualPipe, 20개 SM만으로 통신 대역폭을 채우는 all-to-all 커널을 직접 썼어요.
Mid-training은 2024년 이후 "annealing"이라는 이름으로 표준이 됐어요. 본 학습 말미에 고품질·수학·코드·지시형 데이터를 올리고 학습률을 0으로 내려요. OLMo 2는 50B~300B 토큰으로 이걸 하고 3~4개 run의 가중치를 평균했는데 전체 FLOPs의 5~10%였어요. Llama 3는 annealing으로 8B 모델의 GSM8K를 24.0%p 올렸어요. 사후학습은 연산은 작지만 사람과 데이터 설계가 집중되는 곳이에요. 2025~2026년 공통 레시피는 (1) 소량 장문 사고사슬 SFT 콜드스타트 → (2) 검증 가능한 보상으로 GRPO → (3) 거부 샘플링으로 대규모 SFT 세트 재구성 → (4) 검증기+보상 모델 혼합 최종 RL → (5) 작은 모델로 증류예요. R1·Qwen3·Tulu 3·Kimi K2 보고서에서 공통으로 확인돼요.
출처: DeepSeek-V3 · Llama 3 · muP · OLMo 2 · Qwen3 · DeepSeek Day 6
아키텍처 설계는 숫자를 고르는 일이다
디코더 전용 Transformer 한 층은 "attention → 잔차 덧셈 → MLP → 잔차 덧셈"의 반복이고, 앞뒤로 임베딩과 출력 헤드가 붙어요. 설계자가 정하는 건 각 요소의 숫자예요.
- 임베딩 — 어휘 V, 폭 d, 출력 헤드와 공유(tie)할지. Qwen3는 0.6B~4B는 공유하고 8B 이상은 분리해요. 128K~152K 어휘에서는 임베딩 두 개가 8B 모델의 13~15%를 차지하거든요.
- 위치 인코딩 — 2023년 이후 거의 전부 RoPE. 기저 주파수 θ는 Llama 2의 10,000에서 Llama 3의 500,000, Qwen3의 1,000,000으로 커졌어요.
- Attention — 쿼리 head h, KV head g, head 차원. Llama 3는 KV 캐시를 줄이려고 8개 KV head를 택했어요(GQA). DeepSeek의 MLA는 K/V를 512차원 잠재 벡터로 압축하고, V4는 다시 CSA+HCA로 바꿔 1M 문맥에서 KV 캐시 10%만 써요. Gemma 3·gpt-oss는 슬라이딩 윈도우 층과 전역 층을 5:1 또는 1:1로 교대시키는데, 이건 손실이 아니라 장문맥 추론 비용을 줄이려는 거예요. Gemma 3는 32K 문맥에서 KV 오버헤드를 60%에서 15% 미만으로 낮췄다고 보고해요.
- MLP — 표준은 SwiGLU 세 행렬. 중간 폭 F는 2행렬 4d FFN과 파라미터가 같도록 F=8d/3으로 잡는 관례가 있어요. Llama-2-7B의 11008은 8/3×4096=10,922.7을 256의 배수로 올림한 값이에요.
- 정규화 — Pre-LN RMSNorm이 표준이고, 안정성을 위해 OLMo 2는 QK-norm과 z-loss를, Qwen3는 QK-Norm을 더했어요.
- head 차원 128은 Llama·Mistral·Qwen3·Kimi·V3에서 공통이지만 gpt-oss는 64, V4는 512예요. 법칙이 아니라 GPU 텐서코어와 FlashAttention 커널에 잘 맞는 관례예요추론.
- 문맥 길이는 처음부터 길게 학습하지 않아요. V3는 4K→32K→128K를 YaRN으로 각 1,000 step씩 늘렸어요. 어휘는 32K(Llama 2)→128K(Llama 3)→152K(Qwen3)→201K(gpt-oss)→262K(Gemma)로 커졌고요.
7B는 결과지 입력이 아니다 — 파라미터 공식
bias 없이 SwiGLU와 RMSNorm을 쓰는 표준 디코더에서 파라미터 수는 정확히 계산돼요. L=층 수, d=폭, h=쿼리 head, g=KV head, h_d=head 차원, F=FFN 중간 폭, V=어휘일 때:
- 임베딩 = V·d, 출력 헤드 = V·d (공유하면 0)
- 층당 attention = d·h_d·(2h+2g), 층당 MLP = 3·d·F, 층당 norm = 2·d (+QK-norm이면 2·h_d)
- 총합 = L·(attention + MLP + norm) + 임베딩 + 출력 헤드 + d
아래 계산기에 공개 config.json 값을 넣으면 각 랩이 보고한 크기가 파라미터 단위까지 재현돼요. 프리셋을 누르거나 숫자를 직접 바꿔 보세요.
Llama-2-7B → 6,738,415,616 · Llama-3-8B → 8,030,261,248 · Mistral-7B → 7,241,732,096 · Qwen3-8B → 8,190,735,360. Qwen3 보고서는 8B를 "총 8.2B / 비임베딩 6.95B"로 보고하고, 이 계산의 비임베딩 6.946B와 일치해요.
이 표에서 설계 결정의 논리가 읽혀요. Llama 2에서 3으로 갈 때 GQA(g=32→8)가 층당 attention 파라미터를 67.1M에서 41.9M으로 줄였고, 토큰당 KV 캐시도 4분의 1이 됐어요. Meta는 절약한 파라미터를 FFN(11008→14336)과 어휘(32K→128K)에 재투자했어요. Qwen3-8B는 같은 폭에서 층을 36으로 늘리고 FFN을 3d로 줄여 "더 깊고 좁은" 선택을 했고요. 7B급에서 모든 랩이 d=4096·L=32~36에 수렴했다는 건 이 값이 광범위한 내부 실험의 결과라는 뜻이지만, 어느 랩도 그 실험을 공개하지 않았어요.
MoE — expert 수·top-k·shared expert·부하 균형
MoE는 각 층의 MLP를 여러 작은 MLP(expert)로 나누고, 토큰마다 라우터가 일부만 골라 계산하는 구조예요. 총 파라미터는 크지만 토큰당 연산은 작아요. DeepSeek-V3가 참조 설계예요. 61층 중 첫 3층은 dense, 나머지 58층은 routed expert 256개 + shared expert 1개, expert 폭 2048. expert 하나가 44M 파라미터고 256개×58층이면 653.9B로 전체 671B의 97%가 expert에 있어요계산. 라우터는 softmax 대신 sigmoid를 쓰고 top-8을 골라요. sparsity(총/활성)는 32이고, Kimi K2의 소거 실험은 sparsity 8→48까지 손실이 일관되게 낮아진다고 확인했어요.
부하 균형이 MoE의 급소예요. 라우터가 소수 expert에 토큰을 몰아주면 나머지는 학습되지 않아요. Switch Transformer의 보조 손실 방식을 Mixtral(0.02)·Qwen3(0.001)·gpt-oss가 여전히 쓰고, DeepSeek-V3는 보조 손실이 성능을 해친다고 보고 auxiliary-loss-free를 도입했어요. expert마다 bias를 두고 top-k 선택에만 더하되, step마다 과부하 expert는 내리고 저부하 expert는 올려요. 여기에 한 토큰을 최대 4개 노드로만 보내는 node-limited routing을 얹었는데, 이건 클러스터 토폴로지 결정이에요.
| 모델 (시기) | 총/활성 | expert | top-k | shared | sparsity | 균형 방식 |
|---|---|---|---|---|---|---|
| Mixtral 8x7B (2023-12) | 46.7B/12.9B | 8 | 2 | 0 | 4 | aux loss 0.02 |
| DeepSeek-V3 (2024-12) | 671B/37B | 256 | 8 | 1 | 32 | aux-loss-free bias |
| Qwen3-235B (2025-04) | 235B/22B | 128 | 8 | 0 | 16 | 전역 배치 aux loss 0.001 |
| Kimi K2 (2025-07) | 1.04T/32.6B | 384 | 8 | 1 | 48 | noaux_tc |
| gpt-oss-120b (2025-08) | 116.8B/5.1B | 128 | 4 | 0 | 32 | aux loss |
| Qwen3.5-397B (2026-02) | 397B/17B | 512 | 10 | 1 | ≈51 | 미공개 |
| DeepSeek-V4-Pro (2026) | 1.6T/49B | 384 | 6 | 1 | 64 | 보고서 참조 |
추세는 명확해요. expert는 잘게·많이, sparsity는 4→32→48→64로 올라가고, 제약은 품질이 아니라 메모리와 all-to-all 통신이에요추론. dense를 택할 이유도 남아 있어요. 405B dense는 텐서 병렬만으로 노드 안에 들어가지만 671B MoE는 expert 병렬로 8노드에 걸쳐야 해요.
이 결정들은 어떻게 내려지나
설계는 "알려진 부품 중에서 프록시 실험으로 고르는 것"에 가까워요. DeepSeek-V3는 aux-loss-free 라우팅과 MTP를 15.7B(1.33T 토큰)와 228.7B(578B 토큰) 모델에서 검증한 뒤 671B에 적용했어요. Gemma 3는 지역/전역 비율과 윈도우 크기를 perplexity가 아니라 KV 캐시 메모리로 결정했고요. OpenAI·Anthropic·Gemini의 설계 과정은 공개되지 않았고, gpt-oss의 구조를 GPT-5의 구조로 가정할 근거는 없어요.
출처: Qwen3-8B config · Llama-2-7B config · Llama-3-8B config · V3 config · Gemma 3 · DeepSeekMoE · Switch Transformer · DeepSeek-V4
토크나이저는 "처음부터"에서만 결정권이 생기는 첫 자리다
토크나이저는 문자열을 정수 ID의 열로 바꾸는 함수고, 모델은 이 정수만 봐요. Hugging Face
tokenizers의 정의를 따르면 네 단계예요. (1) 정규화기가 유니코드 정규화·소문자화
등을 선택적으로 적용하고, (2) 사전토큰화기가 텍스트를 단어 후보 조각으로 자르며, (3)
모델(BPE·WordPiece·Unigram)이 조각을 어휘 항목에 매핑하고, (4) 후처리기가 특수 토큰을
붙여요.
사전토큰화 정규식이 모델의 "단어 감각"을 규정해요. GPT-4의 cl100k 정규식에서 \p{N}{1,3}은
숫자를 최대 3자리 덩어리로 미리 자른다는 뜻이고, 축약형('s, 'll)은
대소문자 무시로 분리돼요. 특수 토큰은 ID 공간 맨 위에 예약돼요(cl100k의 <|endoftext|>는
100257).
실무 순서는 이래요재구성. 정제된 코퍼스에서 언어 비율을 맞춘 샘플(수십~수백
GB)을 뽑고 → 바이트 수준 BPE를 학습해 병합 테이블을 만들고 → 특수 토큰을 예약하고 → 전체 코퍼스를
한 번만 토큰화해 평탄한 정수 배열로 저장해요. Megatron은 .bin(토큰)과
.idx(문서 오프셋) 두 파일을 쓰고, 어휘가 65,500 미만이면 uint16, 이상이면 int32예요.
128K 어휘면 토큰당 4바이트라 15T 토큰에 약 60TB 디스크가 들어요추정.
BPE · SentencePiece · Unigram
BPE는 문자에서 시작해 가장 자주 함께 나타나는 쌍을 병합해 새 토큰을 만드는 알고리즘이고,
Unigram은 문장 확률을 최대화하는 서브워드 집합을 찾는 확률 모델이에요. SentencePiece는
Google의 구현체로 둘 다 지원하고 공백을 ▁로 다뤄요. 바이트 수준 BPE는 알파벳을
256바이트로 고정해 어떤 문자열도 인코딩 가능하게 한 변형이에요. 2024~2026년 프론티어 토크나이저는 두
계보예요. tiktoken 계보(Llama 3 128K, V3 128K, Qwen3 151,669, gpt-oss 201,088)와 SentencePiece
계보(Gemma 3 262K, Gemini 2.0과 같은 토크나이저). Claude의 토크나이저 사양은 공개되지 않았어요.
어휘 크기는 손실이 아니라 추론 비용으로 정해진다
세 힘이 충돌해요. 어휘가 크면 같은 텍스트가 적은 토큰으로 표현돼 비용이 줄고 실효 문맥이 늘지만, 임베딩·출력 헤드 파라미터가 커지고 희귀 토큰은 학습 신호가 적어져요. Tao 등(2024)은 "연산 최적 어휘는 연산량과 함께 커진다"는 걸 보였고 Llama-2-70B의 최적 어휘는 32K가 아니라 약 216K라고 추정했어요. 한국 Trillion Labs는 소거 실험상 한국어 최적 어휘가 1,500~5,000개였음에도 24,552개를 할당했는데, "Llama 3 토크나이저 대비 한국어 추론 속도가 35% 이상 빨라지기 때문"이라고 밝혔어요. 어휘 결정은 손실이 아니라 추론 비용으로 내려져요.
한국어를 제대로 지원하려면
바이트 BPE는 한글(UTF-8 3바이트)을 항상 인코딩할 수 있지만, 한국어 병합이 없으면 음절 하나가 최대 3토큰이 돼요. NAVER의 측정에서 같은 1,000문서의 한국어 토큰 수는 HyperCLOVA X 676 기준으로 Gemma 1,019(1.51배), GPT-4 1,420(2.10배), LLaMA 2,079(3.07배)였어요. OpenAI는 GPT-4o의 o200k에서 같은 문장의 한국어 토큰이 45→27로 줄었다고 밝혔고요.
| 모델 | 어휘 | 한국어 배분·방식 |
|---|---|---|
| HyperCLOVA X | 100K | 형태소 인식 바이트 수준 BPE |
| Trillion-7B | 128,256 | 약 100,000 영어 · 24,552 한국어 |
| EXAONE 4.0 | 102,400 | 한국어·영어 "거의 같은 비율" |
| K-EXAONE (2026) | 150K | 고빈도 70% 유지, SuperBPE 약 20%, 영:한:다국어=2:3:1, NFKC→NFC, 바이트/토큰 효율 약 30% 개선 |
| Kanana-2 | 128,256 | "한국어에서 30% 이상 개선" |
토크나이저가 결정하는 건 넷이에요. 같은 문맥 창에 담기는 정보량, 토큰당 과금되는 API 비용과 디코딩 지연, 같은 FLOPs로 볼 수 있는 텍스트 양, 숫자·코드·한글 같은 도메인의 표현 효율. Petrov 등(2023)은 같은 문장이 언어에 따라 토큰 길이가 최대 15배 다르다는 걸 보였고, SuperBPE는 같은 크기·어휘·연산의 8B 모델이 30개 과제 평균 +4.0%p, 추론 연산 27% 절감을 냈어요. 한 번 정하면 사전학습 후 바꿀 수 없기 때문에(EEVE처럼 어휘를 확장하려면 수십억 토큰의 추가 학습이 필요해요, 13강), from-scratch에서만 완전한 결정권이 생기는 첫 번째 지점이에요.
출처: HF tokenizers · tiktoken · Megatron-Core · Tao et al. · Trillion-7B · HyperCLOVA X · K-EXAONE · Petrov et al. · SuperBPE
데이터는 240조에서 3.8조만 남긴다
웹의 원천은 사실상 하나, Common Crawl이에요. DCLM-Pool은 2023년 이전 CC 전체를 모아 2,000억 문서·240T 토큰을 확보했고, FineWeb은 96개 스냅샷에서 15T를, FineWeb-2는 1,868개 언어-문자 쌍을 제공해요. 한국어는 6,087만 문서·486억 단어로 중국어의 약 1/10, 영어의 약 1/100 규모예요. 책은 2025년 이후 "구매·라이선스한 입력"이 됐어요. Bartz v. Anthropic에서 법원은 합법 구매 도서로의 학습은 공정이용이지만 해적판 사용은 아니라고 판시했고, Anthropic은 약 50만 작품에 작품당 약 3,000달러, 총 15억 달러에 합의했어요. 코드는 Software Heritage의 Stack v2가 표준이고, Wikipedia는 놀랄 만큼 작아 Dolma 전체의 0.14%예요.
합성 데이터가 2025~2026년의 가장 큰 변화예요. Nemotron-CC는 저품질 층을 Mistral NeMo 12B로 Wikipedia 스타일로 재서술하고 고품질 층을 QA·지식 목록으로 확장해 약 1.9T의 합성 토큰을 만들었고, v2는 Qwen3-30B와 Mistral-Nemo로 2.28T를 생성했어요. Qwen3는 PDF를 Qwen2.5-VL로 OCR하고 자체 수학·코드 모델로 합성 데이터를 만들었어요. 데이터 파이프라인이 이제 다른 LLM을 대규모로 돌리는 추론 클러스터를 포함한다는 뜻이에요.
필터링 파이프라인 — 각 단계의 실제 규칙과 수율
공개 레시피(FineWeb, DCLM, Dolma, RefinedWeb, Nemotron-CC, Llama 3)는 순서가 거의 같아요.
| 단계 | 실제 규칙·도구 | 수율 사례 |
|---|---|---|
| 본문 추출·언어 | trafilatura/resiliparse로 HTML 본문, fastText 영어 ≥0.65 | Dolma: CC의 61.7% 제거 |
| 휴리스틱 | Gopher·C4 규칙(단어 수·기호 비율·문장부호 끝맺음), FineWeb 추가 3규칙 | FineWeb: 기본 필터 후 약 22% 추가 제거 |
| 중복제거 | URL 정확 → MinHash 5-gram(14버킷×8, ~75% Jaccard) → 문단·줄 수준 | FineWeb: 36T → 20T → 15T · Dolma URL 중복 53.2% |
| 모델 기반 품질 | DCLM fastText 상위 10% · FineWeb-Edu 0~5점 교육성 분류기(≥3) · Nemotron 5개 층 | FineWeb-Edu: 15T → 1.3T, 분류기 추론에 6,000 H100시간 |
| 독성·PII | Jigsaw 분류기 τ=0.4 · 이메일/IP/전화 정규식 마스킹 | Dolma: 5.5~7.3% 제거 (τ를 낮추면 30%가 날아가 목표를 못 채움) |
| 오염 제거 | 13-gram(GPT-3) / 50자(GPT-4) 중복, Bloom 필터 | 재서술된 테스트로 학습한 13B가 MMLU 85.9 — n-gram은 못 잡음 |
단계별 수율을 곱하면추론 원본 CC 중 언어 판별 후 15~20%가 살아남고, 휴리스틱이 20~25%를, 중복제거가 12~45%를 더 걷어내며, 분류기는 10~30%만 남겨요. DCLM의 240T→3.8T(1.6%)가 이 곱셈의 결과예요. DCLM의 결론은 "모델 기반 필터링이 핵심"이었어요. r/ExplainLikeImFive를 양성 예시로 학습한 fastText 분류기 하나가 perplexity 필터와 PageRank를 이겼어요.
혼합 비율 — 무엇을 얼마나 섞나
DoReMi는 280M 프록시 모델로 도메인 가중치를 찾아 8B 모델에 적용했더니 기준 정확도에 2.6배 빨리 도달했어요. RegMix는 1M 파라미터 모델 512개로 회귀식을 맞췄고, "Wikipedia 같은 고품질로 여겨지는 데이터보다 웹 코퍼스가 다운스트림 성능과 가장 강한 양의 상관"이라는 발견을 냈어요. Llama 3의 최종 혼합은 일반 지식 50% / 수학·추론 25% / 코드 17% / 다국어 8%예요. 한국어 모델은 HyperCLOVA X가 한국어·영어·코드를 약 1/3씩, Trillion-7B가 영어:한국어:기타=8.5:1:0.5를 썼어요. DeepSeek-V3·Qwen3·Gemma 3의 비율은 공개되지 않았어요.
에폭은 4번까지예요. Muennighoff 등의 400회 실험은 "최대 4 에폭의 반복은 고유 데이터 대비 손실 변화가 무시할 만하다"고 확인했고 그 이상은 가치가 0으로 수렴해요. 혼합은 학습 전체에서 고정되지 않아요. Qwen3는 1단계 일반 30T → 2단계 추론 5T → 3단계 장문맥 순으로, Kakao Kanana는 2.7T 다양성 단계 후 300B 고품질 단계로 KMMLU +2.79를 얻었어요.
한국어 중심 모델의 현실
FineWeb-2 한국어 486억 단어는 대략 700억~1,200억 토큰이에요추정. 한국어만으로 15T를 채울 수는 없어요. 그래서 Kanana의 품질 우선 필터, K-EXAONE의 합성 추론 데이터, Trillion의 영어+한국어 교차 패킹이 나온 거예요. 한국어 중심이라면 다국어 비중을 1/3이나 10%로 올리고 한국어를 3~4 에폭 반복하는 걸 받아들여야 해요.
흐름은 "더 세게 거르기"에서 "거른 뒤 합성하기"로 바뀌었어요. 상위 10% 필터링은 고유 실제 토큰을 0.2~1.0T만 남기니 15T 이상 지평에서는 반복이 불가피하거든요. Nemotron-CC는 덜 세게 걸어 4.4T 실제 토큰을 지키고 1.9T를 합성해 15T 지평에서 Llama 3.1 8B 대비 MMLU +5를 얻었어요. 폐쇄형 랩의 데이터 파이프라인은 어느 것도 1차 자료가 없어요. GPT-5 카드는 "인터넷 공개 정보, 제3자 제휴 정보"라는 범주만, Claude Opus 4.6 카드도 범주만 밝혀요.
출처: DCLM · FineWeb · FineWeb-2 · Dolma · Nemotron-CC · NPR (2025-09-05) · DoReMi · RegMix · Muennighoff et al. · Yang et al. · Kanana
랜덤 가중치가 모델이 되는 한 step의 생애
초기화는 모든 가중치 행렬을 평균 0, 작은 표준편차의 정규분포에서 뽑는 거예요. GPT-2·nanoGPT·OLMo 2는
std 0.02, DeepSeek는 0.006을 써요. 여기에 깊이 보정이 붙어요. GPT-2 논문은 잔차 층의 가중치를
1/√N(N=잔차 층 수)로 스케일링했고, nanoGPT 코드는 c_proj에 0.02/√(2·n_layer)를
적용해요. 잔차 스트림에 2L개의 서브층 출력이 더해지니 각 출력의 분산을 줄여야 스트림이 깊이에 따라
폭발하지 않아요추론. muP는 이를 폭에 대해 체계화했고, modded-nanogpt
스피드런은 projection의 0 초기화를 핵심 기법으로 써요. OpenAI·Anthropic·Gemini의 초기화 방식은
공개되지 않았어요.
forward — 정수 ID가 logits가 되기까지
배치 B, 시퀀스 T, 폭 d, 어휘 V일 때 입력은 정수 텐서 [B, T]예요. 임베딩 조회로 [B, T, d]가 되고,
각 층에서 Q·K·V를 만든 뒤 softmax(QKᵀ/√h_d + 인과 마스크)V를 잔차에 더하고, RMSNorm과 SwiGLU를
거쳐 다시 더해요. nanoGPT의 네 줄짜리 attention은 실제 학습에서
scaled_dot_product_attention 한 줄, 즉 FlashAttention 커널 하나로 대체돼요. 인과
마스크 덕분에 한 번의 forward로 T개 위치 전부의 "다음 토큰" 예측이 병렬로 나와요. 최종 logits
[B, T, V]는 커요. B=1, T=8192, V=128,256이면 BF16으로 2.1GB라서 청크 단위 cross-entropy 커널이
필요해요계산.
파라미터 N인 모델에서 토큰당 forward는 약 2N FLOPs, backward는 약 4N이므로 학습 총 연산 ≈ 6·N·D(D=토큰 수)예요. 이 식 하나가 이 교과서의 모든 비용 계산의 뿌리예요. H100 SXM은 BF16 dense 989 TFLOPS이고, FlashAttention-3는 s×s 점수 행렬을 HBM에 쓰지 않고 SRAM 안에서 타일별로 계산해 75% 활용을 내요.
cross entropy — 첫 step의 손실은 ln V다
교차 엔트로피는 각 위치의 logits에 softmax를 적용해 정답 토큰의 확률에 −log를 취한 뒤 평균한 값이에요. 초기화 직후 모델은 어휘 전체에 거의 균등한 확률을 내므로 손실은 ln V에 가까워요. GPT-2 어휘 50,257이면 10.825, Llama 3 어휘 128,256이면 11.762예요. 이게 실무의 첫 번째 정상성 검사예요. 첫 step 손실이 ln V보다 훨씬 낮으면 정보 누출(인과 마스크 누락), 훨씬 높으면 초기화가 너무 크다는 뜻이에요추론.
활성값은 별도예요 — 긴 시퀀스에서는 활성값이 가중치보다 커요. 첫 손실이 이 값보다 1 이상 낮게 나오면 마스크를 의심하세요.
backward · AdamW · 학습률
역전파는 forward에서 저장한 활성값을 거꾸로 되짚어요. 출발점은 dL/dlogits = (softmax − onehot)/(B·T)이고, 이게 출력 헤드·각 층·임베딩 순으로 전파돼 모든 가중치의 기울기를 만들어요. 층당 활성 메모리는 s·b·h·(34 + 5·a·s/h) 바이트라서 긴 시퀀스에서는 5as²b 항 때문에 활성값이 메모리를 지배해요. 선택적 재계산은 GPT-3-175B에서 2.7%의 연산으로 70%의 활성 메모리를 절약해요.
AdamW는 기울기의 이동평균(m)과 제곱의 이동평균(v)으로 좌표별 보폭을 조절하고, 가중치 감쇠를 갱신식에서 분리해요. 공개 레시피의 값은 놀랄 만큼 일치해요. β₁=0.9, β₂=0.95, 감쇠 0.1, 클리핑 1.0 — Llama 2, DeepSeek, OLMo 2가 같아요. β₂=0.95는 기본값 0.999보다 훨씬 짧은 기억(약 20 step)이라 손실 스파이크를 줄인다고 여겨져요추론. 2025~2026년에는 Muon이 등장했어요. Kimi K2의 MuonClip은 "손실 스파이크 0"을, DeepSeek-V4도 Muon을 채택했어요.
학습률은 크기에 따라 내려가요. Llama 3는 8B/70B/405B에 3e-4/1.5e-4/8e-5, DeepSeek-V3는 2.2e-4예요. 첫 step의 Adam 갱신은 편향 보정 때문에 정확히 −η·sign(g)이라 기울기 크기와 무관하게 모든 좌표가 ±η만큼 움직여요. 그래서 워밍업이 필요해요. 스케줄은 코사인(Llama 3: 8,000 step 워밍업 후 1.2M step 감쇠)과 WSD(MiniCPM: "마지막 10%의 감쇠면 충분하고 2.5%는 부족") 두 계보예요. 배치도 램프해요. Llama 3는 4M→8M→16M 토큰으로 키웠어요.
손실 스파이크는 클리핑에도 나요. PaLM은 약 20번의 스파이크를 겪고 100 step 전 체크포인트에서 재시작해 200~500 배치를 건너뛰는 식으로 복구했어요. 2024~2025년의 대응은 구조적이에요. OLMo 2는 QK-norm·z-loss·임베딩 감쇠 제거로, DeepSeek-V3는 "전체 학습 동안 복구 불가능한 스파이크나 롤백이 한 번도 없었다"고 보고해요.
혼합 정밀도 — 파라미터당 16바이트의 정체
BF16 가중치 2 + BF16 기울기 2 + FP32 마스터 가중치 4 + Adam m 4 + Adam v 4 = 16바이트. 7B는 112GB, 405B는 6.48TB, 671B는 10.7TB가 상태만으로 필요해요. 이게 한 GPU(80GB)로 학습할 수 없는 첫 번째 이유예요. FP8은 E4M3(forward)와 E5M2(기울기) 두 형식이 있고 텐서별 스케일링이 필요해요. DeepSeek-V3는 공개된 가장 큰 FP8 사전학습으로, 활성값 1×128 타일·가중치 128×128 블록 스케일링에 FP32 누적을 써서 BF16 대비 상대 손실 오차가 0.25% 미만이었어요. Blackwell은 NVFP4를 하드웨어로 지원하고 NVIDIA는 405B 사전학습이 FP8보다 1.9배 빨랐다고 보고해요. 프론티어 폐쇄형 모델이 FP4로 끝까지 학습됐는지는 공개되지 않았어요.
전체를 연결하면
한 step은 (1) 데이터로더가 [B, T] 배치를 읽고 → (2) forward가 활성값을 저장하며 logits를 만들고 → (3) cross-entropy가 스칼라 손실을 내고 → (4) backward가 모든 가중치의 BF16 기울기를 만들고 → (5) 전역 노름을 재서 클리핑하고 → (6) AdamW가 FP32 마스터·m·v를 갱신한 뒤 BF16으로 캐스팅하고 → (7) 스케줄러가 다음 η를 정하고 → (8) 주기적으로 체크포인트와 평가가 돌아요. 이 루프가 Llama 3 405B에서는 약 100만 번(15.6T/16M) 반복돼계산 ln V ≈ 11.8에서 시작한 손실이 2 아래로 내려가면 그게 파운데이션 모델이에요. 재개용 체크포인트에는 BF16 가중치, FP32 마스터, Adam m·v, 스케줄러 step, 난수 상태, 데이터로더 위치가 다 들어가야 해요. Llama 3의 16K GPU에서는 54일간 419건의 예기치 않은 중단(약 3.1시간마다 1건)이 있었으니 수십 분 이하 간격 저장이 필요하고, 그래서 2~7TB/s 스토리지를 갖춘 거예요추론.
출처: nanoGPT · GPT-2 · Ultra-Scale Playbook · Korthikanti et al. · AdamW · MiniCPM (WSD) · PaLM · ZeRO · DeepSeek-V3 (FP8) · Llama 3
"다음 토큰 예측"은 8×4 행렬로도 재현된다
"The cat is sitting on the mat"에서 "mat"을 예측하는 학습은 이 문장 하나만으로 6개의 예측 문제를 동시에 풀어요. 입력을 한 칸 왼쪽, 정답을 한 칸 오른쪽에 놓고(teacher forcing), 인과 마스크 덕분에 위치 t의 출력은 위치 0~t만 보고 t+1을 맞혀요. 아래 숫자는 어휘 V=8, 폭 d=4, head 1개, 층 1개, 시퀀스 T=3인 toy 모델을 NumPy로 실제로 돌린 출력이에요. 어휘는 ["the","cat","is","sitting","on","mat","dog","<eos>"], 입력 [0,1,2]("the cat is"), 정답 [1,2,3]("cat is sitting")이에요.
초기화 직후의 attention은 단순 평균이다
std 0.02로 초기화하면 Q·K가 10⁻³ 규모라 점수 QKᵀ/√4는 모두 ≈0이고, 마스킹 후 softmax를 하면 attention 가중치는 완전 균등이 돼요.
A = [[1. 0. 0. ] ← "the"는 자기 자신만 본다
[0.5 0.5 0. ] ← "cat"은 the/cat을 반반
[0.3333 0.3333 0.3333]] ← "is"는 셋을 균등 평균 (행 합 = 1)
logits에 softmax를 취하면 모든 확률이 1/8=0.125 근처예요. 정답 토큰의 확률은 [0.1251, 0.1250, 0.1251], −log의 평균은 2.079017. ln 8 = 2.079442이니 6강의 "초기 손실 ≈ ln V"가 그대로 재현돼요. 마지막 위치가 "mat"에 주는 확률은 0.1249이고 argmax는 엉뚱하게 "is"예요. 학습되지 않은 모델은 이렇게 생겼어요. 참고로 std를 0.5로 키우면 평균 손실이 1.8710으로 우연히 ln 8보다 낮아지는데, 이게 "초기 손실이 ln V보다 훨씬 낮으면 초기화 스케일을 의심하라"는 검사의 근거예요.
기울기는 (softmax − onehot)/T에서 시작한다
dL/dlogits = [[ 0.0417 -0.2916 0.0417 0.0416 0.0417 0.0417 0.0417 0.0417]
[ 0.0417 0.0418 -0.2917 0.0416 0.0417 0.0417 0.0416 0.0416]
[ 0.0417 0.0417 0.0417 -0.2916 0.0417 0.0417 0.0416 0.0417]]
각 행에서 오답 토큰은 +p/3 ≈ +0.0417(확률을 낮추라는 신호), 정답 토큰은 (p−1)/3 ≈ −0.2917(높이라는 신호)이에요. 정답 쪽 기울기가 오답 7개의 합과 정확히 상쇄돼 행 합이 0인 것이 softmax의 성질이에요. 이 텐서를 hᵀ와 곱하면 출력 헤드의 기울기가 나오고, 실제 모델에서는 같은 기울기가 W_o·W_v·W_k·W_q·MLP·임베딩까지 연쇄 법칙으로 전파돼요.
AdamW 한 step의 숫자
lr=3e-4, β₁=0.9, β₂=0.95, t=1로 적용하면 편향 보정 때문에 m̂/(√v̂+ε) = sign(g)가 되고, 첫 step의 갱신은 Δw = −lr·(sign(g) + 0.1·w)예요. "cat" 행의 기울기 부호가 [−,−,−,+]이니 Δw = [+0.0003, +0.0003, +0.0003, −0.0003]. 출력 헤드만 갱신하고 손실을 다시 재면 2.079017 → 2.078987로 아주 조금 내려가요. 이게 한 step이고, 프론티어 모델은 이걸 10⁵~10⁶번, 수십조 토큰에 대해 반복해요. 이 예에서 실무 규칙 셋이 확인돼요. 첫 Adam step은 부호 step이라 워밍업이 필요하고, 정답 확률을 올리는 힘과 오답을 내리는 힘이 같은 텐서에서 나오며, step당 이동 거리는 배치가 아니라 lr이 정해요.
import numpy as np; rng=np.random.default_rng(0); V,d,T=8,4,3; std=0.02
softmax=lambda x:(lambda e:e/e.sum(-1,keepdims=True))(np.exp(x-x.max(-1,keepdims=True)))
E=rng.normal(0,std,(V,d)); P=rng.normal(0,std,(T,d))
Wq,Wk,Wv=[rng.normal(0,std,(d,d)) for _ in range(3)]; Wo=rng.normal(0,std,(d,d))/np.sqrt(2*1); Wlm=E.copy()
ids,tg=[0,1,2],[1,2,3]; X=E[ids]+P; Q,K,Vv=X@Wq,X@Wk,X@Wv
S=Q@K.T/np.sqrt(d); mask=np.triu(np.ones((T,T)),1).astype(bool); A=softmax(np.where(mask,-np.inf,S))
H=X+(A@Vv)@Wo; logits=H@Wlm.T; probs=softmax(logits); loss=-np.log(probs[np.arange(T),tg]).mean()
onehot=np.zeros_like(probs); onehot[np.arange(T),tg]=1; dlogits=(probs-onehot)/T; dW=dlogits.T@H
lr,b1,b2,eps,wd=3e-4,0.9,0.95,1e-8,0.1; m=(1-b1)*dW; v=(1-b2)*dW**2
Wnew=Wlm-lr*((m/(1-b1))/(np.sqrt(v/(1-b2))+eps)+wd*Wlm)
같은 문장이 Llama-3-8B를 지나가면
실제 모델과의 차이는 규모뿐이에요계산. 문장이 약 7개 토큰으로 잘리면 입력은 [1, 7], 임베딩 후 [1, 7, 4096]. 각 층에서 Q는 [1, 32, 7, 128], K와 V는 GQA 때문에 [1, 8, 7, 128]이고 32개 쿼리 head가 4개씩 하나의 KV head를 공유해요. SwiGLU는 4096 → 14336 → 4096. 32층을 지나 logits는 [1, 7, 128256], 즉 897,792개의 실수예요. 학습 시 이 문장은 EOD 토큰으로 다른 문서와 이어져 8,192 토큰 시퀀스에 패킹되고, 16M 토큰 배치에서 이 7개 토큰이 기울기에 기여하는 몫은 7/16,777,216이에요. 추론 시 KV 캐시는 토큰당 2×32층×8head×128차원 = 65,536개 값, BF16으로 128KB예요. 8,192 토큰 문맥이면 약 1.07GB. MHA(KV head 32)였다면 4배인 512KB/토큰이고, 이게 3강에서 Meta가 GQA를 택한 이유예요.
출처: nanoGPT · Llama-3-8B config · FlashAttention-3 · toy 계산은 원 조사자가 NumPy(seed 0)로 실행한 값
만 장의 GPU는 네 축으로 쪼갠다
두 벽이 있어요. 메모리 벽은 16바이트/파라미터에서 와요. 405B의 상태만 6.48TB인데 H100은 80GB, H200은 141GB예요. 시간 벽은 6·N·D에서 와요. Llama 3 405B의 3.8×10²⁵ FLOPs를 H100 한 장이 40% 효율로 돌리면 약 3,000년이에요계산. 그래서 모델을 여러 축으로 쪼개고 조각들이 통신으로 하나처럼 동작하게 만들어요. Llama 3는 [TP, CP, PP, DP] 4D 병렬화를, DeepSeek-V3는 PP·EP·ZeRO-1 DP(TP 없음)를 썼어요.
| 축 | 무엇을 쪼개나 | 통신 | 한계와 사례 |
|---|---|---|---|
| DP 데이터 병렬 | 배치를 N등분, 모델은 복제 | 기울기 all-reduce (2Ψ 바이트) | 모든 GPU가 16Ψ를 다 듦 → ZeRO가 옵티마이저(1)·기울기(2)·파라미터(3)를 샤딩해 16Ψ/N까지. FSDP는 ZeRO-3의 PyTorch 구현, 512 A100에서 55~60% MFU |
| TP 텐서 병렬 | 한 층의 행렬곱을 열/행 방향으로 | 층마다 all-reduce 4회, 활성값 크기 | NVLink(900GB/s) 안에서만 감당 → 노드 안 8장까지. Llama 3 TP=8 |
| PP 파이프라인 병렬 | 층을 p개 스테이지로 | 스테이지 간 점대점 한 덩어리 | 버블 (p−1)/m. Zero Bubble PP는 +23~31%, DualPipe는 계산과 통신을 겹침. TorchTitan 405B 교차 1F1B +30% |
| CP/SP 시퀀스 병렬 | 시퀀스를 여러 GPU에 | Ring Attention은 K/V 블록을 링으로 | 7B를 8×A100에서 512K 문맥. Llama 3 131K 단계는 TP8·CP16·PP16·DP8 |
| EP expert 병렬 | MoE expert를 GPU에 분산 | all-to-all dispatch/combine | V3는 8노드 64-way EP, node-limited routing, 20개 SM으로 IB+NVLink 대역폭 채움. DeepEP 공개 커널 |
NCCL은 GPU 간 집합 통신 라이브러리예요. AllReduce(합산해 모두가 결과를 가짐), AllGather(조각을 모아 모두에게), ReduceScatter(합산 결과를 조각내 하나씩), AlltoAll. all-reduce는 수학적으로 reduce-scatter + all-gather예요. MFU는 관측 처리량을 피크 FLOPs 대비로 잰 비율이고 PaLM 46.2%, Llama 3 405B 38~43%, FSDP GPT-175B 55~60%예요. DeepSeek-V3의 1조 토큰당 180K H800시간은 GPU당 약 343 TFLOPS, BF16 피크 대비 35%지만 FP8 피크 대비로는 17%라 all-to-all이 한계임을 시사해요추론.
8,192장의 H100으로 한 step — 서사와 산술
Llama 3의 8,192-GPU 구성(TP=8, PP=16, DP=64, 시퀀스 8,192, MFU 43%)과 405B dense를 기준으로 재구성한 거예요. 구성과 하드웨어 수치는 출처가 있지만 step의 시간 전개는 계산이에요추론·계산.
- 배치 조립 — 전역 배치 16M 토큰 = 2,048 시퀀스 × 8,192 (64 DP × 32). 각 DP 복제본이 32개 시퀀스를 32개 마이크로배치로 잘라 파이프라인에 넣어요.
- 배치(placement) — 1,024 노드 × 8. TP=8이 한 노드를 NVLink로 묶고, PP=16이 16개 노드에 126층을 약 8층씩 나누고, 이 128-GPU 복제본이 64개. GPU당 파라미터 3.16B: BF16 가중치 6.3GB + 기울기 6.3GB + ZeRO-1 옵티마이저 샤드 약 0.6GB.
- forward — 층마다 열 병렬 QKV → FlashAttention-3 → 행 병렬 W_o → all-reduce(268MB, NVLink) → SP RMSNorm → SwiGLU → all-reduce. 남기는 활성값은 스테이지당 약 47GB라 재계산 없이 80GB에 들어가요 (Llama 3의 "활성 체크포인팅 없음"과 일치). 스테이지 출력 268MB는 400Gbps NIC로 약 5ms.
- backward와 DP 축약 — logits [1, 8192, 128256] 2.1GB에서 시작해 층이 역순으로. 마지막 마이크로배치가 끝나면 6.3GB 기울기 버퍼를 64개 동료와 reduce-scatter. 링 트래픽 약 12.4GB, 50GB/s에서 약 0.25초라 backward 꼬리와 겹쳐 사라져요.
- 옵티마이저 — 각 rank가 약 49M 파라미터에 대해 FP32로 AdamW → BF16 캐스팅 → all-gather.
- 시간 — step당 FLOPs = 6 × 405e9 × 16e6 = 3.89×10¹⁹. GPU당 유효 396 TFLOPS이면 ≈12.0초/step. 15.6T 토큰을 16M 배치로 나누면 975,000 step. 16,384 GPU면 ≈5.9초, B200급 8,000장이면 ≈5.4초.
- 장애 — 54일간 419건 중단 중 78%가 하드웨어, 58.7%가 GPU 관련(불량 GPU 148건, HBM3 72건, 소프트웨어 버그 54건, 스위치/케이블 35건, 조용한 데이터 손상 6건). 수동 개입은 단 3회, 유효 학습 시간 90% 이상. 낮 기온에 따른 DVFS로 처리량이 1~2% 변동하고 "단 하나의 straggler가 수천 GPU를 늦출 수 있다".
MoE 변형(V3식, 37B 활성)은 TP가 없고, MoE 층마다 all-to-all dispatch → FP8 expert GEMM → combine이 일어나요. step당 FLOPs는 dense 405B의 1/11이고, 2,048 H800에서 약 5초. 8,000 GPU에서 all-to-all이 완벽히 확장된다면 1.3초지만 실제로는 그렇지 않고, 이게 node-limited routing의 존재 이유예요추론.
2026년의 스택
공개 스택은 PyTorch(FSDP2/DTensor/TorchTitan, Megatron-Core, DeepSpeed) + FlashAttention-3 + Transformer Engine으로 수렴했어요. Google은 TPU Ironwood pod(최대 9,216칩) 위의 JAX/XLA, DeepSeek는 자체 HAI-LLM과 PTX 커널, Meta는 PyTorch+NCCLX. Anthropic은 Trainium·TPU·GPU에서 학습하며 100만 개 이상의 Trainium2를 쓴다고 밝혔지만 배분·프레임워크·MFU는 공개하지 않았어요. 규모 상한은 xAI Colossus 2로 Epoch AI가 약 44만 장으로 추정하지만 회사 공식 수치는 아니에요.
출처: Llama 3 · ZeRO · FSDP · Megatron-LM · Zero Bubble PP · Ring Attention · DeepEP · NCCL · TorchTitan · Anthropic–Amazon · Epoch AI
스케일링 법칙은 두 번 고쳐졌다
스케일링 법칙은 손실 L이 파라미터 N, 토큰 D, 연산 C의 거듭제곱 함수로 예측 가능하게 떨어진다는 경험 법칙이에요. Kaplan 등(2020)은 "폭/깊이 같은 세부는 최소한의 영향"이고 "큰 모델을 적은 데이터로 학습하고 수렴 훨씬 전에 멈추라"고 했어요. Hoffmann 등(2022, Chinchilla)이 400개 이상 모델로 이를 뒤집었어요. "모델 크기와 토큰 수를 같은 비율로 키워야" 하며, 같은 연산으로 4배 많은 데이터를 쓴 Chinchilla(70B, 1.4T)가 Gopher(280B)를 MMLU 7점 이상 앞섰어요. "파라미터당 20 토큰"은 1.4T/70B의 비율이에요. 손실이 왜 거듭제곱인지는 아직 정설이 없어요.
수정 1 — Epoch AI의 재적합, 수정 2 — 추론 비용
Epoch AI(2024)는 Hoffmann의 그림에서 데이터를 복원해 공개 상수가 복원 데이터와 잘 맞지 않는다고 밝히고 L = 1.8172 + 482.01/N^0.3478 + 2085.43/D^0.3658로 재적합했어요. 공개 상수를 C=6e23에서 최소화하면 N≈33B, D≈3.0T(약 91 토큰/파라미터)가 나와 모순이 드러나고, Epoch 재적합은 N≈74B, D≈1.35T(약 18 토큰/파라미터)로 20 규칙과 일치해요계산. Sardana 등(2024)은 "Chinchilla는 추론 비용을 빠뜨렸다"며, 수십억 번 서빙될 모델은 "더 작고 더 오래 학습한" 쪽이 답이고 파라미터당 최대 10,000 토큰까지 품질이 계속 오른다고 보였어요.
| 모델 | N (총/활성) | D | 토큰/파라미터 |
|---|---|---|---|
| Chinchilla (2022) | 70B | 1.4T | 20 |
| Llama 3 405B (2024) | 405B | 15.6T | 38.5 |
| Llama 3 8B (2024) | 8B | ~15T | ~1,875 |
| DeepSeek-V3 (2024) | 671B / 37B | 14.8T | 22 총 / 400 활성 |
| Gemma 3 27B / 1B (2025) | — | 14T / 2T | 519 / 2,000 |
| Qwen3 0.6B (2025) | 0.6B | 36T | 60,000 |
| Kimi K2 (2025) | 1T / 32B | 15.5T | 15.5 총 / 484 활성 |
| SmolLM3 3B (2025) | 3B | 11.2T | ~3,700 |
패턴은 명확해요. 플래그십 dense는 약 2배 과학습, 서빙용 소형 모델은 100~60,000배 과학습, MoE는 "총 파라미터 기준 Chinchilla 근처, 활성 기준 수백 배". 추론 비용은 활성 파라미터에 비례하고 작은 모델은 큰 모델의 증류 대상이라 제약이 연산이 아니라 교사 데이터예요추론. 2024년 9월 이후엔 테스트 타임 연산이 새 축으로 더해졌어요. OpenAI o1은 AIME 2024에서 GPT-4o의 13%를 83%로 올렸고, Anthropic은 AIME 정확도가 사고 토큰에 대해 로그적으로 향상한다고 보고했어요.
"10B를 10T로" vs "100B를 1T로" — 같은 연산, 다른 모델
두 run의 연산은 동일하게 6.0×10²³ FLOPs, H100 40% MFU 기준 약 421,000 H100시간, RunPod 단가면 약 147만 달러예요계산. 손실 예측은 공개 Hoffmann 적합으로 사실상 동률이고 Epoch 재적합은 10B/10T가 약 0.04 nat 나빠요. 실제 차이는 다른 곳에 있어요. 추론 비용은 100B가 10배 비싸고 가중치 메모리도 200GB 대 20GB. 학습 형태는 100B가 상태만 1.6TB라 20장 이상에 샤딩하고 TP·PP가 필요한 반면 10B는 160GB라 FSDP 몇 장이면 돼요. 능력의 결은 손실이 같아도 달라요. 100B는 희귀 사실·지식 집약 과제에서, 10B는 표면 커버리지와 서빙 비용에서 유리할 가능성이 있어요추론, 측정되지 않음. 서빙할 모델이면 10B/10T가 정답이고, 실제 모든 오픈 랩의 소형·중형 라인이 500~60,000 토큰/파라미터 구간에 있어요. 100B/1T는 중간 체크포인트, 서빙하지 않는 교사 모델, 고유 데이터가 1T 근처로 제한된 상황에서만 합리적이에요.
아래에서 N과 D를 바꿔 보세요. 두 적합식의 손실 예측과 토큰/파라미터, 연산량이 같이 움직여요. 적합 범위(≤16B, ≤500B 토큰) 밖은 외삽이라 방향만 믿고 절대값은 믿지 마세요.
Hoffmann: A=406.4, B=410.7, E=1.69, α=0.34, β=0.28. Epoch: A=482.01, B=2085.43, E=1.8172, α=0.3478, β=0.3658. 두 식의 E(환원 불가능한 엔트로피)가 다르니 절대값이 아니라 두 설정 사이의 차이를 보세요.
출처: Kaplan et al. · Hoffmann et al. (Chinchilla) · Epoch AI 재현 · Sardana et al. · DeepSeek LLM · OpenAI o1 · Anthropic · RunPod (2026-09)
베이스 모델은 챗봇이 아니다
사전학습이 끝난 베이스 모델은 웹 텍스트의 다음 토큰을 예측하는 확률 분포일 뿐이에요. 대화 턴의 구조도, "사용자에게 답한다"는 개념도, 멈추거나 거절할 이유도 없어요. 질문을 넣으면 비슷한 질문을 이어 쓰거나 광고 문구를 붙일 수 있어요. InstructGPT(2022)가 이걸 정면으로 다뤘고 결론이 지금도 유효해요. SFT → 보상 모델 → RL 3단계를 거친 1.3B 모델의 출력이 "100배 큰 175B GPT-3보다 선호되었다". 이후의 모든 단계는 베이스의 출력 분포를 "도움이 되고 정직하며 안전한 조수"의 분포로 옮기는 작업이고, 연산은 사전학습의 0.2%(V3: 5K/2.788M GPU시간)지만 사람과 데이터 설계가 집중돼요.
| 단계 | 무엇을 가르치나 | 왜 필요한가 | 규모·사례 |
|---|---|---|---|
| SFT | (프롬프트, 응답) 쌍으로 채팅 템플릿과 형식. 프롬프트 토큰은 손실에서 마스킹 | 베이스 목적함수에 "답하고 멈추라"는 보상이 없음. 형식을 옮기는 가장 싼 방법 | Tulu 3 939K · V3 1.5M · Llama 3 lr 1e-5, 거부 샘플링으로 생성 · LIMA는 1,000개로 충분 |
| 선호 학습 (DPO) | (선택, 거부) 쌍으로 "어느 쪽이 나은가" | 선호는 단일 정답으로 못 쓰고 비교로만 표현됨. SFT보다 수집이 쌈 | Llama 3: PPO 대신 DPO(β=0.1), "대규모 모델에서 연산이 덜 듦" |
| RLHF / RLAIF | 학습된 보상 모델을 KL 페널티 아래 최대화 | RL은 모델이 스스로 생성한 응답에 보상을 받아 데이터에 없던 행동을 탐색 | Constitutional AI(헌법으로 자기 비판·수정) · Claude 캐릭터 학습 · Opus 4.6 카드는 "RLHF와 RLAIF"로만 기술 |
| 추론 RL (RLVR/GRPO) | 검증 가능한 정답을 보상으로 긴 사고사슬 유도 | 사전학습 데이터엔 "정답에 이르는 탐색 과정"이 거의 없음 | Qwen3: 3,995개 검증기 쌍, 170 step에 AIME'24 70.1→85.1 (11강) |
| 도구 사용 | 검색·코드 실행을 언제 어떻게 부를지 | 파라미터 안의 지식은 오래되고 계산은 부정확함 | o4-mini는 Python으로 AIME 2025 99.5% · Kimi K2 SWE-bench Verified 65.8 · Opus 4.6 80.8 |
| 안전 | 스펙 추론(모델 자체) + 입출력 분류기 + 사고사슬 감시 | RL은 보상을 최대화할 뿐이라 보상이 불완전하면 지름길을 찾음 | Deliberative Alignment · Constitutional Classifiers: 탈옥 86%→4.4%, 오버헤드 약 1%, 1,700시간 레드팀 · GPT-5 CoT 모니터링 기만율 4.8→2.1% |
| 보정 | 확신도가 실제 정답률과 일치하게 | RLHF는 언어화된 과신을 낳음(GPT-4 Figure 8) | 확신 인식 보상 모델(PPO-M) 제안 · 프론티어 랩의 실제 방법은 미공개 |
2024년 이후 산업의 합의는 이래요추론. 스타일·선호에는 DPO 계열, 검증기가 있는 곳에는 critic 없는 온라인 RL(GRPO), 학습된 보상 모델은 개방형 도움성·안전성에 마지막 단계에서만. 평가도 두 번이에요. 사전학습 중엔 held-out perplexity와 MMLU/ARC/HellaSwag few-shot으로 "예측대로 학습되었는가"를, 사후학습 뒤엔 AIME·GPQA·SWE-bench·τ²-bench·ASL 등급으로 "사용 가능한가·안전한가"를 물어요. 오염 압력 때문에 Tulu 3는 미공개 벤치마크 분할을 따로 만들었어요.
실제 파이프라인은 다단계 루프다
위 단계들은 한 번씩 순서대로가 아니라 여러 라운드로 돌아요. Llama 3는 (보상 모델 → 거부 샘플링 → SFT → DPO)를 6라운드, Qwen3는 4단계, Tulu 3는 SFT → DPO → RLVR, DeepSeek-V3는 SFT → GRPO. 거부 샘플링(많이 뽑고 보상 모델이나 검증기로 걸러 SFT로 되돌리기)이 RL과 SFT를 잇는 다리예요. 작은 모델은 이 전체를 다시 돌리지 않고 증류해요. Qwen3의 strong-to-weak 증류는 4단계 파이프라인의 1/10 GPU시간으로 더 높은 Pass@1을 냈어요.
출처: InstructGPT · Tulu 3 · LIMA · DPO · Constitutional AI · Claude character · Deliberative Alignment · Constitutional Classifiers (2026-01) · GPT-5 시스템 카드 · Leng et al. · Qwen3
추론 모델은 같은 가중치, 다른 사후학습이다
추론 모델은 별도의 아키텍처가 아니에요. DeepSeek-R1은 V3-Base와 같은 671B MoE 가중치에서 출발했고, Qwen3의 사고 모드는 같은 체크포인트 안의 템플릿 플래그이며, Claude의 extended thinking은 토큰 예산으로 켜고 꺼요. 차이는 사후학습의 목적함수예요. 일반 사후학습이 "사람이 선호하는 짧은 응답"을 보상하는 반면, 추론 학습은 "검증 가능한 정답에 도달하는 긴 사고사슬"을 보상해요.
| 항목 | 베이스 모델 | 일반 사후학습(chat) | 추론 모델 |
|---|---|---|---|
| 가중치 출처 | 무작위 초기화 → 사전학습 | 베이스에서 SFT/DPO/RLHF | 베이스(또는 chat)에서 추론 RL |
| 목적함수 | 다음 토큰 예측 | 선호 보상 최대화 | 검증 가능한 결과 보상(+형식) 최대화 |
| 출력 | 텍스트 연속 | 짧은 조수 응답 | 사고사슬 + 최종 답 |
| 보상 원천 | 없음 | 사람/AI 선호 | 규칙 검증기(정답 일치, 테스트 통과); 학습된 RM은 마지막 단계에만 |
| 테스트 타임 연산 | 고정 | 고정 | 사고 토큰·병렬 샘플로 조절 |
DeepSeek-R1 — 유일하게 완전 공개된 프론티어 추론 레시피
R1-Zero: SFT 없이 베이스에 바로 RL. 보상은 규칙 기반 둘뿐이에요. 정답이면 1 아니면 0인 정확도
보상과 <think> 태그를 쓰면 주는 형식 보상. 신경망 보상 모델은 "대규모 RL에서 보상
해킹에 취약"하다는 이유로 배제했어요. 학습률 3e-6, KL 계수 0.001, 문항당 16개 출력, 배치 512, 최대 길이
32,768→65,536, 총 10,400 step. AIME 2024 pass@1은 15.6%에서 77.9%로 올랐고(arXiv v1은 71.0%, Nature
개정판은 77.9%라 인용 시 버전을 밝혀야 해요), 약 8.2k step에서 "wait" 토큰이 늘어나는 "aha moment"가
관찰됐어요. 이 실험이 중요한 이유는 긴 사고사슬·자기 검증·되돌아가기가 사람이 쓴 예시 없이 결과 보상만으로
창발했음을 보였기 때문이에요.
R1: 4단계. (1) "수천 개"의 긴 CoT를 읽기 쉽게 다듬은 콜드스타트 SFT → (2) 언어 일관성 보상을 더한 추론 RL → (3) 2단계 체크포인트에서 샘플링해 약 60만 추론 + 20만 비추론 = 약 80만 개로 V3-Base에 다시 SFT → (4) 검증 가능한 과제는 규칙 보상, 도움성·무해성은 모델 보상으로 1,700 step. 최종 R1은 AIME 2024 79.8%, MATH-500 97.3%. 비용은 RL 단계에 512 H800으로 198시간 + 80시간 + SFT 데이터 생성 약 5,000 GPU시간, 총 약 29.4만 달러예요(V3 사전학습 약 558만 달러 제외). 증류는 80만 세트로 Qwen·Llama를 SFT만 해서(RL 없음) 추론 능력을 옮겼어요. 실패한 시도: 단계별 보상 모델(PRM)은 라벨링이 어렵고 보상 해킹이 생겼고, MCTS는 탐색 공간 폭발로 포기했어요.
각 부품의 역할
- 베이스 모델은 RL이 탐색할 행동 공간을 정해요. R1-Zero가 바로 성공한 건 V3-Base의 사전학습에 이미 수학·프로그래밍 강화가 있었기 때문이고, Qwen3는 사전학습 2단계에 5T의 추론 데이터를 넣었어요.
- SFT는 두 곳에서 쓰여요. 콜드스타트(형식·가독성)와 거부 샘플링 후 대규모 재학습(일반 능력 복원). s1 연구는 단 1,000개의 선별 예시와 "Wait"를 덧붙이는 budget forcing만으로 o1-preview를 앞섰어요.
- RL의 표준은 critic 없는 정책 경사(GRPO)예요. Kimi K1.5도 "MCTS·가치 함수·PRM에 의존하지 않는 단순한 RL"로 AIME 77.5를 얻었어요.
- 보상 모델 vs 검증기가 핵심 구분이에요. 학습된 RM은 어떤 응답에도 점수를 주지만 해킹당하고, 검증기는 정답이 확정된 과제에서만 쓸 수 있지만 해킹이 어려워요. R1·K1.5·Qwen3·Tulu 3 모두 학습에는 검증기를 택했어요.
사고 길이는 서비스 비용이라 제어 장치가 필요해요. Qwen3는 /think /no_think
플래그, Claude와 Gemini는 thinking budget, Kimi는 long2short. 보상 해킹은 추론 RL의 상수예요. Anthropic은
표시된 사고가 "내부 과정을 진정으로 대표하는지 확인할 수 없다"고 명시해요.
OpenAI·Anthropic·Google이 공개한 것과 하지 않은 것
OpenAI o1은 "대규모 RL이 사고사슬로 생산적으로 사고하는 법을 가르친다"는 것과 학습 시 RL 연산·테스트 시
사고 시간 두 축의 스케일링을 밝혔고, GPT-5는 fast/thinking 라우터를, GPT-5.6 Sol은 max 추론
강도를 공개했어요. RL 알고리즘, 보상 설계, 데이터 양, CoT 길이는 공개되지 않았어요. Anthropic은 직렬·병렬
스케일링 결과와 RLHF+RLAIF 사용을 밝혔고 그 외 학습 방법은 미공개예요. Gemini 2.5는 "thinking 모델"과 Deep
Think를 공개했으나 레시피는 미공개예요. o-시리즈가 R1과 비슷한 골격을 따를 거라는 판단은 추론이고,
확정된 사실은 공개 진술과 벤치마크 수치뿐이에요.
출처: DeepSeek-R1 · Nature (2025-09) · The Register (R1 비용) · DeepSeekMath (GRPO) · s1 · Kimi K1.5 · Lightman et al. (PRM) · OpenAI o1 · Anthropic · Gemini 2.5
논문·알고리즘은 공공재고, 가중치는 자산이다
새 회사가 파운데이션 모델을 만들 때 Transformer·Attention·RoPE·AdamW·MoE, SFT·DPO·RLHF·GRPO, 증류·추측 디코딩·KV 캐시는 전부 공개 논문에 있고 공개 구현이 존재하며, 어느 프론티어 랩도 그 사용을 "베낀 것"으로 취급하지 않아요. 그 랩들 자신이 서로의 논문을 인용하며 그대로 쓰니까요.
| 기술 | 원 출처 | 새 회사가 쓰는 방식 | 재사용 뒤 남는 결정 |
|---|---|---|---|
| Transformer | Vaswani 2017; 디코더 전용은 GPT-2 | 그대로 | 층·폭·head·norm 배치 |
| Attention (GQA/MLA/슬라이딩) | GQA: Ainslie 2023 · MLA: DeepSeek-V2 · FlashAttention-3 커널 | 그대로, 커널은 공개 저장소 | KV head 수, 윈도우, 하이브리드 비율 |
| RoPE | Su 2021; 확장은 YaRN | 그대로 | θ(10k~1M), 단계적 확장 |
| AdamW / Muon | Loshchilov & Hutter · Kimi K2 | 그대로 (β 0.9/0.95, 감쇠 0.1) | LR·스케줄·배치 램프 |
| MoE | Switch Transformer · DeepSeekMoE · aux-loss-free | 그대로, DeepEP 커널 공개 | expert 수, top-k, shared, 균형 방식 |
| SFT / DPO / RLHF | InstructGPT · Rafailov · Constitutional AI | 알고리즘은 그대로, TRL 구현 | 데이터(직접 만들어야 함), 보상 모델, 헌법·스펙 |
| GRPO / RLVR | DeepSeekMath · Tulu 3 · R1 | 그대로, 하이퍼파라미터 공개됨 | 검증기·문제 세트 |
| 증류 | R1 증류 · Qwen3 strong-to-weak | 방법은 그대로 | 교사가 남의 모델이면 가중치 재사용에 준하는 의존 |
| 추측 디코딩 · KV 캐시 | EAGLE-3 · vLLM · Mooncake | 그대로, 오픈소스 서빙 엔진 | 초안 모델 학습, GQA/MLA 설계 |
왜 "베낀 것"과 다른가
재사용의 대상이 달라요. 위 기술들은 "행렬을 어떻게 곱하고 어떤 손실을 최소화할지"를 기술한 수식과 절차이며 학습된 숫자를 포함하지 않아요. 같은 수식을 써도 무작위 초기화에서 시작하면 수십억 개의 숫자는 완전히 달라져요. 한국 정부 사업이 네이버 팀을 "가중치 초기화 이후 전면 학습을 수행한 독자 모델로 보기 어렵다"고 판정하면서 Transformer·MoE·RoPE를 쓴 A.X K1과 Solar Open 100B는 독자 모델로 인정한 게 정확히 이 구분이에요. 논문 발표는 재사용을 전제로 해요. Switch Transformer·muP·DPO·GRPO·vLLM은 방법을 널리 쓰이게 하려고 발표된 논문이고, DeepSeek는 DeepEP 코드를, OpenAI는 tiktoken을, Meta는 PyTorch를 공개 저장소로 배포해요. 가중치에는 라이선스가 붙고 논문에는 안 붙어요. Qwen3·gpt-oss·Gemma 4는 Apache 2.0, DeepSeek는 MIT, Llama는 자체 커뮤니티 라이선스, EXAONE 4.0은 비상업, Tri-21B는 MAU 100만 초과 시 상업 라이선스 필요, Solar Open 100B는 Upstage Solar License예요. 가중치를 쓰면 이 조건에 묶이지만 논문의 알고리즘을 쓰는 데는 그런 조건이 없어요.
경계가 흐려지는 세 지점
증류는 회색지대예요. 자체 큰 모델에서 작은 모델로 증류하는 건 완전한 자체 파이프라인이지만, 남의 모델 출력으로 학습하면 가중치를 복사하지 않아도 그 모델의 행동 분포를 흡수해요. Nemotron-CC-v2의 합성 토큰 2.28T가 Qwen3·Mistral 출력인 것이 그 예예요. 레이아웃 복제는 합법적이고 명시적이지만 독창성 주장과는 별개예요. Kimi K2가 V3 레이아웃을 그대로 쓴 건 보고서에 적혀 있어요. 가중치 유사성 의혹은 from-scratch 주장의 검증 문제를 낳아요. 2026년 1월 Solar Open 100B에 층별 유사성 의혹이 제기됐을 때 업스테이지는 "사실과 다르다"며 중간 체크포인트 전체 공개를 약속했고 이후 정부 심사를 통과했어요. "무작위 초기화부터"를 입증하는 수단이 중간 체크포인트와 학습 로그라는 걸 보여 주는 사례예요. OLMo 2와 Trillion Labs(Tri-70B)가 중간 체크포인트를 공개하는 것도 같은 맥락이에요.
전부 재사용해도 남는 일
- 수치 결정 — 층·폭·head·expert·top-k·문맥·어휘·정밀도·학습률·배치·스케줄은 논문이 알려주지 않아요 (3강)
- 토크나이저 학습 — 알고리즘은 공개지만 병합 테이블은 내 코퍼스에서만 나와요 (4강)
- 데이터 파이프라인과 혼합 — 도구와 공개 코퍼스는 있지만 임계값·분류기·비율·에폭은 직접 정하고, 그 결과인 토큰 파일은 내 것 (5강)
- 학습 시스템 운영 — 클러스터 토폴로지에 맞춘 병렬화, 체크포인트, 장애 복구, MFU 튜닝 (8강)
- 사후학습 데이터와 보상 — SFT 예시, 선호 쌍, 검증기와 문제 세트, 보상 모델, 헌법·스펙은 방법이 아니라 자산 (10~11강)
- run 자체와 그 증거 — 수십만 step의 운영과 중간 체크포인트·로그는 재현 불가능한 결과물이자 from-scratch 주장의 증거
"베꼈다"는 비난이 성립하는 경우는 둘뿐이에요. (a) 다른 모델의 가중치를 초기값으로 쓰고 from scratch라고 주장하거나, (b) 라이선스가 금지한 방식으로 가중치·출력을 쓴 경우. 이 둘을 피하면서 남는 일이 곧 "직접 만들어야 하는 것"이에요.
출처: GQA · DeepSeek-V2 (MLA) · EAGLE-3 · vLLM · ZDNet Korea (2026-01-01) · 정책브리핑 (2026-08-19) · Tri-21B · Tri-70B 체크포인트 · Solar Open 100B
파인튜닝과 처음부터는 사는 것이 다르다
경로 A(Qwen → 파인튜닝 → 내 모델)는 Qwen이 36조 토큰·119개 언어·증류로 만든 능력을 형식과 행동만 바꿔 쓰는 거예요. 경로 B(랜덤 초기화 → 내 사전학습 → 내 파운데이션 모델 → SFT)는 4~12강의 모든 결정을 스스로 내리는 대신 비용을 전부 부담해요. 결정적 차이는 지식이 어디서 오는가예요. LIMA는 "거의 모든 지식은 사전학습에서 배운다"고, Ovadia 등은 "LLM은 미세조정으로 새 사실을 배우는 데 어려움을 겪는다"고 보였어요. 파인튜닝은 행동을 바꾸고, 사전학습은 지식을 만들어요.
| 축 | A: Qwen3 파인튜닝 | B: 처음부터 사전학습 |
|---|---|---|
| 비용 | LoRA SFT(7~8B, 1만 예시): GPU 한 장, 한 자릿수~수십 달러추정. SmolLM3의 1.8B 토큰 SFT가 상단(≈$40) | 1B×100B ≈ 421 H100시간 ≈ $790~1,680 · 7B×1T ≈ $55~118K · 7B×15T ≈ $0.8~1.8M · Qwen3-1.7B의 36T 재현 ≈ $0.5~1.0M계산 |
| 데이터 | 10³~10⁶개 예시. 형식은 1,000개면 충분 | 10⁹~10¹¹ 토큰(개인), 10¹²~10¹³(랩) + 파이프라인 전체 |
| GPU | 24GB 1장(LoRA)~H100 1장 | 100M: 4090 1장 · 1B: 8×H100 수 시간~일 · 7B: 수백 H100 수 주 |
| 성능 | Qwen3-1.7B-Base MMLU 62.63, GSM8K 75.44 · 0.6B도 MMLU 52.81 | 1B×10¹¹ 토큰은 GPT-2-XL 근처(llm.c 1.6B: HellaSwag 57.7@33.6B 토큰) |
| 자유도 | 어휘·아키텍처·문맥·정밀도 고정, 라이선스 조건 상속 | 모든 것을 선택, 라이선스는 내 결정 |
| 모델 내부 지식 | Qwen이 본 36T가 곧 내 지식. 새 도메인 사실은 SFT로 거의 안 들어감 | 내 데이터가 곧 지식 |
| 아키텍처 변경 | 불가(DUS·가지치기만 예외, 둘 다 10¹¹ 토큰급 추가 학습) | 완전 자유 |
| 연구 가치 | 낮음. TRL로 며칠 안에 결과 | 높음. 스케일링·소거 실험은 여기서만 |
중간 경로 — 두 극단 사이
계속 사전학습(CPT): Code Llama는 Llama 2에서 시작해 500B 코드 토큰을 더 학습했고 "Llama 2로 초기화하는 것이 코드만으로 학습하는 것보다 낫다"고 보고했어요. 비용은 약 14,700 H100시간 ≈ $27~59K계산. 어휘 확장 CPT: EEVE-Korean은 SOLAR-10.7B에 한국어 토큰 8,960개를 추가하고 새 임베딩부터 단계적으로 풀어 "단 20억 토큰으로 비영어 능력을 크게 향상"시켰어요. 약 91 H100시간 ≈ $270~360계산. 깊이 확장(DUS)과 가지치기+증류: Kakao Kanana는 8B→9.8B를 DUS로 만들어 "전체 연산의 11.06%를 절약"했고, 8B→2.1B 가지치기+증류가 "처음부터 대비 1/10 데이터로 더 나은 성능"을 냈어요. 이 중간 경로들은 "자체 베이스가 있을 때" 파생 모델을 싸게 만드는 방법이고, 남의 베이스 위에서는 경로 A의 제약을 대부분 상속해요.
아래에서 필요한 것과 예산을 골라 보세요. 13강의 결정 매트릭스가 그 자리에서 경로를 골라요. 지식 문제의 첫 해법은 파인튜닝이 아니라 검색이에요 — Ovadia 등은 RAG가 미세조정을 "일관되게 능가"한다고 보였어요.
한국 사례로 보는 두 경로
한국의 공개 모델들은 두 경로와 중간을 모두 보여 주는 드문 표본이에요분류는 공개 자료 기준. 경로 B: SK텔레콤 A.X K1(519B MoE, 약 10T 토큰, H200 1,536장, 73일, 2.548×10²⁴ FLOPs, 160K 어휘 자체 제작), 업스테이지 Solar Open 100B(19.7T, B200), Trillion Tri-21B(2.3T, 2.95×10²³ FLOPs), Kakao Kanana 8B/26.8B(3T), KT Mi:dm 2.0("기존 오픈소스 가중치를 쓰지 않음" 명시). 중간: Motif 2 12.7B는 자사 2.6B 위에 5.5T, Kanana Essence/Flag는 자체 모델의 DUS. 경로 A: 2023년 SOLAR 10.7B는 Mistral 초기화 위의 DUS+CPT, EEVE와 Bllossom은 한국어 어휘 확장+CPT.
규모 격차를 숫자로 보면계산, 가장 작은 "주권 모델급" run인 Tri-21B의 2.95×10²³ FLOPs는 약 207,000 H100시간 ≈ 40~80만 달러이고, A.X K1은 약 180만 H100시간 ≈ 330~700만 달러예요. 정부의 팀당 지원(6개월 약 400억 원)은 14강의 개인 1B 예산보다 3~4자릿수 커요. 라이선스는 경로마다 달라요. Mi:dm 2.0은 MIT, EXAONE 4.0은 비상업, Tri-21B는 MAU·매출 상한, 경로 A로 만든 모델은 베이스의 조건까지 겹쳐요.
출처: LIMA · Ovadia et al. · Code Llama · EEVE-Korean · SOLAR · Kanana · Mi:dm 2.0 · A.X K1 · SmolLM3 · 정책브리핑 (2026-08-19)
1B 모델은 이틀과 이백만 원이면 된다 — 그리고 Qwen3-1.7B에 못 미친다
모든 추정은 6·N·D FLOPs와 "피크 TFLOPS × MFU"에서 나오고, 실측 run이 MFU 가정을 검증해요. Karpathy의 llm.c는 GPT-2 124M을 FineWeb 100억 토큰으로 8×A100에서 약 90분, 약 $20에 재현했어요(MFU 약 60%, HellaSwag 29.9 vs 원본 29.4). 350M은 300억 토큰·14시간·약 $200, 1.6B는 8×H100에서 336억 토큰·24시간·$672. 같은 과제의 스피드런 modded-nanogpt는 검증 손실 3.28 도달 시간을 45분에서 2026-07-17 기록의 1.23분까지 줄였어요(Muon·FlexAttention·FP8·MTP). RTX 4090 한 장 이식판은 90분에 손실 3.25. 1B급 상단은 TinyLlama 1.1B로 16×A100-40G에서 약 3T 토큰, 약 90일이었어요계산.
2026년 9월 클라우드 단가는 RunPod H100 $3.49, A100 $1.59, RTX 4090 $0.74, B200 $6.79, Lambda H100 $2.99~3.99, Vast.ai H100 $1.49~1.87, AWS P5 $5.19예요. 아래 표의 시간·비용은 계산이고추정 실패한 run·평가·데이터 준비를 위해 10~20%를 더해야 해요.
| 100M (GPT-2 small급) | 500M (GPT-2 medium~large급) | 1B (TinyLlama·SmolLM2급) | |
|---|---|---|---|
| 데이터 | Chinchilla 2.5B · 과학습 12~37B · SmolLM2-135M은 2T | 10B / 50B / 150B · SmolLM2-360M은 4T | 20B / 100B / 300B · TinyLlama 3T, SmolLM2-1.7B 11T. FineWeb-Edu+DCLM+Stack-Edu+FineMath가 공개 표준 |
| GPU | 4090/5090 1장이면 됨 | 1~8장. 4090 1장도 가능하나 50B 이상은 주 단위 | 8×H100 또는 8×A100. 4090 1장은 상태만 16GB라 한계 |
| VRAM | 상태 2.0GB | 상태 8GB | 상태 16GB + 활성값 → 24GB 카드는 활성 체크포인팅+8bit Adam 또는 ≥2장 FSDP |
| 시간 | 10B: 8×A100 90분(실측), H100 1장 약 5~6시간, 4090 약 17~36시간 | 50B: 105 H100시간(8×H100 약 13시간) · 150B: 316 H100시간 | 100B: 421 H100시간(8×H100 약 2.2일) · 300B: 1,263 · 3T: 약 14,000 · 4090 1장으로 100B는 약 120일 |
| 비용 | 10B: $11~24 · 37B: $35~75 | 50B: ≈$200~545 · 150B: ≈$590~1,640 | 100B: ≈$790~2,190 · 300B: ≈$2,360~6,550 · 3T: ≈$55K~96K |
| 스택 | modded-nanogpt 또는 nanoGPT_1GPU_SPEEDRUN + torch.compile + bf16 | 같은 코드 + DDP + FlashAttention/SDPA + 기울기 누적 | FSDP2 + FlashAttention-2 + 활성 체크포인팅. Llama식 레시피는 TorchTitan/litgpt/nanotron |
아래 계산기에 모델 크기·토큰·GPU·MFU·단가를 넣어 보세요. 프리셋은 위의 실측 run이에요. 실측과 계산이 어긋나면 MFU를 의심하면 돼요.
실측 대조: llm.c 124M은 8×A100 약 90분·$20, 1.6B는 8×H100 24시간·$672, Llama 3 405B는 16,384 H100으로 54일. 피크 TFLOPS(4090·5090·B200)는 데이터시트 기억값이라 재확인이 필요해요. 가정용 GPU 전기는 별도예요 — 4090 1장으로 1B×100B면 약 2,880시간 × 약 0.55kW ≈ 1,580kWh추정.
무엇을 기대할 수 있고 없는가
10B 토큰의 124M은 HellaSwag 29.9(GPT-3 Small은 300B 토큰에서 33.7), 336억 토큰의 1.6B는 약 57.7, 3,460억 토큰이면 62.7이에요. 반면 Qwen3-1.7B-Base는 MMLU 62.63·GSM8K 75.44, SmolLM2-1.7B는 HellaSwag 68.7이라 개인이 10²~10³ H100시간으로 만든 1B는 이들에 크게 못 미쳐요. 그래도 얻는 게 셋 있어요. (1) 6강의 루프를 손실 곡선으로 직접 보는 것, (2) 스케일링 법칙을 100M→500M→1B에서 재현하는 것(Cramming 논문은 소비자 GPU 하루 학습에서도 "성능이 대규모 스케일링 법칙을 밀접히 따른다"고 보고), (3) 토크나이저·데이터 혼합·아키텍처를 마음대로 바꿔 보는 자유.
라이브러리를 층으로 나누면 조합이 보인다
- 모델 정의·학습 루프 — nanoGPT/modded-nanogpt/llm.c, 또는 Hub 호환 체크포인트를 원하면
transformers의 Llama 클래스 - 속도 원시 연산 —
torch.compile, bf16 autocast, SDPA 또는 FlashAttention-2/3, 커스텀 마스크는 FlexAttention, 융합 커널은 Liger-Kernel, FP8은 torchao - 다중 GPU — 16B/param 상태가 GPU당 들어가면 DDP(100M~500M), 안 들어가면 FSDP2 또는 DeepSpeed ZeRO-2/3, 약 10B 이상이거나 다중 노드면 TorchTitan/nanotron/Megatron-Core
- 데이터 — datatrove·Dolma 툴킷·NeMo Curator로 정제,
tokenizers로 BPE 학습, 반드시 사전 토큰화해 uint16 샤드로 저장(실시간 토큰화는 병목) - 사후학습·평가 — TRL의 SFTTrainer·DPO·GRPO, lm-evaluation-harness(HellaSwag·ARC·MMLU·KMMLU), wandb(손실·tok/s·MFU)
Megatron-LM은 이 규모에서 과잉이에요. 그 가치(TP/PP/EP)는 GPU당 메모리와 노드 간 대역폭이 병목일 때 나타나는데 1B는 8×80GB에서 둘 다 병목이 아니에요. Megatron식 다차원 병렬이 필수가 되는 지점은 SmolLM3의 384 H100이나 A.X K1의 1,536 H200 같은 규모예요.
최소 작업 순서
- 코퍼스 수집·정제(언어 판별, 중복제거, 품질 필터)
- BPE 토크나이저 학습(32K~64K 어휘, 한국어 중심이면 한국어 샘플 비중 확보)
- 토큰화 후 이진 샤드 저장(어휘 <65,536이면 uint16) + train/val 분할
- 설정 선택(층·폭·head, 시퀀스 길이, GQA, RoPE, RMSNorm, SwiGLU; 작은 모델은 임베딩 공유)
- 학습 루프: AdamW(또는 Muon), 워밍업+코사인/WSD, bf16, 클리핑 1.0, 전역 배치 0.5~2M 토큰, N step마다 체크포인트
- lm-eval-harness로 체크포인트 평가
transformers형식 변환·Hub 업로드- TRL로 SFT, 이어서 DPO/GRPO, 재평가
첫 step 손실이 ln(어휘 크기)와 맞는지(32K면 10.4, 64K면 11.1) 확인하는 것이 6강에서 말한 첫 번째 검사예요.
출처: llm.c 124M/350M · llm.c 1.6B · modded-nanogpt · nanoGPT_1GPU_SPEEDRUN · TinyLlama · SmolLM2 · Cramming · RunPod · Lambda · H100 단가 비교 · TorchTitan · lm-eval
한 장의 그림 — 랩은 무엇을 가져오고 무엇을 만드나
각 단계에서 "외부에서 가져오는 것"(왼쪽)과 "직접 만드는 것·결정하는 것"(오른쪽)을 붙인 그림이에요. 오른쪽의 수치는 앞 장에서 인용한 공개 사례고, 폐쇄형 랩의 값은 공개되지 않았어요. 평가 결과는 설계와 데이터로 되돌아가고, 거부 샘플링은 SFT로 되돌아가요(Llama 3는 6회).
랩별로 — 어디까지 직접 통제하고 무엇을 공개하나
● 직접 통제, ○ 공개 연구·외부 기술 활용, ✕ 공개되지 않음. 폐쇄형 랩의 "직접 통제"는 그 단계를 스스로 수행한다는 뜻이지 내용이 알려졌다는 뜻이 아니에요.
| 단계 | OpenAI | Anthropic | Meta | DeepSeek | Qwen | |
|---|---|---|---|---|---|---|
| Architecture | ○ gpt-oss만; GPT-5 ✕ | ✕ 완전 미공개 | ○ Gemma 공개; Gemini ✕ | ○ 표준 dense | ● 자체 부품 + ○ 골격 | ○ 골격 + ● Gated DeltaNet |
| Tokenizer | ● tiktoken 공개 | ✕ | ● 262K SentencePiece | ○ tiktoken + ● 28K | ● 128K BBPE | ● 151,669 BBPE |
| Data Pipeline | ● 범주만 공개 | ● 범주만; 도서는 소송으로만 | ● Gemma 토큰 예산만 | ● 방법·4범주 비율 공개 | ● 14.8T 총량만 | ● 36T·119언어·3단계 |
| Training Infra | ● gpt-oss 2.1M H100시간만 | ● Trainium/TPU/GPU; 프레임워크 ✕ | ● TPU Ironwood, JAX | ○ PyTorch + ● NCCLX, 16K H100 | ● HAI-LLM, FP8, 2,048 H800 | ● GPU 수·프레임워크 ✕ |
| Pretraining 수치 | ✕ | ✕ | ● Gemma만 | ● 15.6T, 3.8e25 | ● 비용까지 전부 ($5.576M) | ● 36T; 비용 ✕ |
| Foundation Model 공개 | gpt-oss만 Apache 2.0 | ✕ | Gemma만 | ● 커뮤니티 라이선스 | ● MIT | ● Apache 2.0 |
| Reasoning / RL | ● 스케일링 진술만 | ● 스케일링 결과만 | ● 방법 ✕ | ○ DPO 채택 이유 공개 | ● GRPO·R1 전 과정·비용 | ○ GRPO + ● 3,995 쌍 |
| Safety | ● Deliberative Alignment, Model Spec | ● Constitutional AI, Classifiers, ASL | ● 제한적 | ● Llama Guard 3 | ○ 모델 보상(106K 주석) | ● 일반 RL 20+ 과제 |
| Inference | ● 라우터만 | ● 분류기 오버헤드만 | ● TPU 서빙; 세부 ✕ | ○ 공개 엔진 | ● EP32/EP144, $87K/일 | ● MTP·양자화 체크포인트 |
이 표의 ✕는 2026년 9월 21일 기준 이번 조사에서 1차 자료를 찾지 못했다는 뜻이고, 2차 자료의 추정치는 의도적으로 싣지 않았어요. 폐쇄형 3사의 ✕는 GPT-4 보고서의 명시적 비공개 방침("경쟁 환경과 안전상의 함의"), GPT-5 시스템 카드, Claude Opus 4.6 시스템 카드, Gemini 2.5 보고서에 근거해요.
표가 말하는 세 가지
첫째, 여섯 랩 모두 파이프라인의 모든 단계를 직접 수행하며, 차이는 "무엇을 공개하는가"와 "부품을 스스로 발명하는가 조립하는가"뿐이에요. DeepSeek가 가장 많은 자체 부품을 만들고 가장 많이 공개하며, Meta와 Qwen은 공개 골격을 조립하되 데이터·인프라·사후학습을 직접 만들고, OpenAI·Anthropic·Gemini는 수행 사실만 확인될 뿐 내용은 GPT-4(2023) 이후 공개하지 않아요. 둘째, 공개 여부와 무관하게 재사용되는 층은 왼쪽 열이에요. 논문·토크나이저 어휘·프레임워크·공개 코퍼스·서빙 엔진. 이 층에서는 OpenAI의 어휘가 Meta로, Google의 GQA가 OpenAI로, DeepSeek의 GRPO와 레이아웃이 Qwen·Moonshot으로 흘러요. 셋째, 경쟁 우위가 만들어지는 층은 오른쪽 상자 안, 특히 데이터 파이프라인·학습 인프라·사후학습 데이터·안전 시스템이고, 이 층은 공개 랩조차 비율·임계값·소스 목록을 공개하지 않아요.
결국 "처음부터 만든다"는 것은 무엇을 직접 만드는 것인가
- 가중치 — 다른 모델에서 한 개의 숫자도 가져오지 않고 N(0, 0.02~0.006)에서 시작해 6·N·D FLOPs로 채운 수십억~수조 개의 파라미터
- 토크나이저 — 코퍼스에서 학습한 병합 테이블·정규식·어휘 크기·언어 배분
- 데이터 파이프라인 — 수집·추출·언어 판별·중복제거·품질 분류기·PII·오염 제거·혼합 비율·에폭·커리큘럼과 그 결과인 토큰 파일
- 아키텍처의 수치 — 층·폭·head·FFN·expert 수·top-k·문맥·정밀도. 부품은 공개 논문에서, 조합과 값은 프록시 실험에서
- 학습 인프라 — 클러스터·네트워크·스토리지·병렬화 코드·체크포인트·장애 복구·MFU를 끌어올리는 커널
- 학습 run 자체 — 하이퍼파라미터·스케줄·배치 램프·손실 감시·수십만 step의 운영과 그 중간 체크포인트(독자성의 증거)
- 사후학습 데이터와 보상 — SFT 예시, 선호 쌍, 검증기와 문제 세트, 보상 모델, 헌법·스펙, 안전 분류기
- 평가 체계 — 미공개 분할, 오염 제거, 스케일링 예측과의 대조, 시스템 카드
- 서빙 시스템 — 양자화·KV 캐시·추측 디코딩·prefill/decode 분리·라우터·분류기
- 가져오는 것은 아이디어와 도구(Transformer, RoPE, AdamW, MoE, GRPO, PyTorch, CUDA, 공개 코퍼스)고, 만드는 것은 결정과 결과물이며, 그 경계는 "남의 학습된 가중치를 초기값으로 쓰지 않았는가"다
출처: 이 장의 표는 1~14강의 출처와 같아요. 특히 GPT-4 보고서 · GPT-5 시스템 카드 · Claude Opus 4.6 시스템 카드 · Gemini 2.5 · Google Cloud (Ironwood)
"정말 처음부터인가" 검증 체크리스트 — 10문
어떤 모델이 "from scratch"라고 주장할 때, 또는 내가 그렇게 주장하려 할 때 이 목록을 한 바퀴 돌아요. 체크는 이 브라우저에 저장돼요.
이 사이트에서 찾아보기
이 교과서와 이어지는 자리들이에요.
- 오픈웨이트는 오픈소스가 아니다 — 이 교과서가 "어떻게 만드나"라면 저쪽은 "만든 걸 열었나"예요. 12강의 라이선스 얘기는 저기서 16강으로 이어져요.
- LLM 실전 위키 — 모델별 스펙·가격·API 실무는 여기가 훨씬 깊어요. 이 페이지는 "처음부터 만든다는 게 뭔가"라는 질문 하나에 집중했어요.
- UI/UX 한 장 교과서 · 파는 감각 · AI 소설은 이렇게 써진다 — 같은 틀(만지는 자습서)로 쓴 자매 교과서예요.
- 기록 — 이 교과서를 쓰며 리서치한 원자료·업데이트는 여기 남길게요.
마지막 한 줄 — "처음부터 만든다"는 말을 들으면 아키텍처를 묻지 말고 초기값을 물으세요. 논문은 누구나 쓰고, 가중치는 누군가가 만든 거예요. 그 사이의 결정(숫자·어휘·비율·보상)이 파운데이션 모델 회사가 실제로 파는 거고요.
이 교과서는 계속 자라요 — 고칠 곳을 찾으면 기록에 남길게요. 여기 실린 수치·단가·날짜는 2026-09-21 조사 기준이라 인용 전엔 원문으로 다시 확인하세요. 추정·계산 표시는 원문에 없는 값을 원 조사자가 산술·추론으로 낸 것이니 그만큼만 믿으세요.