Chapter 35
GPT আর্কিটেকচার
GPT Architecture
🎬 Generative Pretrained Transformer
GPT decoder-only Transformer — শুধু পরের token predict করে। এই সরল objective থেকেই ChatGPT, Claude, Gemini, LLaMA — পুরো আধুনিক LLM যুগ।
BERT বনাম GPT
বৈশিষ্ট্য
BERT
GPT
Architecture
Encoder
Decoder
Attention
Bidirectional
Causal (masked)
Objective
MLM
Next-token prediction
Best at
Understanding
Generation
Causal Mask
# Future token দেখতে দেয় না
mask = torch.triu(torch.full((T, T), float("-inf")), diagonal=1)
scores = (Q @ K.T) / d_k**0.5 + mask
attn = scores.softmax(-1) @ VGPT Block (Pre-LN)
class GPTBlock(nn.Module):
def __init__(self, d, h, ff):
super().__init__()
self.ln1 = nn.LayerNorm(d)
self.attn = nn.MultiheadAttention(d, h, batch_first=True)
self.ln2 = nn.LayerNorm(d)
self.mlp = nn.Sequential(nn.Linear(d, ff), nn.GELU(), nn.Linear(ff, d))
def forward(self, x, mask):
a,_ = self.attn(self.ln1(x), self.ln1(x), self.ln1(x), attn_mask=mask)
x = x + a
x = x + self.mlp(self.ln2(x))
return xসম্পূর্ণ Tiny-GPT
class TinyGPT(nn.Module):
def __init__(self, vocab, d=256, h=8, L=6, T=256):
super().__init__()
self.tok = nn.Embedding(vocab, d)
self.pos = nn.Embedding(T, d)
self.blocks = nn.ModuleList([GPTBlock(d, h, 4*d) for _ in range(L)])
self.ln = nn.LayerNorm(d)
self.head = nn.Linear(d, vocab, bias=False)
self.T = T
def forward(self, idx):
B, T = idx.shape
mask = torch.triu(torch.full((T,T), float("-inf"),
device=idx.device), 1)
x = self.tok(idx) + self.pos(torch.arange(T, device=idx.device))
for blk in self.blocks: x = blk(x, mask)
return self.head(self.ln(x)) # (B, T, vocab)Sampling Strategies
- Greedy: সবসময় argmax — পুনরাবৃত্তি।
- Temperature: logits/T — কম T = sharp, বেশি T = creative।
- Top-k: শীর্ষ k token থেকে sample।
- Top-p (nucleus): cumulative prob p পর্যন্ত।
- Beam search: একাধিক sequence সমান্তরালে — translation।
def generate(model, idx, max_new, T=1.0, top_k=50):
for _ in range(max_new):
x = idx[:, -model.T:]
logits = model(x)[:, -1] / T
if top_k:
v, _ = logits.topk(top_k)
logits[logits < v[:, [-1]]] = -float("inf")
probs = logits.softmax(-1)
nxt = torch.multinomial(probs, 1)
idx = torch.cat([idx, nxt], 1)
return idxGPT পরিবার-এর ক্রমবিকাশ
মডেল
Parameter
মূল অবদান
GPT-1 (2018)
117M
Pretrain + fine-tune
GPT-2 (2019)
1.5B
Zero-shot ability
GPT-3 (2020)
175B
In-context / few-shot
ChatGPT (2022)
—
RLHF + dialogue
GPT-4/4o (2023–24)
—
Multimodal, reasoning
Open: LLaMA, Mistral, Qwen
7B–405B
Open-weights
🔑 Next-token-এর শক্তি
শুধু "পরের token কী?" predict করা থেকেই reasoning, coding, translation, dialogue — সব emerge করে যখন model + data যথেষ্ট বড়। Scaling-ই magic।
HuggingFace দিয়ে generation
from transformers import AutoTokenizer, AutoModelForCausalLM
tok = AutoTokenizer.from_pretrained("gpt2")
mdl = AutoModelForCausalLM.from_pretrained("gpt2")
ids = tok("Deep learning is", return_tensors="pt").input_ids
out = mdl.generate(ids, max_new_tokens=40, do_sample=True,
top_p=0.9, temperature=0.8)
print(tok.decode(out[0], skip_special_tokens=True))অনুশীলন
১. char-level Tiny-GPT লিখে শেক্সপিয়ার-style text generate করুন।
২. Temperature 0.2/0.8/1.5-এ output diversity তুলনা করুন।
৩. Top-k বনাম top-p sampling-এর পার্থক্য observe করুন।
সারসংক্ষেপ
✨ এই অধ্যায়ে যা শিখলাম
- GPT = decoder-only + causal attention + next-token loss।
- Temperature / top-k / top-p দিয়ে generation নিয়ন্ত্রণ।
- Scaling-এই reasoning ও ability emerge করে।
- এই অধ্যায়ে Phase 4 শেষ। পরের Phase-এ Generative AI (GAN, Diffusion, LLM)।