├── transformer.png ├── README.md ├── LICENSE └── Transformer_walkthrough.ipynb /transformer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markriedl/transformer-walkthrough/main/transformer.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # A walkthrough of transformer architecture code 2 | 3 | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1PXZMr0KrOUYsWHI7Pae6iNkLPoWEkI4n?usp=sharing) 4 | 5 | The notebook walks through a single forward pass of the Transformer architecture in pytorch. It is meant for illustration and educational purposes only. The walkthrough explains every stage of the architecture accompanied by a detailed computation graph. 6 | 7 | ![Transformer Computation Graph](https://github.com/markriedl/transformer-walkthrough/blob/main/transformer.png) 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 markriedl 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Transformer_walkthrough.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "Transformer-walkthrough.ipynb", 7 | "provenance": [], 8 | "collapsed_sections": [], 9 | "authorship_tag": "ABX9TyN3m5R0G4c8CGAWO6LxY3nV", 10 | "include_colab_link": true 11 | }, 12 | "kernelspec": { 13 | "name": "python3", 14 | "display_name": "Python 3" 15 | }, 16 | "language_info": { 17 | "name": "python" 18 | } 19 | }, 20 | "cells": [ 21 | { 22 | "cell_type": "markdown", 23 | "metadata": { 24 | "id": "view-in-github", 25 | "colab_type": "text" 26 | }, 27 | "source": [ 28 | "\"Open" 29 | ] 30 | }, 31 | { 32 | "cell_type": "markdown", 33 | "source": [ 34 | "# Transformer Code Walkthrough\n", 35 | "\n", 36 | "[Mark Riedl](http://eilab.gatech.edu/mark-riedl.html)\n", 37 | "\n", 38 | "This notebook walks through a single forward pass of the Transformer architecture in pytorch. It is meant for illustration and educational purposes only. \n", 39 | "\n", 40 | "The Transformer was introduced by Vaswani et al. (2017) in their paper, titled [Attention Is All You Need](https://arxiv.org/abs/1706.03762)." 41 | ], 42 | "metadata": { 43 | "id": "CoRK-2VVfbMp" 44 | } 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "source": [ 49 | "# Computation Graph" 50 | ], 51 | "metadata": { 52 | "id": "9riNZp-Jf-HG" 53 | } 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "source": [ 58 | "This is the computation graph, an illustrated diagram of the mathematical operations, their inputs and their outputs. The inputs at the bottom are fed upward into an encode and a decoder (depicted side by side like in a sequence-to-sequence network). At every stage, it shows the matrix and their shapes (excluding the batching dimension, which makes the tensors more complicated looking without adding much information). The bubbles show what part of the code below is responsible for each part of the diagram.\n", 59 | "\n", 60 | "![Computation Graph](https://www.dropbox.com/s/bjwdq06zvq703b4/transformer.png?dl=1)" 61 | ], 62 | "metadata": { 63 | "id": "w4kYasNjgBKI" 64 | } 65 | }, 66 | { 67 | "cell_type": "markdown", 68 | "source": [ 69 | "# Imports" 70 | ], 71 | "metadata": { 72 | "id": "ESzQqTWmfDJN" 73 | } 74 | }, 75 | { 76 | "cell_type": "code", 77 | "source": [ 78 | "import torch\n", 79 | "import torch.nn as nn\n", 80 | "import torch.nn.functional as F\n", 81 | "import math\n", 82 | "import numpy as np\n", 83 | "import matplotlib.pyplot as plt" 84 | ], 85 | "metadata": { 86 | "id": "S-cmUU-75qcq" 87 | }, 88 | "execution_count": 1, 89 | "outputs": [] 90 | }, 91 | { 92 | "cell_type": "markdown", 93 | "source": [ 94 | "# Hyper parameters" 95 | ], 96 | "metadata": { 97 | "id": "fl8-t60g85Uz" 98 | } 99 | }, 100 | { 101 | "cell_type": "code", 102 | "source": [ 103 | "d_embed = 512 # embedding size for the attention modules\n", 104 | "num_heads = 8 # Number of attention heads\n", 105 | "num_batches = 1 # number of batches (1 makes it easier to see what is going on)\n", 106 | "vocab = 50000 # vocab size\n", 107 | "max_len = 5000 # Max length of TODO what exactly?\n", 108 | "n_layers = 1 # number of attention layers (not used but would be an expected hyper-parameter)\n", 109 | "d_ff = 2048 # hidden state size in the feed forward layers\n", 110 | "epsilon = 1e-6 # epsilon to use when we need a small non-zero number\n" 111 | ], 112 | "metadata": { 113 | "id": "99lu6YH3kxwF" 114 | }, 115 | "execution_count": 2, 116 | "outputs": [] 117 | }, 118 | { 119 | "cell_type": "markdown", 120 | "source": [ 121 | "#Make dummy data" 122 | ], 123 | "metadata": { 124 | "id": "xt8SMUhu5bSk" 125 | } 126 | }, 127 | { 128 | "cell_type": "markdown", 129 | "source": [ 130 | "Here we create some dummy input data, consisting of three tokens. The 2nd token will be the masked token. Initially we have an input `x` of size `batch_size x sequence_length`. Throughout, we will use `x` to denote the tensor that originated from the input sequence, and `y` to denote the tensor that originated from the target sequence. " 131 | ], 132 | "metadata": { 133 | "id": "KCzWWhuvfs9h" 134 | } 135 | }, 136 | { 137 | "cell_type": "code", 138 | "source": [ 139 | "x = torch.tensor([[1, 2, 3]]) # input will be 3 tokens\n", 140 | "y = torch.tensor([[1, 2, 3]]) # target will be same as the input for many applications\n", 141 | "x_mask = torch.tensor([[1, 0, 1]]) # Mask the 2nd input token\n", 142 | "y_mask = torch.tensor([[1, 0, 1]]) # Mask the 2nd target token\n", 143 | "print(\"x\", x.size())\n", 144 | "print(\"y\", y.size())" 145 | ], 146 | "metadata": { 147 | "colab": { 148 | "base_uri": "https://localhost:8080/" 149 | }, 150 | "id": "AVjmrgvysDd6", 151 | "outputId": "5ed2b8d3-2fff-4d5e-b165-30a3c5eed3a3" 152 | }, 153 | "execution_count": 3, 154 | "outputs": [ 155 | { 156 | "output_type": "stream", 157 | "name": "stdout", 158 | "text": [ 159 | "x torch.Size([1, 3])\n", 160 | "y torch.Size([1, 3])\n" 161 | ] 162 | } 163 | ] 164 | }, 165 | { 166 | "cell_type": "markdown", 167 | "source": [ 168 | "# 1. Encoder" 169 | ], 170 | "metadata": { 171 | "id": "QG8oYLnl8_mX" 172 | } 173 | }, 174 | { 175 | "cell_type": "markdown", 176 | "source": [ 177 | "This section shows a walk-through of one attention layer in the encoder. The purpose of the encoder is to create a *hidden state*, an encoded representation of the input sequence. The hidden state is then passed to the decoder." 178 | ], 179 | "metadata": { 180 | "id": "n4NB3UzKgUAH" 181 | } 182 | }, 183 | { 184 | "cell_type": "markdown", 185 | "source": [ 186 | "## 1.1 Encoder Embeddings" 187 | ], 188 | "metadata": { 189 | "id": "yvhxS-vm9QMb" 190 | } 191 | }, 192 | { 193 | "cell_type": "markdown", 194 | "source": [ 195 | "Use a conventional embedding layer to convert the tokens into embeddings of size `d_embed`. The embedding activations are then scaled by `sqrt(d_model)` in order to make them bigger. This will be important when positional embedding information is added (next). We want this embedding information to have more importance. The result is a tensor of size `batch_size x sequence_length x embedding_size`." 196 | ], 197 | "metadata": { 198 | "id": "KgtVhtKegehe" 199 | } 200 | }, 201 | { 202 | "cell_type": "code", 203 | "source": [ 204 | "# Make the embedding module. It understands that each token should result in a separate embedding.\n", 205 | "emb = nn.Embedding(vocab, d_embed)\n", 206 | "x = emb(x)\n", 207 | "# Scale the embedding\n", 208 | "x = x * math.sqrt(d_embed)\n", 209 | "print(x.size())" 210 | ], 211 | "metadata": { 212 | "colab": { 213 | "base_uri": "https://localhost:8080/" 214 | }, 215 | "id": "VKckLst4k4_N", 216 | "outputId": "fe0ac2c1-ed76-4652-d15b-8f34708d4b87" 217 | }, 218 | "execution_count": 4, 219 | "outputs": [ 220 | { 221 | "output_type": "stream", 222 | "name": "stdout", 223 | "text": [ 224 | "torch.Size([1, 3, 512])\n" 225 | ] 226 | } 227 | ] 228 | }, 229 | { 230 | "cell_type": "markdown", 231 | "source": [ 232 | "Next we add positional embedding information. The code below creates a pattern of overlapping sine and cosine waves that are added to the embedding. This differentiates embedded tokens based on where they are in the sequence. That is, if an input sequence has two of the same token, their embeddings will end up looking a little bit different based on their position in the sequence." 233 | ], 234 | "metadata": { 235 | "id": "CYsqRpXesZtV" 236 | } 237 | }, 238 | { 239 | "cell_type": "code", 240 | "source": [ 241 | "# Start with an empty tensor\n", 242 | "pe = torch.zeros(max_len, d_embed, requires_grad=False)\n", 243 | "# array containing index values 0...max_len\n", 244 | "position = torch.arange(0, max_len).unsqueeze(1)\n", 245 | "divisor = torch.exp(torch.arange(0, d_embed, 2) * -(math.log(10000.0) / d_embed))\n", 246 | "# Make overlapping sine and cosine wave inside positional embedding tensor\n", 247 | "pe[:, 0::2] = torch.sin(position * divisor)\n", 248 | "pe[:, 1::2] = torch.cos(position * divisor)\n", 249 | "pe = pe.unsqueeze(0)\n", 250 | "# Add the position embedding to the main embedding\n", 251 | "x = x + pe[:, :x.size(1)]\n", 252 | "print(x.size())" 253 | ], 254 | "metadata": { 255 | "colab": { 256 | "base_uri": "https://localhost:8080/" 257 | }, 258 | "id": "WTaufnQksbjC", 259 | "outputId": "1ea218c2-08fe-4dc7-d7bd-5cbe50ae7d66" 260 | }, 261 | "execution_count": 5, 262 | "outputs": [ 263 | { 264 | "output_type": "stream", 265 | "name": "stdout", 266 | "text": [ 267 | "torch.Size([1, 3, 512])\n" 268 | ] 269 | } 270 | ] 271 | }, 272 | { 273 | "cell_type": "markdown", 274 | "source": [ 275 | "To see how positional embeddings work, we can visualize the values that get added to each embedding in each dimension of the embedding (we only visualize the first 8 dimensions)." 276 | ], 277 | "metadata": { 278 | "id": "xTHKykBG4z6F" 279 | } 280 | }, 281 | { 282 | "cell_type": "code", 283 | "source": [ 284 | "plt.figure(figsize=(15, 5)) # Make a plot\n", 285 | "d_embed_plot = 16 # for illustration purposes, set embedding dimensions = 16 \n", 286 | "pe_plot = torch.zeros(max_len, d_embed_plot, requires_grad=False) # positional embedding tensor\n", 287 | "position_plot = torch.arange(0, max_len).unsqueeze(1)\n", 288 | "divisor_plot = torch.exp(torch.arange(0, d_embed_plot, 2) * -(math.log(10000.0) / d_embed_plot))\n", 289 | "pe_plot[:, 0::2] = torch.sin(position_plot * divisor_plot)\n", 290 | "pe_plot[:, 1::2] = torch.cos(position_plot * divisor_plot)\n", 291 | "pe_plot = pe_plot.unsqueeze(0)\n", 292 | "# plot it\n", 293 | "y_plot = torch.zeros(1, 50, d_embed_plot)\n", 294 | "y_plot = pe_plot[:, :y_plot.size(1)]\n", 295 | "plt.plot(np.arange(50), y_plot[0, :, 0:4].data.numpy())\n", 296 | "plt.legend([\"dim %d\"%p for p in range(8)])" 297 | ], 298 | "metadata": { 299 | "colab": { 300 | "base_uri": "https://localhost:8080/", 301 | "height": 338 302 | }, 303 | "id": "Ka5VtFT5iLzc", 304 | "outputId": "1f510f12-23d8-4fa8-f3a5-b60cc886ea66" 305 | }, 306 | "execution_count": 6, 307 | "outputs": [ 308 | { 309 | "output_type": "execute_result", 310 | "data": { 311 | "text/plain": [ 312 | "" 313 | ] 314 | }, 315 | "metadata": {}, 316 | "execution_count": 6 317 | }, 318 | { 319 | "output_type": "display_data", 320 | "data": { 321 | "text/plain": [ 322 | "
" 323 | ], 324 | "image/png": "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\n" 325 | }, 326 | "metadata": { 327 | "needs_background": "light" 328 | } 329 | } 330 | ] 331 | }, 332 | { 333 | "cell_type": "markdown", 334 | "source": [ 335 | "## 1.2 Encoder Attention Layers" 336 | ], 337 | "metadata": { 338 | "id": "0m4932dp9TOQ" 339 | } 340 | }, 341 | { 342 | "cell_type": "markdown", 343 | "source": [ 344 | "The sub-layers in this section will be repeated N times. This code walkthrough will only take us through one. The Encoder Attention Layers consist of a **self-attention** module followed by a **feed forward** module. \n", 345 | "\n", 346 | "The self-attention and the feed forward are wrapped with residuals. A residual connection adds the input of a block to the output of the block. Thus one can think of the block as trying to learn how to add or subtract from the input. This provides stability to the training because the block is not entirely responsible for everything that happens in the forward and backward passes. Taking a look at the encoder for the transformer, one can see the residual connections bypassing the self-attention providing a direct linkage to the hidden state. That is, the embedding at the bottom has the option of doing a lot of the heavy-lifting in terms of the final hidden state encoding. Self-attention and the other sub-layers may add a little bit to that final hidden state or a lot if it helps with loss. Another way of thinking about residuals is like sub-routines in conventional computer program that compute some side-effect. One sub-routine computes the final hidden state. Another sub-routine branches off and computes self-attention. But because every module must be on a gradient path, the side-routines must contribute something to the final loss." 347 | ], 348 | "metadata": { 349 | "id": "63Fk4B5U8Ht5" 350 | } 351 | }, 352 | { 353 | "cell_type": "markdown", 354 | "source": [ 355 | "### 1.2.1 Self-Attention Module" 356 | ], 357 | "metadata": { 358 | "id": "RAwy0gSVAtAw" 359 | } 360 | }, 361 | { 362 | "cell_type": "markdown", 363 | "source": [ 364 | "#### 1.2.1.1 Set aside residual" 365 | ], 366 | "metadata": { 367 | "id": "HijbI99O8LNO" 368 | } 369 | }, 370 | { 371 | "cell_type": "markdown", 372 | "source": [ 373 | "A residual adds the inputs back into the outputs so that what happens in between can be thought of as computing a delta to the original. \n", 374 | "\n", 375 | "Typically we don't need to perform a `clone()` to create a residual, but we are using the same `x` variable in every step so the clone makes sure we don't overwrite." 376 | ], 377 | "metadata": { 378 | "id": "Wj4Tw3Ec9GGv" 379 | } 380 | }, 381 | { 382 | "cell_type": "code", 383 | "source": [ 384 | "x_residual = x.clone() \n", 385 | "print(x.size())" 386 | ], 387 | "metadata": { 388 | "colab": { 389 | "base_uri": "https://localhost:8080/" 390 | }, 391 | "id": "n5MS2WtY46Kr", 392 | "outputId": "3b65980d-dff5-40af-d3e8-c20a86ea3a40" 393 | }, 394 | "execution_count": 7, 395 | "outputs": [ 396 | { 397 | "output_type": "stream", 398 | "name": "stdout", 399 | "text": [ 400 | "torch.Size([1, 3, 512])\n" 401 | ] 402 | } 403 | ] 404 | }, 405 | { 406 | "cell_type": "markdown", 407 | "source": [ 408 | "#### 1.2.1.2 Pre-Self-Attention Layer Normalization" 409 | ], 410 | "metadata": { 411 | "id": "XmMC5eFW7bF8" 412 | } 413 | }, 414 | { 415 | "cell_type": "markdown", 416 | "source": [ 417 | "Before we compute self-attention, we perform layer normalization. Layer normalization stabilizes the training by decreasing the chances that values start to go to extremes. This is accomplished by centering all the values relative to the mean." 418 | ], 419 | "metadata": { 420 | "id": "deaGpdDo0ezK" 421 | } 422 | }, 423 | { 424 | "cell_type": "code", 425 | "source": [ 426 | "mean = x.mean(-1, keepdim=True)\n", 427 | "std = x.std(-1, keepdim=True)\n", 428 | "W1 = nn.Parameter(torch.ones(d_embed))\n", 429 | "b1 = nn.Parameter(torch.zeros(d_embed))\n", 430 | "x = W1 * (x - mean) / (std + epsilon) + b1\n", 431 | "print(x.size())" 432 | ], 433 | "metadata": { 434 | "colab": { 435 | "base_uri": "https://localhost:8080/" 436 | }, 437 | "id": "h0Bmhybj7cia", 438 | "outputId": "ac9eaf1c-ece3-4f5a-f55c-1a7a192cb1b4" 439 | }, 440 | "execution_count": 8, 441 | "outputs": [ 442 | { 443 | "output_type": "stream", 444 | "name": "stdout", 445 | "text": [ 446 | "torch.Size([1, 3, 512])\n" 447 | ] 448 | } 449 | ] 450 | }, 451 | { 452 | "cell_type": "markdown", 453 | "source": [ 454 | "#### 1.2.1.3 Self-Attention" 455 | ], 456 | "metadata": { 457 | "id": "PhNCyBcLlNhI" 458 | } 459 | }, 460 | { 461 | "cell_type": "markdown", 462 | "source": [ 463 | "Self-attention is a process of generating scores that indicate how each token is to every other token. Thus we would expect a `seq_length x seq_length` matrix of values between 0 and 1, each indicating the importance of the i-th token to the j-th token. What does it mean to be \"relevant\"? Whatever reduces loss. The model must learn how to produce the scores.\n", 464 | "\n", 465 | "A metaphor for understanding self-attention is a hash table. In a hash table, there is a list of keys, each of which is associated with a value. A query is sent to the hash table, and the hash table has to find the matching key and return the associated value. Except imagine that this hash table is a fuzzy hash table in the sense that it the query doesn't have to match any keys and the hash table will return whatever seems closest to the query.\n", 466 | "\n", 467 | "The input to self-attention is a `batch_size x sequence_length x embedding_size` matrix. Ignoring the batching dimension, what we have is a sequence of embedded tokens. Self-attention copies this input, `x`, three times and calls them the \"query\" (`q`), \"keys\" (`k`), and \"values\" (`v`). Each of those matrices go through a linear layer. This linear layer is where the network learns to make scores. It makes each matrix different, and if it comes up with the right, different, matrices, it will get good attention scores. If it gets good attention scores and if it gets good attention scores, the loss will be reduced.\n", 468 | "\n", 469 | "Attention-scores are generated as follows. First, we split the `q` and `k` matrices into multiple parts (called \"heads\"). This is called multi-headed attention. The reason we do this is so that each head/part can independently produce different attention scores. This allows each token to have several \"best\" other tokens. In implementation, we just designate chunks of each token embedding to different heads.\n", 470 | "\n", 471 | "The `q` and `k` tensors are multiplied together. This creates a `batch_size x num_heads x sequence_length x sequence_length` matrix. Ignoring batching and heads, one can interpret this matrix as containing the raw scores where each cell computes how related the i-th token is to the j-th token (i is the row and j is the column). \n", 472 | "\n", 473 | "Next we pass this matrix through a softmax layer. The secret to softmax is that it can act like an argmax---it can pick the best match. Softmax squishes all values along a particular dimenion into 0...1. But what it is really doing is trying to force one particular cell to have a number close to 1 and all the rest close to 0. If we multiply this softmaxed score matrix to the `v` matrix, we are in essence asking (for each head), which column is best for each row. Recall that rows and columns correspond to tokens. So we are asking, which token goes best with every other token. Again, if the earlier linear layers get their parameters right, this multiplication will make good choices and loss will improve.\n", 474 | "\n", 475 | "At this point we can think of the softmaxed scores multiplied against `v` as tryinng to zero out everything but the most relevant token embedding (several because of multiple heads). The result, which we will store back in `x` for consistency is mainly the most-attended token embedding (several because of multiple heads) plus a little bit of every other embedded token sprinkled in because we can't do an actual argmax---the best we can do is get everything irrelevant to be close to zero so it doesn't impact anything else.\n", 476 | "\n", 477 | "This multiplication of the scores against the `v` matrix is what we refer to as *self-attention*. It is essentially a dot-product with an underlying learned scoring function. It basically tells us where we should look for good information. The Decoder will use this later." 478 | ], 479 | "metadata": { 480 | "id": "IiXzh1P3_7rC" 481 | } 482 | }, 483 | { 484 | "cell_type": "code", 485 | "source": [ 486 | "# Make three versions of x, for the query, key, and value\n", 487 | "# We don't need to clone because these will immediately go through linear layers, making new tensors\n", 488 | "k = x # key\n", 489 | "q = x # query\n", 490 | "v = x # value\n", 491 | "# Make three linear layers\n", 492 | "# This is where the network learns to make scores\n", 493 | "linear_k = nn.Linear(d_embed, d_embed)\n", 494 | "linear_q = nn.Linear(d_embed, d_embed)\n", 495 | "linear_v = nn.Linear(d_embed, d_embed)\n", 496 | "# We are going to fold the embedding dimensions and treat each fold as an attention head\n", 497 | "d_k = d_embed // num_heads\n", 498 | "# Pass q, k, v through their linear layers\n", 499 | "q = linear_q(q)\n", 500 | "k = linear_k(k)\n", 501 | "v = linear_v(v)\n", 502 | "# Do the fold, treating each h dimenssions as a head\n", 503 | "# Put the head in the second position\n", 504 | "q = q.view(num_batches, -1, num_heads, d_k).transpose(1, 2)\n", 505 | "k = k.view(num_batches, -1, num_heads, d_k).transpose(1, 2)\n", 506 | "v = v.view(num_batches, -1, num_heads, d_k).transpose(1, 2)\n", 507 | "print(\"q\", q.size())\n", 508 | "print(\"x\", k.size())\n", 509 | "print(\"v\", v.size())" 510 | ], 511 | "metadata": { 512 | "colab": { 513 | "base_uri": "https://localhost:8080/" 514 | }, 515 | "id": "kpExj3wl5uRq", 516 | "outputId": "34f2f847-6628-428d-b3b2-b9631dd41b65" 517 | }, 518 | "execution_count": 9, 519 | "outputs": [ 520 | { 521 | "output_type": "stream", 522 | "name": "stdout", 523 | "text": [ 524 | "q torch.Size([1, 8, 3, 64])\n", 525 | "x torch.Size([1, 8, 3, 64])\n", 526 | "v torch.Size([1, 8, 3, 64])\n" 527 | ] 528 | } 529 | ] 530 | }, 531 | { 532 | "cell_type": "markdown", 533 | "source": [ 534 | "To produce the attention scores we multiply `q` and `k` (and normalize). We need to apply the mask so masked tokens don't attend to themselves. Apply softmax to emulate argmax (good stuff close to 1 irrelevant stuff close to 0). You won't see this happen if you look at `attn` because the linear layers aren't trained yet. The attention scores are finally applied to `v`." 535 | ], 536 | "metadata": { 537 | "id": "dkJ2lxguABuE" 538 | } 539 | }, 540 | { 541 | "cell_type": "code", 542 | "source": [ 543 | "d_k = q.size(-1)\n", 544 | "# Compute the raw scores by multiplying k and q (and normalize)\n", 545 | "scores = torch.matmul(k, q.transpose(-2, -1)) / math.sqrt(d_k)\n", 546 | "# Mask out the scores\n", 547 | "scores = scores.masked_fill(x_mask == 0, -epsilon)\n", 548 | "# Softmax the scores, ideally creating one score close to 1 and the rest close to 0\n", 549 | "# (Note: this won't happen if you look at the numbers because the linear layers haven't \n", 550 | "# learned anything yet.)\n", 551 | "attn = F.softmax(scores, dim = -1)\n", 552 | "print(\"attention\", attn.size())\n", 553 | "# Apply the scores to v\n", 554 | "x = torch.matmul(attn, v)\n", 555 | "print(\"x\", x.size())" 556 | ], 557 | "metadata": { 558 | "colab": { 559 | "base_uri": "https://localhost:8080/" 560 | }, 561 | "id": "CsYkRUoIDDfU", 562 | "outputId": "954521e1-e00c-4141-8e59-31151a466216" 563 | }, 564 | "execution_count": 10, 565 | "outputs": [ 566 | { 567 | "output_type": "stream", 568 | "name": "stdout", 569 | "text": [ 570 | "attention torch.Size([1, 8, 3, 3])\n", 571 | "x torch.Size([1, 8, 3, 64])\n" 572 | ] 573 | } 574 | ] 575 | }, 576 | { 577 | "cell_type": "markdown", 578 | "source": [ 579 | "The following is an illustration of what self-attention is doing. In the `attn` matrix below each row and column represents a different positionn in the input sequence, such that `attn[i][j]` is how much affinity the i-th position has for the j-th position. In a perfect world, the softmax pushes one element in each row close to 1 and everything else close to 0. Multiplying `attn` against `v` we are picking an embedding (hidden state) for each position (if we have multi-headed attention then we are picking several and adding combining them but the cell below doesn't show that). " 580 | ], 581 | "metadata": { 582 | "id": "K2tJuasVgbzx" 583 | } 584 | }, 585 | { 586 | "cell_type": "code", 587 | "source": [ 588 | "# Make fake attention scores with extreme values\n", 589 | "attn = torch.zeros(3, 3)\n", 590 | "attn[0,1] = 1\n", 591 | "attn[1,2] = 1\n", 592 | "attn[2,0] = 1\n", 593 | "print(\"attn:\")\n", 594 | "print(attn)\n", 595 | "# Make a fake v embedding\n", 596 | "v = torch.tensor(list(map(lambda x:list(range(x*10,(x*10)+10)), list(range(3))))).float()\n", 597 | "print(\"v:\") \n", 598 | "print(v)\n", 599 | "print(\"Matmul result:\")\n", 600 | "print(torch.matmul(attn, v))" 601 | ], 602 | "metadata": { 603 | "colab": { 604 | "base_uri": "https://localhost:8080/" 605 | }, 606 | "id": "z0W5rFyfeSWz", 607 | "outputId": "774a05bd-1ab6-41f2-aee8-59d0a741613a" 608 | }, 609 | "execution_count": 30, 610 | "outputs": [ 611 | { 612 | "output_type": "stream", 613 | "name": "stdout", 614 | "text": [ 615 | "attn:\n", 616 | "tensor([[0., 1., 0.],\n", 617 | " [0., 0., 1.],\n", 618 | " [1., 0., 0.]])\n", 619 | "v:\n", 620 | "tensor([[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.],\n", 621 | " [10., 11., 12., 13., 14., 15., 16., 17., 18., 19.],\n", 622 | " [20., 21., 22., 23., 24., 25., 26., 27., 28., 29.]])\n", 623 | "Matmul result:\n", 624 | "tensor([[10., 11., 12., 13., 14., 15., 16., 17., 18., 19.],\n", 625 | " [20., 21., 22., 23., 24., 25., 26., 27., 28., 29.],\n", 626 | " [ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]])\n" 627 | ] 628 | } 629 | ] 630 | }, 631 | { 632 | "cell_type": "markdown", 633 | "source": [ 634 | "But now your embeddings are all swapped around and a little bit of many positions can be mixed together. This is why the residual is going to be important because you can't lose the original embeddings in their original positions." 635 | ], 636 | "metadata": { 637 | "id": "mGAk--KSiSED" 638 | } 639 | }, 640 | { 641 | "cell_type": "markdown", 642 | "source": [ 643 | "Recombine the multiple attention heads (unfold)." 644 | ], 645 | "metadata": { 646 | "id": "6TFWgbA8lRl0" 647 | } 648 | }, 649 | { 650 | "cell_type": "code", 651 | "source": [ 652 | "x = x.transpose(1, 2).contiguous().view(num_batches, -1, num_heads * (d_embed // num_heads))\n", 653 | "print(x.size())" 654 | ], 655 | "metadata": { 656 | "colab": { 657 | "base_uri": "https://localhost:8080/" 658 | }, 659 | "id": "mdlAJY9UJeUe", 660 | "outputId": "f7fa80fd-4236-4a0f-8263-a359d67420e6" 661 | }, 662 | "execution_count": null, 663 | "outputs": [ 664 | { 665 | "output_type": "stream", 666 | "name": "stdout", 667 | "text": [ 668 | "torch.Size([1, 3, 512])\n" 669 | ] 670 | } 671 | ] 672 | }, 673 | { 674 | "cell_type": "markdown", 675 | "source": [ 676 | "#### 1.2.1.4 Post-Self-Attention Feed forward" 677 | ], 678 | "metadata": { 679 | "id": "aLze8Ea5Beiw" 680 | } 681 | }, 682 | { 683 | "cell_type": "markdown", 684 | "source": [ 685 | "From this point, we have some token embeddings pushed toward 1 and some token embeddings pushed toward 0. We need to prepare this matrix to be added back into the residual. That is, whatever comes out of this transformation has be a set of values that change the original embedding values for each token by some delta up or down." 686 | ], 687 | "metadata": { 688 | "id": "ZEt2a7DD6jss" 689 | } 690 | }, 691 | { 692 | "cell_type": "code", 693 | "source": [ 694 | "ff = nn.Linear(d_embed, d_embed)\n", 695 | "x = ff(x)\n", 696 | "print(x.size())" 697 | ], 698 | "metadata": { 699 | "colab": { 700 | "base_uri": "https://localhost:8080/" 701 | }, 702 | "id": "_EGA4t_myfIA", 703 | "outputId": "b154d19d-b74d-4fe1-a8e4-a032b276125c" 704 | }, 705 | "execution_count": null, 706 | "outputs": [ 707 | { 708 | "output_type": "stream", 709 | "name": "stdout", 710 | "text": [ 711 | "torch.Size([1, 3, 512])\n" 712 | ] 713 | } 714 | ] 715 | }, 716 | { 717 | "cell_type": "markdown", 718 | "source": [ 719 | "#### 1.2.1.5 Add residual back in" 720 | ], 721 | "metadata": { 722 | "id": "BX-aPZGO7-bf" 723 | } 724 | }, 725 | { 726 | "cell_type": "code", 727 | "source": [ 728 | "x = x_residual + x\n", 729 | "print(x.size())" 730 | ], 731 | "metadata": { 732 | "colab": { 733 | "base_uri": "https://localhost:8080/" 734 | }, 735 | "id": "1ECgQ-hr7_QB", 736 | "outputId": "3a5cd86d-3598-4cbc-b940-848fcc5afc52" 737 | }, 738 | "execution_count": null, 739 | "outputs": [ 740 | { 741 | "output_type": "stream", 742 | "name": "stdout", 743 | "text": [ 744 | "torch.Size([1, 3, 512])\n" 745 | ] 746 | } 747 | ] 748 | }, 749 | { 750 | "cell_type": "markdown", 751 | "source": [ 752 | "### 1.2.2 Feed Forward Module" 753 | ], 754 | "metadata": { 755 | "id": "MwVW4AGcA_jU" 756 | } 757 | }, 758 | { 759 | "cell_type": "markdown", 760 | "source": [ 761 | "This is a straight-forward decoding and re-encoding of the embedding plus self-attention. What we want by the end of the encoding stage is a hidden state. Like in a sequence-to-sequence network we want a *stack* of hidden states, one for each token. That way, the decoder will be able to look back and attend to the hidden state that will be most useful for decoding by looking just at this stack instead of iterating over all the input tokens. So whatever is in each token position has to be representative of what is going on in the input. To move the matrix toward a hidden state we expand the embeddings, giving the network some capacity, and then collapse it down again to force it to make trade-offs." 762 | ], 763 | "metadata": { 764 | "id": "xUg-4uJW7JH5" 765 | } 766 | }, 767 | { 768 | "cell_type": "markdown", 769 | "source": [ 770 | "#### 1.2.2.1 Set aside residual" 771 | ], 772 | "metadata": { 773 | "id": "_9B8fYjZ8PMX" 774 | } 775 | }, 776 | { 777 | "cell_type": "code", 778 | "source": [ 779 | "x_residual = x.clone() \n", 780 | "print(x.size())" 781 | ], 782 | "metadata": { 783 | "colab": { 784 | "base_uri": "https://localhost:8080/" 785 | }, 786 | "id": "2msqv_Br6fHu", 787 | "outputId": "4ccaa96e-85ac-42b9-c4b1-17fd502d2aeb" 788 | }, 789 | "execution_count": null, 790 | "outputs": [ 791 | { 792 | "output_type": "stream", 793 | "name": "stdout", 794 | "text": [ 795 | "torch.Size([1, 3, 512])\n" 796 | ] 797 | } 798 | ] 799 | }, 800 | { 801 | "cell_type": "markdown", 802 | "source": [ 803 | "#### 1.2.2.2 Pre-Feed-Forward Layer Normalization" 804 | ], 805 | "metadata": { 806 | "id": "APWv9beO1rki" 807 | } 808 | }, 809 | { 810 | "cell_type": "code", 811 | "source": [ 812 | "mean = x.mean(-1, keepdim=True)\n", 813 | "std = x.std(-1, keepdim=True)\n", 814 | "W2 = nn.Parameter(torch.ones(d_embed))\n", 815 | "b2 = nn.Parameter(torch.zeros(d_embed))\n", 816 | "x = W2 * (x - mean) / (std + epsilon) + b2\n", 817 | "print(x.size())" 818 | ], 819 | "metadata": { 820 | "colab": { 821 | "base_uri": "https://localhost:8080/" 822 | }, 823 | "id": "i2riRAUL8RFu", 824 | "outputId": "bbfd95fd-0768-4be7-bdd2-2bb5d1cf476a" 825 | }, 826 | "execution_count": null, 827 | "outputs": [ 828 | { 829 | "output_type": "stream", 830 | "name": "stdout", 831 | "text": [ 832 | "torch.Size([1, 3, 512])\n" 833 | ] 834 | } 835 | ] 836 | }, 837 | { 838 | "cell_type": "markdown", 839 | "source": [ 840 | "#### 1.2.2.3 Feed Forward" 841 | ], 842 | "metadata": { 843 | "id": "AwE944o96SDh" 844 | } 845 | }, 846 | { 847 | "cell_type": "markdown", 848 | "source": [ 849 | "This feed forward module grows the embeddings and then compresses it again. This is part of process of transforming the outputs of the self-attention module into a hidden state encoding." 850 | ], 851 | "metadata": { 852 | "id": "zIwN6aUQk2dw" 853 | } 854 | }, 855 | { 856 | "cell_type": "code", 857 | "source": [ 858 | "linear_expand = nn.Linear(d_embed, d_ff)\n", 859 | "linear_compress = nn.Linear(d_ff, d_embed)\n", 860 | "x = linear_compress(F.relu(linear_expand(x)))\n", 861 | "print(x.size())" 862 | ], 863 | "metadata": { 864 | "colab": { 865 | "base_uri": "https://localhost:8080/" 866 | }, 867 | "id": "7aNAnARK6CRp", 868 | "outputId": "58685c56-50f5-4551-e2f9-c6db59a6e926" 869 | }, 870 | "execution_count": null, 871 | "outputs": [ 872 | { 873 | "output_type": "stream", 874 | "name": "stdout", 875 | "text": [ 876 | "torch.Size([1, 3, 512])\n" 877 | ] 878 | } 879 | ] 880 | }, 881 | { 882 | "cell_type": "markdown", 883 | "source": [ 884 | "#### 1.2.2.4 Add residual back in" 885 | ], 886 | "metadata": { 887 | "id": "3ksl3ra36qqc" 888 | } 889 | }, 890 | { 891 | "cell_type": "code", 892 | "source": [ 893 | "x = x_residual + x\n", 894 | "print(x.size())" 895 | ], 896 | "metadata": { 897 | "colab": { 898 | "base_uri": "https://localhost:8080/" 899 | }, 900 | "id": "VhWKoJsi6sec", 901 | "outputId": "e7094c72-7132-432f-f037-c6bb8ea1de01" 902 | }, 903 | "execution_count": null, 904 | "outputs": [ 905 | { 906 | "output_type": "stream", 907 | "name": "stdout", 908 | "text": [ 909 | "torch.Size([1, 3, 512])\n" 910 | ] 911 | } 912 | ] 913 | }, 914 | { 915 | "cell_type": "markdown", 916 | "source": [ 917 | "## 1.3 Final Encoder Layer Normalization" 918 | ], 919 | "metadata": { 920 | "id": "qbm-9J7V8z7w" 921 | } 922 | }, 923 | { 924 | "cell_type": "markdown", 925 | "source": [ 926 | "After repeating the self-attention and feed forward sub-layers N times, we apply one last layer normalization." 927 | ], 928 | "metadata": { 929 | "id": "vrl8f-TEBxMk" 930 | } 931 | }, 932 | { 933 | "cell_type": "code", 934 | "source": [ 935 | "mean = x.mean(-1, keepdim=True)\n", 936 | "std = x.std(-1, keepdim=True)\n", 937 | "Wn = nn.Parameter(torch.ones(d_embed))\n", 938 | "bn = nn.Parameter(torch.zeros(d_embed))\n", 939 | "x = Wn * (x - mean) / (std + epsilon) + bn\n", 940 | "print(x.size())" 941 | ], 942 | "metadata": { 943 | "colab": { 944 | "base_uri": "https://localhost:8080/" 945 | }, 946 | "id": "Lz9Wf7cO6t8I", 947 | "outputId": "1ae80ca2-0fa9-4d1b-b359-83b7b9ec8922" 948 | }, 949 | "execution_count": null, 950 | "outputs": [ 951 | { 952 | "output_type": "stream", 953 | "name": "stdout", 954 | "text": [ 955 | "torch.Size([1, 3, 512])\n" 956 | ] 957 | } 958 | ] 959 | }, 960 | { 961 | "cell_type": "markdown", 962 | "source": [ 963 | "At this point, we should have a matrix, stored in `x` that we can interpret as a stack of hidden states. The Decoder will attempt to attend to this stack and pick out (via softmax emulating argmax) the hidden state that is most helpful in guessing the work that goes in the masked position." 964 | ], 965 | "metadata": { 966 | "id": "V-Gbr1_UzQUD" 967 | } 968 | }, 969 | { 970 | "cell_type": "code", 971 | "source": [ 972 | "# Signify that the output is the hidden state\n", 973 | "hidden = x\n", 974 | "print(hidden.size())" 975 | ], 976 | "metadata": { 977 | "colab": { 978 | "base_uri": "https://localhost:8080/" 979 | }, 980 | "id": "atpOCyod0Xkw", 981 | "outputId": "68928ee4-8272-484a-8502-a1f05803c1c4" 982 | }, 983 | "execution_count": null, 984 | "outputs": [ 985 | { 986 | "output_type": "stream", 987 | "name": "stdout", 988 | "text": [ 989 | "torch.Size([1, 3, 512])\n" 990 | ] 991 | } 992 | ] 993 | }, 994 | { 995 | "cell_type": "markdown", 996 | "source": [ 997 | "# 2. Decoder" 998 | ], 999 | "metadata": { 1000 | "id": "EBZ52DJo-Lry" 1001 | } 1002 | }, 1003 | { 1004 | "cell_type": "markdown", 1005 | "source": [ 1006 | "The Decoder works a lot like the Encoder except for one major change. In addition to self-attention and a feed-forward modules, the Decoder will also include a *source-attention* module wherein it attends to the hidden state output of the encoder. \n", 1007 | "\n", 1008 | "We will be operating on `y`, which is the sequence of target tokens instead of `x`. It seems weird to be treating the target the same as an input. The closest analog is the sequence-to-sequence network, which would generate a sequence of output tokens one at a time to compare to the target sequence to compute loss. But here we don't need to generate the output sequence because there is no recurrence. So we just take the target output and treat it as if it was generated by the transformer. The exception is the masked output token (which is normally the same position as the masked input). For computing loss, we only care if we get a good prediction for the masked target tokens." 1009 | ], 1010 | "metadata": { 1011 | "id": "7Y0CisCQzmtW" 1012 | } 1013 | }, 1014 | { 1015 | "cell_type": "markdown", 1016 | "source": [ 1017 | "## 2.1 Decoder Embeddings" 1018 | ], 1019 | "metadata": { 1020 | "id": "gD3IQX2A-S9r" 1021 | } 1022 | }, 1023 | { 1024 | "cell_type": "code", 1025 | "source": [ 1026 | "emb_d = nn.Embedding(vocab, d_embed)\n", 1027 | "y = emb_d(y) * math.sqrt(d_embed)\n", 1028 | "print(y.size())" 1029 | ], 1030 | "metadata": { 1031 | "colab": { 1032 | "base_uri": "https://localhost:8080/" 1033 | }, 1034 | "id": "9gzaYeb8-NJB", 1035 | "outputId": "fbebfe93-bd6a-487f-8891-4d0b026cdde3" 1036 | }, 1037 | "execution_count": null, 1038 | "outputs": [ 1039 | { 1040 | "output_type": "stream", 1041 | "name": "stdout", 1042 | "text": [ 1043 | "torch.Size([1, 3, 512])\n" 1044 | ] 1045 | } 1046 | ] 1047 | }, 1048 | { 1049 | "cell_type": "markdown", 1050 | "source": [ 1051 | "Add positional embeddings." 1052 | ], 1053 | "metadata": { 1054 | "id": "qIJG3QC2-VWo" 1055 | } 1056 | }, 1057 | { 1058 | "cell_type": "code", 1059 | "source": [ 1060 | "pe = torch.zeros(max_len, d_embed, requires_grad=False)\n", 1061 | "position = torch.arange(0, max_len).unsqueeze(1)\n", 1062 | "divisor = torch.exp(torch.arange(0, d_embed, 2) * -(math.log(10000.0) / d_embed))\n", 1063 | "pe[:, 0::2] = torch.sin(position * divisor)\n", 1064 | "pe[:, 1::2] = torch.cos(position * divisor)\n", 1065 | "pe = pe.unsqueeze(0)\n", 1066 | "y = y + pe[:, :y.size(1)]\n", 1067 | "print(y.size())" 1068 | ], 1069 | "metadata": { 1070 | "colab": { 1071 | "base_uri": "https://localhost:8080/" 1072 | }, 1073 | "id": "gOXTa8yJ-VC1", 1074 | "outputId": "8b4b9923-0252-44f6-83b2-5e212a58faa0" 1075 | }, 1076 | "execution_count": null, 1077 | "outputs": [ 1078 | { 1079 | "output_type": "stream", 1080 | "name": "stdout", 1081 | "text": [ 1082 | "torch.Size([1, 3, 512])\n" 1083 | ] 1084 | } 1085 | ] 1086 | }, 1087 | { 1088 | "cell_type": "markdown", 1089 | "source": [ 1090 | "## 2.2 Decoder Attention Layers" 1091 | ], 1092 | "metadata": { 1093 | "id": "YkI23w9Z_LzP" 1094 | } 1095 | }, 1096 | { 1097 | "cell_type": "markdown", 1098 | "source": [ 1099 | "The decoder layers will be repeated N times. This code walkthrough will only take us through one. The Decoder Attention Layer consists of self-attention followed by a source-attention, followed by a feed forward. Each of these are wrapped with residuals. " 1100 | ], 1101 | "metadata": { 1102 | "id": "0UJrTA06DNoj" 1103 | } 1104 | }, 1105 | { 1106 | "cell_type": "markdown", 1107 | "source": [ 1108 | "### 2.2.1. Self-Attention Sub-Layer" 1109 | ], 1110 | "metadata": { 1111 | "id": "nYKLH9tgEnVz" 1112 | } 1113 | }, 1114 | { 1115 | "cell_type": "markdown", 1116 | "source": [ 1117 | "#### 2.2.1.1 Set aside residual" 1118 | ], 1119 | "metadata": { 1120 | "id": "0mgRzWgkAfFQ" 1121 | } 1122 | }, 1123 | { 1124 | "cell_type": "code", 1125 | "source": [ 1126 | "y_residual = y.clone() \n", 1127 | "print(y.size())" 1128 | ], 1129 | "metadata": { 1130 | "colab": { 1131 | "base_uri": "https://localhost:8080/" 1132 | }, 1133 | "id": "0qZZBDBr_NRh", 1134 | "outputId": "c3dcd539-ffdb-4ff9-bef0-7a861d2ce8ad" 1135 | }, 1136 | "execution_count": null, 1137 | "outputs": [ 1138 | { 1139 | "output_type": "stream", 1140 | "name": "stdout", 1141 | "text": [ 1142 | "torch.Size([1, 3, 512])\n" 1143 | ] 1144 | } 1145 | ] 1146 | }, 1147 | { 1148 | "cell_type": "markdown", 1149 | "source": [ 1150 | "#### 2.2.1.2 Pre-Self-Attention Layer Normalization" 1151 | ], 1152 | "metadata": { 1153 | "id": "oX38ceiTAqp7" 1154 | } 1155 | }, 1156 | { 1157 | "cell_type": "code", 1158 | "source": [ 1159 | "mean = y.mean(-1, keepdim=True)\n", 1160 | "std = y.std(-1, keepdim=True)\n", 1161 | "W1_d = nn.Parameter(torch.ones(d_embed))\n", 1162 | "b1_d = nn.Parameter(torch.zeros(d_embed))\n", 1163 | "y = W1_d * (y - mean) / (std + epsilon) + b1_d\n", 1164 | "print(y.size())" 1165 | ], 1166 | "metadata": { 1167 | "colab": { 1168 | "base_uri": "https://localhost:8080/" 1169 | }, 1170 | "id": "qfK0B9FEArrw", 1171 | "outputId": "980ee0fc-cb6e-41af-a19b-9bada6a49e42" 1172 | }, 1173 | "execution_count": null, 1174 | "outputs": [ 1175 | { 1176 | "output_type": "stream", 1177 | "name": "stdout", 1178 | "text": [ 1179 | "torch.Size([1, 3, 512])\n" 1180 | ] 1181 | } 1182 | ] 1183 | }, 1184 | { 1185 | "cell_type": "markdown", 1186 | "source": [ 1187 | "#### 2.2.1.3 Self-Attention" 1188 | ], 1189 | "metadata": { 1190 | "id": "1ZOJN-Y6AkgT" 1191 | } 1192 | }, 1193 | { 1194 | "cell_type": "code", 1195 | "source": [ 1196 | "k = y\n", 1197 | "q = y\n", 1198 | "v = y\n", 1199 | "linear_q_self = nn.Linear(d_embed, d_embed)\n", 1200 | "linear_k_self = nn.Linear(d_embed, d_embed)\n", 1201 | "linear_v_self = nn.Linear(d_embed, d_embed)\n", 1202 | "d_k = d_embed // num_heads\n", 1203 | "q = linear_q_self(q)\n", 1204 | "k = linear_k_self(k)\n", 1205 | "v = linear_v_self(v)\n", 1206 | "q = q.view(num_batches, -1, num_heads, d_k).transpose(1, 2)\n", 1207 | "k = k.view(num_batches, -1, num_heads, d_k).transpose(1, 2)\n", 1208 | "v = v.view(num_batches, -1, num_heads, d_k).transpose(1, 2)\n", 1209 | "print(\"q\", q.size())\n", 1210 | "print(\"k\", k.size())\n", 1211 | "print(\"v\", v.size())" 1212 | ], 1213 | "metadata": { 1214 | "colab": { 1215 | "base_uri": "https://localhost:8080/" 1216 | }, 1217 | "id": "OZF8LTbiBBNp", 1218 | "outputId": "a2cb6354-784a-4fe4-fb4b-0f4cf8e880db" 1219 | }, 1220 | "execution_count": null, 1221 | "outputs": [ 1222 | { 1223 | "output_type": "stream", 1224 | "name": "stdout", 1225 | "text": [ 1226 | "q torch.Size([1, 8, 3, 64])\n", 1227 | "k torch.Size([1, 8, 3, 64])\n", 1228 | "v torch.Size([1, 8, 3, 64])\n" 1229 | ] 1230 | } 1231 | ] 1232 | }, 1233 | { 1234 | "cell_type": "code", 1235 | "source": [ 1236 | "d_k = q.size(-1)\n", 1237 | "scores = torch.matmul(k, q.transpose(-2, -1)) / math.sqrt(d_k)\n", 1238 | "scores = scores.masked_fill(y_mask == 0, -epsilon)\n", 1239 | "attn = F.softmax(scores, dim = -1)\n", 1240 | "print(\"attention\", attn.size())\n", 1241 | "y = torch.matmul(attn, v)\n", 1242 | "print(\"y\", y.size())" 1243 | ], 1244 | "metadata": { 1245 | "colab": { 1246 | "base_uri": "https://localhost:8080/" 1247 | }, 1248 | "id": "IWIeDIOpBJ10", 1249 | "outputId": "f0479edd-e5cc-48b8-de7f-b6a3dd9b1010" 1250 | }, 1251 | "execution_count": null, 1252 | "outputs": [ 1253 | { 1254 | "output_type": "stream", 1255 | "name": "stdout", 1256 | "text": [ 1257 | "attention torch.Size([1, 8, 3, 3])\n", 1258 | "y torch.Size([1, 8, 3, 64])\n" 1259 | ] 1260 | } 1261 | ] 1262 | }, 1263 | { 1264 | "cell_type": "markdown", 1265 | "source": [ 1266 | "Assemble heads" 1267 | ], 1268 | "metadata": { 1269 | "id": "6ato2UicBYqj" 1270 | } 1271 | }, 1272 | { 1273 | "cell_type": "code", 1274 | "source": [ 1275 | "y = y.transpose(1, 2).contiguous().view(num_batches, -1, num_heads * (d_embed // num_heads))\n", 1276 | "print(y.size())" 1277 | ], 1278 | "metadata": { 1279 | "colab": { 1280 | "base_uri": "https://localhost:8080/" 1281 | }, 1282 | "id": "4BeJtRBjBX0c", 1283 | "outputId": "b8b486d8-3e24-4e88-a7f9-6a8f4f22ce97" 1284 | }, 1285 | "execution_count": null, 1286 | "outputs": [ 1287 | { 1288 | "output_type": "stream", 1289 | "name": "stdout", 1290 | "text": [ 1291 | "torch.Size([1, 3, 512])\n" 1292 | ] 1293 | } 1294 | ] 1295 | }, 1296 | { 1297 | "cell_type": "markdown", 1298 | "source": [ 1299 | "#### 2.2.1.4 Post-Self-Attention Feed Forward" 1300 | ], 1301 | "metadata": { 1302 | "id": "2bierEXaBjR9" 1303 | } 1304 | }, 1305 | { 1306 | "cell_type": "code", 1307 | "source": [ 1308 | "ff_d1 = nn.Linear(d_embed, d_embed)\n", 1309 | "y = ff_d1(y)\n", 1310 | "print(y.size())" 1311 | ], 1312 | "metadata": { 1313 | "colab": { 1314 | "base_uri": "https://localhost:8080/" 1315 | }, 1316 | "id": "FCnS-owhBioq", 1317 | "outputId": "c9402c1a-41f8-4312-9a95-6f24befe648f" 1318 | }, 1319 | "execution_count": null, 1320 | "outputs": [ 1321 | { 1322 | "output_type": "stream", 1323 | "name": "stdout", 1324 | "text": [ 1325 | "torch.Size([1, 3, 512])\n" 1326 | ] 1327 | } 1328 | ] 1329 | }, 1330 | { 1331 | "cell_type": "markdown", 1332 | "source": [ 1333 | "#### 2.2.1.5 Add residual back in" 1334 | ], 1335 | "metadata": { 1336 | "id": "m1vjSeu7Bp7p" 1337 | } 1338 | }, 1339 | { 1340 | "cell_type": "code", 1341 | "source": [ 1342 | "y = y_residual + y\n", 1343 | "print(y.size())" 1344 | ], 1345 | "metadata": { 1346 | "colab": { 1347 | "base_uri": "https://localhost:8080/" 1348 | }, 1349 | "id": "yLGImc73BpS4", 1350 | "outputId": "b0d2b24c-ed51-46b2-8a99-400ea1fe54a8" 1351 | }, 1352 | "execution_count": null, 1353 | "outputs": [ 1354 | { 1355 | "output_type": "stream", 1356 | "name": "stdout", 1357 | "text": [ 1358 | "torch.Size([1, 3, 512])\n" 1359 | ] 1360 | } 1361 | ] 1362 | }, 1363 | { 1364 | "cell_type": "markdown", 1365 | "source": [ 1366 | "### 2.2.2 Source-Attention Sub-Layer" 1367 | ], 1368 | "metadata": { 1369 | "id": "lmgiijtbFiXs" 1370 | } 1371 | }, 1372 | { 1373 | "cell_type": "markdown", 1374 | "source": [ 1375 | "#### 2.2.2.1 Set residual aside" 1376 | ], 1377 | "metadata": { 1378 | "id": "dMk0234JBvJg" 1379 | } 1380 | }, 1381 | { 1382 | "cell_type": "code", 1383 | "source": [ 1384 | "y_residual = y.clone() \n", 1385 | "print(y.size())" 1386 | ], 1387 | "metadata": { 1388 | "colab": { 1389 | "base_uri": "https://localhost:8080/" 1390 | }, 1391 | "id": "afyYY7fmBzB4", 1392 | "outputId": "7c39d2d8-84c9-4f78-e857-f3765ec0e14c" 1393 | }, 1394 | "execution_count": null, 1395 | "outputs": [ 1396 | { 1397 | "output_type": "stream", 1398 | "name": "stdout", 1399 | "text": [ 1400 | "torch.Size([1, 3, 512])\n" 1401 | ] 1402 | } 1403 | ] 1404 | }, 1405 | { 1406 | "cell_type": "markdown", 1407 | "source": [ 1408 | "#### 2.2.2.2 Pre-Source-Attention Layer Normalization" 1409 | ], 1410 | "metadata": { 1411 | "id": "2BxZbrnWB9aW" 1412 | } 1413 | }, 1414 | { 1415 | "cell_type": "code", 1416 | "source": [ 1417 | "mean = y.mean(-1, keepdim=True)\n", 1418 | "std = y.std(-1, keepdim=True)\n", 1419 | "W2_d = nn.Parameter(torch.ones(d_embed))\n", 1420 | "b2_d = nn.Parameter(torch.zeros(d_embed))\n", 1421 | "y = W2_d * (y - mean) / (std + epsilon) + b2_d\n", 1422 | "print(y.size())" 1423 | ], 1424 | "metadata": { 1425 | "colab": { 1426 | "base_uri": "https://localhost:8080/" 1427 | }, 1428 | "id": "Z4fC-0REB8h8", 1429 | "outputId": "ed1b9ee6-211e-4a57-9045-5c4bcc0493a0" 1430 | }, 1431 | "execution_count": null, 1432 | "outputs": [ 1433 | { 1434 | "output_type": "stream", 1435 | "name": "stdout", 1436 | "text": [ 1437 | "torch.Size([1, 3, 512])\n" 1438 | ] 1439 | } 1440 | ] 1441 | }, 1442 | { 1443 | "cell_type": "markdown", 1444 | "source": [ 1445 | "#### 2.2.2.3 Source Attention" 1446 | ], 1447 | "metadata": { 1448 | "id": "88dSgLpqB4GV" 1449 | } 1450 | }, 1451 | { 1452 | "cell_type": "markdown", 1453 | "source": [ 1454 | "Source attention works just like self-attention, except we compute the scores using keys and values from the encoder and apply it to the query from the decoder. That is, based on what the encoder thinks we should attend to, what part of the decoder sequence should we actually attend to." 1455 | ], 1456 | "metadata": { 1457 | "id": "9gww-JtEFxx_" 1458 | } 1459 | }, 1460 | { 1461 | "cell_type": "code", 1462 | "source": [ 1463 | "q = y\n", 1464 | "k = x # notice we are using x\n", 1465 | "v = x # notice we are using x\n", 1466 | "linear_q_source = nn.Linear(d_embed, d_embed)\n", 1467 | "linear_k_source = nn.Linear(d_embed, d_embed)\n", 1468 | "linear_v_source = nn.Linear(d_embed, d_embed)\n", 1469 | "d_k = d_embed // num_heads\n", 1470 | "q = linear_q(q)\n", 1471 | "k = linear_k(k)\n", 1472 | "v = linear_v(v)\n", 1473 | "q = q.view(num_batches, -1, num_heads, d_k).transpose(1, 2)\n", 1474 | "k = k.view(num_batches, -1, num_heads, d_k).transpose(1, 2)\n", 1475 | "v = v.view(num_batches, -1, num_heads, d_k).transpose(1, 2)\n", 1476 | "print(\"q\", q.size())\n", 1477 | "print(\"k\", k.size())\n", 1478 | "print(\"v\", v.size())" 1479 | ], 1480 | "metadata": { 1481 | "colab": { 1482 | "base_uri": "https://localhost:8080/" 1483 | }, 1484 | "id": "JTz6K1Z-B3sA", 1485 | "outputId": "714c0487-2571-40ef-a34a-f0dc53d71222" 1486 | }, 1487 | "execution_count": null, 1488 | "outputs": [ 1489 | { 1490 | "output_type": "stream", 1491 | "name": "stdout", 1492 | "text": [ 1493 | "q torch.Size([1, 8, 3, 64])\n", 1494 | "k torch.Size([1, 8, 3, 64])\n", 1495 | "v torch.Size([1, 8, 3, 64])\n" 1496 | ] 1497 | } 1498 | ] 1499 | }, 1500 | { 1501 | "cell_type": "code", 1502 | "source": [ 1503 | "d_k = q.size(-1)\n", 1504 | "scores = torch.matmul(k, q.transpose(-2, -1)) / math.sqrt(d_k)\n", 1505 | "scores = scores.masked_fill(x_mask == 0, -epsilon) # note source mask\n", 1506 | "attn = F.softmax(scores, dim = -1)\n", 1507 | "y = torch.matmul(attn, v)\n", 1508 | "print(y.size())" 1509 | ], 1510 | "metadata": { 1511 | "colab": { 1512 | "base_uri": "https://localhost:8080/" 1513 | }, 1514 | "id": "HcRRIaAGC02k", 1515 | "outputId": "ebc2928f-cfde-4f5d-839e-9770b54dfe9f" 1516 | }, 1517 | "execution_count": null, 1518 | "outputs": [ 1519 | { 1520 | "output_type": "stream", 1521 | "name": "stdout", 1522 | "text": [ 1523 | "torch.Size([1, 8, 3, 64])\n" 1524 | ] 1525 | } 1526 | ] 1527 | }, 1528 | { 1529 | "cell_type": "markdown", 1530 | "source": [ 1531 | "Assemble heads" 1532 | ], 1533 | "metadata": { 1534 | "id": "cefcyfWDC4JX" 1535 | } 1536 | }, 1537 | { 1538 | "cell_type": "code", 1539 | "source": [ 1540 | "y = y.transpose(1, 2).contiguous().view(num_batches, -1, num_heads * (d_embed // num_heads))\n", 1541 | "print(y.size())" 1542 | ], 1543 | "metadata": { 1544 | "colab": { 1545 | "base_uri": "https://localhost:8080/" 1546 | }, 1547 | "id": "Rrj9aoLXC5Uo", 1548 | "outputId": "fd602406-c63e-4de8-a7e7-d75acb089b49" 1549 | }, 1550 | "execution_count": null, 1551 | "outputs": [ 1552 | { 1553 | "output_type": "stream", 1554 | "name": "stdout", 1555 | "text": [ 1556 | "torch.Size([1, 3, 512])\n" 1557 | ] 1558 | } 1559 | ] 1560 | }, 1561 | { 1562 | "cell_type": "markdown", 1563 | "source": [ 1564 | "#### 2.2.2.4 Post-Source-Attention Feed forward" 1565 | ], 1566 | "metadata": { 1567 | "id": "3FfLZyREC832" 1568 | } 1569 | }, 1570 | { 1571 | "cell_type": "code", 1572 | "source": [ 1573 | "ff_d2 = nn.Linear(d_embed, d_embed)\n", 1574 | "y = ff_d2(y)\n", 1575 | "print(y.size())" 1576 | ], 1577 | "metadata": { 1578 | "colab": { 1579 | "base_uri": "https://localhost:8080/" 1580 | }, 1581 | "id": "bUfjx2KhC9_w", 1582 | "outputId": "b520e61f-a21b-44fe-8f03-8792138af711" 1583 | }, 1584 | "execution_count": null, 1585 | "outputs": [ 1586 | { 1587 | "output_type": "stream", 1588 | "name": "stdout", 1589 | "text": [ 1590 | "torch.Size([1, 3, 512])\n" 1591 | ] 1592 | } 1593 | ] 1594 | }, 1595 | { 1596 | "cell_type": "markdown", 1597 | "source": [ 1598 | "#### 2.2.2.5 Add residual back in" 1599 | ], 1600 | "metadata": { 1601 | "id": "BcZiKusQDBjc" 1602 | } 1603 | }, 1604 | { 1605 | "cell_type": "code", 1606 | "source": [ 1607 | "y = y_residual + y\n", 1608 | "print(y.size())" 1609 | ], 1610 | "metadata": { 1611 | "colab": { 1612 | "base_uri": "https://localhost:8080/" 1613 | }, 1614 | "id": "Dih1yg_kDDg5", 1615 | "outputId": "5a1cd47c-256e-4906-b182-30b2f91730c5" 1616 | }, 1617 | "execution_count": null, 1618 | "outputs": [ 1619 | { 1620 | "output_type": "stream", 1621 | "name": "stdout", 1622 | "text": [ 1623 | "torch.Size([1, 3, 512])\n" 1624 | ] 1625 | } 1626 | ] 1627 | }, 1628 | { 1629 | "cell_type": "markdown", 1630 | "source": [ 1631 | "### 2.2.3 Feed Forward Sub-Layer" 1632 | ], 1633 | "metadata": { 1634 | "id": "6FRfeSRBGbgy" 1635 | } 1636 | }, 1637 | { 1638 | "cell_type": "markdown", 1639 | "source": [ 1640 | "#### 2.2.3.1 Set aside residual" 1641 | ], 1642 | "metadata": { 1643 | "id": "Af-n0PTFDQ9U" 1644 | } 1645 | }, 1646 | { 1647 | "cell_type": "code", 1648 | "source": [ 1649 | "y_residual = y.clone()\n", 1650 | "print(y.size())" 1651 | ], 1652 | "metadata": { 1653 | "colab": { 1654 | "base_uri": "https://localhost:8080/" 1655 | }, 1656 | "id": "Bno9hwYxDSag", 1657 | "outputId": "4386075e-dd95-430e-bd5e-42742ac016f2" 1658 | }, 1659 | "execution_count": null, 1660 | "outputs": [ 1661 | { 1662 | "output_type": "stream", 1663 | "name": "stdout", 1664 | "text": [ 1665 | "torch.Size([1, 3, 512])\n" 1666 | ] 1667 | } 1668 | ] 1669 | }, 1670 | { 1671 | "cell_type": "markdown", 1672 | "source": [ 1673 | "#### 2.2.3.2 Pre-Feed-Forward Layer Normalization" 1674 | ], 1675 | "metadata": { 1676 | "id": "xcz5yTDsDX8O" 1677 | } 1678 | }, 1679 | { 1680 | "cell_type": "code", 1681 | "source": [ 1682 | "mean = y.mean(-1, keepdim=True)\n", 1683 | "std = y.std(-1, keepdim=True)\n", 1684 | "W3_d = nn.Parameter(torch.ones(d_embed))\n", 1685 | "b3_d = nn.Parameter(torch.zeros(d_embed))\n", 1686 | "y = W3_d * (y - mean) / (std + epsilon) + b3_d\n", 1687 | "print(y.size())" 1688 | ], 1689 | "metadata": { 1690 | "colab": { 1691 | "base_uri": "https://localhost:8080/" 1692 | }, 1693 | "id": "Ncx0PcG-DYt0", 1694 | "outputId": "e7c7a1c3-8329-485f-8d26-2a8317b7c9c8" 1695 | }, 1696 | "execution_count": null, 1697 | "outputs": [ 1698 | { 1699 | "output_type": "stream", 1700 | "name": "stdout", 1701 | "text": [ 1702 | "torch.Size([1, 3, 512])\n" 1703 | ] 1704 | } 1705 | ] 1706 | }, 1707 | { 1708 | "cell_type": "markdown", 1709 | "source": [ 1710 | "#### 2.2.3.3 Feed Forward" 1711 | ], 1712 | "metadata": { 1713 | "id": "or2ZZdXfDegg" 1714 | } 1715 | }, 1716 | { 1717 | "cell_type": "code", 1718 | "source": [ 1719 | "linear_expand_d = nn.Linear(d_embed, d_ff)\n", 1720 | "linear_compress_d = nn.Linear(d_ff, d_embed)\n", 1721 | "y = linear_compress_d(F.relu(linear_expand_d(y)))\n", 1722 | "print(y.size())" 1723 | ], 1724 | "metadata": { 1725 | "colab": { 1726 | "base_uri": "https://localhost:8080/" 1727 | }, 1728 | "id": "YHrTcy-xDgaq", 1729 | "outputId": "ecc8e139-1fc4-4478-f484-1355cf3c9895" 1730 | }, 1731 | "execution_count": null, 1732 | "outputs": [ 1733 | { 1734 | "output_type": "stream", 1735 | "name": "stdout", 1736 | "text": [ 1737 | "torch.Size([1, 3, 512])\n" 1738 | ] 1739 | } 1740 | ] 1741 | }, 1742 | { 1743 | "cell_type": "markdown", 1744 | "source": [ 1745 | "#### 2.2.3.4 Add residual back in" 1746 | ], 1747 | "metadata": { 1748 | "id": "41h94ULPDn52" 1749 | } 1750 | }, 1751 | { 1752 | "cell_type": "code", 1753 | "source": [ 1754 | "y = y_residual + y\n", 1755 | "print(y.size())" 1756 | ], 1757 | "metadata": { 1758 | "colab": { 1759 | "base_uri": "https://localhost:8080/" 1760 | }, 1761 | "id": "iJ7CK78HDpQv", 1762 | "outputId": "bf122ca5-96b4-4cb3-fdac-0d261a268366" 1763 | }, 1764 | "execution_count": null, 1765 | "outputs": [ 1766 | { 1767 | "output_type": "stream", 1768 | "name": "stdout", 1769 | "text": [ 1770 | "torch.Size([1, 3, 512])\n" 1771 | ] 1772 | } 1773 | ] 1774 | }, 1775 | { 1776 | "cell_type": "markdown", 1777 | "source": [ 1778 | "## 2.3 Final Decoder Layer Normalization" 1779 | ], 1780 | "metadata": { 1781 | "id": "lyxSbVuxDseS" 1782 | } 1783 | }, 1784 | { 1785 | "cell_type": "code", 1786 | "source": [ 1787 | "mean = y.mean(-1, keepdim=True)\n", 1788 | "std = y.std(-1, keepdim=True)\n", 1789 | "Wn_d = nn.Parameter(torch.ones(d_embed))\n", 1790 | "bn_d = nn.Parameter(torch.zeros(d_embed))\n", 1791 | "y = Wn_d * (y - mean) / (std + epsilon) + bn_d\n", 1792 | "print(y.size())" 1793 | ], 1794 | "metadata": { 1795 | "colab": { 1796 | "base_uri": "https://localhost:8080/" 1797 | }, 1798 | "id": "ld4nj8XJD0DO", 1799 | "outputId": "601a0cc4-e84f-4335-a045-7d83f70a4713" 1800 | }, 1801 | "execution_count": null, 1802 | "outputs": [ 1803 | { 1804 | "output_type": "stream", 1805 | "name": "stdout", 1806 | "text": [ 1807 | "torch.Size([1, 3, 512])\n" 1808 | ] 1809 | } 1810 | ] 1811 | }, 1812 | { 1813 | "cell_type": "markdown", 1814 | "source": [ 1815 | "# 3. Generate Probability Distribution" 1816 | ], 1817 | "metadata": { 1818 | "id": "HMYkSaeIEL33" 1819 | } 1820 | }, 1821 | { 1822 | "cell_type": "markdown", 1823 | "source": [ 1824 | "This next module sits on top of the decoder and expands the decoder output into a log probability distribution over the vocabulary for each token position. This is done for all tokens, though the only ones that will matter for loss computation are the ones that are masked. The loss calculation is not done here." 1825 | ], 1826 | "metadata": { 1827 | "id": "UDYHcYJiHZWI" 1828 | } 1829 | }, 1830 | { 1831 | "cell_type": "code", 1832 | "source": [ 1833 | "linear_scores = nn.Linear(d_embed, vocab)\n", 1834 | "probs = F.log_softmax(linear_scores(y), dim=-1)\n", 1835 | "print(probs.size())" 1836 | ], 1837 | "metadata": { 1838 | "colab": { 1839 | "base_uri": "https://localhost:8080/" 1840 | }, 1841 | "id": "BvdmMdREEOtF", 1842 | "outputId": "9e8e0c72-84a9-4264-de3a-cb7b73c91048" 1843 | }, 1844 | "execution_count": null, 1845 | "outputs": [ 1846 | { 1847 | "output_type": "stream", 1848 | "name": "stdout", 1849 | "text": [ 1850 | "torch.Size([1, 3, 50000])\n" 1851 | ] 1852 | } 1853 | ] 1854 | }, 1855 | { 1856 | "cell_type": "markdown", 1857 | "source": [ 1858 | "# Loss and Training" 1859 | ], 1860 | "metadata": { 1861 | "id": "OBOyeEY76IKk" 1862 | } 1863 | }, 1864 | { 1865 | "cell_type": "markdown", 1866 | "source": [ 1867 | "This notebook does not go through loss computation and training at this time. Loss is computed by looking at the masked probabilities and measuring the KL divergence from the actual target tokens. The code above will work with at `.backward()` once, but it recreates the linear layers etc. from scratch each time so it won't really learn anything. See [The Annotated Transformer](https://nlp.seas.harvard.edu/2018/04/03/attention.html) for a version that is closer to implementation as well as more in-depth description of the loss computation and training loop." 1868 | ], 1869 | "metadata": { 1870 | "id": "louGBtN_6MVf" 1871 | } 1872 | }, 1873 | { 1874 | "cell_type": "markdown", 1875 | "source": [ 1876 | "# Etc." 1877 | ], 1878 | "metadata": { 1879 | "id": "2VD-nZuHyOJE" 1880 | } 1881 | }, 1882 | { 1883 | "cell_type": "markdown", 1884 | "source": [ 1885 | "Careful observers will notice that I have left out a few details, such as Dropout layers, which appear in various places in the actual implementation. These details improving learning but do not significantly alter the understanding of how Transformers work." 1886 | ], 1887 | "metadata": { 1888 | "id": "-N_xmdHnyQkh" 1889 | } 1890 | } 1891 | ] 1892 | } 1893 | --------------------------------------------------------------------------------