概述
跟随 Andrej Karpathy 的 nanoGPT,我们从零构建一个能生成文本的小型 GPT。
模型架构
class GPT(nn.Module):
def __init__(self, vocab_size, n_embd, n_head, n_layer):
self.token_embedding = nn.Embedding(vocab_size, n_embd)
self.position_embedding = nn.Embedding(block_size, n_embd)
self.blocks = nn.Sequential(*[TransformerBlock(n_embd, n_head) for _ in range(n_layer)])
self.ln_f = nn.LayerNorm(n_embd)
self.lm_head = nn.Linear(n_embd, vocab_size)
训练过程
在 Shakespeare 文本上训练一个小模型只需要几分钟(在 GPU 上)。模型会逐渐学会生成类似莎士比亚风格的文本。
建议先完成 用 PyTorch 实现 Transformer 再尝试本教程,会更容易理解。