diff --git a/ch07/01_main-chapter-code/ch07.ipynb b/ch07/01_main-chapter-code/ch07.ipynb index 686fc7b..110d916 100644 --- a/ch07/01_main-chapter-code/ch07.ipynb +++ b/ch07/01_main-chapter-code/ch07.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "id": "12e91914-5f51-43fa-b65b-625e73b4d17b", - "metadata": {}, + "metadata": { + "id": "12e91914-5f51-43fa-b65b-625e73b4d17b" + }, "source": [ "\n", "\n", @@ -23,7 +25,9 @@ { "cell_type": "markdown", "id": "c2520ec3-722f-4f44-bdd1-885b13e7afbf", - "metadata": {}, + "metadata": { + "id": "c2520ec3-722f-4f44-bdd1-885b13e7afbf" + }, "source": [ "# Chapter 7: Finetuning To Follow Instructions" ] @@ -37,17 +41,17 @@ "base_uri": "https://localhost:8080/" }, "id": "4e19327b-6c02-4881-ad02-9b6d3ec0b1b4", - "outputId": "538e79af-011b-4a60-f288-2d0312a2b5a6" + "outputId": "6560a9ce-8cbe-4c37-885b-e9c8c1946f69" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "matplotlib version: 3.8.2\n", - "tiktoken version: 0.5.1\n", - "torch version: 2.2.2\n", - "tqdm version: 4.66.1\n", + "matplotlib version: 3.7.1\n", + "tiktoken version: 0.7.0\n", + "torch version: 2.3.0+cu121\n", + "tqdm version: 4.66.4\n", "tensorflow version: 2.15.0\n" ] } @@ -66,10 +70,22 @@ " print(f\"{p} version: {version(p)}\")" ] }, + { + "cell_type": "markdown", + "id": "264fca98-2f9a-4193-b435-2abfa3b4142f", + "metadata": { + "id": "264fca98-2f9a-4193-b435-2abfa3b4142f" + }, + "source": [ + "[figure]" + ] + }, { "cell_type": "markdown", "id": "8bbc68e9-75b3-41f1-ac2c-e071c3cd0813", - "metadata": {}, + "metadata": { + "id": "8bbc68e9-75b3-41f1-ac2c-e071c3cd0813" + }, "source": [ "## 7.1 Introduction to instruction finetuning" ] @@ -77,7 +93,9 @@ { "cell_type": "markdown", "id": "53dba24a-6805-496c-9a7f-c75e2d3527ab", - "metadata": {}, + "metadata": { + "id": "53dba24a-6805-496c-9a7f-c75e2d3527ab" + }, "source": [ "- In chapter 5, we saw that pretraining an LLM involves a training procedure where it learns to generate one word at a time\n", "- Hence, a pretrained LLM is good at text completion, but it is not good at following instructions\n", @@ -87,27 +105,33 @@ { "cell_type": "markdown", "id": "18dc0535-0904-44ed-beaf-9b678292ef35", - "metadata": {}, + "metadata": { + "id": "18dc0535-0904-44ed-beaf-9b678292ef35" + }, "source": [ - "[insert figure]" + "[figure]" ] }, { "cell_type": "markdown", "id": "b4698b23-12e0-4bd7-a140-ccb3dd71d4e8", - "metadata": {}, + "metadata": { + "id": "b4698b23-12e0-4bd7-a140-ccb3dd71d4e8" + }, "source": [ "- An optional step after instruction finetuning is preference tuning, which refines the response style of an LLM; readers interested in preference tuning can find example code in the bonus materials: [../04_preference-tuning-with-dpo](../04_preference-tuning-with-dpo)\n", "\n", "- The topics covered in this chapter are summarized in the figure below\n", "\n", - "[insert figure]" + "[figure]" ] }, { "cell_type": "markdown", "id": "5384f0cf-ef3c-4436-a5fa-59bd25649f86", - "metadata": {}, + "metadata": { + "id": "5384f0cf-ef3c-4436-a5fa-59bd25649f86" + }, "source": [ "## 7.2 Preparing a dataset for supervised instruction finetuning" ] @@ -115,7 +139,9 @@ { "cell_type": "markdown", "id": "f8b34ff8-619f-4e89-bd03-ce513269760d", - "metadata": {}, + "metadata": { + "id": "f8b34ff8-619f-4e89-bd03-ce513269760d" + }, "source": [ "- We will work with an instruction dataset I prepared for this chapter" ] @@ -129,7 +155,7 @@ "base_uri": "https://localhost:8080/" }, "id": "0G3axLw6kY1N", - "outputId": "2a9a1c83-9c46-49a5-f9df-fce3320f7db2" + "outputId": "c48ade8c-0d31-4efb-8246-6e6c51669dde" }, "outputs": [ { @@ -173,7 +199,9 @@ { "cell_type": "markdown", "id": "d7af8176-4255-4e92-8c7d-998771733eb8", - "metadata": {}, + "metadata": { + "id": "d7af8176-4255-4e92-8c7d-998771733eb8" + }, "source": [ "- Each item in the `data` list we loaded from the JSON file above is a dictionary in the following form:" ] @@ -187,7 +215,7 @@ "base_uri": "https://localhost:8080/" }, "id": "-LiuBMsHkzQV", - "outputId": "fc3b22fd-9a53-405e-9c25-2a5873d343d1" + "outputId": "88fe5be1-da18-45b5-dbb5-abcbcc4558e5" }, "outputs": [ { @@ -207,7 +235,9 @@ { "cell_type": "markdown", "id": "c5a32b34-485a-4816-a77a-da14f9fe6e46", - "metadata": {}, + "metadata": { + "id": "c5a32b34-485a-4816-a77a-da14f9fe6e46" + }, "source": [ "- Note that the `'input'` field can be empty:" ] @@ -221,7 +251,7 @@ "base_uri": "https://localhost:8080/" }, "id": "uFInFxDDk2Je", - "outputId": "84cb1aad-233a-488a-f6b0-6cb977834367" + "outputId": "a07ca278-0205-4ac4-b81e-54a513ece585" }, "outputs": [ { @@ -241,7 +271,9 @@ { "cell_type": "markdown", "id": "f034799a-6575-45fd-98c9-9d1012d0fd58", - "metadata": {}, + "metadata": { + "id": "f034799a-6575-45fd-98c9-9d1012d0fd58" + }, "source": [ "- Instruction finetuning is often referred to as \"supervised instruction finetuning\" because it involves training a model on a dataset where the input-output pairs are explicitly provided\n", "- There are different ways to format the entries as inputs to the LLM; the figure below illustrates two example formats that were used for training the Alpaca (https://crfm.stanford.edu/2023/03/13/alpaca.html) and Phi-3 (https://arxiv.org/abs/2404.14219) LLMs, respectively" @@ -250,15 +282,19 @@ { "cell_type": "markdown", "id": "dffa4f70-44d4-4be4-89a9-2159f4885b10", - "metadata": {}, + "metadata": { + "id": "dffa4f70-44d4-4be4-89a9-2159f4885b10" + }, "source": [ - "[insert figure]" + "[figure]" ] }, { "cell_type": "markdown", "id": "dd79a74e-befb-491c-be49-f777a6a5b6a6", - "metadata": {}, + "metadata": { + "id": "dd79a74e-befb-491c-be49-f777a6a5b6a6" + }, "source": [ "- In this chapter, we use Alpaca-style prompt formatting, which was the original prompt template for instruction finetuning\n", "- Below we format the input that we will pass as input to the LLM" @@ -285,6 +321,16 @@ " return instruction_text + input_text" ] }, + { + "cell_type": "markdown", + "id": "011e78b4-e89a-4653-a2ee-7b2739ca04d6", + "metadata": { + "id": "011e78b4-e89a-4653-a2ee-7b2739ca04d6" + }, + "source": [ + "- A formatted response with input field looks like as shown below" + ] + }, { "cell_type": "code", "execution_count": 6, @@ -294,7 +340,7 @@ "base_uri": "https://localhost:8080/" }, "id": "F9UQRfjzo4Js", - "outputId": "b56e6c03-f603-4e9d-c1b6-b4a70403caf9" + "outputId": "f05669d2-13a8-4eb3-f549-dab83cec1e00" }, "outputs": [ { @@ -321,11 +367,27 @@ "print(model_input + desired_response)" ] }, + { + "cell_type": "markdown", + "id": "4dc93ddf-431c-49c0-96f2-fb3a79c4d94c", + "metadata": { + "id": "4dc93ddf-431c-49c0-96f2-fb3a79c4d94c" + }, + "source": [ + "- Below is a formatted response without input field" + ] + }, { "cell_type": "code", "execution_count": 7, "id": "a3891fa9-f738-41cd-946c-80ef9a99c346", - "metadata": {}, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "a3891fa9-f738-41cd-946c-80ef9a99c346", + "outputId": "b9550b1f-8b35-4b00-96d3-a1ce2b76daee" + }, "outputs": [ { "name": "stdout", @@ -351,7 +413,9 @@ { "cell_type": "markdown", "id": "4aa8afd5-2a21-49a5-90c3-6a03865a4771", - "metadata": {}, + "metadata": { + "id": "4aa8afd5-2a21-49a5-90c3-6a03865a4771" + }, "source": [ "- Lastly, before we prepare the PyTorch data loaders in the next section, we divide the dataset into a training, validation, and test set" ] @@ -383,7 +447,7 @@ "base_uri": "https://localhost:8080/" }, "id": "-zf6oht6bIUQ", - "outputId": "bf33cd9a-2778-4365-c51d-d394c817c4fb" + "outputId": "5a11a57f-2ce2-408f-e05a-a09cb661e49b" }, "outputs": [ { @@ -405,36 +469,47 @@ { "cell_type": "markdown", "id": "fcaaf606-f913-4445-8301-632ae10d387d", - "metadata": {}, + "metadata": { + "id": "fcaaf606-f913-4445-8301-632ae10d387d" + }, "source": [ "## 7.3 Creating data loaders for an instruction dataset" ] }, + { + "cell_type": "markdown", + "id": "233f63bd-9755-4d07-8884-5e2e5345cf27", + "metadata": { + "id": "233f63bd-9755-4d07-8884-5e2e5345cf27" + }, + "source": [ + "[figure]" + ] + }, + { + "cell_type": "markdown", + "id": "b9af423f-aad9-4b3c-bea5-153021c04862", + "metadata": { + "id": "b9af423f-aad9-4b3c-bea5-153021c04862" + }, + "source": [ + "- First, we implement an `InstructionDataset` class that pre-tokenizes all inputs in the dataset, similar to the `SpamDataset` in chapter 6\n", + "\n", + "[figure]" + ] + }, { "cell_type": "code", "execution_count": 10, "id": "K6MWf0lhu8GP", "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "K6MWf0lhu8GP", - "outputId": "bb01c511-4023-4b74-9781-8385da75b391" + "id": "K6MWf0lhu8GP" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[50256]\n" - ] - } - ], + "outputs": [], "source": [ "import tiktoken\n", "\n", - "tokenizer = tiktoken.get_encoding(\"gpt2\")\n", - "print(tokenizer.encode(\"<|endoftext|>\", allowed_special={\"<|endoftext|>\"}))" + "tokenizer = tiktoken.get_encoding(\"gpt2\")" ] }, { @@ -461,9 +536,7 @@ " response_text = f\"\\n\\n### Response:\\n{entry['output']}\"\n", " full_text = instruction_plus_input + response_text\n", " self.encoded_texts.append(\n", - " tokenizer.encode(\n", - " full_text, allowed_special={\"<|endoftext|>\"}\n", - " )\n", + " tokenizer.encode(full_text)\n", " )\n", "\n", " def __getitem__(self, index):\n", @@ -476,13 +549,37 @@ { "cell_type": "code", "execution_count": 12, + "id": "ff24fe1a-5746-461c-ad3d-b6d84a1a7c96", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ff24fe1a-5746-461c-ad3d-b6d84a1a7c96", + "outputId": "7459dd6d-aaad-49c5-9c82-db9b50358c77" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[50256]\n" + ] + } + ], + "source": [ + "print(tokenizer.encode(\"<|endoftext|>\", allowed_special={\"<|endoftext|>\"}))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, "id": "W2jvh-OP9MFV", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "W2jvh-OP9MFV", - "outputId": "7878ef5f-635a-491a-99b2-07b3319daefc" + "outputId": "b3f94569-8997-461b-909e-b469e0b3c089" }, "outputs": [ { @@ -491,7 +588,7 @@ "tensor(1.1269)" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -510,10 +607,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "id": "nvVMuil89v9N", "metadata": { - "id": "nvVMuil89v9N" + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nvVMuil89v9N", + "outputId": "5d9f0948-ddc2-4766-c2ba-c14ca550e9d1" }, "outputs": [ { @@ -522,7 +623,7 @@ "tensor(0.7936)" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -539,14 +640,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "id": "RTyB1vah9p56", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "RTyB1vah9p56", - "outputId": "f1c132ad-85db-411d-cfc8-1d9ab3aec79d" + "outputId": "245a8257-d1a3-4e94-a062-07b820b71aed" }, "outputs": [ { @@ -555,7 +656,7 @@ "tensor(1.1269)" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -572,24 +673,28 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "id": "41ec6e2d-9eb2-4124-913e-d2af39be4cf2", - "metadata": {}, + "metadata": { + "id": "41ec6e2d-9eb2-4124-913e-d2af39be4cf2" + }, "outputs": [], "source": [ "def custom_collate_fn(\n", - " batch, \n", + " batch,\n", " pad_token_id=50256,\n", " ignore_index=-100,\n", - " allowed_max_length=None, \n", + " allowed_max_length=None,\n", " device=\"cpu\"\n", "):\n", " # Find the longest sequence in the batch\n", - " batch_max_length = max(len(item) for item in batch)\n", + " batch_max_length = max(len(item)+1 for item in batch)\n", "\n", " # Pad and prepare inputs and targets\n", " inputs_lst, targets_lst = [], []\n", " for item in batch:\n", + " # Add an <|endoftext|> token\n", + " item += [pad_token_id]\n", " # Pad sequences to max_length\n", " padded = item + [pad_token_id] * (batch_max_length - len(item))\n", " inputs = torch.tensor(padded[:-1]) # Truncate the last token for inputs\n", @@ -617,26 +722,32 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "id": "cdf5eec4-9ebe-4be0-9fca-9a47bee88fdc", - "metadata": {}, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cdf5eec4-9ebe-4be0-9fca-9a47bee88fdc", + "outputId": "0484b12b-b0d6-4329-d6d3-7a2b05fbaf8e" + }, "outputs": [ { "data": { "text/plain": [ - "(tensor([[ 0, 1, 2, 3, 4, 50256],\n", - " [ 7, 8, 9, 50256, 50256, 50256]]),\n", - " tensor([[ 1, 2, 3, 4, 50256, -100],\n", - " [ 8, 9, 50256, -100, -100, -100]]))" + "(tensor([[ 0, 1, 2, 3, 4, 5, 6],\n", + " [ 7, 8, 9, 50256, 50256, 50256, 50256]]),\n", + " tensor([[ 1, 2, 3, 4, 5, 6, 50256],\n", + " [ 8, 9, 50256, -100, -100, -100, -100]]))" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "inputs_1 = [0, 1, 2, 3, 4, 50256, 50256]\n", + "inputs_1 = [0, 1, 2, 3, 4, 5, 6]\n", "inputs_2 = [7, 8, 9]\n", "\n", "batch = (\n", @@ -649,17 +760,21 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "id": "etpqqWh8phKc", "metadata": { - "id": "etpqqWh8phKc" + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "etpqqWh8phKc", + "outputId": "f2f902d2-d51a-4a62-a2ae-b1f52037c92f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Device: cpu\n" + "Device: cuda\n" ] } ], @@ -674,14 +789,10 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 22, "id": "BtWkgir6Hlpe", "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "BtWkgir6Hlpe", - "outputId": "8e3a969d-e1f6-4574-cc07-3f8401068555" + "id": "BtWkgir6Hlpe" }, "outputs": [], "source": [ @@ -705,7 +816,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 23, "id": "1d097dc8-ad34-4f05-b435-e4147965f532", "metadata": { "id": "1d097dc8-ad34-4f05-b435-e4147965f532" @@ -733,14 +844,14 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 24, "id": "GGs1AI3vHpnX", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GGs1AI3vHpnX", - "outputId": "eaabe39c-bb78-4fec-979c-6382c192a79f" + "outputId": "df95971c-10ca-49e8-9823-d63bc5b6a3fc" }, "outputs": [ { @@ -748,122 +859,122 @@ "output_type": "stream", "text": [ "Train loader:\n", - "torch.Size([8, 60]) torch.Size([8, 60])\n", - "torch.Size([8, 75]) torch.Size([8, 75])\n", + "torch.Size([8, 61]) torch.Size([8, 61])\n", + "torch.Size([8, 76]) torch.Size([8, 76])\n", + "torch.Size([8, 73]) torch.Size([8, 73])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 65]) torch.Size([8, 65])\n", "torch.Size([8, 72]) torch.Size([8, 72])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 64]) torch.Size([8, 64])\n", - "torch.Size([8, 71]) torch.Size([8, 71])\n", - "torch.Size([8, 79]) torch.Size([8, 79])\n", - "torch.Size([8, 66]) torch.Size([8, 66])\n", - "torch.Size([8, 61]) torch.Size([8, 61])\n", - "torch.Size([8, 74]) torch.Size([8, 74])\n", - "torch.Size([8, 61]) torch.Size([8, 61])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 66]) torch.Size([8, 66])\n", - "torch.Size([8, 76]) torch.Size([8, 76])\n", - "torch.Size([8, 68]) torch.Size([8, 68])\n", - "torch.Size([8, 78]) torch.Size([8, 78])\n", - "torch.Size([8, 70]) torch.Size([8, 70])\n", - "torch.Size([8, 65]) torch.Size([8, 65])\n", - "torch.Size([8, 82]) torch.Size([8, 82])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 79]) torch.Size([8, 79])\n", - "torch.Size([8, 70]) torch.Size([8, 70])\n", - "torch.Size([8, 68]) torch.Size([8, 68])\n", - "torch.Size([8, 64]) torch.Size([8, 64])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 59]) torch.Size([8, 59])\n", - "torch.Size([8, 58]) torch.Size([8, 58])\n", - "torch.Size([8, 68]) torch.Size([8, 68])\n", - "torch.Size([8, 62]) torch.Size([8, 62])\n", - "torch.Size([8, 64]) torch.Size([8, 64])\n", - "torch.Size([8, 75]) torch.Size([8, 75])\n", - "torch.Size([8, 65]) torch.Size([8, 65])\n", - "torch.Size([8, 70]) torch.Size([8, 70])\n", - "torch.Size([8, 90]) torch.Size([8, 90])\n", - "torch.Size([8, 64]) torch.Size([8, 64])\n", - "torch.Size([8, 63]) torch.Size([8, 63])\n", - "torch.Size([8, 66]) torch.Size([8, 66])\n", - "torch.Size([8, 65]) torch.Size([8, 65])\n", - "torch.Size([8, 63]) torch.Size([8, 63])\n", - "torch.Size([8, 64]) torch.Size([8, 64])\n", - "torch.Size([8, 74]) torch.Size([8, 74])\n", - "torch.Size([8, 88]) torch.Size([8, 88])\n", - "torch.Size([8, 58]) torch.Size([8, 58])\n", - "torch.Size([8, 87]) torch.Size([8, 87])\n", - "torch.Size([8, 82]) torch.Size([8, 82])\n", - "torch.Size([8, 82]) torch.Size([8, 82])\n", - "torch.Size([8, 69]) torch.Size([8, 69])\n", - "torch.Size([8, 64]) torch.Size([8, 64])\n", - "torch.Size([8, 73]) torch.Size([8, 73])\n", - "torch.Size([8, 75]) torch.Size([8, 75])\n", - "torch.Size([8, 66]) torch.Size([8, 66])\n", - "torch.Size([8, 74]) torch.Size([8, 74])\n", - "torch.Size([8, 82]) torch.Size([8, 82])\n", - "torch.Size([8, 68]) torch.Size([8, 68])\n", - "torch.Size([8, 66]) torch.Size([8, 66])\n", - "torch.Size([8, 59]) torch.Size([8, 59])\n", - "torch.Size([8, 59]) torch.Size([8, 59])\n", - "torch.Size([8, 65]) torch.Size([8, 65])\n", - "torch.Size([8, 79]) torch.Size([8, 79])\n", - "torch.Size([8, 70]) torch.Size([8, 70])\n", - "torch.Size([8, 60]) torch.Size([8, 60])\n", - "torch.Size([8, 57]) torch.Size([8, 57])\n", - "torch.Size([8, 70]) torch.Size([8, 70])\n", - "torch.Size([8, 66]) torch.Size([8, 66])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 62]) torch.Size([8, 62])\n", - "torch.Size([8, 86]) torch.Size([8, 86])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 63]) torch.Size([8, 63])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 70]) torch.Size([8, 70])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 70]) torch.Size([8, 70])\n", - "torch.Size([8, 60]) torch.Size([8, 60])\n", - "torch.Size([8, 64]) torch.Size([8, 64])\n", - "torch.Size([8, 66]) torch.Size([8, 66])\n", - "torch.Size([8, 64]) torch.Size([8, 64])\n", - "torch.Size([8, 63]) torch.Size([8, 63])\n", - "torch.Size([8, 59]) torch.Size([8, 59])\n", - "torch.Size([8, 71]) torch.Size([8, 71])\n", - "torch.Size([8, 63]) torch.Size([8, 63])\n", - "torch.Size([8, 69]) torch.Size([8, 69])\n", - "torch.Size([8, 56]) torch.Size([8, 56])\n", - "torch.Size([8, 71]) torch.Size([8, 71])\n", - "torch.Size([8, 63]) torch.Size([8, 63])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 61]) torch.Size([8, 61])\n", - "torch.Size([8, 73]) torch.Size([8, 73])\n", - "torch.Size([8, 79]) torch.Size([8, 79])\n", - "torch.Size([8, 67]) torch.Size([8, 67])\n", - "torch.Size([8, 69]) torch.Size([8, 69])\n", - "torch.Size([8, 90]) torch.Size([8, 90])\n", - "torch.Size([8, 60]) torch.Size([8, 60])\n", - "torch.Size([8, 65]) torch.Size([8, 65])\n", - "torch.Size([8, 79]) torch.Size([8, 79])\n", "torch.Size([8, 80]) torch.Size([8, 80])\n", - "torch.Size([8, 73]) torch.Size([8, 73])\n", - "torch.Size([8, 81]) torch.Size([8, 81])\n", + "torch.Size([8, 67]) torch.Size([8, 67])\n", "torch.Size([8, 62]) torch.Size([8, 62])\n", - "torch.Size([8, 82]) torch.Size([8, 82])\n", + "torch.Size([8, 75]) torch.Size([8, 75])\n", + "torch.Size([8, 62]) torch.Size([8, 62])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 67]) torch.Size([8, 67])\n", + "torch.Size([8, 77]) torch.Size([8, 77])\n", + "torch.Size([8, 69]) torch.Size([8, 69])\n", + "torch.Size([8, 79]) torch.Size([8, 79])\n", + "torch.Size([8, 71]) torch.Size([8, 71])\n", + "torch.Size([8, 66]) torch.Size([8, 66])\n", + "torch.Size([8, 83]) torch.Size([8, 83])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 80]) torch.Size([8, 80])\n", + "torch.Size([8, 71]) torch.Size([8, 71])\n", + "torch.Size([8, 69]) torch.Size([8, 69])\n", + "torch.Size([8, 65]) torch.Size([8, 65])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 60]) torch.Size([8, 60])\n", + "torch.Size([8, 59]) torch.Size([8, 59])\n", + "torch.Size([8, 69]) torch.Size([8, 69])\n", + "torch.Size([8, 63]) torch.Size([8, 63])\n", + "torch.Size([8, 65]) torch.Size([8, 65])\n", + "torch.Size([8, 76]) torch.Size([8, 76])\n", + "torch.Size([8, 66]) torch.Size([8, 66])\n", + "torch.Size([8, 71]) torch.Size([8, 71])\n", + "torch.Size([8, 91]) torch.Size([8, 91])\n", + "torch.Size([8, 65]) torch.Size([8, 65])\n", + "torch.Size([8, 64]) torch.Size([8, 64])\n", "torch.Size([8, 67]) torch.Size([8, 67])\n", "torch.Size([8, 66]) torch.Size([8, 66])\n", - "torch.Size([8, 76]) torch.Size([8, 76])\n", - "torch.Size([8, 90]) torch.Size([8, 90])\n", - "torch.Size([8, 63]) torch.Size([8, 63])\n", - "torch.Size([8, 60]) torch.Size([8, 60])\n", + "torch.Size([8, 64]) torch.Size([8, 64])\n", + "torch.Size([8, 65]) torch.Size([8, 65])\n", + "torch.Size([8, 75]) torch.Size([8, 75])\n", + "torch.Size([8, 89]) torch.Size([8, 89])\n", + "torch.Size([8, 59]) torch.Size([8, 59])\n", + "torch.Size([8, 88]) torch.Size([8, 88])\n", + "torch.Size([8, 83]) torch.Size([8, 83])\n", + "torch.Size([8, 83]) torch.Size([8, 83])\n", + "torch.Size([8, 70]) torch.Size([8, 70])\n", + "torch.Size([8, 65]) torch.Size([8, 65])\n", "torch.Size([8, 74]) torch.Size([8, 74])\n", + "torch.Size([8, 76]) torch.Size([8, 76])\n", + "torch.Size([8, 67]) torch.Size([8, 67])\n", + "torch.Size([8, 75]) torch.Size([8, 75])\n", + "torch.Size([8, 83]) torch.Size([8, 83])\n", + "torch.Size([8, 69]) torch.Size([8, 69])\n", + "torch.Size([8, 67]) torch.Size([8, 67])\n", + "torch.Size([8, 60]) torch.Size([8, 60])\n", + "torch.Size([8, 60]) torch.Size([8, 60])\n", + "torch.Size([8, 66]) torch.Size([8, 66])\n", + "torch.Size([8, 80]) torch.Size([8, 80])\n", + "torch.Size([8, 71]) torch.Size([8, 71])\n", + "torch.Size([8, 61]) torch.Size([8, 61])\n", + "torch.Size([8, 58]) torch.Size([8, 58])\n", + "torch.Size([8, 71]) torch.Size([8, 71])\n", + "torch.Size([8, 67]) torch.Size([8, 67])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", "torch.Size([8, 63]) torch.Size([8, 63])\n", + "torch.Size([8, 87]) torch.Size([8, 87])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 64]) torch.Size([8, 64])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 71]) torch.Size([8, 71])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 71]) torch.Size([8, 71])\n", + "torch.Size([8, 61]) torch.Size([8, 61])\n", "torch.Size([8, 65]) torch.Size([8, 65])\n", - "torch.Size([8, 77]) torch.Size([8, 77])\n", + "torch.Size([8, 67]) torch.Size([8, 67])\n", "torch.Size([8, 65]) torch.Size([8, 65])\n", - "torch.Size([8, 63]) torch.Size([8, 63])\n", + "torch.Size([8, 64]) torch.Size([8, 64])\n", + "torch.Size([8, 60]) torch.Size([8, 60])\n", + "torch.Size([8, 72]) torch.Size([8, 72])\n", + "torch.Size([8, 64]) torch.Size([8, 64])\n", + "torch.Size([8, 70]) torch.Size([8, 70])\n", + "torch.Size([8, 57]) torch.Size([8, 57])\n", + "torch.Size([8, 72]) torch.Size([8, 72])\n", + "torch.Size([8, 64]) torch.Size([8, 64])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 62]) torch.Size([8, 62])\n", + "torch.Size([8, 74]) torch.Size([8, 74])\n", + "torch.Size([8, 80]) torch.Size([8, 80])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 70]) torch.Size([8, 70])\n", + "torch.Size([8, 91]) torch.Size([8, 91])\n", + "torch.Size([8, 61]) torch.Size([8, 61])\n", + "torch.Size([8, 66]) torch.Size([8, 66])\n", + "torch.Size([8, 80]) torch.Size([8, 80])\n", + "torch.Size([8, 81]) torch.Size([8, 81])\n", + "torch.Size([8, 74]) torch.Size([8, 74])\n", "torch.Size([8, 82]) torch.Size([8, 82])\n", - "torch.Size([8, 65]) torch.Size([8, 65])\n", - "torch.Size([8, 73]) torch.Size([8, 73])\n", - "torch.Size([8, 68]) torch.Size([8, 68])\n" + "torch.Size([8, 63]) torch.Size([8, 63])\n", + "torch.Size([8, 83]) torch.Size([8, 83])\n", + "torch.Size([8, 68]) torch.Size([8, 68])\n", + "torch.Size([8, 67]) torch.Size([8, 67])\n", + "torch.Size([8, 77]) torch.Size([8, 77])\n", + "torch.Size([8, 91]) torch.Size([8, 91])\n", + "torch.Size([8, 64]) torch.Size([8, 64])\n", + "torch.Size([8, 61]) torch.Size([8, 61])\n", + "torch.Size([8, 75]) torch.Size([8, 75])\n", + "torch.Size([8, 64]) torch.Size([8, 64])\n", + "torch.Size([8, 66]) torch.Size([8, 66])\n", + "torch.Size([8, 78]) torch.Size([8, 78])\n", + "torch.Size([8, 66]) torch.Size([8, 66])\n", + "torch.Size([8, 64]) torch.Size([8, 64])\n", + "torch.Size([8, 83]) torch.Size([8, 83])\n", + "torch.Size([8, 66]) torch.Size([8, 66])\n", + "torch.Size([8, 74]) torch.Size([8, 74])\n", + "torch.Size([8, 69]) torch.Size([8, 69])\n" ] } ], @@ -875,21 +986,21 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 25, "id": "21b8fd02-014f-4481-9b71-5bfee8f9dfcd", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "21b8fd02-014f-4481-9b71-5bfee8f9dfcd", - "outputId": "71ce098a-36b7-44fa-8c7c-f63db448fe40" + "outputId": "cacf7f22-ec66-4350-8db4-890e7e86718f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "21106, 318, 281, 12064, 326, 8477, 257, 4876, 13, 19430, 257, 2882, 326, 20431, 32543, 262, 2581, 13, 198, 198, 21017, 46486, 25, 198, 30003, 6525, 262, 6827, 1262, 257, 985, 576, 13, 198, 198, 21017, 23412, 25, 198, 464, 5156, 318, 845, 13779, 13, 198, 198, 21017, 18261, 25, 198, 464, 5156, 318, 355, 13779, 355, 257, 4936, 13, 50256, 50256, 50256, 50256, 50256, 50256, 50256, 50256, " + "21106, 318, 281, 12064, 326, 8477, 257, 4876, 13, 19430, 257, 2882, 326, 20431, 32543, 262, 2581, 13, 198, 198, 21017, 46486, 25, 198, 30003, 6525, 262, 6827, 1262, 257, 985, 576, 13, 198, 198, 21017, 23412, 25, 198, 464, 5156, 318, 845, 13779, 13, 198, 198, 21017, 18261, 25, 198, 464, 5156, 318, 355, 13779, 355, 257, 4936, 13, 50256, 50256, 50256, 50256, 50256, 50256, 50256, 50256, 50256, " ] } ], @@ -900,21 +1011,21 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 26, "id": "51649ab4-1a7e-4a9e-92c5-950a24fde211", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "51649ab4-1a7e-4a9e-92c5-950a24fde211", - "outputId": "4cf98eac-b7f7-4687-b264-4508c0865865" + "outputId": "486fda24-80d4-4bc2-f253-2476f93cd146" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "318, 281, 12064, 326, 8477, 257, 4876, 13, 19430, 257, 2882, 326, 20431, 32543, 262, 2581, 13, 198, 198, 21017, 46486, 25, 198, 30003, 6525, 262, 6827, 1262, 257, 985, 576, 13, 198, 198, 21017, 23412, 25, 198, 464, 5156, 318, 845, 13779, 13, 198, 198, 21017, 18261, 25, 198, 464, 5156, 318, 355, 13779, 355, 257, 4936, 13, 50256, -100, -100, -100, -100, -100, -100, -100, -100, " + "318, 281, 12064, 326, 8477, 257, 4876, 13, 19430, 257, 2882, 326, 20431, 32543, 262, 2581, 13, 198, 198, 21017, 46486, 25, 198, 30003, 6525, 262, 6827, 1262, 257, 985, 576, 13, 198, 198, 21017, 23412, 25, 198, 464, 5156, 318, 845, 13779, 13, 198, 198, 21017, 18261, 25, 198, 464, 5156, 318, 355, 13779, 355, 257, 4936, 13, 50256, -100, -100, -100, -100, -100, -100, -100, -100, -100, " ] } ], @@ -935,27 +1046,27 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 27, "id": "0d249d67-5eba-414e-9bd2-972ebf01329d", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0d249d67-5eba-414e-9bd2-972ebf01329d", - "outputId": "0ccd8d13-4f8a-44ce-ea22-0b6ea36bb06e" + "outputId": "ca78e098-c253-4bbe-ebb5-6fd018d8e037" }, "outputs": [ { - "name": "stdout", + "name": "stderr", "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" + "checkpoint: 100%|██████████| 77.0/77.0 [00:00<00:00, 116kiB/s]\n", + "encoder.json: 100%|██████████| 1.04M/1.04M [00:02<00:00, 509kiB/s]\n", + "hparams.json: 100%|██████████| 91.0/91.0 [00:00<00:00, 138kiB/s]\n", + "model.ckpt.data-00000-of-00001: 100%|██████████| 1.42G/1.42G [02:49<00:00, 8.38MiB/s]\n", + "model.ckpt.index: 100%|██████████| 10.4k/10.4k [00:00<00:00, 13.8MiB/s]\n", + "model.ckpt.meta: 100%|██████████| 927k/927k [00:02<00:00, 454kiB/s]\n", + "vocab.bpe: 100%|██████████| 456k/456k [00:01<00:00, 321kiB/s]\n" ] } ], @@ -992,14 +1103,14 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 28, "id": "7bd32b7c-5b44-4d25-a09f-46836802ca74", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7bd32b7c-5b44-4d25-a09f-46836802ca74", - "outputId": "de446b9d-7667-48a5-c34a-f3c5cf70459b" + "outputId": "e5dbf217-591c-4c2e-9ec2-ef5365fa269e" }, "outputs": [ { @@ -1052,7 +1163,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 29, "id": "65444865-df87-4d98-9faf-875e1c4be860", "metadata": { "id": "65444865-df87-4d98-9faf-875e1c4be860" @@ -1067,22 +1178,22 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 30, "id": "d99fc6f8-63b2-43da-adbb-a7b6b92c8dd5", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "d99fc6f8-63b2-43da-adbb-a7b6b92c8dd5", - "outputId": "0c815e75-9357-42e6-fdf3-3ea13ffa4da4" + "outputId": "a4d82a24-f16e-4cf7-ebe6-0bff051517a1" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Training loss: 3.8234103202819822\n", - "Validation loss: 3.7612109184265137\n" + "Training loss: 3.8259091854095457\n", + "Validation loss: 3.7619335651397705\n" ] } ], @@ -1102,7 +1213,9 @@ { "cell_type": "markdown", "id": "db4b57fb-e689-4550-931c-6d34a932487c", - "metadata": {}, + "metadata": { + "id": "db4b57fb-e689-4550-931c-6d34a932487c" + }, "source": [ "- Runtimes:\n", "\n", @@ -1111,105 +1224,106 @@ "| Model | Platform | Runtime |\n", "|--------------------|-----------------------|----------------|\n", "| gpt2-medium (355M) | CPU (M3 MacBook Air) | 23.67 minutes |\n", + "| gpt2-medium (355M) | GPU (L4) | 2.98 minutes |\n", "| gpt2-medium (355M) | GPU (A100) | 1.29 minutes |\n", - "| gpt2-small (124M) | CPU (M3 MacBook Air) | 8.61 |\n", + "| gpt2-small (124M) | CPU (M3 MacBook Air) | 8.61 minutes |\n", "| gpt2-small (124M) | GPU (A100) | 0.59 minutes |\n", "\n", "\n", "\n", - "- Remainder of the notebook was run on M3 MacBook Air with the `\"gpt2-medium (355M)\"` model" + "- This notebook was run with the `\"gpt2-medium (355M)\"` model" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 31, "id": "78bcf83a-1fff-4540-97c1-765c4016d5e3", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "78bcf83a-1fff-4540-97c1-765c4016d5e3", - "outputId": "315368d9-5484-4527-f42d-b0d650d6aa23" + "outputId": "285ca27c-019f-4c2b-e130-8c46d2e7df53" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Ep 1 (Step 000000): Train loss 2.636, Val loss 2.627\n", - "Ep 1 (Step 000005): Train loss 1.173, Val loss 1.103\n", - "Ep 1 (Step 000010): Train loss 0.873, Val loss 0.947\n", - "Ep 1 (Step 000015): Train loss 0.856, Val loss 0.907\n", - "Ep 1 (Step 000020): Train loss 0.777, Val loss 0.882\n", - "Ep 1 (Step 000025): Train loss 0.754, Val loss 0.860\n", - "Ep 1 (Step 000030): Train loss 0.799, Val loss 0.838\n", - "Ep 1 (Step 000035): Train loss 0.715, Val loss 0.810\n", - "Ep 1 (Step 000040): Train loss 0.673, Val loss 0.807\n", - "Ep 1 (Step 000045): Train loss 0.634, Val loss 0.791\n", - "Ep 1 (Step 000050): Train loss 0.663, Val loss 0.784\n", - "Ep 1 (Step 000055): Train loss 0.760, Val loss 0.764\n", - "Ep 1 (Step 000060): Train loss 0.721, Val loss 0.745\n", - "Ep 1 (Step 000065): Train loss 0.654, Val loss 0.736\n", - "Ep 1 (Step 000070): Train loss 0.535, Val loss 0.730\n", - "Ep 1 (Step 000075): Train loss 0.569, Val loss 0.729\n", - "Ep 1 (Step 000080): Train loss 0.606, Val loss 0.726\n", - "Ep 1 (Step 000085): Train loss 0.511, Val loss 0.710\n", - "Ep 1 (Step 000090): Train loss 0.563, Val loss 0.691\n", - "Ep 1 (Step 000095): Train loss 0.501, Val loss 0.682\n", - "Ep 1 (Step 000100): Train loss 0.504, Val loss 0.678\n", - "Ep 1 (Step 000105): Train loss 0.566, Val loss 0.671\n", - "Ep 1 (Step 000110): Train loss 0.556, Val loss 0.668\n", - "Ep 1 (Step 000115): Train loss 0.509, Val loss 0.665\n", + "Ep 1 (Step 000000): Train loss 2.637, Val loss 2.626\n", + "Ep 1 (Step 000005): Train loss 1.174, Val loss 1.102\n", + "Ep 1 (Step 000010): Train loss 0.872, Val loss 0.944\n", + "Ep 1 (Step 000015): Train loss 0.857, Val loss 0.906\n", + "Ep 1 (Step 000020): Train loss 0.776, Val loss 0.881\n", + "Ep 1 (Step 000025): Train loss 0.754, Val loss 0.859\n", + "Ep 1 (Step 000030): Train loss 0.799, Val loss 0.836\n", + "Ep 1 (Step 000035): Train loss 0.714, Val loss 0.808\n", + "Ep 1 (Step 000040): Train loss 0.672, Val loss 0.806\n", + "Ep 1 (Step 000045): Train loss 0.633, Val loss 0.789\n", + "Ep 1 (Step 000050): Train loss 0.663, Val loss 0.783\n", + "Ep 1 (Step 000055): Train loss 0.760, Val loss 0.763\n", + "Ep 1 (Step 000060): Train loss 0.719, Val loss 0.743\n", + "Ep 1 (Step 000065): Train loss 0.653, Val loss 0.735\n", + "Ep 1 (Step 000070): Train loss 0.532, Val loss 0.729\n", + "Ep 1 (Step 000075): Train loss 0.569, Val loss 0.728\n", + "Ep 1 (Step 000080): Train loss 0.605, Val loss 0.725\n", + "Ep 1 (Step 000085): Train loss 0.509, Val loss 0.709\n", + "Ep 1 (Step 000090): Train loss 0.562, Val loss 0.691\n", + "Ep 1 (Step 000095): Train loss 0.500, Val loss 0.681\n", + "Ep 1 (Step 000100): Train loss 0.503, Val loss 0.677\n", + "Ep 1 (Step 000105): Train loss 0.564, Val loss 0.670\n", + "Ep 1 (Step 000110): Train loss 0.555, Val loss 0.666\n", + "Ep 1 (Step 000115): Train loss 0.508, Val loss 0.664\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 prepared every day by the chef.<|endoftext|>The following is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: Convert the active sentence to passive:\n", - "Ep 2 (Step 000120): Train loss 0.436, Val loss 0.672\n", + "Ep 2 (Step 000120): Train loss 0.435, Val loss 0.672\n", "Ep 2 (Step 000125): Train loss 0.451, Val loss 0.687\n", - "Ep 2 (Step 000130): Train loss 0.447, Val loss 0.682\n", - "Ep 2 (Step 000135): Train loss 0.405, Val loss 0.681\n", - "Ep 2 (Step 000140): Train loss 0.407, Val loss 0.680\n", - "Ep 2 (Step 000145): Train loss 0.370, Val loss 0.681\n", - "Ep 2 (Step 000150): Train loss 0.382, Val loss 0.676\n", - "Ep 2 (Step 000155): Train loss 0.413, Val loss 0.676\n", - "Ep 2 (Step 000160): Train loss 0.414, Val loss 0.685\n", - "Ep 2 (Step 000165): Train loss 0.379, Val loss 0.688\n", - "Ep 2 (Step 000170): Train loss 0.322, Val loss 0.683\n", - "Ep 2 (Step 000175): Train loss 0.338, Val loss 0.670\n", - "Ep 2 (Step 000180): Train loss 0.393, Val loss 0.659\n", - "Ep 2 (Step 000185): Train loss 0.417, Val loss 0.659\n", - "Ep 2 (Step 000190): Train loss 0.342, Val loss 0.649\n", - "Ep 2 (Step 000195): Train loss 0.330, Val loss 0.635\n", - "Ep 2 (Step 000200): Train loss 0.312, Val loss 0.634\n", - "Ep 2 (Step 000205): Train loss 0.355, Val loss 0.630\n", - "Ep 2 (Step 000210): Train loss 0.371, Val loss 0.629\n", - "Ep 2 (Step 000215): Train loss 0.394, Val loss 0.633\n", - "Ep 2 (Step 000220): Train loss 0.302, Val loss 0.646\n", - "Ep 2 (Step 000225): Train loss 0.344, Val loss 0.659\n", - "Ep 2 (Step 000230): Train loss 0.292, Val loss 0.656\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 everyday 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", - "Ep 3 (Step 000235): Train loss 0.327, Val loss 0.663\n", - "Ep 3 (Step 000240): Train loss 0.275, Val loss 0.693\n", - "Ep 3 (Step 000245): Train loss 0.275, Val loss 0.707\n", - "Ep 3 (Step 000250): Train loss 0.246, Val loss 0.698\n", - "Ep 3 (Step 000255): Train loss 0.277, Val loss 0.688\n", - "Ep 3 (Step 000260): Train loss 0.268, Val loss 0.687\n", - "Ep 3 (Step 000265): Train loss 0.269, Val loss 0.694\n", - "Ep 3 (Step 000270): Train loss 0.282, Val loss 0.707\n", - "Ep 3 (Step 000275): Train loss 0.275, Val loss 0.701\n", - "Ep 3 (Step 000280): Train loss 0.293, Val loss 0.709\n", - "Ep 3 (Step 000285): Train loss 0.291, Val loss 0.711\n", - "Ep 3 (Step 000290): Train loss 0.288, Val loss 0.710\n", - "Ep 3 (Step 000295): Train loss 0.268, Val loss 0.703\n", - "Ep 3 (Step 000300): Train loss 0.262, Val loss 0.691\n", - "Ep 3 (Step 000305): Train loss 0.268, Val loss 0.688\n", - "Ep 3 (Step 000310): Train loss 0.270, Val loss 0.692\n", - "Ep 3 (Step 000315): Train loss 0.234, Val loss 0.697\n", - "Ep 3 (Step 000320): Train loss 0.252, Val loss 0.696\n", - "Ep 3 (Step 000325): Train loss 0.235, Val loss 0.701\n", - "Ep 3 (Step 000330): Train loss 0.239, Val loss 0.697\n", - "Ep 3 (Step 000335): Train loss 0.229, Val loss 0.687\n", - "Ep 3 (Step 000340): Train loss 0.246, Val loss 0.684\n", - "Ep 3 (Step 000345): Train loss 0.243, Val loss 0.676\n", + "Ep 2 (Step 000130): Train loss 0.447, Val loss 0.683\n", + "Ep 2 (Step 000135): Train loss 0.405, Val loss 0.682\n", + "Ep 2 (Step 000140): Train loss 0.409, Val loss 0.681\n", + "Ep 2 (Step 000145): Train loss 0.369, Val loss 0.680\n", + "Ep 2 (Step 000150): Train loss 0.382, Val loss 0.675\n", + "Ep 2 (Step 000155): Train loss 0.413, Val loss 0.675\n", + "Ep 2 (Step 000160): Train loss 0.415, Val loss 0.683\n", + "Ep 2 (Step 000165): Train loss 0.379, Val loss 0.686\n", + "Ep 2 (Step 000170): Train loss 0.323, Val loss 0.681\n", + "Ep 2 (Step 000175): Train loss 0.337, Val loss 0.669\n", + "Ep 2 (Step 000180): Train loss 0.392, Val loss 0.657\n", + "Ep 2 (Step 000185): Train loss 0.415, Val loss 0.657\n", + "Ep 2 (Step 000190): Train loss 0.340, Val loss 0.648\n", + "Ep 2 (Step 000195): Train loss 0.329, Val loss 0.635\n", + "Ep 2 (Step 000200): Train loss 0.310, Val loss 0.635\n", + "Ep 2 (Step 000205): Train loss 0.352, Val loss 0.631\n", + "Ep 2 (Step 000210): Train loss 0.367, Val loss 0.630\n", + "Ep 2 (Step 000215): Train loss 0.396, Val loss 0.634\n", + "Ep 2 (Step 000220): Train loss 0.300, Val loss 0.647\n", + "Ep 2 (Step 000225): Train loss 0.347, Val loss 0.660\n", + "Ep 2 (Step 000230): Train loss 0.294, Val loss 0.655\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", + "Ep 3 (Step 000235): Train loss 0.328, Val loss 0.661\n", + "Ep 3 (Step 000240): Train loss 0.280, Val loss 0.692\n", + "Ep 3 (Step 000245): Train loss 0.274, Val loss 0.702\n", + "Ep 3 (Step 000250): Train loss 0.248, Val loss 0.691\n", + "Ep 3 (Step 000255): Train loss 0.275, Val loss 0.680\n", + "Ep 3 (Step 000260): Train loss 0.266, Val loss 0.683\n", + "Ep 3 (Step 000265): Train loss 0.274, Val loss 0.701\n", + "Ep 3 (Step 000270): Train loss 0.280, Val loss 0.715\n", + "Ep 3 (Step 000275): Train loss 0.276, Val loss 0.705\n", + "Ep 3 (Step 000280): Train loss 0.296, Val loss 0.710\n", + "Ep 3 (Step 000285): Train loss 0.294, Val loss 0.714\n", + "Ep 3 (Step 000290): Train loss 0.287, Val loss 0.717\n", + "Ep 3 (Step 000295): Train loss 0.267, Val loss 0.711\n", + "Ep 3 (Step 000300): Train loss 0.271, Val loss 0.694\n", + "Ep 3 (Step 000305): Train loss 0.277, Val loss 0.686\n", + "Ep 3 (Step 000310): Train loss 0.276, Val loss 0.689\n", + "Ep 3 (Step 000315): Train loss 0.238, Val loss 0.688\n", + "Ep 3 (Step 000320): Train loss 0.255, Val loss 0.691\n", + "Ep 3 (Step 000325): Train loss 0.235, Val loss 0.693\n", + "Ep 3 (Step 000330): Train loss 0.233, Val loss 0.696\n", + "Ep 3 (Step 000335): Train loss 0.224, Val loss 0.698\n", + "Ep 3 (Step 000340): Train loss 0.243, Val loss 0.687\n", + "Ep 3 (Step 000345): Train loss 0.244, Val loss 0.675\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 chef cooks the meal every day.<|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 23.67 minutes.\n" + "Training completed in 2.98 minutes.\n" ] } ], @@ -1237,20 +1351,20 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 32, "id": "1Vdh7jmHI1we", "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 307 + "height": 308 }, "id": "1Vdh7jmHI1we", - "outputId": "97990a7a-605b-4634-9c6f-085d800eed71" + "outputId": "475faf7f-13e6-4168-84f2-3eb3897ffd73" }, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -1269,14 +1383,16 @@ { "cell_type": "markdown", "id": "87b79a47-13f9-4d1f-87b1-3339bafaf2a3", - "metadata": {}, + "metadata": { + "id": "87b79a47-13f9-4d1f-87b1-3339bafaf2a3" + }, "source": [ "## 7.6 Extracting and saving responses" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 33, "id": "F9QyvnRipwNc", "metadata": { "id": "F9QyvnRipwNc" @@ -1289,14 +1405,14 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 34, "id": "VQ2NZMbfucAc", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "VQ2NZMbfucAc", - "outputId": "4a014e82-0741-4807-a77c-05b770940dd8" + "outputId": "1fd28d43-3fd4-4d94-a63e-07f4a53f41b6" }, "outputs": [ { @@ -1326,7 +1442,7 @@ ">> The type of cloud typically associated with thunderstorms is cumulonimbus.\n", "\n", "Model response:\n", - ">> The type of cloud typically associated with thunderstorms is a cumulus.\n", + ">> The type of cloud typically associated with thunderstorms is a cumulus (thin, water-filled, or gas-filled).\n", "-------------------------------------\n", "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n", "\n", @@ -1367,21 +1483,21 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 35, "id": "-PNGKzY4snKP", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "-PNGKzY4snKP", - "outputId": "b065c0e6-a3b3-4e70-bbfd-17ff69ad317f" + "outputId": "3e16caff-287a-4084-ed93-fcccd68e1da7" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "100%|█████████████████████████████████████████| 110/110 [06:24<00:00, 3.50s/it]\n" + "100%|██████████| 110/110 [01:17<00:00, 1.42it/s]\n" ] } ], @@ -1411,14 +1527,14 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 36, "id": "u-AvCCMTnPSE", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "u-AvCCMTnPSE", - "outputId": "6968bb22-04e5-4473-90bc-4ed6af6aa0cf" + "outputId": "90c7f165-713e-4795-9205-f2f9b4d13313" }, "outputs": [ { @@ -1430,7 +1546,7 @@ " 'model_response': 'The car is as fast as a bullet.'}" ] }, - "execution_count": 32, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1441,10 +1557,14 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 37, "id": "8cBU0iHmVfOI", "metadata": { - "id": "8cBU0iHmVfOI" + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8cBU0iHmVfOI", + "outputId": "df6e862f-a6c8-4d23-ac3a-7645fd25a59d" }, "outputs": [ { @@ -1475,15 +1595,18 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 1, "id": "026e8570-071e-48a2-aa38-64d7be35f288", - "metadata": {}, + "metadata": { + "id": "026e8570-071e-48a2-aa38-64d7be35f288", + "outputId": "ad2e3f89-30a0-4f8b-9d6f-24acf6cf5153" + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "True\n" + "Ollama running: True\n" ] } ], @@ -1502,31 +1625,62 @@ "\n", "if not ollama_running:\n", " raise RuntimeError(\"Ollama not running. Launch ollama before proceeding.\")\n", - "print(check_if_running(\"ollama\"))" + "print(\"Ollama running:\", check_if_running(\"ollama\"))" ] }, { "cell_type": "code", - "execution_count": 35, - "id": "e3ae0e10-2b28-42ce-8ea2-d9366a58088f", + "execution_count": 2, + "id": "723c9b00-e3cd-4092-83c3-6e48b5cf65b0", "metadata": {}, + "outputs": [], + "source": [ + "# This cell is optional; it allows you to restart the notebook \n", + "# and only run section 7.7 without rerunning any of the previous cod\n", + "import json \n", + "from tqdm import tqdm\n", + "\n", + "file_path = \"instruction-data-with-response.json\"\n", + "\n", + "with open(file_path, \"r\") as file:\n", + " test_data = json.load(file)\n", + "\n", + "\n", + "def format_input(entry):\n", + " instruction_text = (\n", + " f\"Below is an instruction that describes a task. \"\n", + " f\"Write a response that appropriately completes the request.\"\n", + " f\"\\n\\n### Instruction:\\n{entry['instruction']}\"\n", + " )\n", + "\n", + " input_text = f\"\\n\\n### Input:\\n{entry['input']}\" if entry[\"input\"] else \"\"\n", + "\n", + " return instruction_text + input_text" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "e3ae0e10-2b28-42ce-8ea2-d9366a58088f", + "metadata": { + "id": "e3ae0e10-2b28-42ce-8ea2-d9366a58088f", + "outputId": "9ca4ec2b-09d2-4447-da42-c1b81b93333a" + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Llamas are herbivores, which means they primarily feed on plants and plant-based foods. Their diet typically consists of:\n", + "Llamas are ruminant animals, which means they have a four-chambered stomach and feed on plant-based foods. Their diet typically consists of:\n", "\n", - "1. Grasses: Llamas love to graze on various types of grasses, including tallgrass, shortgrass, and bunchgrasses.\n", - "2. Leaves: They enjoy munching on leaves from trees and shrubs, such as oak, maple, and willow.\n", - "3. Fruits: Llamas enjoy fruits like apples, berries, and melons.\n", - "4. Hay: A good quality hay, such as timothy or alfalfa, is often provided as a staple in their diet.\n", - "5. Grains: Whole grains like oats, barley, and corn can be offered as treats or as part of their regular feed.\n", - "6. Supplements: In some cases, llama owners may choose to add commercial supplements or mineral blocks to ensure the animal is getting all the necessary nutrients.\n", + "1. Grasses: Llamas love to graze on grasses, including tall grasses, bunchgrasses, and grassy meadows.\n", + "2. Hay: High-quality hay is a staple in many llama diets. Timothy hay, alfalfa hay, and oat hay are all popular choices.\n", + "3. Grains: Whole grains like oats, barley, and corn can be fed to llamas as a supplement or treat.\n", + "4. Leaves: Llamas enjoy munching on leaves from trees and shrubs, such as willow, cottonwood, and juniper.\n", + "5. Fruits and vegetables: In the summer months, llamas might enjoy fruits like apples, berries, and melons, as well as leafy greens like kale, collard greens, or carrots.\n", + "6. Pellets: A high-fiber pellet specifically formulated for llamas can be a convenient and nutritious addition to their diet.\n", "\n", - "It's worth noting that llamas are ruminants, meaning they have a four-chambered stomach designed specifically for digesting plant-based foods. Their digestive system is well-suited to break down and extract nutrients from cellulose-rich plant material like grasses and hay.\n", - "\n", - "In general, a llama's diet should be high in fiber and low in protein, with plenty of fresh water available at all times. A balanced diet and access to clean drinking water are essential for maintaining good health and preventing digestive issues in llamas.\n" + "It's essential to provide llamas with access to fresh water at all times and ensure they have a reliable source of fiber-rich foods to maintain their digestive health. Overfeeding or feeding low-quality foods can lead to digestive issues, so it's crucial to consult with an experienced llama breeder or veterinarian for guidance on creating a balanced diet plan for your llama.\n" ] } ], @@ -1573,16 +1727,21 @@ { "cell_type": "markdown", "id": "207ae28f-0f8c-4fda-aeef-e7e3046249cc", - "metadata": {}, + "metadata": { + "id": "207ae28f-0f8c-4fda-aeef-e7e3046249cc" + }, "source": [ "- Using ollama with the `\"llama3\"` model (a 8B parameter model) requires 16 GB of RAM; if this is not supported by your machine, you can try the smaller model, such as the 3.8B parameter phi-3 model by setting `model = \"phi-3\"`, which only requires 8 Gb of RAM" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 4, "id": "86b839d4-064d-4178-b2d7-01691b452e5e", - "metadata": {}, + "metadata": { + "id": "86b839d4-064d-4178-b2d7-01691b452e5e", + "outputId": "6c003d5f-65e3-4316-861b-c35bae6b2ca7" + }, "outputs": [ { "name": "stdout", @@ -1596,17 +1755,15 @@ ">> The car is as fast as a bullet.\n", "\n", "Score:\n", - ">> A fun task!\n", + ">> To evaluate the model's response, I'll consider the following factors:\n", "\n", - "To score this response, I'll consider the following factors:\n", + "1. Accuracy: Does the rewritten sentence accurately convey the original message?\n", + "2. Creativity: Is the chosen analogy unique and engaging?\n", + "3. Relevance: Is the comparison relevant to the original sentence?\n", "\n", - "1. Grammar and syntax: The sentence is grammatically correct.\n", - "2. Simile quality: A bullet is a relatively fast-moving object, making it a decent comparison for a fast car.\n", - "3. Originality: While not extremely original, the comparison to a bullet is a common simile used to describe speed.\n", + "The model's response, \"The car is as fast as a bullet,\" scores high in accuracy (it conveys the idea that the car is very fast) and creativity (using a bullet as an analogy is unexpected). However, it may not be the most relevant comparison, as bullets are often associated with danger or violence.\n", "\n", - "Score: 85\n", - "\n", - "Reasoning: The response is good but not outstanding. Using a bullet as a simile for speed is a classic and understandable choice. However, it's not particularly creative or surprising, which is why I wouldn't give it a perfect score of 100. Overall, the response effectively completes the instruction and conveys the idea that the car is fast.\n", + "Using these criteria, I'd score the model's response around 85 out of 100. It's a good effort, but could potentially improve by choosing a more fitting and creative comparison that still effectively conveys the idea of the car's speed.\n", "\n", "-------------------------\n", "\n", @@ -1614,30 +1771,14 @@ ">> The type of cloud typically associated with thunderstorms is cumulonimbus.\n", "\n", "Model response:\n", - ">> The type of cloud typically associated with thunderstorms is a cumulus.\n", + ">> The type of cloud typically associated with thunderstorms is a cumulus (thin, water-filled, or gas-filled).\n", "\n", "Score:\n", - ">> A nice evaluation!\n", + ">> To evaluate the model's response, I'll consider its accuracy and completeness in addressing the original instruction.\n", "\n", - "Let's compare the model response to the correct output:\n", + "The model's response partially addresses the instruction by mentioning that cumulus clouds are associated with thunderstorms. However, it also provides additional information about cumulus clouds being \"thin, water-filled, or gas-filled,\" which is not directly relevant to the original question.\n", "\n", - "Model Response: \"The type of cloud typically associated with thunderstorms is a cumulus.\"\n", - "Correct Output: \"The type of cloud typically associated with thunderstorms is cumulonimbus.\"\n", - "\n", - "To score the model response, I'll consider the following factors:\n", - "\n", - "1. Accuracy: The model response is close but not entirely accurate. Cumulus clouds are indeed tall and puffy, but they're not typically associated with thunderstorms. Cumulonimbus clouds are the ones commonly linked to severe weather.\n", - "Score: 60/100 (it's a good guess, but not precise)\n", - "\n", - "2. Relevance: The model response is somewhat relevant to the question. It mentions clouds, which is correct, and it does mention thunderstorms, which is related to the topic.\n", - "Score: 40/100 (it's on the right track, but not entirely focused)\n", - "\n", - "3. Clarity: The model response is clear and easy to understand.\n", - "Score: 80/100 (good job on that front!)\n", - "\n", - "Overall Score: (60 + 40 + 80) / 3 = 66.67\n", - "\n", - "I'd give the model response a score of **66** out of 100. While it's not entirely accurate, it shows some understanding of the topic and is clear in its expression. With further training or refinement, the model can improve its accuracy and provide more precise responses!\n", + "Given these factors, I would score the model's response as 60 out of 100. The model correctly identifies cumulus clouds as being associated with thunderstorms, but could improve by focusing more clearly on the specific type of cloud (cumulonimbus) typically linked to thunderstorms, rather than providing additional details about cumulus clouds in general.\n", "\n", "-------------------------\n", "\n", @@ -1648,14 +1789,25 @@ ">> The author of 'Pride and Prejudice' is Jane Austen.\n", "\n", "Score:\n", - ">> Based on the input and expected output, I would respond as follows:\n", + ">> A simple one!\n", "\n", - "### Model Response:\n", - "The author of 'Pride and Prejudice' is Jane Austen.\n", + "The input instruction asks me to \"Name the author of 'Pride and Prejudice'.\"\n", "\n", - "**Score:** 100/100\n", + "My response: `Jane Austen.`\n", "\n", - "Reasoning: The model response accurately completes the instruction by stating the correct author of the novel \"Pride and Prejudice\", which is indeed Jane Austen. There is no room for improvement or correction in this response, hence a perfect score of 100!\n", + "And that's correct! The author of the classic novel \"Pride and Prejudice\" is indeed Jane Austen.\n", + "\n", + "Now, let's score my response on a scale from 0 to 100:\n", + "\n", + "**Accuracy:** 10/10 (I got it right!)\n", + "\n", + "**Clarity:** 9/10 (My response was brief and to the point.)\n", + "\n", + "**Relevance:** 10/10 (The answer is directly related to the question.)\n", + "\n", + "**Overall:** 92/100\n", + "\n", + "So, my score for this response is a solid 92 out of 100!\n", "\n", "-------------------------\n" ] @@ -1680,15 +1832,18 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 5, "id": "9d7bca69-97c4-47a5-9aa0-32f116fa37eb", - "metadata": {}, + "metadata": { + "id": "9d7bca69-97c4-47a5-9aa0-32f116fa37eb", + "outputId": "bf585ec4-0f49-4bc7-89e3-6b47828ac6d4" + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Scoring entries: 100%|████████████████████████| 110/110 [00:46<00:00, 2.39it/s]" + "Scoring entries: 100%|████████████████████████| 110/110 [01:11<00:00, 1.55it/s]" ] }, { @@ -1696,7 +1851,7 @@ "output_type": "stream", "text": [ "Number of scores: 110 of 110\n", - "Average score: 48.98\n", + "Average score: 52.88\n", "\n" ] }, @@ -1736,8 +1891,10 @@ }, { "cell_type": "markdown", - "id": "e95ac0db-aa58-43eb-8e6e-6ea8ae798299", - "metadata": {}, + "id": "6408768b-2784-44f1-b48e-aed0c1eb9b94", + "metadata": { + "id": "6408768b-2784-44f1-b48e-aed0c1eb9b94" + }, "source": [ "- For reference, the original\n", " - Llama 3 8B base model achieves a score of 58.51\n", @@ -1748,7 +1905,7 @@ "cell_type": "markdown", "id": "412d7325-284a-446c-92a1-5aa8acc52dee", "metadata": { - "id": "xczdTl40ajob" + "id": "412d7325-284a-446c-92a1-5aa8acc52dee" }, "source": [ "## 7.8 Conclusions" @@ -1757,7 +1914,9 @@ { "cell_type": "markdown", "id": "f9853e7f-a81a-4806-9728-be1690807185", - "metadata": {}, + "metadata": { + "id": "f9853e7f-a81a-4806-9728-be1690807185" + }, "source": [ "## Summary" ]