From ec312e581b78b1f964fbce5fce53ad0067baea20 Mon Sep 17 00:00:00 2001 From: rasbt Date: Sun, 4 Feb 2024 10:02:05 -0600 Subject: [PATCH 1/2] add chapter 4 code --- ch04/01_main-chapter-code/ch04.ipynb | 953 ++++++++++++++++-- .../figures/chapter-steps.webp | Bin 0 -> 30082 bytes ch04/01_main-chapter-code/figures/ffn.webp | Bin 0 -> 18404 bytes .../figures/generate-text.webp | Bin 0 -> 29440 bytes .../figures/gpt-in-out.webp | Bin 0 -> 26886 bytes ch04/01_main-chapter-code/figures/gpt.webp | Bin 0 -> 25254 bytes .../figures/iterative-gen.webp | Bin 0 -> 18162 bytes .../figures/iterative-generate.webp | Bin 0 -> 23682 bytes .../figures/layernorm.webp | Bin 0 -> 27630 bytes .../figures/layernorm2.webp | Bin 0 -> 14290 bytes .../figures/mental-model-2.webp | Bin 0 -> 19392 bytes .../figures/mental-model-3.webp | Bin 0 -> 21516 bytes .../figures/mental-model-final.webp | Bin 0 -> 21480 bytes .../figures/mental-model.webp | Bin 0 -> 25640 bytes .../figures/overview-after-ln.webp | Bin 0 -> 21224 bytes .../figures/shortcut-example.webp | Bin 0 -> 15222 bytes .../figures/transformer-block.webp | Bin 0 -> 28456 bytes .../01_main-chapter-code/figures/use-gpt.webp | Bin 0 -> 15334 bytes ch04/01_main-chapter-code/gpt.py | 274 +++++ 19 files changed, 1133 insertions(+), 94 deletions(-) create mode 100644 ch04/01_main-chapter-code/figures/chapter-steps.webp create mode 100644 ch04/01_main-chapter-code/figures/ffn.webp create mode 100644 ch04/01_main-chapter-code/figures/generate-text.webp create mode 100644 ch04/01_main-chapter-code/figures/gpt-in-out.webp create mode 100644 ch04/01_main-chapter-code/figures/gpt.webp create mode 100644 ch04/01_main-chapter-code/figures/iterative-gen.webp create mode 100644 ch04/01_main-chapter-code/figures/iterative-generate.webp create mode 100644 ch04/01_main-chapter-code/figures/layernorm.webp create mode 100644 ch04/01_main-chapter-code/figures/layernorm2.webp create mode 100644 ch04/01_main-chapter-code/figures/mental-model-2.webp create mode 100644 ch04/01_main-chapter-code/figures/mental-model-3.webp create mode 100644 ch04/01_main-chapter-code/figures/mental-model-final.webp create mode 100644 ch04/01_main-chapter-code/figures/mental-model.webp create mode 100644 ch04/01_main-chapter-code/figures/overview-after-ln.webp create mode 100644 ch04/01_main-chapter-code/figures/shortcut-example.webp create mode 100644 ch04/01_main-chapter-code/figures/transformer-block.webp create mode 100644 ch04/01_main-chapter-code/figures/use-gpt.webp create mode 100644 ch04/01_main-chapter-code/gpt.py diff --git a/ch04/01_main-chapter-code/ch04.ipynb b/ch04/01_main-chapter-code/ch04.ipynb index 7e52b04..79ab5de 100644 --- a/ch04/01_main-chapter-code/ch04.ipynb +++ b/ch04/01_main-chapter-code/ch04.ipynb @@ -5,9 +5,7 @@ "id": "ce9295b2-182b-490b-8325-83a67c4a001d", "metadata": {}, "source": [ - "# Chapter 4: Implementing a GPT model from Scratch To Generate Text \n", - "\n", - "## (Notes are in progress ...)" + "# Chapter 4: Implementing a GPT model from Scratch To Generate Text " ] }, { @@ -15,7 +13,15 @@ "id": "e7da97ed-e02f-4d7f-b68e-a0eba3716e02", "metadata": {}, "source": [ - "- In this chapter, we implement the architecture of a GPT-like LLM; in the next chapter, we will train this LLM" + "- In this chapter, we implement a GPT-like LLM architecture; the next chapter will focus on training this LLM" + ] + }, + { + "cell_type": "markdown", + "id": "7d4f11e0-4434-4979-9dee-e1207df0eb01", + "metadata": {}, + "source": [ + "" ] }, { @@ -23,7 +29,45 @@ "id": "53fe99ab-0bcf-4778-a6b5-6db81fb826ef", "metadata": {}, "source": [ - "## 4.1 Coding the decoder" + "## 4.1 Coding the LLM backbone" + ] + }, + { + "cell_type": "markdown", + "id": "ad72d1ff-d82d-4e33-a88e-3c1a8831797b", + "metadata": {}, + "source": [ + "- Chapter 1 discussed models like GPT and Llama, which generate words sequentially and are based on the decoder part of the original transformer architecture\n", + "- Therefore, these LLMs are often referred to as \"decoder-like\" LLMs\n", + "- Compared to conventional deep learning models, LLMs are larger, mainly due to their vast number of parameters, not the amount of code\n", + "- We'll see that many elements are repeated in an LLM's architecture" + ] + }, + { + "cell_type": "markdown", + "id": "5c5213e9-bd1c-437e-aee8-f5e8fb717251", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "0d43f5e2-fb51-434a-b9be-abeef6b98d99", + "metadata": {}, + "source": [ + "- In previous chapters, we used small embedding dimensions for token inputs and outputs for ease of illustration, ensuring they fit on a single page\n", + "- In this chapter, we consider embedding and model sizes akin to a small GPT-2 model\n", + "- We'll specifically code the architecture of the smallest GPT-2 model (124 million parameters), as outlined in Radford et al.'s [Language Models are Unsupervised Multitask Learners](https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf) (note that the initial report lists it as 117M parameters, but this was later corrected in the model weight repository)\n", + "- Chapter 6 will show how to load pretrained weights into our implementation, which will be compatible with model sizes of 345, 762, and 1542 million parameters" + ] + }, + { + "cell_type": "markdown", + "id": "21baa14d-24b8-4820-8191-a2808f7fbabc", + "metadata": {}, + "source": [ + "- Configuration details for the 124 million parameter GPT-2 model include:" ] }, { @@ -40,10 +84,33 @@ " \"n_heads\": 12, # Number of attention heads\n", " \"n_layers\": 12, # Number of layers\n", " \"drop_rate\": 0.1, # Dropout rate\n", - " \"qkv_bias\": True # Query-Key-Value bias\n", + " \"qkv_bias\": False # Query-Key-Value bias\n", "}" ] }, + { + "cell_type": "markdown", + "id": "c12fcd28-d210-4c57-8be6-06cfcd5d73a4", + "metadata": {}, + "source": [ + "- We use short variable names to avoid long lines of code later\n", + "- `\"vocab_size\"` indicates a vocabulary size of 50,257 words, supported by the BPE tokenizer discussed in Chapter 2\n", + "- `\"ctx_len\"` represents the model's maximum input token count, as enabled by positional embeddings covered in Chapter 2\n", + "- `\"emb_dim\"` is the embedding size for token inputs, converting each input token into a 768-dimensional vector\n", + "- `\"n_heads\"` is the number of attention heads in the multi-head attention mechanism implemented in Chapter 3\n", + "- `\"n_layers\"` is the number of transformer blocks within the model, which we'll implement in upcoming sections\n", + "- `\"drop_rate\"` is the dropout mechanism's intensity, discussed in Chapter 3; 0.1 means dropping 10% of hidden units during training to mitigate overfitting\n", + "- `\"qkv_bias\"` decides if the `Linear` layers in the multi-head attention mechanism (from Chapter 3) should include a bias vector when computing query (Q), key (K), and value (V) tensors; we'll disable this option, which is standard practice in modern LLMs; however, we'll revisit this later when loading pretrained GPT-2 weights from OpenAI into our reimplementation in Chapter 6" + ] + }, + { + "cell_type": "markdown", + "id": "4adce779-857b-4418-9501-12a7f3818d88", + "metadata": {}, + "source": [ + "" + ] + }, { "cell_type": "code", "execution_count": 2, @@ -101,6 +168,14 @@ " return x" ] }, + { + "cell_type": "markdown", + "id": "9665e8ab-20ca-4100-b9b9-50d9bdee33be", + "metadata": {}, + "source": [ + "" + ] + }, { "cell_type": "code", "execution_count": 3, @@ -168,22 +243,209 @@ "torch.manual_seed(123)\n", "model = DummyGPTModel(GPT_CONFIG_124M)\n", "\n", - "out = model(batch)\n", - "print(\"Output shape:\", out.shape)\n", - "print(out)" + "logits = model(batch)\n", + "print(\"Output shape:\", logits.shape)\n", + "print(logits)" ] }, { "cell_type": "markdown", - "id": "62598daa-f819-40da-95ca-899988b6f8da", + "id": "f8332a00-98da-4eb4-b882-922776a89917", "metadata": {}, "source": [ - "## 4.2 Normalizing activations with LayerNorm" + "## 4.2 Normalizing activations with layer normalization" + ] + }, + { + "cell_type": "markdown", + "id": "066cfb81-d59b-4d95-afe3-e43cf095f292", + "metadata": {}, + "source": [ + "- Layer normalization, also known as LayerNorm ([Ba et al. 2016](https://arxiv.org/abs/1607.06450)), centers the activations of a neural network layer around a mean of 0 and normalizes their variance to 1\n", + "- This stabilizes training and enables faster convergence to effective weights\n", + "- Layer normalization is applied both before and after the multi-head attention module within the transformer block, which we will implement later; it's also applied before the final output layer" + ] + }, + { + "cell_type": "markdown", + "id": "314ac47a-69cc-4597-beeb-65bed3b5910f", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "5ab49940-6b35-4397-a80e-df8d092770a7", + "metadata": {}, + "source": [ + "- Let's see how layer normalization works by passing a small input sample through a simple neural network layer:" ] }, { "cell_type": "code", "execution_count": 5, + "id": "79e1b463-dc3f-44ac-9cdb-9d5b6f64eb9d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([[0.2260, 0.3470, 0.0000, 0.2216, 0.0000, 0.0000],\n", + " [0.2133, 0.2394, 0.0000, 0.5198, 0.3297, 0.0000]],\n", + " grad_fn=)\n" + ] + } + ], + "source": [ + "torch.manual_seed(123)\n", + "\n", + "# create 2 training examples with 5 dimensions (features) each\n", + "batch_input = torch.randn(2, 5) \n", + "\n", + "layer = nn.Sequential(nn.Linear(5, 6), nn.ReLU())\n", + "out = layer(batch_input)\n", + "print(out)" + ] + }, + { + "cell_type": "markdown", + "id": "8fccc29e-71fc-4c16-898c-6137c6ea5d2e", + "metadata": {}, + "source": [ + "- Let's compute the mean and variance for each of the 2 inputs above:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9888f79e-8e69-44aa-8a19-cd34292adbf5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean:\n", + " tensor([[0.1324],\n", + " [0.2170]], grad_fn=)\n", + "Variance:\n", + " tensor([[0.0231],\n", + " [0.0398]], grad_fn=)\n" + ] + } + ], + "source": [ + "mean = out.mean(dim=-1, keepdim=True)\n", + "var = out.var(dim=-1, keepdim=True)\n", + "\n", + "print(\"Mean:\\n\", mean)\n", + "print(\"Variance:\\n\", var)" + ] + }, + { + "cell_type": "markdown", + "id": "052eda3e-b395-48c4-acd4-eb8083bab958", + "metadata": {}, + "source": [ + "- The normalization is applied to each of the two inputs (rows) independently; using dim=-1 applies the calculation across the last dimension (in this case, the feature dimension) instead of the row dimension" + ] + }, + { + "cell_type": "markdown", + "id": "570db83a-205c-4f6f-b219-1f6195dde1a7", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "9f8ecbc7-eb14-4fa1-b5d0-7e1ff9694f99", + "metadata": {}, + "source": [ + "- Subtracting the mean and dividing by the square-root of the variance (standard deviation) centers the inputs to have a mean of 0 and a variance of 1 across the column (feature) dimension:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "9a1d1bb9-3341-4c9a-bc2a-d2489bf89cda", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalized layer outputs:\n", + " tensor([[ 0.6159, 1.4126, -0.8719, 0.5872, -0.8719, -0.8719],\n", + " [-0.0189, 0.1121, -1.0876, 1.5173, 0.5647, -1.0876]],\n", + " grad_fn=)\n", + "Mean:\n", + " tensor([[2.9802e-08],\n", + " [3.9736e-08]], grad_fn=)\n", + "Variance:\n", + " tensor([[1.],\n", + " [1.]], grad_fn=)\n" + ] + } + ], + "source": [ + "out_norm = (out - mean) / torch.sqrt(var)\n", + "print(\"Normalized layer outputs:\\n\", out_norm)\n", + "\n", + "mean = out_norm.mean(dim=-1, keepdim=True)\n", + "var = out_norm.var(dim=-1, keepdim=True)\n", + "print(\"Mean:\\n\", mean)\n", + "print(\"Variance:\\n\", var)" + ] + }, + { + "cell_type": "markdown", + "id": "ac62b90c-7156-4979-9a79-ce1fb92969c1", + "metadata": {}, + "source": [ + "- Each input is centered at 0 and has a unit variance of 1; to improve readability, we can disable PyTorch's scientific notation:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3e06c34b-c68a-4b36-afbe-b30eda4eca39", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean:\n", + " tensor([[ 0.0000],\n", + " [ 0.0000]], grad_fn=)\n", + "Variance:\n", + " tensor([[1.],\n", + " [1.]], grad_fn=)\n" + ] + } + ], + "source": [ + "torch.set_printoptions(sci_mode=False)\n", + "print(\"Mean:\\n\", mean)\n", + "print(\"Variance:\\n\", var)" + ] + }, + { + "cell_type": "markdown", + "id": "944fb958-d4ed-43cc-858d-00052bb6b31a", + "metadata": {}, + "source": [ + "- Above, we normalized the features of each input\n", + "- Now, using the same idea, we can implement a `LayerNorm` class:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, "id": "3333a305-aa3d-460a-bcce-b80662d464d9", "metadata": {}, "outputs": [], @@ -196,24 +458,113 @@ " self.shift = nn.Parameter(torch.zeros(emb_dim))\n", "\n", " def forward(self, x):\n", - " mean = x.mean(-1, keepdim=True)\n", - " var = x.var(-1, keepdim=True, unbiased=False)\n", + " mean = x.mean(dim=-1, keepdim=True)\n", + " var = x.var(dim=-1, keepdim=True, unbiased=False)\n", " norm_x = (x - mean) / torch.sqrt(var + self.eps)\n", " return self.scale * norm_x + self.shift" ] }, { "cell_type": "markdown", - "id": "fd9d772b-c833-4a5c-9d58-9b208d2a0b68", + "id": "e56c3908-7544-4808-b8cb-5d0a55bcca72", "metadata": {}, "source": [ - "## 4.3 Adding GeLU activation functions" + "**Scale and shift**\n", + "\n", + "- Note that in addition to performing the normalization by subtracting the mean and dividing by the variance, we added two trainable parameters, a `scale` and a `shift` parameter\n", + "- The initial `scale` (multiplying by 1) and `shift` (adding 0) values don't have any effect; however, `scale` and `shift` are trainable parameters that the LLM automatically adjusts during training if it is determined that doing so would improve the model's performance on its training task\n", + "- This allows the model to learn appropriate scaling and shifting that best suit the data it is processing\n", + "- Note that we also add a smaller value (`eps`) before computing the square root of the variance; this is to avoid division-by-zero errors if the variance is 0\n", + "\n", + "**Biased variance**\n", + "- In the variance calculation above, setting `unbiased=False` means using the formula $\\frac{\\sum (x_i - \\bar{x})^2}{n}$ to compute the variance where n is the sample size (here, the number of features or columns); this formula does not include Bessel's correction (which uses `n-1` in the denominator), thus providing a biased estimate of the variance \n", + "- For LLMs, where the embedding dimension `n` is very large, the difference between using n and `n-1`\n", + " is negligible\n", + "- However, GPT-2 was trained with a biased variance in the normalization layers, which is why we also adopted this setting for compatibility reasons with the pretrained weights that we will load in later chapters\n", + "\n", + "- Let's now try out `LayerNorm` in practice:" ] }, { "cell_type": "code", - "execution_count": 6, - "id": "9275c879-b148-4579-a107-86827ca14d4d", + "execution_count": 10, + "id": "23b1000a-e613-4b43-bd90-e54deed8d292", + "metadata": {}, + "outputs": [], + "source": [ + "ln = LayerNorm(emb_dim=5)\n", + "out_ln = ln(batch_input)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "94c12de2-1cab-46e0-a099-e2e470353bff", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean:\n", + " tensor([[ -0.0000],\n", + " [ 0.0000]], grad_fn=)\n", + "Variance:\n", + " tensor([[1.0000],\n", + " [1.0000]], grad_fn=)\n" + ] + } + ], + "source": [ + "mean = out_ln.mean(dim=-1, keepdim=True)\n", + "var = out_ln.var(dim=-1, unbiased=False, keepdim=True)\n", + "\n", + "print(\"Mean:\\n\", mean)\n", + "print(\"Variance:\\n\", var)" + ] + }, + { + "cell_type": "markdown", + "id": "e136cfc4-7c89-492e-b120-758c272bca8c", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "11190e7d-8c29-4115-824a-e03702f9dd54", + "metadata": {}, + "source": [ + "## 4.3 Implementing a feed forward network and GELU activations" + ] + }, + { + "cell_type": "markdown", + "id": "b0585dfb-f21e-40e5-973f-2f63ad5cb169", + "metadata": {}, + "source": [ + "- In this section, we implement a small neural network submodule that is used as part of the transformer block in LLMs\n", + "- We start with the activation function\n", + "- In deep learning, ReLU (Rectified Linear Unit) activation functions are commonly used due to their simplicity and effectiveness in various neural network architectures\n", + "- In LLMs, various other types of activation functions are used beyond the traditional ReLU; two notable examples are GELU (Gaussian Error Linear Unit) and SwiGLU (Sigmoid-Weighted Linear Unit)\n", + "- GELU and SwiGLU are more complex, smooth activation functions incorporating Gaussian and sigmoid-gated linear units, respectively, offering better performance for deep learning models, unlike the simpler, piecewise linear function of ReLU" + ] + }, + { + "cell_type": "markdown", + "id": "7d482ce7-e493-4bfc-a820-3ea99f564ebc", + "metadata": {}, + "source": [ + "- GELU ([Hendrycks and Gimpel 2016](https://arxiv.org/abs/1606.08415)) can be implemented in several ways; the exact version is defined as GELU(x)=x⋅Φ(x), where Φ(x) is the cumulative distribution function of the standard Gaussian distribution\n", + "- In practice, it's common to implement a computationally cheaper approximation: $\\text{GELU}(x) \\approx 0.5 \\cdot x \\cdot \\left(1 + \\tanh\\left[\\sqrt{\\frac{2}{\\pi}} \\cdot \\left(x + 0.044715 \\cdot x^3\\right)\\right]\\right)\n", + "$ (the original GPT-2 model was also trained with this approximation)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f84694b7-95f3-4323-b6d6-0a73df278e82", "metadata": {}, "outputs": [], "source": [ @@ -222,14 +573,73 @@ " super().__init__()\n", "\n", " def forward(self, x):\n", - " return 0.5 * x * (1 + torch.tanh(torch.sqrt(torch.tensor(2 / torch.pi)) *\n", - " (x + 0.044715 * x ** 3)))\n", + " return 0.5 * x * (1 + torch.tanh(\n", + " torch.sqrt(torch.tensor(2.0 / torch.pi)) * \n", + " (x + 0.044715 * torch.pow(x, 3))\n", + " ))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "fc5487d2-2576-4118-80a7-56c4caac2e71", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", "\n", + "gelu, relu = GELU(), nn.ReLU()\n", "\n", + "# Some sample data\n", + "x = torch.linspace(-3, 3, 100)\n", + "y_gelu, y_relu = gelu(x), relu(x)\n", + "\n", + "plt.figure(figsize=(8, 3))\n", + "for i, (y, label) in enumerate(zip([y_gelu, y_relu], [\"GELU\", \"ReLU\"]), 1):\n", + " plt.subplot(1, 2, i)\n", + " plt.plot(x, y)\n", + " plt.title(f\"{label} activation function\")\n", + " plt.xlabel(\"x\")\n", + " plt.ylabel(f\"{label}(x)\")\n", + " plt.grid(True)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "1cd01662-14cb-43fd-bffd-2d702813de2d", + "metadata": {}, + "source": [ + "- As we can see, ReLU is a piecewise linear function that outputs the input directly if it is positive; otherwise, it outputs zero\n", + "- GELU is a smooth, non-linear function that approximates ReLU but with a non-zero gradient for negative values\n", + "\n", + "- Next, let's implement the small neural network module, `FeedForward`, that we will be using in the LLM's transformer block later:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "9275c879-b148-4579-a107-86827ca14d4d", + "metadata": {}, + "outputs": [], + "source": [ "class FeedForward(nn.Module):\n", " def __init__(self, cfg):\n", " super().__init__()\n", - " self.net = nn.Sequential(\n", + " self.layers = nn.Sequential(\n", " nn.Linear(cfg[\"emb_dim\"], 4 * cfg[\"emb_dim\"]),\n", " GELU(),\n", " nn.Linear(4 * cfg[\"emb_dim\"], cfg[\"emb_dim\"]),\n", @@ -237,7 +647,63 @@ " )\n", "\n", " def forward(self, x):\n", - " return self.net(x)" + " return self.layers(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7c4976e2-0261-418e-b042-c5be98c2ccaf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "768\n" + ] + } + ], + "source": [ + "print(GPT_CONFIG_124M[\"emb_dim\"])" + ] + }, + { + "cell_type": "markdown", + "id": "fdcaacfa-3cfc-4c9e-b668-b71a2753145a", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "928e7f7c-d0b1-499f-8d07-4cadb428a6f9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "torch.Size([2, 768])\n" + ] + } + ], + "source": [ + "ffn = FeedForward(GPT_CONFIG_124M)\n", + "\n", + "x = torch.rand(2, 768) # input with batch dimension 2\n", + "out = ffn(x)\n", + "print(out.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "8f8756c5-6b04-443b-93d0-e555a316c377", + "metadata": {}, + "source": [ + "" ] }, { @@ -245,26 +711,44 @@ "id": "4ffcb905-53c7-4886-87d2-4464c5fecf89", "metadata": {}, "source": [ - "## 4.4 Understanding shortcut connections" + "## 4.4 Adding shortcut connections" + ] + }, + { + "cell_type": "markdown", + "id": "ffae416c-821e-4bfa-a741-8af4ba5db00e", + "metadata": {}, + "source": [ + "- Next, let's talk about the concept behind shortcut connections, also called skip or residual connections\n", + "- Originally, shortcut connections were proposed in deep networks for computer vision (residual networks) to mitigate vanishing gradient problems\n", + "- A shortcut connection creates an alternative shorter path for the gradient to flow through the network\n", + "- This is achieved by adding the output of one layer to the output of a later layer, usually skipping one or more layers in between\n", + "- Let's illustrate this idea with a small example network:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "14cfd241-a32e-4601-8790-784b82f2f23e", + "metadata": {}, + "source": [ + "- In code, it looks like this:" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 17, "id": "05473938-799c-49fd-86d4-8ed65f94fee6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "tensor([[-1.1785],\n", - " [-0.0278],\n", - " [-0.5737],\n", - " [-1.5400],\n", - " [ 0.1513]], grad_fn=)" + "tensor([[0.2427]], grad_fn=)" ] }, - "execution_count": 7, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -273,35 +757,53 @@ "class ExampleWithShortcut(nn.Module):\n", " def __init__(self):\n", " super().__init__()\n", - " self.fc1 = nn.Linear(10, 10)\n", - " self.fc2 = nn.Linear(10, 10)\n", - " self.fc3 = nn.Linear(10, 1)\n", - " self.relu = nn.ReLU()\n", + " self.fc1 = nn.Linear(3, 3)\n", + " self.fc2 = nn.Linear(3, 3)\n", + " self.fc3 = nn.Linear(3, 1)\n", + " self.gelu = GELU()\n", "\n", " def forward(self, x):\n", - " identity = x\n", - " x = self.relu(self.fc1(x))\n", - " x = self.relu(self.fc2(x)) + identity # Shortcut connection\n", + " shortcut = x\n", + " x = self.gelu(self.fc1(x))\n", + " x = self.gelu(self.fc2(x)) + shortcut\n", " x = self.fc3(x)\n", " return x\n", "\n", "torch.manual_seed(123)\n", "ex_short = ExampleWithShortcut()\n", - "inputs = torch.randn(5, 10)\n", + "inputs = torch.tensor([[-1., 1., 2.]])\n", "ex_short(inputs)" ] }, + { + "cell_type": "markdown", + "id": "79ff783a-46f0-49c5-a7a9-26a525764b6e", + "metadata": {}, + "source": [ + "- We will use this concept of a shortcut connection next when we implement a transformer block" + ] + }, { "cell_type": "markdown", "id": "cae578ca-e564-42cf-8635-a2267047cdff", "metadata": {}, "source": [ - "## 4.5 Connecting attention and linear layers" + "## 4.5 Connecting attention and linear layers in a transformer block" + ] + }, + { + "cell_type": "markdown", + "id": "a3daac6f-6545-4258-8f2d-f45a7394f429", + "metadata": {}, + "source": [ + "- In this section, we now combine the previous concepts into a so-called transformer block\n", + "- A transformer block combines the causal multi-head attention module from the previous chapter with the linear layers, the feed forward neural network we implemented in an earlier section\n", + "- In addition, the transformer block also uses dropout and shortcut connections" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 18, "id": "0e1e8176-e5e3-4152-b1aa-0bbd7891dfd9", "metadata": {}, "outputs": [], @@ -325,14 +827,102 @@ " self.drop_resid = nn.Dropout(cfg[\"drop_rate\"])\n", "\n", " def forward(self, x):\n", - " x = x + self.drop_resid(self.att(self.norm1(x)))\n", - " x = x + self.drop_resid(self.ff(self.norm2(x)))\n", + " # Shortcut connection for attention block\n", + " shortcut = x\n", + " x = self.norm1(x)\n", + " x = self.att(x)\n", + " x = self.drop_resid(x)\n", + " x = x + shortcut # Add the original input back\n", + "\n", + " # Shortcut connection for feed-forward block\n", + " shortcut = x\n", + " x = self.norm2(x)\n", + " x = self.ff(x)\n", + " x = self.drop_resid(x)\n", + " x = x + shortcut # Add the original input back\n", + "\n", " return x" ] }, + { + "cell_type": "markdown", + "id": "36b64d16-94a6-4d13-8c85-9494c50478a9", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "54d2d375-87bd-4153-9040-63a1e6a2b7cb", + "metadata": {}, + "source": [ + "- Suppose we have 2 input samples with 6 tokens each, where each token is a 768-dimensional embedding vector; then this transformer block applies self-attention, followed by linear layers, to produce an output of similar size\n", + "- You can think of the output as an augmented version of the context vectors we discussed in the previous chapter" + ] + }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 19, + "id": "01e737a6-fc99-42bb-9f7e-4da899168811", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input shape: torch.Size([2, 6, 768])\n", + "Output shape: torch.Size([2, 6, 768])\n" + ] + } + ], + "source": [ + "torch.manual_seed(123)\n", + "\n", + "x = torch.rand(2, 6, 768)\n", + "block = TransformerBlock(GPT_CONFIG_124M)\n", + "output = block(x)\n", + "\n", + "print(\"Input shape:\", x.shape)\n", + "print(\"Output shape:\", output.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "46618527-15ac-4c32-ad85-6cfea83e006e", + "metadata": {}, + "source": [ + "## 4.6 Coding the GPT model" + ] + }, + { + "cell_type": "markdown", + "id": "dec7d03d-9ff3-4ca3-ad67-01b67c2f5457", + "metadata": {}, + "source": [ + "- We are almost there: now let's plug in the transformer block into the architecture we coded at the very beginning of this chapter so that we obtain a useable GPT architecture\n", + "- Note that the transformer block is repeated multiple times; in the case of the smallest 124M GPT-2 model, we repeat it 12 times:" + ] + }, + { + "cell_type": "markdown", + "id": "9b7b362d-f8c5-48d2-8ebd-722480ac5073", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "324e4b5d-ed89-4fdf-9a52-67deee0593bc", + "metadata": {}, + "source": [ + "- The corresponding code implementation, where `cfg[\"n_layers\"] = 12`:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, "id": "c61de39c-d03c-4a32-8b57-f49ac3834857", "metadata": {}, "outputs": [], @@ -362,9 +952,17 @@ " return logits" ] }, + { + "cell_type": "markdown", + "id": "2750270f-c45d-4410-8767-a6adbd05d5c3", + "metadata": {}, + "source": [ + "- Using the configuration of the 124M parameter model, we can now instantiate this GPT model with random initial weights as follows:" + ] + }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 21, "id": "252b78c2-4404-483b-84fe-a412e55c16fc", "metadata": {}, "outputs": [ @@ -373,19 +971,19 @@ "output_type": "stream", "text": [ "Output shape: torch.Size([2, 6, 50257])\n", - "tensor([[[-0.7971, -0.6232, -0.1815, ..., 0.1020, -0.0916, 0.1885],\n", - " [ 0.5491, -0.5220, 0.7559, ..., -0.3137, -0.8780, 0.2182],\n", - " [ 0.3107, 0.0346, -0.4637, ..., -0.3700, -0.4346, -0.0747],\n", - " [ 0.5681, 0.3940, 0.5397, ..., -0.1027, 0.5461, 0.4834],\n", - " [-0.2948, -0.1605, -0.5878, ..., 0.0054, -0.0207, -0.1100],\n", - " [-0.3096, -0.7744, -0.0254, ..., 0.7480, 0.3515, 0.3208]],\n", + "tensor([[[ 0.2237, 0.1153, 0.1121, ..., 0.1412, -0.0542, -0.3782],\n", + " [ 0.5285, -0.0155, -0.5074, ..., -0.3225, 0.4875, -0.0612],\n", + " [ 0.8632, -0.1178, 0.0481, ..., 0.2388, 0.0922, -0.2874],\n", + " [-1.1907, 0.1292, -0.3071, ..., 1.0674, 0.4159, -0.5619],\n", + " [ 1.2322, 0.5499, -0.0272, ..., -0.6428, 0.1301, -0.0295],\n", + " [-0.4615, 0.1153, 0.2789, ..., -0.3424, 0.8622, -0.9750]],\n", "\n", - " [[-0.6910, -0.3758, -0.1458, ..., -0.1824, -0.5231, 0.0873],\n", - " [-0.2562, -0.4204, 1.5507, ..., -0.7057, -0.3989, 0.0084],\n", - " [-0.4263, -0.2257, -0.2074, ..., -0.2160, -1.1648, 0.4744],\n", - " [-0.0245, 1.3792, 0.2234, ..., -0.7153, -0.7858, -0.3762],\n", - " [-0.4696, -0.4584, -0.4812, ..., 0.5044, -0.8911, 0.1549],\n", - " [-0.7727, -0.6125, -0.3203, ..., 1.0753, -0.0878, 0.2805]]],\n", + " [[-0.0461, -0.0814, -0.2738, ..., 0.2012, 0.0063, -0.5720],\n", + " [ 0.1694, -0.2302, 0.0034, ..., 0.8972, 0.2430, -0.0116],\n", + " [ 0.9396, 0.9071, -0.2360, ..., 0.7185, 0.5044, -0.1897],\n", + " [-0.3008, -0.1149, 0.4390, ..., 1.2587, -0.1521, 0.1293],\n", + " [ 1.2862, 0.8138, -0.2298, ..., 0.4084, -0.3298, -0.6869],\n", + " [-0.5629, 0.4579, 0.1874, ..., -0.1453, 0.8834, -0.7628]]],\n", " grad_fn=)\n" ] } @@ -399,9 +997,18 @@ "print(out)" ] }, + { + "cell_type": "markdown", + "id": "6d616e7a-568b-4921-af29-bd3f4683cd2e", + "metadata": {}, + "source": [ + "- We will train this model in the next chapter\n", + "- However, a quick note about its size: we previously referred to it as a 124M parameter model; we can double check this number as follows:" + ] + }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 22, "id": "84fb8be4-9d3b-402b-b3da-86b663aac33a", "metadata": {}, "outputs": [ @@ -409,22 +1016,89 @@ "name": "stdout", "output_type": "stream", "text": [ - "Total number of parameters: 163,037,184\n", - "Number of trainable parameters considering weight tying: 124,439,808\n" + "Total number of parameters: 163,009,536\n" ] } ], "source": [ "total_params = sum(p.numel() for p in model.parameters())\n", - "print(f\"Total number of parameters: {total_params:,}\")\n", - "\n", - "total_params_gpt2 = total_params - sum(p.numel() for p in model.tok_emb.parameters())\n", - "print(f\"Number of trainable parameters considering weight tying: {total_params_gpt2:,}\")" + "print(f\"Total number of parameters: {total_params:,}\")" + ] + }, + { + "cell_type": "markdown", + "id": "b67d13dd-dd01-4ba6-a2ad-31ca8a9fd660", + "metadata": {}, + "source": [ + "- As we see above, this model has 163M, not 124M parameters; why?\n", + "- In the original GPT-2 paper, the researchers applied weight tying, which means that they reused the token embedding layer (`tok_emb`) as the output layer, which means setting `self.out_head.weight = self.tok_emb.weight`\n", + "- The token embedding layer projects the 50,257-dimensional one-hot encoded input tokens to a 768-dimensional embedding representation\n", + "- The output layer projects 768-dimensional embeddings back into a 50,257-dimensional representation so that we can convert these back into words (more about that in the next section)\n", + "- So, the embedding and output layer have the same number of weight parameters, as we can see based on the shape of their weight matrices: the next chapter\n", + "- However, a quick note about its size: we previously referred to it as a 124M parameter model; we can double check this number as follows:" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 23, + "id": "e3b43233-e9b8-4f5a-b72b-a263ec686982", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Token embedding layer shape: torch.Size([50257, 768])\n", + "Output layer shape: torch.Size([50257, 768])\n" + ] + } + ], + "source": [ + "print(\"Token embedding layer shape:\", model.tok_emb.weight.shape)\n", + "print(\"Output layer shape:\", model.out_head.weight.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "f02259f6-6f79-4c89-a866-4ebeae1c3289", + "metadata": {}, + "source": [ + "- In the original GPT-2 paper, the researchers reused the token embedding matrix as an output matrix\n", + "- Correspondingly, if we subtracted the number of parameters of the output layer, we'd get a 124M parameter model:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "95a22e02-50d3-48b3-a4e0-d9863343c164", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of trainable parameters considering weight tying: 124,412,160\n" + ] + } + ], + "source": [ + "total_params_gpt2 = total_params - sum(p.numel() for p in model.out_head.parameters())\n", + "print(f\"Number of trainable parameters considering weight tying: {total_params_gpt2:,}\")" + ] + }, + { + "cell_type": "markdown", + "id": "40b03f80-b94c-46e7-9d42-d0df399ff3db", + "metadata": {}, + "source": [ + "- In practice, I found it easier to train the model without weight-tying, which is why we didn't implement it here\n", + "- However, we will revisit and apply this weight-tying idea later when we load the pretrained weights in Chapter 6\n", + "- Lastly, we can compute the memory requirements of the model as follows, which can be a helpful reference point:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, "id": "5131a752-fab8-4d70-a600-e29870b33528", "metadata": {}, "outputs": [ @@ -432,7 +1106,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Total size of the model: 621.94 MB\n" + "Total size of the model: 621.83 MB\n" ] } ], @@ -448,90 +1122,172 @@ }, { "cell_type": "markdown", - "id": "da5d9bc0-95ab-45d4-9378-417628d86e35", + "id": "309a3be4-c20a-4657-b4e0-77c97510b47c", "metadata": {}, "source": [ - "## 4.6 Implementing the forward pass" + "- Exercise: you can try the other configurations as well:\n", + "\n", + "- GPT2-small (the 124M configuration we implemented):\n", + " - \"emb_dim\" = 768\n", + " - \"n_layers\" = 12\n", + " - \"n_heads\" = 12\n", + "\n", + "- GPT2-medium:\n", + " - \"emb_dim\" = 1024\n", + " - \"n_layers\" = 24\n", + " - \"n_heads\" = 16\n", + "\n", + "- GPT2-large:\n", + " - \"emb_dim\" = 1280\n", + " - \"n_layers\" = 36\n", + " - \"n_heads\" = 20\n", + "\n", + "- GPT2-XL:\n", + " - \"emb_dim\" = 1600\n", + " - \"n_layers\" = 48\n", + " - \"n_heads\" = 25" ] }, { "cell_type": "markdown", - "id": "2cf2f7ac-d531-45c0-a556-41b7d13c992e", + "id": "0042c58e-995a-4a42-887f-613cad9f22b9", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "da5d9bc0-95ab-45d4-9378-417628d86e35", + "metadata": {}, + "source": [ + "## 4.7 Implementing the forward pass" + ] + }, + { + "cell_type": "markdown", + "id": "48da5deb-6ee0-4b9b-8dd2-abed7ed65172", + "metadata": {}, + "source": [ + "- LLMs like the GPT model we implemented above are used to generate one word at a time" + ] + }, + { + "cell_type": "markdown", + "id": "caade12a-fe97-480f-939c-87d24044edff", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "id": "a7061524-a3bd-4803-ade6-2e3b7b79ac13", "metadata": {}, "source": [ "- The following `generate_text_simple` function implements greedy decoding, which is a simple and fast method to generate text\n", "- In greedy decoding, at each step, the model chooses the word (or token) with the highest probability as its next output (the highest logit corresponds to the highest probability, so we don't have to compute the softmax function explicitly)\n", - "- In the next chapter, we will implement a more advanced `generate_text` function" + "- In the next chapter, we will implement a more advanced `generate_text` function\n", + "- The figure below depicts how the GPT model, given an input context, generates the next word token" + ] + }, + { + "cell_type": "markdown", + "id": "7ee0f32c-c18c-445e-b294-a879de2aa187", + "metadata": {}, + "source": [ + "" ] }, { "cell_type": "code", - "execution_count": 13, - "id": "07700ec8-32e8-4775-9c13-5c43671d6728", + "execution_count": 26, + "id": "c9b428a9-8764-4b36-80cd-7d4e00595ba6", "metadata": {}, "outputs": [], "source": [ "def generate_text_simple(model, idx, max_new_tokens, context_size):\n", " # idx is (B, T) array of indices in the current context\n", " for _ in range(max_new_tokens):\n", - " # Crop index to the last block_size tokens\n", + " \n", + " # Crop current context if it exceeds the supported context size\n", + " # E.g., if LLM supports only 5 tokens, and the context size is 10\n", + " # then only the last 5 tokens are used as context\n", " idx_cond = idx[:, -context_size:]\n", - "\n", + " \n", " # Get the predictions\n", " with torch.no_grad():\n", " logits = model(idx_cond)\n", " \n", " # Focus only on the last time step\n", - " logits = logits[:, -1, :] # becomes (B, C)\n", + " # (batch, n_token, vocab_size) becomes (batch, vocab_size)\n", + " logits = logits[:, -1, :] \n", "\n", - " idx_next = torch.argmax(logits, dim=-1, keepdim=True) # (B, 1)\n", + " # Get the idx of the vocab entry with the highest logits value\n", + " idx_next = torch.argmax(logits, dim=-1, keepdim=True) # (batch, 1)\n", "\n", " # Append sampled index to the running sequence\n", - " idx = torch.cat((idx, idx_next), dim=1) # (B, T+1)\n", + " idx = torch.cat((idx, idx_next), dim=1) # (batch, n_tokens+1)\n", "\n", " return idx" ] }, + { + "cell_type": "markdown", + "id": "6515f2c1-3cc7-421c-8d58-cc2f563b7030", + "metadata": {}, + "source": [ + "- The `generate_text_simple` above implements an iterative process, where it creates one token at a time\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "f682eac4-f9bd-438b-9dec-6b1cc7bc05ce", + "metadata": {}, + "source": [ + "- Let's prepare an input example:" + ] + }, { "cell_type": "code", - "execution_count": 14, - "id": "7b1444cd-f7b9-4348-9034-523f7bd20597", + "execution_count": 27, + "id": "3d7e3e94-df0f-4c0f-a6a1-423f500ac1d3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "encoded: [17250, 11, 314, 1101]\n", + "encoded: [15496, 11, 314, 716]\n", "encoded_tensor.shape: torch.Size([1, 4])\n" ] } ], "source": [ - "start_context = \"Hi, I'm\"\n", + "start_context = \"Hello, I am\"\n", "\n", "encoded = tokenizer.encode(start_context)\n", "print(\"encoded:\", encoded)\n", "\n", - "encoded_tensor = torch.tensor(encoded).unsqueeze(0)\n", + "encoded_tensor = torch.tensor(encoded).unsqueeze(0)\n", "print(\"encoded_tensor.shape:\", encoded_tensor.shape)" ] }, { "cell_type": "code", - "execution_count": 15, - "id": "1bfb9fc6-dd14-457b-b0ee-cf0e33e2bb33", + "execution_count": 28, + "id": "a72a9b60-de66-44cf-b2f9-1e638934ada4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([[17250, 11, 314, 1101, 19106, 34827, 44404, 13427, 42336, 17502,\n", - " 48541, 27970, 23115, 37903, 42378, 47769, 5746, 4830, 22564, 32971,\n", - " 41836, 32124, 36101, 33912, 23027, 32252, 2951, 27247, 10075, 44911,\n", - " 6399, 42214, 3226, 10305, 35112, 9234, 9466, 27622, 44047, 32440,\n", - " 23270, 31510, 15309, 35186]])\n" + "Output: tensor([[15496, 11, 314, 716, 27018, 24086, 47843, 30961, 42348, 7267,\n", + " 49706, 43231, 47062, 34657]])\n", + "Output length: 14\n" ] } ], @@ -541,24 +1297,33 @@ "out = generate_text_simple(\n", " model=model,\n", " idx=encoded_tensor, \n", - " max_new_tokens=40, \n", + " max_new_tokens=10, \n", " context_size=GPT_CONFIG_124M[\"ctx_len\"]\n", ")\n", "\n", - "print(out)" + "print(\"Output:\", out)\n", + "print(\"Output length:\", len(out[0]))" + ] + }, + { + "cell_type": "markdown", + "id": "1d131c00-1787-44ba-bec3-7c145497b2c3", + "metadata": {}, + "source": [ + "- Remove batch dimension and convert back into text:" ] }, { "cell_type": "code", - "execution_count": 16, - "id": "4e6d40d2-a542-44da-acdc-703a703d80a8", + "execution_count": 29, + "id": "053d99f6-5710-4446-8d52-117fb34ea9f6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Hi, I'mshadow maiden motel acceptanceRN lobbying↑312 Lac Sioux Styarrellà iTunesluxWHAT groomingridges Ved†illon Scy eyes Wong cyber Celebration subsequ dodging OfSD liberated monster */ Ducks contestant competed Partnership 226Alex residue\n" + "Hello, I am Featureiman Byeswickattribute argue logger Normandy Compton analogous\n" ] } ], @@ -569,10 +1334,10 @@ }, { "cell_type": "markdown", - "id": "847888d2-0f92-4840-8a87-8836b529cee5", + "id": "9a894003-51f6-4ccc-996f-3b9c7d5a1d70", "metadata": {}, "source": [ - "- Note that the model is untrained hence the random output texts above\n", + "- Note that the model is untrained; hence the random output texts above\n", "- We will train the model in the next chapter" ] } diff --git a/ch04/01_main-chapter-code/figures/chapter-steps.webp b/ch04/01_main-chapter-code/figures/chapter-steps.webp new file mode 100644 index 0000000000000000000000000000000000000000..aa3c17cc21bf7f76443da75186674c49bbc1d09d GIT binary patch literal 30082 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 seaYYe004ZyXaE2J78?Kn000000000Cug(lo000000000000000080a-A^-pY literal 0 HcmV?d00001 diff --git a/ch04/01_main-chapter-code/figures/generate-text.webp b/ch04/01_main-chapter-code/figures/generate-text.webp new file mode 100644 index 0000000000000000000000000000000000000000..0a598959a91a2abc43a625ad60e90bae47392a5b GIT binary patch literal 29440 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 C@_}Li literal 0 HcmV?d00001 diff --git a/ch04/01_main-chapter-code/figures/gpt.webp b/ch04/01_main-chapter-code/figures/gpt.webp new file mode 100644 index 0000000000000000000000000000000000000000..c75e71cc4cb06d104e16e60ecc5efffce7fa87f7 GIT binary patch literal 25254 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 z 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 K000000000&$Eex> literal 0 HcmV?d00001 diff --git a/ch04/01_main-chapter-code/figures/iterative-generate.webp b/ch04/01_main-chapter-code/figures/iterative-generate.webp new file mode 100644 index 0000000000000000000000000000000000000000..bca10b6cf4b32a7c2b15f81b477c7e928c7b4a5c GIT binary patch literal 23682 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 literal 0 HcmV?d00001 diff --git a/ch04/01_main-chapter-code/figures/layernorm.webp b/ch04/01_main-chapter-code/figures/layernorm.webp new file mode 100644 index 0000000000000000000000000000000000000000..38cf3a7460b50152acea63dab9d337887106d05e GIT binary patch literal 27630 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 literal 0 HcmV?d00001 diff --git a/ch04/01_main-chapter-code/figures/mental-model-3.webp b/ch04/01_main-chapter-code/figures/mental-model-3.webp new file mode 100644 index 0000000000000000000000000000000000000000..cbf41d6c7e39bb0b363604abd8fc4e288cac29e0 GIT binary patch literal 21516 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%0A2gL`cH*%g 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 -XVsbm&OP94QVO zYyTk5o1;b()kqYG1w5Y5gB6;}#djA(RxMiVY$u02Sg@ll4)nZ&68:?psMi^*oy zHszJ3eRlzcSC?j)(Z45uBilP(fl46+<{1&N8C*wTZdZcu%{wY}g2)#6FG@Nr;}y`o zE6XraM>zb}hwn3=aP}5OXG?dK@V=oVNb#fB*xi3|HDc zJa;usx0=fhGNhVoOB<`QXs-6nR+oW4K5Bxl4+Dp=JEu2t;)6xRsF6;8AI4$t5ibUT z-E_C|oC-S25PhUuD&uT1w2%BK9K>f<9AHdMJtjhpPE@t4zAS&gu%|rz=u}Qsqo)?v z+qteO^uG-4?}>B3BIyXb^62uADN1&`yQobY$LvXhZ}D?3bE$u4&i}myl}!7p%!yam z#Tj`tx8cb-g-0z_^H;Limoi-Tz~BHsNhyuPYF5btgX}l}0FG_huha{G%9ArWibljd jSghrya@;p^e9ERv(_U@4F%k$gqIkpr0000000000GFcP7 literal 0 HcmV?d00001 diff --git a/ch04/01_main-chapter-code/figures/mental-model-final.webp b/ch04/01_main-chapter-code/figures/mental-model-final.webp new file mode 100644 index 0000000000000000000000000000000000000000..03817ecf2ed09290f79520a321d9d5bb1e71063b GIT binary patch literal 21480 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 literal 0 HcmV?d00001 diff --git a/ch04/01_main-chapter-code/figures/mental-model.webp b/ch04/01_main-chapter-code/figures/mental-model.webp new file mode 100644 index 0000000000000000000000000000000000000000..16a9c190a132699fb832b72769974383365748c9 GIT binary patch literal 25640 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 literal 0 HcmV?d00001 diff --git a/ch04/01_main-chapter-code/figures/use-gpt.webp b/ch04/01_main-chapter-code/figures/use-gpt.webp new file mode 100644 index 0000000000000000000000000000000000000000..b83a4b757c70601d0f72e40cdff115261749d943 GIT binary patch literal 15334 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 M?fqvK|9@Wp3taR>&j0`b literal 0 HcmV?d00001 diff --git a/ch04/01_main-chapter-code/gpt.py b/ch04/01_main-chapter-code/gpt.py new file mode 100644 index 0000000..c08b118 --- /dev/null +++ b/ch04/01_main-chapter-code/gpt.py @@ -0,0 +1,274 @@ +# This file collects all the relevant code that we covered thus far +# throughout Chapters 2-4 +# This file can be run as a standalone s + +import tiktoken +import torch +import torch.nn as nn +from torch.utils.data import Dataset, DataLoader + +##################################### +# Chapter 2 +##################################### + + +class GPTDatasetV1(Dataset): + def __init__(self, txt, tokenizer, max_length, stride): + self.tokenizer = tokenizer + self.input_ids = [] + self.target_ids = [] + + # Tokenize the entire text + token_ids = tokenizer.encode(txt) + + # Use a sliding window to chunk the book into overlapping sequences of max_length + for i in range(0, len(token_ids) - max_length, stride): + input_chunk = token_ids[i:i + max_length] + target_chunk = token_ids[i + 1: i + max_length + 1] + self.input_ids.append(torch.tensor(input_chunk)) + self.target_ids.append(torch.tensor(target_chunk)) + + def __len__(self): + return len(self.input_ids) + + def __getitem__(self, idx): + return self.input_ids[idx], self.target_ids[idx] + + +def create_dataloader(txt, batch_size=4, max_length=256, stride=128, shuffle=True): + # Initialize the tokenizer + tokenizer = tiktoken.get_encoding("gpt2") + + # Create dataset + dataset = GPTDatasetV1(txt, tokenizer, max_length, stride) + + # Create dataloader + dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=shuffle) + + return dataloader + + +##################################### +# Chapter 3 +##################################### +class MultiHeadAttention(nn.Module): + def __init__(self, d_in, d_out, block_size, dropout, num_heads, qkv_bias=False): + super().__init__() + assert d_out % num_heads == 0, "d_out must be divisible by n_heads" + + self.d_out = d_out + self.num_heads = num_heads + self.head_dim = d_out // num_heads # Reduce the projection dim to match desired output dim + + self.W_query = nn.Linear(d_in, d_out, bias=qkv_bias) + self.W_key = nn.Linear(d_in, d_out, bias=qkv_bias) + self.W_value = nn.Linear(d_in, d_out, bias=qkv_bias) + self.out_proj = nn.Linear(d_out, d_out) # Linear layer to combine head outputs + self.dropout = nn.Dropout(dropout) + self.register_buffer('mask', torch.triu(torch.ones(block_size, block_size), diagonal=1)) + + def forward(self, x): + b, num_tokens, d_in = x.shape + + keys = self.W_key(x) # Shape: (b, num_tokens, d_out) + queries = self.W_query(x) + values = self.W_value(x) + + # We implicitly split the matrix by adding a `num_heads` dimension + # Unroll last dim: (b, num_tokens, d_out) -> (b, num_tokens, num_heads, head_dim) + keys = keys.view(b, num_tokens, self.num_heads, self.head_dim) + values = values.view(b, num_tokens, self.num_heads, self.head_dim) + queries = queries.view(b, num_tokens, self.num_heads, self.head_dim) + + # Transpose: (b, num_tokens, num_heads, head_dim) -> (b, num_heads, num_tokens, head_dim) + keys = keys.transpose(1, 2) + queries = queries.transpose(1, 2) + values = values.transpose(1, 2) + + # Compute scaled dot-product attention (aka self-attention) with a causal mask + attn_scores = queries @ keys.transpose(2, 3) # Dot product for each head + # Original mask truncated to the number of tokens and converted to boolean + mask_bool = self.mask.bool()[:num_tokens, :num_tokens] + # Unsqueeze the mask twice to match dimensions + mask_unsqueezed = mask_bool.unsqueeze(0).unsqueeze(0) + # Use the unsqueezed mask to fill attention scores + attn_scores.masked_fill_(mask_unsqueezed, -torch.inf) + + attn_weights = torch.softmax(attn_scores / keys.shape[-1]**0.5, dim=-1) + attn_weights = self.dropout(attn_weights) + + # Shape: (b, num_tokens, num_heads, head_dim) + context_vec = (attn_weights @ values).transpose(1, 2) + + # Combine heads, where self.d_out = self.num_heads * self.head_dim + context_vec = context_vec.contiguous().view(b, num_tokens, self.d_out) + context_vec = self.out_proj(context_vec) # optional projection + + return context_vec + + +##################################### +# Chapter 4 +##################################### +class LayerNorm(nn.Module): + def __init__(self, emb_dim): + super().__init__() + self.eps = 1e-5 + self.scale = nn.Parameter(torch.ones(emb_dim)) + self.shift = nn.Parameter(torch.zeros(emb_dim)) + + def forward(self, x): + mean = x.mean(dim=-1, keepdim=True) + var = x.var(dim=-1, keepdim=True, unbiased=False) + norm_x = (x - mean) / torch.sqrt(var + self.eps) + return self.scale * norm_x + self.shift + + +class GELU(nn.Module): + def __init__(self): + super().__init__() + + def forward(self, x): + return 0.5 * x * (1 + torch.tanh( + torch.sqrt(torch.tensor(2.0 / torch.pi)) * + (x + 0.044715 * torch.pow(x, 3)) + )) + + +class FeedForward(nn.Module): + def __init__(self, cfg): + super().__init__() + self.layers = nn.Sequential( + nn.Linear(cfg["emb_dim"], 4 * cfg["emb_dim"]), + GELU(), + nn.Linear(4 * cfg["emb_dim"], cfg["emb_dim"]), + nn.Dropout(cfg["drop_rate"]) + ) + + def forward(self, x): + return self.layers(x) + + +class TransformerBlock(nn.Module): + def __init__(self, cfg): + super().__init__() + self.att = MultiHeadAttention( + d_in=cfg["emb_dim"], + d_out=cfg["emb_dim"], + block_size=cfg["ctx_len"], + num_heads=cfg["n_heads"], + dropout=cfg["drop_rate"], + qkv_bias=cfg["qkv_bias"]) + self.ff = FeedForward(cfg) + self.norm1 = LayerNorm(cfg["emb_dim"]) + self.norm2 = LayerNorm(cfg["emb_dim"]) + self.drop_resid = nn.Dropout(cfg["drop_rate"]) + + def forward(self, x): + # Shortcut connection for attention block + shortcut = x + x = self.norm1(x) + x = self.att(x) + x = self.drop_resid(x) + x = x + shortcut # Add the original input back + + # Shortcut connection for feed-forward block + shortcut = x + x = self.norm2(x) + x = self.ff(x) + x = self.drop_resid(x) + x = x + shortcut # Add the original input back + + return x + + +class GPTModel(nn.Module): + def __init__(self, cfg): + super().__init__() + self.tok_emb = nn.Embedding(cfg["vocab_size"], cfg["emb_dim"]) + self.pos_emb = nn.Embedding(cfg["ctx_len"], cfg["emb_dim"]) + + # Use a placeholder for TransformerBlock + self.trf_blocks = nn.Sequential( + *[TransformerBlock(cfg) for _ in range(cfg["n_layers"])]) + + # Use a placeholder for LayerNorm + self.final_norm = LayerNorm(cfg["emb_dim"]) + self.out_head = nn.Linear(cfg["emb_dim"], cfg["vocab_size"], bias=False) + + def forward(self, in_idx): + batch_size, seq_len = in_idx.shape + tok_embeds = self.tok_emb(in_idx) + pos_embeds = self.pos_emb(torch.arange(seq_len, device=in_idx.device)) + x = tok_embeds + pos_embeds + x = self.trf_blocks(x) + x = self.final_norm(x) + logits = self.out_head(x) + return logits + + +def generate_text_simple(model, idx, max_new_tokens, context_size): + # idx is (B, T) array of indices in the current context + for _ in range(max_new_tokens): + + # Crop current context if it exceeds the supported context size + # E.g., if LLM supports only 5 tokens, and the context size is 10 + # then only the last 5 tokens are used as context + idx_cond = idx[:, -context_size:] + + # Get the predictions + with torch.no_grad(): + logits = model(idx_cond) + + # Focus only on the last time step + # (batch, n_token, vocab_size) becomes (batch, vocab_size) + logits = logits[:, -1, :] + + # Get the idx of the vocab entry with the highest logits value + idx_next = torch.argmax(logits, dim=-1, keepdim=True) # (batch, 1) + + # Append sampled index to the running sequence + idx = torch.cat((idx, idx_next), dim=1) # (batch, n_tokens+1) + + return idx + + +if __name__ == "__main__": + + GPT_CONFIG_124M = { + "vocab_size": 50257, # Vocabulary size + "ctx_len": 1024, # Context length + "emb_dim": 768, # Embedding dimension + "n_heads": 12, # Number of attention heads + "n_layers": 12, # Number of layers + "drop_rate": 0.1, # Dropout rate + "qkv_bias": False # Query-Key-Value bias + } + + torch.manual_seed(123) + model = GPTModel(GPT_CONFIG_124M) + model.eval() # disable dropout + + start_context = "Hello, I am" + + tokenizer = tiktoken.get_encoding("gpt2") + encoded = tokenizer.encode(start_context) + encoded_tensor = torch.tensor(encoded).unsqueeze(0) + + print(f"\n{50*'='}\n{22*' '}IN\n{50*'='}") + print("\nInput text:", start_context) + print("Encoded input text:", encoded) + print("encoded_tensor.shape:", encoded_tensor.shape) + + out = generate_text_simple( + model=model, + idx=encoded_tensor, + max_new_tokens=10, + context_size=GPT_CONFIG_124M["ctx_len"] + ) + decoded_text = tokenizer.decode(out.squeeze(0).tolist()) + + print(f"\n\n{50*'='}\n{22*' '}OUT\n{50*'='}") + print("\nOutput:", out) + print("Output length:", len(out[0])) + print("Output text:", decoded_text) From b86cc682f0cc3b2d8139d9f4b90c77f8a61d338c Mon Sep 17 00:00:00 2001 From: rasbt Date: Sun, 4 Feb 2024 10:05:55 -0600 Subject: [PATCH 2/2] update links in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b40f406..0ed4cc7 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Alternatively, you can view this and other files on GitHub at [https://github.co | Ch 1: Understanding Large Language Models | No code | No code | | Ch 2: Working with Text Data | - [ch02.ipynb](ch02/01_main-chapter-code/ch02.ipynb)
- [dataloader.ipynb](ch02/01_main-chapter-code/dataloader.ipynb) (summary)
- [exercise-solutions.ipynb](ch02/01_main-chapter-code/exercise-solutions.ipynb) | [./ch02](./ch02) | | Ch 3: Coding Attention Mechanisms | - [ch03.ipynb](ch03/01_main-chapter-code/ch03.ipynb)
- [multihead-attention.ipynb](ch03/01_main-chapter-code/multihead-attention.ipynb) (summary) | [./ch03](./ch03) | -| Ch 4: Implementing a GPT Model from Scratch | coming soon | ... | +| Ch 4: Implementing a GPT Model from Scratch | - [ch04.ipynb](ch04/01_main-chapter-code/ch04.ipynb)
- [gpt.py](ch04/01_main-chapter-code/gpt.py) (summary) | [./ch04](./ch04) | | Ch 5: Pretraining on Unlabeled Data | Q1 2024 | ... | | Ch 6: Finetuning for Text Classification | Q2 2024 | ... | | Ch 7: Finetuning with Human Feedback | Q2 2024 | ... |