Phase 07: Transformers Deep Dive

स्क्रैच से ट्रांसफार्मर बनाएं कैपस्टोन

13 पाठ, एक मॉडल, कोई शॉर्टकट नहीं।

Type: Build

Languages: Python

Prerequisites: Phase 7 · 01 through 13. Don't skip.

Time: ~120 minutes

समस्या

आपने हर पेपर पढ़ा है आपने ध्यान, मल्टी-हेड स्प्लिट, पोजिशनिंग एन्कोडिंग, एन्कोडर और डिकोडर ब्लॉक, BERT और GPT नुकसान, MoE, KV कैश लागू किया है अब उन्हें एक वास्तविक कार्य पर एक साथ काम करने के लिए।

मुख्य बात यह है कि एक छोटे से डेकोडर-केवल ट्रांसफार्मर को एक चरित्र-स्तर भाषा मॉडलिंग कार्य पर अंत-से-अंत तक प्रशिक्षित करें। यह शेक्सपियर पढ़ता है। यह नया शेक्सपियर उत्पन्न करता है। यह 10 मिनट से कम समय में लैपटॉप पर प्रशिक्षित करने के लिए पर्याप्त छोटा है। यह पर्याप्त सही है कि एक बड़े डेटासेट में आदान-प्रदान और लंबे समय तक प्रशिक्षण आपको एक वास्तविक एलएम देता है।

यह पाठ्यक्रम का "नैनोजीपीटी" है. यह मूल नहीं है कार्पाथी का 2023 नैनोजीपीटी ट्यूटोरियल संदर्भ कार्यान्वयन है जो प्रत्येक छात्र कम से कम एक बार लिखता है। हम आकार को उठाते हैं और इसे कवर किए गए के आसपास फिर से तैयार करते हैं।

अवधारणा

!Transformer-from-scratch block diagram

वास्तुकला, टिप्पणीः

input tokens (B, N)
   │
   ▼
token embedding + positional embedding  ◀── Lesson 04 (RoPE option)
   │
   ▼
┌──── block × L ────────────────────┐
│  RMSNorm                          │  ◀── Lesson 05
│  MultiHeadAttention (causal)      │  ◀── Lesson 03 + 07 (causal mask)
│  residual                         │
│  RMSNorm                          │
│  SwiGLU FFN                       │  ◀── Lesson 05
│  residual                         │
└────────────────────────────────── ┘
   │
   ▼
final RMSNorm
   │
   ▼
lm_head (tied to token embedding)
   │
   ▼
logits (B, N, V)
   │
   ▼
shift-by-one cross-entropy            ◀── Lesson 07

हम क्या जहाज

  • GPTConfig सभी हाइपरपरपरमीटर्स को कॉन्फ़िगर करने के लिए एक स्थान।
  • MultiHeadAttention कारण, बैच, वैकल्पिक फ्लैश शैली पथ के साथ (PyTorch के scaled_dot_product_attention) ।
  • SwiGLUFFN आधुनिक एफएफएन।
  • Block पूर्व-मानक, अवशिष्ट-पैक किए गए ध्यान + FFN।
  • GPT एम्बेड, स्टैक किए गए ब्लॉक, एलएम सिर, उत्पन्न करना() ।
  • एडमडब्ल्यू, कॉसिन LR, ग्रेडिएंट क्लिपिंग के साथ प्रशिक्षण लूप।
  • शेक्सपियर पाठ पर चार स्तर टोकनराइज़र.

जो हम जहाज नहीं करते हैं

  • RoPE को पाठ 04 में अवधारणागत रूप से लागू किया गया है। यहां हम सरलता के लिए सीखे गए स्थितिगत एम्बेडिंग का उपयोग करते हैं। अभ्यास आपको RoPE में आदान-प्रदान करने के लिए कहते हैं।
  • पीढ़ी के दौरान KV कैश प्रत्येक पीढ़ी चरण पूर्ण पूर्वावलोकन पर ध्यान पुनः गणना करता है. धीमी लेकिन सरल. अभ्यास आपको एक KV कैश जोड़ने के लिए कहते हैं.
  • फ्लैश ध्यान PyTorch 2.0+ ऑटो-डिस्पैच यदि इनपुट मेल खाते हैं; हम उपयोग करते हैं F.scaled_dot_product_attention. .
  • आप ने पाठ 11 में एमओई देखा है।

लक्ष्य माप

मैक एम 2 लैपटॉप पर, एक 4-परत, 4-हेड, डी_मॉडल=128 जीपीटी 2,000 कदम के लिए प्रशिक्षित पर tinyshakespeare.txt:

  • प्रशिक्षण हानि लगभग 6 मिनट में ~4.2 (संदिग्ध) से ~1.5 तक मिलती है।
  • नमूना आउटपुट शेक्सपियर के आकार में दिखता हैः पुराणवादी शब्द, लाइन ब्रेक, "रोमेओ:" जैसे उचित नाम सामने आते हैं।
  • Val हानि (टेक्स्ट का अंतिम 10% बाहर रखा गया) प्रशिक्षण हानि को बारीकी से ट्रैक करता है; इस आकार/बजट पर कोई अति-अनुकूलता नहीं है।

इसे बनाओ

इस पाठ PyTorch का उपयोग करता है.torch(सीपीयू निर्माण ठीक है। देखें code/main.py. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

  • डाउनलोड करना tinyshakespeare.txtयदि कोई गायब हो गया हो (या स्थानीय प्रति पढ़ रहा हो) ।
  • बाइट स्तर के चार टोकनराइज़र.
  • ट्रेन/वॉल 90/10 पर विभाजित है।
  • समर्थित हार्डवेयर पर bf16 ऑटोकास्ट के साथ प्रशिक्षण लूप।
  • प्रशिक्षण के बाद नमूनाकरण पूरा हो गया है।

चरण 1: डेटा

pythontext = open("tinyshakespeare.txt").read()
chars = sorted(set(text))
stoi = {c: i for i, c in enumerate(chars)}
itos = {i: c for c, i in stoi.items()}
encode = lambda s: [stoi[c] for c in s]
decode = lambda xs: "".join(itos[x] for x in xs)

65 अद्वितीय वर्ण, छोटी शब्दावली, 4 बाइट की मात्रा में फिट बैठता है। कोई बीपीई, कोई टोकन नाटकीय।

चरण 2: मॉडल

देखोcode/main.py. ब्लॉक पाठ 05 पूर्व-नियमित, RMSNorm, SwiGLU, कारणात्मक MHA से पाठ्यपुस्तक है. 4/4/128 के लिए पैरामीटर गिनतीः ~800K.

चरण 3: प्रशिक्षण लूप

लंबाई 256 टोकन खिड़कियों का एक यादृच्छिक बैच प्राप्त करें आगे, शिफ्ट-दर-एक क्रॉस-एंट्रोपी, पीछे, एडमडब्ल्यू कदम, लॉग, दोहराएं।

pythonfor step in range(max_steps):
    x, y = get_batch("train")
    logits = model(x)
    loss = F.cross_entropy(logits.view(-1, vocab_size), y.view(-1))
    loss.backward()
    torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)
    opt.step()
    opt.zero_grad()

चरण 4: नमूना

एक संकेत दिया, बार-बार आगे, शीर्ष-पी लॉजिट से नमूना, जोड़ें, और जारी रखें. 500 टोकन के बाद बंद करो.

चरण 5: आउटपुट पढ़ें

2,000 कदम के बादः

ROMEO:
Away and mild will not thy friend, that thou shalt wit:
The chief that well shame and hath been his friends,
...

शेक्सपियर नहीं, लेकिन शेक्सपियर के आकार में, एक स्पष्ट जीत के लिए लगभग 800K पैरामीटर और लैपटॉप पर 6 मिनट.

इसका प्रयोग करें

यह कपास्टोन एक संदर्भ वास्तुकला है. इसे कुछ वास्तविक में भेजने के लिए तीन विस्तारः

  1. Swap the tokenizer.BPE का प्रयोग करें (उदाहरण के लिए tiktoken.get_encoding("cl100k_base")) वोकैब का आकार 65 से ~ 50,000 तक बढ़ जाता है। क्षतिपूर्ति के लिए मॉडल क्षमता को बढ़ाने की आवश्यकता है।
  2. Train on a bigger corpus.उपयोग करेंOpenWebTextया fineweb-eduएक एकल A100 पर 10B टोकन 125M-परम GPT के लिए ~ 24 घंटे लगते हैं।
  3. Add RoPE + KV cache + Flash Attention.नीचे दिए गए अभ्यास आपको प्रत्येक के माध्यम से मार्गदर्शन करेंगे।

यह एक 125M पैरामीटर जीपीटी के रूप में समाप्त होता है जो धाराप्रवाह अंग्रेजी उत्पन्न करता है। एक सीमा मॉडल नहीं। लेकिन वही कोड पथ बस बड़ा है जो कार्पैथी, एलेउथेरएआई और एलेन संस्थान 2026 में अनुसंधान जांच बिंदुओं को प्रशिक्षित करने के लिए उपयोग करता है।

इसे भेजें

देखोoutputs/skill-transformer-review.md. कौशल सभी 13 पिछले पाठों में सटीकता के लिए एक ट्रांस्फॉर्मर-से-नल कार्यान्वयन की समीक्षा करता है।

व्यायाम

  1. Easy.दौड़ेंcode/main.py. अपने प्रशिक्षित मॉडल के अंतिम चरण सत्यापन हानि 2.0 से कम है की पुष्टि करें.max_stepsक्या वैल हानि में सुधार जारी है?
  2. Medium.सीखे गए स्थितिगत एम्बेडमेंट को RoPE से बदलें। घुमाव को Q और K के अंदर लागू करें MultiHeadAttention. ट्रेन और सत्यापन वैल हानि कम से कम कम कम है.
  3. Medium.नमूना लूप में KV कैश लागू करें. कैश के साथ और बिना 500 टोकन उत्पन्न करें. लैपटॉप पर वॉल क्लॉक 520x में सुधार करना चाहिए।
  4. Hard.एक दूसरे सिर को मॉडल में जोड़ें जो अगले प्लस-एक टोकन (एमटीपी डीपसीक-वी3 से मल्टी-टोकन भविष्यवाणी) की भविष्यवाणी करता है। संयुक्त रूप से प्रशिक्षित करें। क्या यह मदद करता है?
  5. Hard.प्रति ब्लॉक एक एकल FFN को 4-विशेषज्ञ MoE से बदलें। राउटर + शीर्ष-2 रूटिंग। देखें कि वैल हानि कैसे मेल खाती सक्रिय मापदंडों पर बदलती है।

प्रमुख शर्तें

TermWhat people sayWhat it actually means
nanoGPT"Karpathy's tutorial repo"Minimal decoder-only transformer training code, ~300 LOC; the canonical reference.
tinyshakespeare"The standard toy corpus"~1.1 MB of text; every character-LM tutorial since 2015 uses it.
Tied embeddings"Share input/output matrix"LM head weight = transpose of token embedding matrix; saves parameters, improves quality.
bf16 autocast"Training precision trick"Run forward/back in bf16, keep optimizer state in fp32; standard since 2021.
Gradient clipping"Stops spikes"Cap global grad norm at 1.0; prevents training blowups.
Cosine LR schedule"The 2020+ default"LR ramps up linearly (warmup) then decays cosine-shaped to 10% of peak.
MFU"Model FLOP Utilization"Achieved FLOPs / theoretical peak; 40% dense, 30% MoE is strong in 2026.
Val loss"Held-out loss"Cross-entropy on data the model never saw; overfit detector.

आगे पढ़ना

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.