diff --git a/ch07/01_main-chapter-code/ch07.ipynb b/ch07/01_main-chapter-code/ch07.ipynb index f72d1d0..4adf56f 100644 --- a/ch07/01_main-chapter-code/ch07.ipynb +++ b/ch07/01_main-chapter-code/ch07.ipynb @@ -41,7 +41,7 @@ "base_uri": "https://localhost:8080/" }, "id": "4e19327b-6c02-4881-ad02-9b6d3ec0b1b4", - "outputId": "dce48855-f89e-4823-a9f1-ecd381162be9" + "outputId": "2bdd4d05-3aa3-4b7e-c478-6a210e8ff722" }, "outputs": [ { @@ -153,7 +153,7 @@ "base_uri": "https://localhost:8080/" }, "id": "0G3axLw6kY1N", - "outputId": "4bace1a2-15fe-4a17-8f67-20117edbdf11" + "outputId": "e742b203-78e8-44f4-edbc-8dcaeba3fc5e" }, "outputs": [ { @@ -213,7 +213,7 @@ "base_uri": "https://localhost:8080/" }, "id": "-LiuBMsHkzQV", - "outputId": "7a39d16f-2d32-4fd1-b2de-bab14d74b3cf" + "outputId": "535ddaef-ddc8-4a40-96d2-12d7414838b1" }, "outputs": [ { @@ -248,7 +248,7 @@ "base_uri": "https://localhost:8080/" }, "id": "uFInFxDDk2Je", - "outputId": "f904090d-4352-42e3-a8b1-0fc1896c438c" + "outputId": "01c760fd-53d6-4d94-997d-f72c6675c64e" }, "outputs": [ { @@ -336,7 +336,7 @@ "base_uri": "https://localhost:8080/" }, "id": "F9UQRfjzo4Js", - "outputId": "592df331-f956-46c3-902d-1c3629989f89" + "outputId": "47ae5684-c906-41bd-a3ea-e1504f861fd1" }, "outputs": [ { @@ -382,7 +382,7 @@ "base_uri": "https://localhost:8080/" }, "id": "a3891fa9-f738-41cd-946c-80ef9a99c346", - "outputId": "95e3cf94-9d13-4394-b7ec-c1df023c421c" + "outputId": "4630975d-9f2e-448a-a899-2f54bdf4a114" }, "outputs": [ { @@ -443,7 +443,7 @@ "base_uri": "https://localhost:8080/" }, "id": "-zf6oht6bIUQ", - "outputId": "ee3168c6-4b73-40f2-9a50-113c52c7787f" + "outputId": "16807a14-8a76-4710-e05d-9b770718d53d" }, "outputs": [ { @@ -560,7 +560,7 @@ "base_uri": "https://localhost:8080/" }, "id": "ff24fe1a-5746-461c-ad3d-b6d84a1a7c96", - "outputId": "462c9242-5175-4303-c8f3-a19e6bea0d6d" + "outputId": "5a7a4a95-4b2b-46a9-d15d-4787edb66849" }, "outputs": [ { @@ -645,7 +645,7 @@ "base_uri": "https://localhost:8080/" }, "id": "8fb02373-59b3-4f3a-b1d1-8181a2432645", - "outputId": "73c0602c-bf49-457b-fb8f-8f9fa626519c" + "outputId": "02a1ba16-dad1-49e8-b5e0-582593da6084" }, "outputs": [ { @@ -749,7 +749,7 @@ "base_uri": "https://localhost:8080/" }, "id": "6eb2bce3-28a7-4f39-9d4b-5e972d69066c", - "outputId": "fa489d86-2a11-4f56-b364-39b68ba36761" + "outputId": "7fd85f5b-a00f-47ae-bd71-34f0fdef38a4" }, "outputs": [ { @@ -866,7 +866,7 @@ "base_uri": "https://localhost:8080/" }, "id": "cdf5eec4-9ebe-4be0-9fca-9a47bee88fdc", - "outputId": "701a50a6-4ca6-4ebe-fb09-17da07e83d63" + "outputId": "a0e6f58c-5bb5-4d9d-87ca-0df9dd4b4748" }, "outputs": [ { @@ -909,7 +909,7 @@ "base_uri": "https://localhost:8080/" }, "id": "W2jvh-OP9MFV", - "outputId": "1e500b27-d3a0-4587-9e27-7ef05a516fd8" + "outputId": "9936e6bf-0498-4026-ee4d-70c93c9311a8" }, "outputs": [ { @@ -951,7 +951,7 @@ "base_uri": "https://localhost:8080/" }, "id": "nvVMuil89v9N", - "outputId": "0a82ef6a-097f-4c98-fabb-1c19aa005797" + "outputId": "6267fc1d-2075-4c13-efcd-1bf35ca3fc1c" }, "outputs": [ { @@ -993,7 +993,7 @@ "base_uri": "https://localhost:8080/" }, "id": "RTyB1vah9p56", - "outputId": "1deca28b-be00-4b5a-f309-503cf055cfac" + "outputId": "a8f8e6eb-bb0d-4cdf-b7de-68664581d161" }, "outputs": [ { @@ -1096,7 +1096,7 @@ "base_uri": "https://localhost:8080/" }, "id": "etpqqWh8phKc", - "outputId": "b874b7bb-bb22-46b9-a44d-1fbc5037beee" + "outputId": "bd1a573e-7a9b-4659-c5ea-0787945c1c25" }, "outputs": [ { @@ -1222,7 +1222,7 @@ "base_uri": "https://localhost:8080/" }, "id": "GGs1AI3vHpnX", - "outputId": "c496278d-f641-492d-ce22-0bd5a1d36685" + "outputId": "e9122e9d-c38d-4ac8-e29d-c3c11a15b93c" }, "outputs": [ { @@ -1375,7 +1375,7 @@ "base_uri": "https://localhost:8080/" }, "id": "21b8fd02-014f-4481-9b71-5bfee8f9dfcd", - "outputId": "ce0b6087-f857-4c25-a7a7-0bffd29d8b9f" + "outputId": "c3c8685e-ea95-4339-8f99-bda4a7043d94" }, "outputs": [ { @@ -1416,7 +1416,7 @@ "base_uri": "https://localhost:8080/" }, "id": "51649ab4-1a7e-4a9e-92c5-950a24fde211", - "outputId": "5761e840-cdb4-42fc-9fa6-9a3254d237e4" + "outputId": "daae5192-4d88-40eb-d3d9-79ae510e3f26" }, "outputs": [ { @@ -1487,33 +1487,27 @@ "base_uri": "https://localhost:8080/" }, "id": "0d249d67-5eba-414e-9bd2-972ebf01329d", - "outputId": "0ce07b55-8cd6-4a34-9b26-49c10e519de4" + "outputId": "d58ae26d-ff8f-4c66-bc84-e1ae3429ce51" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2024-06-22 20:49:59.838218: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", - "2024-06-22 20:49:59.895614: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", - "2024-06-22 20:49:59.895650: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", - "2024-06-22 20:49:59.897010: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n", - "2024-06-22 20:49:59.905256: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", + "2024-06-23 13:32:49.758022: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", + "2024-06-23 13:32:49.811280: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", + "2024-06-23 13:32:49.811317: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", + "2024-06-23 13:32:49.813171: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n", + "2024-06-23 13:32:49.822198: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", "To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", - "2024-06-22 20:50:01.206247: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "File already exists and is up-to-date: gpt2/355M/checkpoint\n", - "File already exists and is up-to-date: gpt2/355M/encoder.json\n", - "File already exists and is up-to-date: gpt2/355M/hparams.json\n", - "File already exists and is up-to-date: gpt2/355M/model.ckpt.data-00000-of-00001\n", - "File already exists and is up-to-date: gpt2/355M/model.ckpt.index\n", - "File already exists and is up-to-date: gpt2/355M/model.ckpt.meta\n", - "File already exists and is up-to-date: gpt2/355M/vocab.bpe\n" + "2024-06-23 13:32:51.049899: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", + "checkpoint: 100%|██████████| 77.0/77.0 [00:00<00:00, 172kiB/s]\n", + "encoder.json: 100%|██████████| 1.04M/1.04M [00:00<00:00, 4.42MiB/s]\n", + "hparams.json: 100%|██████████| 91.0/91.0 [00:00<00:00, 165kiB/s]\n", + "model.ckpt.data-00000-of-00001: 100%|██████████| 1.42G/1.42G [00:23<00:00, 61.5MiB/s]\n", + "model.ckpt.index: 100%|██████████| 10.4k/10.4k [00:00<00:00, 15.3MiB/s]\n", + "model.ckpt.meta: 100%|██████████| 927k/927k [00:00<00:00, 4.75MiB/s]\n", + "vocab.bpe: 100%|██████████| 456k/456k [00:00<00:00, 3.54MiB/s]\n" ] } ], @@ -1567,7 +1561,7 @@ "base_uri": "https://localhost:8080/" }, "id": "7bd32b7c-5b44-4d25-a09f-46836802ca74", - "outputId": "2ff7d3ae-4546-463b-b0c9-76365e628b84" + "outputId": "6dcedbe5-5c9c-4d5a-8524-6346b3185b97" }, "outputs": [ { @@ -1633,7 +1627,7 @@ "base_uri": "https://localhost:8080/" }, "id": "ba4a55bf-a245-48d8-beda-2838a58fb5ba", - "outputId": "e6d883c2-a490-48c8-e3a9-bba98fa72f97" + "outputId": "9c1921a3-becc-4a30-c899-ce039c3fdcf2" }, "outputs": [ { @@ -1723,7 +1717,7 @@ "base_uri": "https://localhost:8080/" }, "id": "d99fc6f8-63b2-43da-adbb-a7b6b92c8dd5", - "outputId": "85c0deec-74bc-49f7-ddbf-d6c19dada1a8" + "outputId": "1ceb796a-b615-46b4-f1f0-661b6d53f9fb" }, "outputs": [ { @@ -1793,7 +1787,7 @@ "base_uri": "https://localhost:8080/" }, "id": "78bcf83a-1fff-4540-97c1-765c4016d5e3", - "outputId": "5070ccc9-3707-4fca-b845-db5e1f5f1c1e" + "outputId": "f978a643-6307-4e30-9fdc-66d9db978fa1" }, "outputs": [ { @@ -1849,7 +1843,7 @@ "Ep 2 (Step 000225): Train loss 0.350, Val loss 0.664\n", "Ep 2 (Step 000230): Train loss 0.300, Val loss 0.657\n", "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: Convert the active sentence to passive: 'The chef cooks the meal every day.' ### Response: The meal is cooked every day by the chef.<|endoftext|>The following is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: What is the capital of the United Kingdom\n", - "Training completed in 0.86 minutes.\n" + "Training completed in 0.88 minutes.\n" ] } ], @@ -1894,21 +1888,12 @@ "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 325 + "height": 308 }, "id": "4acd368b-1403-4807-a218-9102e35bfdbb", - "outputId": "4b578e9d-2837-44da-ae28-e5c802739649" + "outputId": "026a0b78-fd64-45b5-aafe-09309f7e180c" }, "outputs": [ - { - "data": { - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAEiCAYAAAA21pHjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZ8ElEQVR4nO3dd3gU1frA8e9u+qYnpAIJLZIAIQQIGGJBQYqIAipe5ApY8KogclFEfigiXkUFFRUudnKtIAqIiCAdBaSHTugkhBQgvZc9vz8GFhZCTNmwSXg/zzNPdmfOzLxnCXl3zpw5R6eUUgghhBCiTtJbOwAhhBBCXJskaiGEEKIOk0QthBBC1GGSqIUQQog6TBK1EEIIUYdJohZCCCHqMEnUQgghRB0miVoIIYSowyRRCyGEEHWYJGohGpCTJ0+i0+mIi4uzdihCCAuRRC1EHaPT6SpcpkyZYu0QhRDXka21AxBCmEtOTja9nj9/PpMnTyY+Pt60zsXFxRphCSGsRK6ohahj/P39TYu7uzs6nc703tfXl/fee48mTZrg4OBAhw4dWL58+TWPVVZWxmOPPUZoaCgJCQkA/Pzzz3Ts2BFHR0datGjBa6+9RmlpqWkfnU7H559/zsCBAzEYDISEhLBkyRLT9oyMDIYOHYqPjw9OTk6EhIQwd+7ca8bw448/Eh4ejpOTE97e3vTs2ZO8vDzT9s8//5ywsDAcHR0JDQ3lv//9r9n+iYmJDB48GA8PD7y8vLjvvvs4efKkafuIESMYMGAAM2bMICAgAG9vb0aNGkVJSUmlP3Mh6jQlhKiz5s6dq9zd3U3v33vvPeXm5qa+//57dejQIfXiiy8qOzs7dfjwYaWUUidOnFCA2rVrlyosLFQDBw5UkZGRKi0tTSml1IYNG5Sbm5uKjY1Vx44dU7///rtq1qyZmjJliukcgGrSpIn67rvv1JEjR9SYMWOUi4uLOn/+vFJKqVGjRqkOHTqobdu2qRMnTqiVK1eqJUuWlBv/mTNnlK2trXrvvffUiRMn1J49e9Ts2bNVTk6OUkqpb775RgUEBKiffvpJHT9+XP3000/Ky8tLxcbGKqWUKi4uVmFhYeqxxx5Te/bsUQcOHFAPP/ywat26tSoqKlJKKTV8+HDl5uamnnrqKXXw4EH1yy+/KIPBoD799FPL/mMIYSWSqIWow65M1IGBgeqNN94wKxMVFaWeeeYZpdSlRP3HH3+oHj16qFtuuUVlZmaayvbo0UO9+eabZvt//fXXKiAgwPQeUC+//LLpfW5urgLUb7/9ppRSqn///urRRx+tVPw7duxQgDp58mS521u2bKm+++47s3Wvv/66io6ONsXWunVrZTQaTduLioqUk5OTWrFihVJKS9TBwcGqtLTUVObBBx9UDz30UKViFKKuk3vUQtQT2dnZnDlzhpiYGLP1MTEx7N6922zdkCFDaNKkCWvWrMHJycm0fvfu3WzcuJE33njDtK6srIzCwkLy8/MxGAwAtG/f3rTd2dkZNzc30tLSAHj66ae5//772blzJ7169WLAgAF069at3JgjIiLo0aMH4eHh9O7dm169evHAAw/g6elJXl4ex44d4/HHH2fkyJGmfUpLS3F3dzfFe/ToUVxdXc2OW1hYyLFjx0zv27Zti42Njel9QEAAe/fureDTFKL+kEQtRAN09913880337B582buvPNO0/rc3Fxee+01Bg0adNU+jo6Optd2dnZm23Q6HUajEYC+ffty6tQpli1bxsqVK+nRowejRo1ixowZVx3TxsaGlStXsmnTJn7//Xc++ugjJk2axJYtW0xfCj777DO6du161X4X4+3UqRPffvvtVcf28fGpVLxC1HeSqIWoJ9zc3AgMDGTjxo3cfvvtpvUbN26kS5cuZmWffvpp2rVrx7333suvv/5qKt+xY0fi4+Np1apVjWLx8fFh+PDhDB8+nFtvvZXx48eXm6hBS5oxMTHExMQwefJkgoODWbRoEePGjSMwMJDjx48zdOjQcvft2LEj8+fPx9fXFzc3txrFLER9JYlaiHpk/PjxvPrqq7Rs2ZIOHTowd+5c4uLiyr3ifPbZZykrK+Oee+7ht99+45ZbbmHy5Mncc889BAUF8cADD6DX69m9ezf79u3jP//5T6VimDx5Mp06daJt27YUFRWxdOlSwsLCyi27ZcsWVq9eTa9evfD19WXLli2cPXvWVP61115jzJgxuLu706dPH4qKiti+fTsZGRmMGzeOoUOHMn36dO677z6mTp1KkyZNOHXqFAsXLuTFF1+kSZMm1f8whagnJFELUY+MGTOGrKwsnn/+edLS0mjTpg1LliwhJCSk3PJjx47FaDRy9913s3z5cnr37s3SpUuZOnUqb7/9NnZ2doSGhvLEE09U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\n", @@ -1921,11 +1906,8 @@ } ], "source": [ - "import matplotlib.pyplot as plt\n", "from previous_chapters import plot_losses\n", "\n", - "\n", - "plt.figure(figsize=(12, 6))\n", "epochs_tensor = torch.linspace(0, num_epochs, len(train_losses))\n", "plot_losses(epochs_tensor, tokens_seen, train_losses, val_losses)" ] @@ -2751,7 +2733,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.11" + "version": "3.11.4" } }, "nbformat": 4,