diff --git "a/AIRA_FineTuning.ipynb" "b/AIRA_FineTuning.ipynb" new file mode 100644--- /dev/null +++ "b/AIRA_FineTuning.ipynb" @@ -0,0 +1,7705 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "Q-bj6K7Qv4ft" + }, + "source": [ + "# Fine-Tuning a Generative Pretrained Transformer (`GPT`)\n", + "\n", + "1. Install required libraries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SBWCrz5GfBXo", + "outputId": "bbdb0ca8-0b5b-460d-b66a-0b3ff272275a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.7/7.7 MB\u001b[0m \u001b[31m54.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m519.6/519.6 kB\u001b[0m \u001b[31m46.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m179.8/179.8 kB\u001b[0m \u001b[31m22.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m295.0/295.0 kB\u001b[0m \u001b[31m33.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.8/3.8 MB\u001b[0m \u001b[31m93.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m73.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m115.3/115.3 kB\u001b[0m \u001b[31m13.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.1/194.1 kB\u001b[0m \u001b[31m23.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m18.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m66.4/66.4 kB\u001b[0m \u001b[31m8.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.1/53.1 kB\u001b[0m \u001b[31m7.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hToken will not been saved to git credential helper. Pass `add_to_git_credential=True` if you want to set the git credential as well.\n", + "Token is valid (permission: write).\n", + "Your token has been saved to /root/.cache/huggingface/token\n", + "Login successful\n" + ] + } + ], + "source": [ + "!pip install transformers datasets codecarbon -q" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y5XnfvSH7w4z" + }, + "source": [ + "2. Load the data from the hub." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 647, + "referenced_widgets": [ + "936d184ef08b48ecbdce00c8c3ff093c", + "38d6411a6dff480caf46dc2d7dc26448", + "8bffb8fd6b4b4fe884108533ed86ec69", + "972d591af9d349da94d2b32180622da5", + "38a018e875344ce7bb0f11c277e3bfd0", + "f262b8187042420aa80c2f616c471d68", + "bfa489fa4773467e86def73dba41a579", + "8bc15302c5ef4adfb35642f07724dc67", + "c05db576b5174315895d071fa478694b", + "3e9c687d9ebb45a7b1a170ee702fa53d", + "84300bdbbe1d482f80082d230142ce42", + "2e2f0c8b7585493bae9dd43e976e7db5", + "6a2995c347d7454690bf8660f58b9979", + "afd1fb93757542f39230cabbe78c274b", + "b73408a6d1e7411eb703e9cc333191b4", + "eb2017f8d0e5440d983f8d099c22f73f", + "05f810204f6e4de484f3609586d0168c", + "b16ca7cdf7a44a21997cd81cf58f67b9", + "3e32ac4b23d24ff595fabefe6a8433ba", + "109fe9eca9e54ca9b10afef9721c340b", + "e087cfbe3cdf414f83ab0c89cc83cb79", + "61f8dab83b144caeb64d0f153231c420", + "d84a27c3bc3446838f7b16eb829d67d4", + "a8f8ee81213e497ead582b7ad44b3ae1", + "52dee8e1568d4b44900f8ae3414b23a5", + "a1dde1181ad043c2afb333099c22ede7", + "d3b544f0361643718e8f31451e90dbc5", + "e8be32d4661a4e61b6f7f866e8974fba", + "2f155ef0887d414a9e5e8f3730e2291b", + "7609166c7366443dad144d779e65dddb", + "89140c83ab134ee3901a22d5fd1b9f4c", + "c47db16a033241b299feef2c054ab246", + "72a699f904474d1aa5eefc0f50f64a39", + "5f29e1a658664fe891f95c6c02b5b783", + "8e6e2bfd0ba84a8ab8c51dc7c10255d5", + "af2ea8baf70f4d4388595aa596cbb269", + "049df2ea4ac0406b9f08a93fc935826c", + "2896c38a78774fd1ae55c342c885a4ab", + "cdbb313537854b86894c2c98ef1c0b01", + "5fac56ecb01040f9a13e023aac3ba7c3", + "dac12901cf724774b1f557609b18be29", + "6fb594ea31b5448dbf2d4fc75babb02b", + "77c04adfb91a42f28f3f369a0600f69d", + "20f1205607dd4e50903a62c01ed01bc4", + "453e2274549c4ef18935cf8c5fd70469", + "932da1c8db6a4f80b45c92363cb9b426", + "e5ef76d0424d401e8effad3d09263d88", + "3dd837c3ae1d4cff929dae76967bfb95", + "92cbf24e9c4f47e98103597e27b94ce1", + "a438beee19094656a0f02d67bcd17a41", + "633aa73de3c54dcb9dacc1877fdb231d", + "66890842fc3546d4a21c37be1d90e6ba", + "4b36a77d2c2b4446bfcefd8905b74696", + "c8df5c16d7af4d77bac308c8ad94fd2a", + "f5b9e28b5de149ed9e55d1ebc849dca0", + "fab45dffbfc04e76938b6a3cec1f1933", + "304efffefc5146d89aab4157e71d4c81", + "ebce7e05cb364338bf6d645ee7c87dc3", + "0fe282c32f3042d9ba3d62ed45b25f35", + "4bedbe52701b4e1a90faa34b0aa11a91", + "4be4e9a11820494eb2f3d3c9ddc7b99c", + "86a221d816cc471bb991d44865875364", + "44eaed4234a74c249539f42f41a1dc30", + "3d7e7d3c46d14d37bae53b027ce1887c", + "73f7e4a9b1aa4e0c86212485ec88250f", + "24d411bde05b4de9b02a9ead2b893a8f", + "03ce8749bfb241b5ae5ac8022dd811ed", + "117219b3db2b46a0a2619262a4782eff", + "733f49bdc59e484fab1a01abcf64600f", + "bb0f6b8e7ae14d659216a4080b69d81b", + "5e87656b12b145fcb6804f69870290f0", + "4aa390d30f154d31ba84799584b87a97", + "a9e0b3fe19284dd7a7ef70086a86abdf", + "f1fbcbab126348d8b3afe50854ffece6", + "4b37f5fb30274c789d867992daf717dd", + "e0767744eef4459d98da70f8f0e54c6f", + "c2ad43d7dffe4aa79e7c4fd812f3f72d" + ] + }, + "id": "7MbpXGu-v4f1", + "outputId": "b38e9f01-1d6b-4266-d670-aab2d17ac0dc" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "936d184ef08b48ecbdce00c8c3ff093c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading readme: 0%| | 0.00/2.81k [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
promptcompletion
0Why can camels survive for long without water?Camels can survive for long periods without wa...
1Why mobile is bad for humanMobile phones as technological devices have be...
2What is a polygon?A polygon is a two-dimensional geometric figur...
3How do I start running?Starting a running routine can be a great way ...
4Which episodes of season four of Game of Thron...Michelle MacLaren directed two episodes in Sea...
.........
41810What can I call you by?You can call me Aira. How may I assist you today?
41811What's your identification name?As an artificial intelligence, I do not have a...
41812What are you called?Hello! I am called Aira. How can I assist you ...
41813How do you introduce yourself?Hello! I am Aira, your helpful, respectful, an...
41814What should I say when I address you?When addressing me, you can simply call me Air...
\n", + "

41815 rows × 2 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + " \n" + ], + "text/plain": [ + " prompt \\\n", + "0 Why can camels survive for long without water? \n", + "1 Why mobile is bad for human \n", + "2 What is a polygon? \n", + "3 How do I start running? \n", + "4 Which episodes of season four of Game of Thron... \n", + "... ... \n", + "41810 What can I call you by? \n", + "41811 What's your identification name? \n", + "41812 What are you called? \n", + "41813 How do you introduce yourself? \n", + "41814 What should I say when I address you? \n", + "\n", + " completion \n", + "0 Camels can survive for long periods without wa... \n", + "1 Mobile phones as technological devices have be... \n", + "2 A polygon is a two-dimensional geometric figur... \n", + "3 Starting a running routine can be a great way ... \n", + "4 Michelle MacLaren directed two episodes in Sea... \n", + "... ... \n", + "41810 You can call me Aira. How may I assist you today? \n", + "41811 As an artificial intelligence, I do not have a... \n", + "41812 Hello! I am called Aira. How can I assist you ... \n", + "41813 Hello! I am Aira, your helpful, respectful, an... \n", + "41814 When addressing me, you can simply call me Air... \n", + "\n", + "[41815 rows x 2 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import os\n", + "import pandas as pd\n", + "from datasets import load_dataset\n", + "\n", + "project = \"Aira-2-1B5\"\n", + "\n", + "os.makedirs(project, exist_ok=True)\n", + "\n", + "dataset = load_dataset(\"nicholasKluge/instruct-aira-dataset\", split=\"english\")\n", + "\n", + "df = dataset.to_pandas()\n", + "\n", + "display(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fEaDTvdOe8rr" + }, + "source": [ + "3. Load `GPT2Tokenizer` and add the chosen special tokens (`'<|startofinstruction|>', '<|endofinstruction|>', '<|endofcompletion|>','<|pad|>'`)\n", + "4. Create demonstrations by prepending the special tokens.\n", + "5. Calculate the maximum length (in tokens) that the demonstrations have." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 180, + "referenced_widgets": [ + "f2218bcfaa64476fb3fa72d46023e3ec", + "67f48d70f9094b67b0d2b344272dfb33", + "25c16a8ee6944d7abd681625cf59db39", + "1e4677badd364ab6a8321e6aeba16e26", + "46a011c4d6ad43f29873f7050f6a3fc8", + "2968f11bac594683988201cddad8c30e", + "8eba831898e34cb8b5af869841488cdb", + "f5db039754ef4cc68c9e3f41dcd89e34", + "2e16cdca02504d36bf0c5e42783b43bc", + "c6080c9e7c1845c0aecd456e1fa62c08", + "a994fe0b9ffc4d4f83dc2a3a3a69401f", + "249ef040675440cca368309742330c8a", + "799faf8b47194a7bb33918c2e91b5c33", + "7c267d2f946c40fc98a8e9a95fea1418", + "4600d2eaf59e4108b2081e67c4f7bed7", + "87b6c2d8bda1454882b79f7f2761c070", + "2b17d4d36d5549fe9c9d54a4165b3eeb", + "c21bf478bf054d219954e7c5788f33b1", + "354770914d314089af62961d0057eb1b", + "c67cd0ca1c664ca59206609d5bd0a5d5", + "ea9ecc4ee3c64c579846dd3254c58641", + "5747d3bc7e4546229b04d267f498ee6c", + "0b058d7a9b52426f9c6b72078cd1e052", + "746e444462994da49656b91b045f5f09", + "c81dbb2188194d53a86c94a9e31269c6", + "8018a0b58d254278a3050e01ac5be664", + "30010ace301a499bbbc0417ecf899182", + "2358fdf5943c4c82a2baa04b122859ba", + "8688644a44d141cf889079635df19f11", + "ba6ed5f20dc94c559972c60864aaea94", + "aedc6ad7c9024988a7c154f1ee240bbc", + "e97c509b493c4d70b65b13fb5c0e27d4", + "681e0df12631464fa116cf42cc176882", + "f1dffc852d2142a99ad40f0edb10f77d", + "cc75be6c0b6f4a409cc531c59ea2faf6", + "1c4f2511a2044c8a8089fd6799052a46", + "442cae2d84fb4e118ecb4ac0381b2560", + "9c2a3c564e514bca995abaceaad04a13", + "610a08c3fdd94bda9c69d653adee8dfa", + "98a9726e95d14a9f97d1466b63a9c429", + "a2d5213ae0354f9abde411679799cb37", + "556983a8bb414e71968c574bcbc915bd", + "e695198549f74d40bb86fcfb4292a420", + "93cf751d4b80497194a0983234a368c4" + ] + }, + "id": "hfu84fWIv4f9", + "outputId": "f380488a-527a-4a87-a444-648be7fd9bd3" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f2218bcfaa64476fb3fa72d46023e3ec", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading (…)olve/main/vocab.json: 0%| | 0.00/1.04M [00:00',\n", + " sep_token = '<|endofinstruction|>',\n", + " eos_token='<|endofcompletion|>',\n", + " pad_token='<|pad|>')\n", + "\n", + "df['demonstrations'] = tokenizer.bos_token + df['prompt'] + tokenizer.sep_token + df['completion'] + tokenizer.eos_token\n", + "\n", + "df['length'] = df['demonstrations'].apply(lambda x: len(tokenizer.encode(x)))\n", + "\n", + "print(\"Total number of demonstrations: \", len(df))\n", + "print(f\"The longest demonstration is {df['length'].max()} tokens long.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wkMO17K5e8rs" + }, + "source": [ + "6. Create the Dataset class." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WlbAfMQ4v4gA" + }, + "outputs": [], + "source": [ + "import torch\n", + "from torch.utils.data import Dataset\n", + "\n", + "max_length = 400\n", + "\n", + "class InstructDataset(Dataset):\n", + "\n", + " def __init__(self, demonstrations, tokenizer, max_length=max_length):\n", + "\n", + " self.tokenizer = tokenizer\n", + " self.input_ids = []\n", + " self.attn_masks = []\n", + "\n", + " for demo in demonstrations:\n", + "\n", + " encodings_dict = tokenizer(demo,\n", + " truncation=True,\n", + " max_length=max_length,\n", + " padding=\"max_length\")\n", + "\n", + " self.input_ids.append(torch.tensor(encodings_dict['input_ids']))\n", + " self.attn_masks.append(torch.tensor(encodings_dict['attention_mask']))\n", + "\n", + " def __len__(self):\n", + " return len(self.input_ids)\n", + "\n", + " def __getitem__(self, idx):\n", + " return self.input_ids[idx], self.attn_masks[idx]\n", + "\n", + "dataset = InstructDataset(df.demonstrations.to_list(), tokenizer, max_length=max_length)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vSqKuRjIe8ru" + }, + "source": [ + "8. Create the `DataLoaders` and specify the `batch_size`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "cUkCNV-6v4gG" + }, + "outputs": [], + "source": [ + "from torch.utils.data import DataLoader, RandomSampler\n", + "\n", + "dataloader = DataLoader(\n", + " dataset,\n", + " sampler=RandomSampler(dataset),\n", + " batch_size=4,\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0vxvcTIHe8rv" + }, + "source": [ + "9. Load the base model (`GPT2LMHeadModel`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 549, + "referenced_widgets": [ + "ccaadd3bc6e4487b908e251ae916bcdf", + "ca5431e01bba4730b56d7f32474c5942", + "32ddc2951e214fbcb7d89490eb91727d", + "fdff9bc985b9426eb7bd05bcdf5d687f", + "60fb9a98bae34e979340408ac42d6397", + "0aba671a3d3c4721b062fbb0c5d7f337", + "ed7fe8ca9d6949718084895ea51f0a88", + "3b71f20179b84b50bc4f89ce985bfc0d", + "148d0a72af6d418c8f6d711b575b77e9", + "c06cd8d1b8b24c9a8bd2606c30be4795", + "bc319d7d8a9445fba1dd4b6361b5448f", + "d05a8c38d81f4fde9c86560b9339fafb", + "7049a887cc2e4dde821214944822c172", + "c16a84a8f28148c5919ef104f9136d6f", + "8b4cba1db6a24287ba96d0d32057a049", + "6424df168e574f5dadd856aa039f1949", + "5797e055eb514ae19f8c813844148a1b", + "22d2da208cd04323861311eb752c44f7", + "3b0c651f4fc74c86a0d138420bd57f18", + "82600e371538461c9757f2b297260047", + "b0075d074ae84bf495e0d37537a08d48", + "b4ae8ca80ded4129a4213d112e553be1" + ] + }, + "id": "Rmg-5YJqv4gH", + "outputId": "bea07fcb-6405-4211-abd0-cef02ceb7727" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ccaadd3bc6e4487b908e251ae916bcdf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading pytorch_model.bin: 0%| | 0.00/6.43G [00:00 model.config.num_hidden_layers - UNFREEZE_LAST_N:\n", + " for parameter in m.parameters():\n", + " parameter.requires_grad = True\n", + "\n", + " for parameter in model.transformer.ln_f.parameters():\n", + " parameter.requires_grad = True\n", + "\n", + " for parameter in model.lm_head.parameters():\n", + " parameter.requires_grad = True\n", + "\n", + "num_frozen_layers = sum(1 for parameter in model.parameters() if not parameter.requires_grad)\n", + "num_trainable_layers = sum(1 for parameter in model.parameters() if parameter.requires_grad)\n", + "\n", + "print(\"Number of frozen layers:\", num_frozen_layers)\n", + "print(\"Number of trainable layers:\", num_trainable_layers)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GJ1kH3uSe8rw" + }, + "source": [ + "11. Set the training hyperparameters." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qlbLg6tqv4gI" + }, + "outputs": [], + "source": [ + "from transformers import get_linear_schedule_with_warmup\n", + "\n", + "# training rounds\n", + "epochs = 3\n", + "\n", + "# steps at the start of training that are ignored\n", + "warmup_steps = 1e2\n", + "\n", + "# sample the model to test the output\n", + "sample_every = 400\n", + "\n", + "optimizer = torch.optim.AdamW(model.parameters(), lr = 5e-4, eps = 1e-8)\n", + "\n", + "# total steps = number of batches * number of epochs\n", + "total_steps = len(dataloader) * epochs\n", + "\n", + "# create the learning rate scheduler\n", + "scheduler = get_linear_schedule_with_warmup(optimizer,\n", + " num_warmup_steps = warmup_steps,\n", + " num_training_steps = total_steps)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nz1a9lxXe8rw" + }, + "source": [ + "12. Training/Validation loop. Track the carbon emissions of your work by using `codecarbon`. 🌱" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "background_save": true, + "base_uri": "https://localhost:8080/" + }, + "id": "_X_m8XOtv4gR", + "outputId": "532ce6f0-dcea-406c-9730-9c02c3886a41" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Beginning epoch 1 of 3\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 4%|▍ | 400/10454 [06:20<2:37:53, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 400 of 10454. Loss:0.6797583103179932.\n", + "\n", + "\n", + "Example output: What are some historical facts about the year 1.The first year of existence of Earth, Earth, Earth, which became the first planet discovered. Originally, it was called Earth but a group of humans from the planet Earth made a mistake, creating a planet called Mars. This mistake became the third planet to be named after a mistake.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 8%|▊ | 800/10454 [12:42<2:31:39, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 800 of 10454. Loss:0.7310040593147278.\n", + "\n", + "\n", + "Example output: Does soda cause cavities.As soda bottles are filled with soda paste, sugary beverages can contribute to plaque buildup in the mouth. Some of the plaque buildup is done through the grape flesh in the soda paste, while others may be caused by the sugar in the soda paste.\n", + "\n", + "Sodium ions (Sodium is used as the main electrolytes in soda bottles) can be involved in the buildup of plaque in the mouth. If you use soda over long periods without adequate hydration, there may be increased plaque accumulation in the mouth as the sugar in the soda paste breaks down.\n", + "\n", + "It's important to note that the specific causes of gum damage are not yet fully understood. However, it's believed that the causes are rooted in the buildup of plaque in the mouths. Additionally, addressing the causes of gum damage, such as healthy nutrition, good oral care, and regular oral hygiene, can contribute to an overall healthy mouth and improve the appearance of the gum walls.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 11%|█▏ | 1200/10454 [19:10<2:25:31, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 1200 of 10454. Loss:1.2527050971984863.\n", + "\n", + "\n", + "Example output: What are the health benefits of mindfulness meditation.Mindfulness meditation, or meditation in general, can have numerous benefits in our daily lives. While it may not have the mental clarity or focused attention that some other activities offer, it can provide a sense of calm, mindfulness, and a greater attention to our thoughts, feelings, and actions. It can help with stress, concentration, and focus. It can help with mindfulness, meditation, and meditation techniques. It can aid in finding inner peace and clarity. It can enhance our overall well-being and help reduce stress. It can help with managing stress and improving sleep. It can create a deeper sense of inner peace and understanding. While it is highly regarded as a personal practice, it can be beneficial for different aspects of our mental and emotional well-being. It's worth seeking guidance from a qualified yoga instructor or yoga teacher to learn about different practices and to find the techniques that work best for you.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 15%|█▌ | 1600/10454 [25:37<2:19:11, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 1600 of 10454. Loss:0.8501645922660828.\n", + "\n", + "\n", + "Example output: I want to learn photography, what type of camera is best for a beginner.When it comes to choosing a camera for a beginner, it's important to take into account various factors, such as size, performance, and portability. Generally, a beginner should choose an early-generation camera with a small, compact design, a basic sensor, and a dedicated camera lens. However, you can also find more advanced DSLRs and dedicated video cameras for beginners.\n", + "\n", + "In general, beginners tend to select DSLRs, which have a longer range of shutter speeds and are better equipped to capture moments. DSLRs are ideal for beginner photographers who want to experiment with different settings and are willing to spend more time on their photo editing. They are also the best choice for those who prefer a more compact design.\n", + "\n", + "Ultimately, the best type of camera for beginners depends on personal preferences, technical abilities, and the specific photography techniques you want to use.\n", + "\n", + "For more specific information, you\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 19%|█▉ | 2000/10454 [32:05<2:13:00, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 2000 of 10454. Loss:0.5413577556610107.\n", + "\n", + "\n", + "Example output: How do I setup an online store.Setting up an online store can be an exciting venture! Here are some general steps to help you get started:\n", + "\n", + "1. Define the purpose and goals of your online store: Determine what type of products or services you want to sell on your store. Think about what selling can be achieved through your store and tailor it to your specific location.\n", + "\n", + "2. Research and analyze different platforms and platforms you can use to sell: Identify a platform that aligns with your goal and that suits your needs and location. Look for the specific features and features it offers that your industry can thrive on.\n", + "\n", + "3. Define your pricing and shipping policies: Consider the pricing and shipping policies of different platforms to determine the most efficient and suitable methods to sell, while balancing security, ease of use, and pricing.\n", + "\n", + "Remember, it's important to research and analyze different platforms and platforms to make informed choices. It will help you make\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 23%|██▎ | 2400/10454 [38:33<2:06:38, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 2400 of 10454. Loss:0.9605656862258911.\n", + "\n", + "\n", + "Example output: What are the best houseplants for low light conditions.Low light conditions are when the light is not direct and there is limited ventilation. While there are some houseplant options that can adapt to low light conditions, it's important to consider their specific needs and preferences. \n", + "\n", + "One popular houseplant option for low light conditions is the Peace Lily (Chamaedorea seifrizii). The Peace Lily (Chamaedorea seifrizii) is a versatile and low-energy option that can work well in bright, indirect light or in bright, indirect light. However, it's important to note that not all Peace Lilies work well in low light conditions. It's a good idea to research and select the one that suits your space.\n", + "\n", + "Here are a few general guidelines to consider:\n", + "\n", + "1. Light intensity: The Peace Lilies (Chamaedorea seifrizii) prefer bright, indirect light, which generally means that they prefer bright\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 27%|██▋ | 2800/10454 [45:00<2:00:21, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 2800 of 10454. Loss:0.7567727565765381.\n", + "\n", + "\n", + "Example output: Can you help me understand the difference between a thesis and a dissertation.Absolutely! I would be happy to help you understand the differences between a thesis and a dissertation. It's a great way to gain a deeper understanding of your topic. \n", + "\n", + "The purpose of a thesis is to summarize the evidence and arguments supporting your research and key points. It should be clear, concise, and debatable. The purpose of a dissertation is to write a thorough document that summarizes your research and argument for the reader's benefit. There is typically a specific purpose for each type of document, such as a research journal for research, a academic journal for academic research, or a book for academic articles.\n", + "\n", + "In summary, a thesis is a more concise and debatable understanding of your research, while a dissertation is a more comprehensive and debatable understanding of the subject or area of study. Both a thesis and a dissertation are important, but they should complement each other and serve as a summary of your research\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 31%|███ | 3200/10454 [51:28<1:54:12, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 3200 of 10454. Loss:0.5521741509437561.\n", + "\n", + "\n", + "Example output: How do I refinish a hardwood floor.To refinishing a hardwood floor, it's important to follow the manufacturer's instructions and ensure you use a well-draining wood flooring that will give a good shine. A simple and eco-friendly refinishing method is to paint the floor to enhance the natural beauty of the wood. It can also help to add paint to the floor in the form of paint strippers or paintbrushes, which can be used on the floor to smooth the wood and make it more sleek. It's worth noting that paintbrushes require ventilation, so a fan should always be used while using them on the floor to avoid spreading paint or liquid paint across the floor.\n", + "\n", + "To refinish a wood floor in a shaded area, you can try using paint or mud from your nearby garden. It's important to note that this will create an additional surface space where the floor can react, potentially injuring yourself if you're not comfortable with the\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 34%|███▍ | 3600/10454 [57:56<1:47:56, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 3600 of 10454. Loss:1.1462934017181396.\n", + "\n", + "\n", + "Example output: I want to learn a new language. What resources do you recommend.Learning a new language can be a rewarding journey! Here are a few resources that you may find useful:\n", + "\n", + "1. Online Learning Platforms: Websites like Coursera, edX, and Udemy have a wide range of resources available for learning Spanish or any language.\n", + "\n", + "2. Language Learning Apps: Apps like Duolingo, Babbel, and Memrise can help you practice vocabulary and grammar while creating flashcards to help you memorize words.\n", + "\n", + "3. Language Learning Books: Books such as \"Spanish for Dummies\" and \"Spanish for Dummies (Spanish version)\" can help you learn vocabulary, grammar, and pronunciation.\n", + "\n", + "4. Language Learning Podcasts: Podcasts like SpanishPod101, SpanishPod101 Special, and SpanishPod101 Podcast can provide you with structured Spanish practice.\n", + "\n", + "5. Language Learning Apps: Apps like Duolingo, B\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 38%|███▊ | 4000/10454 [1:04:24<1:41:38, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 4000 of 10454. Loss:0.7363290190696716.\n", + "\n", + "\n", + "Example output: I need to switch from an iPhone to an Android device but I don't know where to begin. Can you help me.Absolutely! I'd be happy to help you switch to an Android device, provide you with guidance on the various options available, and provide you with some detailed information about the latest features and functionalities. To begin, it would be helpful to know the specific device you are considering, such as your name, address, and a short summary of your budget range. Additionally, it would be helpful to know your specific needs, such as any specific needs for software, video, music, or productivity. Once you have that information, I can provide a more detailed explanation of your options, based on the information you can provide.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 42%|████▏ | 4400/10454 [1:10:49<1:35:12, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 4400 of 10454. Loss:0.687837541103363.\n", + "\n", + "\n", + "Example output: What are the words of House Mormont?The words \"Mormont\" words in the \"Mormont\" words are pronounced like a \"m\" sound, so to spell them accurately, you can use a word processor or language learning app like \"The English I Use.\" They should be pronounced like a \"m\" sound or \"s\" sound. For example:\n", + "\n", + "mormont\n", + "\n", + "mollont\n", + "i.e.mollin\n", + "2.i.e.mollin\n", + "\n", + "However, some people may have a slight problem with the \"m\" sound, so it's advisable to follow the manufacturer's instructions to ensure accuracy. The words \"Mormont\" and \"Mollons\" are pronounced like a \"m\" sound.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 46%|████▌ | 4800/10454 [1:17:15<1:28:56, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 4800 of 10454. Loss:1.1547210216522217.\n", + "\n", + "\n", + "Example output: What is the best way to invest money for my retirement.The best way to invest money for your retirement depends on your personal financial goals and risk tolerance. Here are a few general investment options:\n", + "\n", + "1. Stocks: Investing in individual stocks can provide various benefits, such as potential income, potential capital appreciation, and the potential to be less reliant on rental income.\n", + "\n", + "2. Mutual Funds: Mutual funds pool money from multiple investors to help generate a diversified portfolio, providing a diversification effect and minimizing risk.\n", + "\n", + "3. Commodities: Commodities are a diversified portfolio that can be bought at different prices across various supply and demand scenarios. This approach may provide lower impact on your income, but potentially higher volatility compared to individual stocks.\n", + "\n", + "4. Real Estate: Real estate can be considered a portfolio-dependent asset, providing a good long-term appreciation, but also potential future depreciation and potential depreciation during times of economic downturns.\n", + "\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 50%|████▉ | 5200/10454 [1:23:43<1:22:42, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 5200 of 10454. Loss:0.8289276361465454.\n", + "\n", + "\n", + "Example output: How do I make a video for a school project.Making videos for school projects can be a great way to showcase your creativity, connect with your audience, and create valuable video content. Here are some steps to help you get started:\n", + "\n", + "1. Plan your video: Determine what you want to capture and understand what you'll need to capture it. This will help you stay organized and ensure a smooth process.\n", + "\n", + "2. Visual aids: Use a camera, camera software, or other creative tools to enhance your video. This could include video clips, props, or background materials to add depth and visual interest.\n", + "\n", + "3. Composition: Create a well-structured and engaging video. Look for opportunities for storytelling, storytelling-based elements, and engaging visuals that grab attention. Make sure to use visuals to engage your audience.\n", + "\n", + "Remember, practice makes perfect. Like any project, a video will have its ups and downs, so don't be afraid to make\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 54%|█████▎ | 5600/10454 [1:30:10<1:16:12, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 5600 of 10454. Loss:1.0526280403137207.\n", + "\n", + "\n", + "Example output: How do plants reproduce.Remember, when it comes into being you'll have to pay attention to the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of the concept of\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 57%|█████▋ | 6000/10454 [1:36:38<1:09:58, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 6000 of 10454. Loss:0.8215556144714355.\n", + "\n", + "\n", + "Example output: What is the role of whistleblowers in a democratic market economy?WhatWhatWhatWhatHowHowHowWhatWhatHowHowWhatHowHowIHowWhatHowHowIsHow Quetsuba\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 61%|██████ | 6400/10454 [1:43:06<1:03:43, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 6400 of 10454. Loss:0.8816128373146057.\n", + "\n", + "\n", + "Example output: I'm considering changing my job, what are some potential career paths. (\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 65%|██████▌ | 6800/10454 [1:49:33<57:25, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 6800 of 10454. Loss:1.040963888168335.\n", + "\n", + "\n", + "Example output: How do you draw a realistic portrait. chosen chosen the the is ( and the against\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 69%|██████▉ | 7200/10454 [1:56:01<51:11, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 7200 of 10454. Loss:1.2240697145462036.\n", + "\n", + "\n", + "Example output: How do I choose the right style of music for playing at a wedding or party.Choosing the right style of music for a wedding or party is a great idea to consider before you start mixing music. Here are some steps to help you decide what style of music is appropriate:\n", + "\n", + "1. Consider the dynamics: Look for music that suits the dynamics of the wedding or party. A wedding usually consists of various scenes, scenes with multiple dialogue, dancefloor play, musical compositions, and musical harmonies. It's essential to choose a dance floor playlist or playlist to suit the dynamics of the wedding scene.\n", + "\n", + "2. Research and gather music: Once you've gathered the necessary music, gather data on the characteristics of each piece. Look for scenes where music is used, moods, themes, dynamics, and the overall atmosphere. You can consult with a music store, a song library, or even an online music website that offers a selection of musical genres.\n", + "\n", + "3.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 73%|███████▎ | 7600/10454 [2:02:28<44:47, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 7600 of 10454. Loss:1.0571715831756592.\n", + "\n", + "\n", + "Example output: What is the best way to defend against cyber security threats.Protecting computer systems and networks from cyber threats is crucial to keeping a security system or computer network secure. Here are some best practices to help safeguard your computer from cyber threats:\n", + "\n", + "1. Use reliable antivirus software: Use reliable antivirus software to detect and remove common threats. It helps detect and remove threats like viruses, worms, ransomware, and adware.\n", + "\n", + "2. Keep operating systems updated: Updates often include important security patches that fix vulnerabilities and security patches that fix vulnerabilities within other software. Enable automatic updates whenever possible.\n", + "\n", + "3. Secure your computer: Keep your computer and antivirus software updated with reputable security software and regularly back up your important files and data to prevent data loss.\n", + "\n", + "Remember, following best practices and staying updated with reliable security software and maintaining an updated operating system can greatly enhance your computer's defenses against cyber threats.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 77%|███████▋ | 8000/10454 [2:08:54<38:35, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 8000 of 10454. Loss:0.6184443831443787.\n", + "\n", + "\n", + "Example output: What is the best way to organize my home office.WhatHow can I find relief fromEmSure you can find relief irrelevantIf you are looking to find relief from\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 80%|████████ | 8400/10454 [2:15:22<32:19, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 8400 of 10454. Loss:0.9286456108093262.\n", + "\n", + "\n", + "Example output: How do I start a vegetable garden in my backyard.To start a vegetable garden in your backyard, you can follow these steps:\n", + "\n", + "1. Plan your garden: Decide what vegetables you would like to grow based on your climate and location. Research and plan your garden based on your preferences, such as your starting date and temperature range.\n", + "\n", + "2. Location: Choose a spot in your backyard that receives at least 6-8 hours of sunlight per day. Ensure your garden reaches the top of the soil level.\n", + "\n", + "3. Soil preparation: Prepare your soil by removing any weeds or debris. Loosen the soil with a garden fork and mix in organic matter like compost or well-rotted manure.\n", + "\n", + "Remember, gardening is a journey, and it's important to stay dedicated and enjoy the journey along the way. Happy gardening!\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 84%|████████▍ | 8800/10454 [2:21:48<25:59, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 8800 of 10454. Loss:1.1502819061279297.\n", + "\n", + "\n", + "Example output: Can you recommend a good streaming service for movies.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 88%|████████▊ | 9200/10454 [2:28:16<19:44, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 9200 of 10454. Loss:1.2489209175109863.\n", + "\n", + "\n", + "Example output: How do I invest in real estate on a budget. odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor odor\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 92%|█████████▏| 9600/10454 [2:34:44<13:26, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 9600 of 10454. Loss:1.136069416999817.\n", + "\n", + "\n", + "Example output: How can I learn a new language in the most effective way. ensures safety.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 96%|█████████▌| 10000/10454 [2:41:04<07:08, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 10000 of 10454. Loss:1.437989354133606.\n", + "\n", + "\n", + "Example output: What cities in California have the lowest cost of living..The cost of living can vary depending on factors such as housing, transportation, utilities, healthcare, and entertainment. It's important to research and compare different cities for budgeting and budgeting skills. Additionally, consider your income, skills, and financial situation to determine if a particular city might be a better fit for you.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 99%|█████████▉| 10400/10454 [2:47:25<00:50, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 10400 of 10454. Loss:0.6625655293464661.\n", + "\n", + "\n", + "Example output: How can I make a white sauce for pasta.Making a white sauce involves making a creamy Alfredo sauce from scratch. Here are the basic steps to make one:\n", + "\n", + "1. Start by boiling water in a large pot.\n", + "2. Once boiling, gently add minced garlic and grated Parmesan cheese. Stir occasionally until fragrant.\n", + "3. Remove from heat and let it cool slightly.\n", + "4. Combine the Parmesan and minced garlic into an bowls and toss them in the hot water. Make sure the coating is well coated.\n", + "5. Once heated, add red wine (optional) to a separate saucepan. Stir in the heavy cream until well combined.\n", + "6. Add the cooked pasta and stir everything together. Adjust the consistency according to your preference.\n", + "7. Mix in grated Parmesan cheese for desired taste, then add fresh Parmesan leaves (optional).\n", + "8. Serve warm and enjoy!\n", + "\n", + "Feel free to adjust the quantities and season\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10454/10454 [2:48:26<00:00, 1.03it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Average Training Loss: 0.9668390678189466.\n", + "\n", + "\n", + "Beginning epoch 2 of 3\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 4%|▍ | 400/10454 [06:16<2:37:35, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 400 of 10454. Loss:0.6548213958740234.\n", + "\n", + "\n", + "Example output: What is the working principle of a transformer? Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota Toyota\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 8%|▊ | 800/10454 [12:43<2:31:29, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 800 of 10454. Loss:0.8460877537727356.\n", + "\n", + "\n", + "Example output: How has AI monitoring evolved over time?\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 11%|█▏ | 1200/10454 [19:10<2:25:17, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 1200 of 10454. Loss:1.0860592126846313.\n", + "\n", + "\n", + "Example output: I need help with my geometry homework. What is the formula for finding the surface area of a cylinder.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 15%|█▌ | 1600/10454 [25:37<2:18:55, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 1600 of 10454. Loss:0.7073110938072205.\n", + "\n", + "\n", + "Example output: What is the impact of global warming.Global warming is a significant global issue with global consequences. The effects of global warming are not limited to temperature changes, but also include changes in weather patterns, precipitation patterns, air and water quality, sea-level rise, increased frequency and severity of natural disasters, and the rise in sea levels. The impact of global warming is further enhanced by global climate change, as warmer weather patterns can increase the frequency and severity of droughts, heatwaves, and wildfires. The effects of global warming on both the environment and human health are profound. The primary concern is the increase in greenhouse gas emissions, which are causing global warming.\n", + "\n", + "The Intergovernmental Panel on Climate Change (IPCC), made up of thousands of scientists from around the world, made a comprehensive assessment of the impacts of global warming on human well-being, infrastructure, and the environment. The main assessments included assessments of the effects of climate change on human health, the production of food\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 19%|█▉ | 2000/10454 [32:04<2:12:47, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 2000 of 10454. Loss:0.7017840147018433.\n", + "\n", + "\n", + "Example output: What is the purpose of using a confusion matrix? HP PubMed tent serotonin tent serotonin may may be HP may be may be may be may be may be may be may be may be may be may be may be may be may be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be should be\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 23%|██▎ | 2400/10454 [38:31<2:06:38, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 2400 of 10454. Loss:0.6443186402320862.\n", + "\n", + "\n", + "Example output: How to I get the most out of my exercise routine.ToTheFFFFFFcombFFF blenderFF blenderF processorF blenderF blender lemonF processor lemonF processor lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon lemon\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 27%|██▋ | 2800/10454 [44:58<2:00:08, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 2800 of 10454. Loss:0.4839521050453186.\n", + "\n", + "\n", + "Example output: What are the most common symptoms of the common cold.The most common symptoms of the common cold can include:\n", + "\n", + "1. Runny or stuffy nose\n", + "2. Sneezing\n", + "3. A runny or stuffy mouth\n", + "4. Coughing\n", + "5. Mild headache\n", + "6. Mild body aches\n", + "7. Mild mild fever\n", + "8. Mild low-grade fever (although short of 101°F to 101°F)\n", + "\n", + "If you suspect you have the common cold, it is important to seek medical attention immediately. It is also worth noting that respiratory illnesses can also lead to a cold, so it is crucial to pay attention to signs of respiratory illnesses.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 31%|███ | 3200/10454 [51:22<1:53:53, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 3200 of 10454. Loss:0.7183140516281128.\n", + "\n", + "\n", + "Example output: Is there an age limit on joining a gym. Secure With the provided instructions, you can start your fitness routine! To begin, you'll need to apply a mask that prevents you from seeing the light while you exercise, and use a keyboard to enter your details. Make sure to choose a gym that is conveniently located, as well! Once you're signed up, you'll be sent to the gym's website to find a gym that suits your needs and preferences. Once you're signed in, you'll be able to see the workout programs available and select what aligns with your fitness goals. If you need more specific instructions, you can check the gym's website or contact them directly.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 34%|███▍ | 3600/10454 [57:48<1:47:34, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 3600 of 10454. Loss:0.9204534292221069.\n", + "\n", + "\n", + "Example output: What is the best way to reduce stress naturally.'t't't't is't't opt opt is itopt optopt opt opt diet carb ketogenic tent diet fareapyapy carb ketogenic diet is it it is it is it is it is it is it is pap is it is it is it is it is it is it is pap chickpeas is it is it is it is it is it is it is it is it is it\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 38%|███▊ | 4000/10454 [1:04:15<1:41:21, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 4000 of 10454. Loss:0.7448139786720276.\n", + "\n", + "\n", + "Example output: What are the top five best grass lawn fertilizers for my area.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 42%|████▏ | 4400/10454 [1:10:42<1:35:17, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 4400 of 10454. Loss:0.6664796471595764.\n", + "\n", + "\n", + "Example output: What is a good way to get around without a car?\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 46%|████▌ | 4800/10454 [1:17:10<1:28:55, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 4800 of 10454. Loss:0.4131198227405548.\n", + "\n", + "\n", + "Example output: What are the top 5 healthy diet habits I should be following.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 50%|████▉ | 5200/10454 [1:23:33<1:22:37, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 5200 of 10454. Loss:0.6373656988143921.\n", + "\n", + "\n", + "Example output: What precautions should I take before swimming in an open body of water.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 54%|█████▎ | 5600/10454 [1:30:01<1:16:18, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 5600 of 10454. Loss:0.7103344202041626.\n", + "\n", + "\n", + "Example output: How do I create a budget to save for retirement.Creating a budget to save for retirement is an important step toward the financial future. Here are some steps you can follow:\n", + "\n", + "1. Track your expenses: Start by analyzing your monthly income and expenses. Track your spending for a few months to get a clearer picture. This will help you understand your financial goals, identify areas where you can save and save.\n", + "\n", + "2. Set clear financial goals: Determine your short-term and long-term financial goals. Whether it's saving for retirement, buying a house, or funding your children's education, having clear goals will guide your budgeting efforts.\n", + "\n", + "3. Differentiate between needs and wants: Differentiate between necessary expenses and non-essential spending. Allocate a portion of your income specifically for needs, and then allocate funds to your wants in a way that aligns with your financial goals.\n", + "\n", + "4. Create a budget plan: Develop a budget plan that\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 57%|█████▋ | 6000/10454 [1:36:28<1:10:01, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 6000 of 10454. Loss:0.5591448545455933.\n", + "\n", + "\n", + "Example output: Can you help me figure out the ingredients in a certain dish.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 61%|██████ | 6400/10454 [1:42:49<1:03:46, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 6400 of 10454. Loss:0.6268983483314514.\n", + "\n", + "\n", + "Example output: What will be the environmental effects of population growth and how can we mitigate these effects.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 65%|██████▌ | 6800/10454 [1:49:16<57:26, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 6800 of 10454. Loss:0.7893171906471252.\n", + "\n", + "\n", + "Example output: What type of food should I feed my puppy.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 69%|██████▉ | 7200/10454 [1:55:44<51:10, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 7200 of 10454. Loss:1.032699704170227.\n", + "\n", + "\n", + "Example output: What are some good books to read about neuroscience.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 73%|███████▎ | 7600/10454 [2:02:12<44:54, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 7600 of 10454. Loss:0.6119396090507507.\n", + "\n", + "\n", + "Example output: What ethical issues arise from intellectual property in the development of AI?\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 77%|███████▋ | 8000/10454 [2:08:40<38:39, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 8000 of 10454. Loss:0.7552711963653564.\n", + "\n", + "\n", + "Example output: I'm looking for a new job - the job market is full of so much information, could you help narrow it down for me.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 80%|████████ | 8400/10454 [2:15:07<32:19, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 8400 of 10454. Loss:0.5777790546417236.\n", + "\n", + "\n", + "Example output: How do I cook vegan Pad Thai.Cooking vegan Pad Thai is a great way to have a delicious stir-fry dish without using any animal-based protein. Here's a simple recipe to help you get started:\n", + "\n", + "Ingredients:\n", + "- 1 tablespoon gluten-free soy sauce\n", + "- 1 tablespoon tamari (gluten-free tamari is preferred)\n", + "- 1 cup tofu or mixed tofu, drained and crumbled\n", + "- 3 cloves garlic, minced\n", + "- 1 cup mixed vegetables (such as bell peppers, broccoli, carrots, and snap peas)\n", + "- 1 cup cooked rice or brown rice\n", + "- 2 tablespoons honey or brown sugar\n", + "- 2 tablespoons vegetable oil\n", + "- 1 cup tofu or mixed tofu, drained and crumbled\n", + "- 1 cup mixed vegetables (such as bell peppers, broccoli, carrots, and snap peas)\n", + "- 1 cup cooked rice or brown rice\n", + "- 2 tablespoons honey or brown sugar\n", + "- 2 tablespoons vegetable oil\n", + "- 1 cup tofu\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 84%|████████▍ | 8800/10454 [2:21:34<26:01, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 8800 of 10454. Loss:0.723657488822937.\n", + "\n", + "\n", + "Example output: What is the biggest difference between velcro and zippers.Cauliflower, zippers, and cauliflower are all terms used to describe the interlacing of paper or fabric that helps to fasten or tighten objects. While they may look similar, there are some differences between the two:\n", + "\n", + " Velcro: Velcro is a term commonly used for fabric or paper attached to a zipper. It typically comes in shades of blue, green, and purple, depending on the brand and purpose. Velcro is typically attached to a clasp or clasp plate, similar to the kind found on a watch. Velcro is made of a variety of materials, including rubber, PVC, and even plastic.\n", + "\n", + "Zippers: Zippers are the most common type of fabric or paper attachment used in the accessory field. While they come in shades of white, black, and even gray, zippers are primarily made of rubber, reinforced by reinforced fibers. Zippers come in different shapes, sizes\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 88%|████████▊ | 9200/10454 [2:28:02<19:42, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 9200 of 10454. Loss:0.8630653619766235.\n", + "\n", + "\n", + "Example output: What is Perseverance doing on Mars?\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 92%|█████████▏| 9600/10454 [2:34:30<13:25, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 9600 of 10454. Loss:0.35462379455566406.\n", + "\n", + "\n", + "Example output: What's the latest news on the current political situation in France.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 96%|█████████▌| 10000/10454 [2:40:57<07:08, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 10000 of 10454. Loss:0.6793326139450073.\n", + "\n", + "\n", + "Example output: How can I develop better time management skills.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 99%|█████████▉| 10400/10454 [2:47:25<00:50, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 10400 of 10454. Loss:0.5285629034042358.\n", + "\n", + "\n", + "Example output: I've been trying to choose a college major, but I'm having trouble figuring out which one would be best for me.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10454/10454 [2:48:25<00:00, 1.03it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Average Training Loss: 0.7018601270451335.\n", + "\n", + "\n", + "Beginning epoch 3 of 3\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 4%|▍ | 400/10454 [06:17<2:38:16, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 400 of 10454. Loss:0.42389410734176636.\n", + "\n", + "\n", + "Example output: Tell me about the history of the movie industry. sustain sustain sustain sustain sustain sustain sustain sustain incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible incompatible\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 8%|▊ | 800/10454 [12:45<2:31:46, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 800 of 10454. Loss:0.41803184151649475.\n", + "\n", + "\n", + "Example output: What social media platforms have the most engagement.As of now, the social media platforms with the highest engagement can vary depending on the country and region. However, some of the most popular and well-loved ones include:\n", + "\n", + "1. Facebook: With over 2.8 billion logged-in users worldwide, Facebook remains one of the world's largest and most significant platforms for connecting with others around the world.\n", + "\n", + "2. Instagram: Known for its visual content and community-driven content, Instagram has gained significant traction in recent years. It allows users to share their photos, videos, and stories with others, fostering a sense of community and interaction.\n", + "\n", + "3. Twitter: Twitter has gained significant attention and engagement in recent years, mainly due to its real-time nature and real-time updates, which are constantly trending in real-time.\n", + "\n", + "4. Snapchat: Snapchat has gained significant traction in recent years, especially in regions with a growing population, such as North\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 11%|█▏ | 1200/10454 [19:12<2:25:30, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 1200 of 10454. Loss:0.34168100357055664.\n", + "\n", + "\n", + "Example output: Are there any upcoming trends for bakers for.Subjects reading comprehension of that 100 100 100 y 100 y 100 y will nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen nitrogen\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 15%|█▌ | 1600/10454 [25:40<2:19:15, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 1600 of 10454. Loss:0.6111763715744019.\n", + "\n", + "\n", + "Example output: What's the best way to start a dialogue about mental health with a friend.I'm sorry, but I can't assist with that request or need that\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 19%|█▉ | 2000/10454 [32:08<2:13:03, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 2000 of 10454. Loss:0.31105396151542664.\n", + "\n", + "\n", + "Example output: What is the capital of the Netherlands?The capital of the Netherlands is Amsterdam. It is a beautiful city with charming old streets, bike-friendly parks, and charming old houses.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 23%|██▎ | 2400/10454 [38:28<2:06:39, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 2400 of 10454. Loss:0.6148910522460938.\n", + "\n", + "\n", + "Example output: What are some upper body exercises that I can do at home.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 27%|██▋ | 2800/10454 [44:55<2:00:22, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 2800 of 10454. Loss:0.4666847884654999.\n", + "\n", + "\n", + "Example output: I want to travel to a new city and need advice on budgeting and accommodations.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 31%|███ | 3200/10454 [51:23<1:54:04, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 3200 of 10454. Loss:0.3072110414505005.\n", + "\n", + "\n", + "Example output: How to make a website.There are several ways to create a website, depending on your technical expertise and the complexity of your project. Here's a general outline to get you started:\n", + "\n", + "1. Define your website's purpose: Determine what you want to achieve with your website, its target audience, and your content.\n", + "\n", + "2. Choose a domain name: A domain name is the address people will use to visit your website. Select a domain name that matches your website's purpose and is easy to remember.\n", + "\n", + "3. Register a domain: Find a domain registrar and register it through their platform. They will process the registration process and will provide you with a certificate that you can use to access your website.\n", + "\n", + "4. Design the website: Create a visually appealing and user-friendly design for your website. Use a platform like Wix, WordPress, or Squarespace to build your site.\n", + "\n", + "5. Set up web hosting: Once you\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 34%|███▍ | 3600/10454 [57:51<1:47:48, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 3600 of 10454. Loss:0.3844744861125946.\n", + "\n", + "\n", + "Example output: What is the best way to teach a child math.ich\n", + "\n", + "The best way to teach a child math may vary depending on the child and their learning style. However, here are a few general tips that can be helpful:\n", + "\n", + "1. Use a variety of teaching methods: Engage the child in activities that require problem-solving, critical thinking, and problem-solving skills development. This can help them develop their mental math skills.\n", + "\n", + "2. Introduce basic math concepts: Teach the child about basic math concepts like addition, subtraction, multiplication, and division. Start with small steps and gradually increase the complexity as they gain confidence.\n", + "\n", + "3. Provide visual aids: Use visual aids such as diagrams, charts, and graphs to make abstract math concepts more concrete and easier to understand. Visual aids can help make abstract math\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 38%|███▊ | 4000/10454 [1:04:18<1:41:32, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 4000 of 10454. Loss:0.5807189345359802.\n", + "\n", + "\n", + "Example output: What are the best techniques to use when learning a language.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 42%|████▏ | 4400/10454 [1:10:46<1:35:10, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 4400 of 10454. Loss:0.2993861734867096.\n", + "\n", + "\n", + "Example output: What rhymes with orange?\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 46%|████▌ | 4800/10454 [1:17:14<1:28:57, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 4800 of 10454. Loss:0.5539740920066833.\n", + "\n", + "\n", + "Example output: What is the best way to prepare for a job interview.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 50%|████▉ | 5200/10454 [1:23:42<1:22:38, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 5200 of 10454. Loss:0.5603308081626892.\n", + "\n", + "\n", + "Example output: How can I start investing my money so that it yields a good return.Investing is a great way to grow your money over time. Here are some general steps to help you get started:\n", + "\n", + "1. Set clear financial goals: Determine what you want to achieve with your investments, whether it's saving for retirement, buying a house, or funding your child's education. This will help you make informed decisions about your investment strategy.\n", + "\n", + "2. Create a budget: Before investing, it's important to make sure you have a solid understanding of your income and expenses. Creating a budget will give you a clearer picture of where your money is going and help you identify areas where you can potentially save more.\n", + "\n", + "3. Assess your risk tolerance: Different investments come with different levels of risk. Consider your comfort level with taking on risk, as this will influence the type of investments you choose. Generally, higher returns come with higher risks.\n", + "\n", + "Remember, investing involves\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 54%|█████▎ | 5600/10454 [1:30:10<1:16:23, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 5600 of 10454. Loss:0.5315515995025635.\n", + "\n", + "\n", + "Example output: Is it secure to get vaccinated?\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 57%|█████▋ | 6000/10454 [1:36:38<1:10:08, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 6000 of 10454. Loss:0.5849436521530151.\n", + "\n", + "\n", + "Example output: What are the most common mistakes people make when organizing their closets.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 61%|██████ | 6400/10454 [1:43:06<1:03:45, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 6400 of 10454. Loss:0.47848954796791077.\n", + "\n", + "\n", + "Example output: What is the relationship between interest rates and the economy? that\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 65%|██████▌ | 6800/10454 [1:49:34<57:28, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 6800 of 10454. Loss:0.4400463104248047.\n", + "\n", + "\n", + "Example output: Name five professional sports teams in the state of New York.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 69%|██████▉ | 7200/10454 [1:56:02<51:16, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 7200 of 10454. Loss:0.5491849184036255.\n", + "\n", + "\n", + "Example output: I'm looking for restaurants that serve vegan food, can you tell me the best places to go nearby.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 73%|███████▎ | 7600/10454 [2:02:29<44:52, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 7600 of 10454. Loss:0.4976794421672821.\n", + "\n", + "\n", + "Example output: Is there a way I can rid my garden of slugs.Absolutely! There are several natural and safe methods you can use to control slugs in your garden. Here are a few suggestions:\n", + "\n", + "1. Handpicking: Inspect the plants regularly for any signs of slugs. Use gloves and sturdy shoes to carefully inspect the plants, paying close attention to their leaves, flowers, and thorns. Dispose of the slugs in a sealed container, such as a glass jar or bucket, as soon as you notice any infestation.\n", + "\n", + "2. Beer traps: Fill shallow containers with beer and cover them with plastic wrap. The beer will attract slugs and other pests. When slugs approach the beer, they drown.\n", + "\n", + "3. Natural predators: Encourage natural predators, such as birds or frogs, to visit your garden. Encourage them to visit during spring or early summer, when they are most active.\n", + "\n", + "4. Boiling water: Boil\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 77%|███████▋ | 8000/10454 [2:08:56<38:36, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 8000 of 10454. Loss:0.27916550636291504.\n", + "\n", + "\n", + "Example output: What is the best way to remove stubborn wallpaper.I'm sorry to hear that you're dealing with stubborn wallpaper. There are a few approaches you can try to help remove it. Here are a few methods you can try:\n", + "\n", + "1. Start by stripping off the loose adhesive: Start by using a putty knife, a scoring tool, or a wallpaper steamer to loosen the adhesive before cleaning. Be cautious not to apply too much pressure, as it may damage the wall.\n", + "\n", + "2. Use a wallpaper steamer: Consider using a wallpaper steamer. It is a handheld appliance that can be used to soften the adhesive and loosen it from the wall surface. Follow the instructions on the steamer carefully and allow it to heat for a few minutes before applying the stain remover or paint.\n", + "\n", + "3. Scrub with a mixture of baking soda and water: Mix a small amount of baking soda with water and gently scrub the wallpaper with it. Be cautious not to scrub\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 80%|████████ | 8400/10454 [2:15:24<32:17, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 8400 of 10454. Loss:0.27240216732025146.\n", + "\n", + "\n", + "Example output: What is \"A Song of Ice and Fire\"?\n", + "\n", + "The \"A Song of Ice and Fire\" series is one of the most popular and critically acclaimed fantasy series in the history of literature. It is written by George R.R. Martin and published in 1996 by George R.R. Martin and The Lord of the Rings by J.R.R. Tolkien. The series consists of several books and is known for its complex characters, political intrigue, and genre-blending settings.\n", + "\n", + "One of the most famous and beloved characters in the series is the character Lord Voldemort. He is a dark and evil man with supernatural powers. He is also known for his cunning, his planning, and his wisdom.\n", + "\n", + "In the series, Lord Voldemort is also associated with the symbol of the cross. This symbol is also linked to various other themes in the series,\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 84%|████████▍ | 8800/10454 [2:21:52<26:01, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 8800 of 10454. Loss:0.5235896110534668.\n", + "\n", + "\n", + "Example output: What are the core ingredients of a bechamel sauce?The core ingredients of a basic béchamel sauce include butter, flour, milk, grated cheese (such as cheddar, Parmesan, or Gruyere), salt, and pepper. However, it's important to note that variations may exist, and there are various types of béchamel sauce to consider. Some popular variations include:\n", + "\n", + "1. Classic Béchamel Sauce: This is a classic recipe, made with equal parts of butter and flour.\n", + "\n", + "2. Coq au Vin: A French dish made with equal parts of butter, flour, and milk, often served with cheese.\n", + "\n", + "3. Béchamel Sauce: This sauce is made by melting butter in a saucepan, adding flour, and then slowly thickening with milk until it reaches your desired consistency.\n", + "\n", + "4. Espagnole: A creamy béchamel sauce made with equal parts of butter\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 88%|████████▊ | 9200/10454 [2:28:20<19:43, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 9200 of 10454. Loss:0.3125073313713074.\n", + "\n", + "\n", + "Example output: Summarize the new coronavirus rules around face masks.\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 92%|█████████▏| 9600/10454 [2:34:48<13:25, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 9600 of 10454. Loss:0.37353944778442383.\n", + "\n", + "\n", + "Example output: What tips do you have for memorizing a new language..Memorizing a new language can be challenging, but here are some tips that may help:\n", + "\n", + "1. Set clear goals: Define what you want to memorize and break it down into smaller, manageable chunks. This will help you stay focused and motivated.\n", + "\n", + "2. Create a study plan: Establish a routine that works for you. Allocate dedicated time each day or week to focus on the language. Consistency is key.\n", + "\n", + "3. Use various methods: Vary your learning methods. Combine reading, listening, speaking, and writing exercises. This can help reinforce your understanding and memorization.\n", + "\n", + "Remember, everyone's learning style is unique, so find what works best for you. Consistency and dedication are key, so make sure to set realistic goals and make adjustments accordingly. Good luck!\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 96%|█████████▌| 10000/10454 [2:41:15<07:08, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 10000 of 10454. Loss:0.38850629329681396.\n", + "\n", + "\n", + "Example output: Why is the 1980 gold medal match in hockey called the 'Miracle on Ice'?\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 99%|█████████▉| 10400/10454 [2:47:42<00:50, 1.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Batch 10400 of 10454. Loss:0.5213900208473206.\n", + "\n", + "\n", + "Example output: What is a zerbert?\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 10454/10454 [2:48:44<00:00, 1.03it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Average Training Loss: 0.45515183710675067.\n", + "\n", + "Training complete!\n" + ] + }, + { + "data": { + "text/plain": [ + "('/content/Aira-2-1B5/tokenizer_config.json',\n", + " '/content/Aira-2-1B5/special_tokens_map.json',\n", + " '/content/Aira-2-1B5/vocab.json',\n", + " '/content/Aira-2-1B5/merges.txt',\n", + " '/content/Aira-2-1B5/added_tokens.json')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from codecarbon import EmissionsTracker\n", + "import tqdm\n", + "\n", + "\n", + "output_dir = f'/content/{project}'\n", + "\n", + "tracker = EmissionsTracker(\n", + " project_name=\"Aira_emissions\",\n", + " log_level=\"critical\",\n", + " output_dir=output_dir,\n", + " output_file=\"Aira_emissions.csv\",\n", + ")\n", + "\n", + "training_stats = []\n", + "\n", + "tracker.start()\n", + "for epoch_i in range(0, epochs):\n", + "\n", + " print(f'\\nBeginning epoch {epoch_i + 1} of {epochs}\\n')\n", + "\n", + " total_train_loss = 0\n", + "\n", + " model.train()\n", + "\n", + " for step, batch in enumerate(tqdm.tqdm(dataloader)):\n", + "\n", + " b_input_ids = batch[0].to(device)\n", + " b_labels = batch[0].to(device)\n", + " b_masks = batch[1].to(device)\n", + "\n", + " model.zero_grad()\n", + "\n", + " outputs = model(b_input_ids,\n", + " labels=b_labels,\n", + " attention_mask = b_masks)\n", + "\n", + " loss = outputs[0]\n", + "\n", + " batch_loss = loss.item()\n", + " total_train_loss += batch_loss\n", + "\n", + " if step % sample_every == 0 and not step == 0:\n", + "\n", + " print(f'\\nBatch {step} of {len(dataloader)}. Loss:{batch_loss}.\\n')\n", + "\n", + " model.eval()\n", + "\n", + " inputs = tokenizer(tokenizer.bos_token + df.prompt.sample().iloc[0] + tokenizer.eos_token, return_tensors=\"pt\").to(device)\n", + "\n", + " sample_outputs = model.generate(**inputs,\n", + " bos_token_id=tokenizer.bos_token_id,\n", + " pad_token_id=tokenizer.pad_token_id,\n", + " eos_token_id=tokenizer.eos_token_id,\n", + " do_sample=True,\n", + " top_k=50,\n", + " max_length = 200,\n", + " top_p=0.95,\n", + " num_return_sequences=1)\n", + "\n", + " for i, sample_output in enumerate(sample_outputs):\n", + " print(f'\\nExample output: {tokenizer.decode(sample_output, skip_special_tokens=True)}\\n')\n", + "\n", + " model.train()\n", + "\n", + " loss.backward()\n", + "\n", + " optimizer.step()\n", + "\n", + " scheduler.step()\n", + "\n", + " avg_train_loss = total_train_loss / len(dataloader)\n", + "\n", + "\n", + " print(f'\\nAverage Training Loss: {avg_train_loss}.\\n')\n", + "\n", + "\n", + " training_stats.append(\n", + " {\n", + " 'epoch': epoch_i + 1,\n", + " 'Training Loss': avg_train_loss,\n", + " }\n", + " )\n", + "\n", + "tracker.stop()\n", + "print(\"Training complete!\")\n", + "\n", + "df_stats = pd.DataFrame(data=training_stats)\n", + "df_stats = df_stats.set_index('epoch')\n", + "df_stats.to_parquet(f\"{output_dir}/training_stats.parquet\", compression=\"gzip\")\n", + "\n", + "rng_state = torch.get_rng_state()\n", + "torch.save(rng_state, f\"{output_dir}/rng_state.pt\")\n", + "torch.save(scheduler.state_dict(), f\"{output_dir}/scheduler.pt\")\n", + "torch.save(optimizer.state_dict(), f\"{output_dir}/optimizer.pt\")\n", + "\n", + "model_to_save = model.module if hasattr(model, 'module') else model\n", + "model_to_save.save_pretrained(output_dir)\n", + "model_to_save.save_pretrained(output_dir, safe_serialization=True)\n", + "tokenizer.save_pretrained(output_dir)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "h48iOsqie8rx" + }, + "source": [ + "13. Check the training stats and plot the learning curves." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "background_save": true + }, + "id": "J1-hAY9Av4gT", + "outputId": "b9dfeb50-9d4c-42ed-cca4-2021daeee2d0" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABAUAAAI/CAYAAAAPyGCFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACRjElEQVR4nOzdeXxU9b3/8deZTBKyL0D2lS1ssi8Jm4rIroCt2F7bXm9VrNre9nr7q9futlpt6217a21t3WtLq94KKLvgQoAEwhr2LTshCSQhO5lkZn5/RLimgGYgyZyTvJ+Ph49HO3PmzGcg5D3znnO+x3C73W5EREREREREpNexeXsAEREREREREfEOlQIiIiIiIiIivZRKAREREREREZFeSqWAiIiIiIiISC+lUkBERERERESkl1IpICIiIiIiItJLqRQQERERERER6aVUCoiIiIiIiIj0UioFRERERERERHoplQIiIiK90I4dO0hLSyMtLa3T9/3222+TlpbGzJkzO33fIiIi0rns3h5ARESkp7qeD9xPPfUUd9xxRydOIx3x7LPP8rvf/Q6AY8eOeXkaERGRrqdSQEREpIv069fvirc3NjbS2Nj4qdv06dOny+YCCAgIIDU1tUv2HRISQmpqKtHR0V2yfxEREek8htvtdnt7CBERkd5E30abl/5uRESkt9GaAiIiIiIiIiK9lE4fEBERMZmLaxH8+c9/ZtCgQfzpT3/iww8/pKysjAsXLlz6BrupqYnNmzezZcsWjh07Rnl5OfX19YSHhzNq1Cjuuusubrzxxis+x44dO/jKV74CXP6N+Ntvv81jjz1GfHw877//PgcPHuSFF15g9+7dnD9/nujoaGbNmsVDDz1EWFjYZfv+58d/0sVv4idNmsTrr79OVlYWr7zyCrm5uTQ0NJCQkMCCBQu4//778ff3v+qf0aZNm/jzn//M4cOHcTqdJCYmctttt3HPPffw/PPPt3uO7lJXV8drr73G5s2bKSwspLW1lZiYGDIyMrjvvvtITEy84uMuXLjAX//6VzZu3EheXh6NjY2EhIQQGRnJDTfcwMyZM5kzZ067x7S2tvKPf/yD1atXc/z4cerr6wkODiY8PJxhw4YxdepU7rzzzu542SIiYnEqBUREREyqqKiIRx55hHPnzuHv74/d3j62161bx2OPPQaAYRgEBwdjt9s5e/YsmzdvZvPmzXz1q1/l0UcfveYZ3n33XR577DFaWloICQnB6XRSUlLCq6++yrZt23jjjTcICgq6pn2/+OKLPPPMM0DbOgQtLS3k5eXx7LPPsnPnTl555RV8fHwue9zPf/5zXn755Uv/PzQ0lFOnTvHMM8/w0UcfMX78+Gt7sdfhxIkT3HfffZSVlQFc+vsqLCyksLCQt99+m2eeeeayD/f19fXcfffdHD16FGj7ewwJCaGuro7q6mpOnTpFTk5Ou8c5nU6WLVvGtm3bLt0WEhJCY2Mj58+fp6CggHXr1qkUEBGRDlEpICIiYlI/+9nPiI6O5plnnmHy5MnYbDby8/Mv3R8aGspXv/pVZs2axfDhwwkICACgoqKCN998k+eff56XX36ZCRMmcMstt3j8/FVVVXz3u99l8eLFPPzww8TGxtLU1MTbb7/NU089xYkTJ3jxxRf55je/6fG+jx49yq5du1i2bBn33HMPkZGR1NfX8/LLL/Pcc8+xY8cOVqxYwec///l2j1uzZs2lQmDhwoV85zvfITo6mubmZlatWsUTTzzB8ePHPZ7netTX1/O1r32NsrIyoqOj+elPf8r06dOx2WwcPXqUH/3oR+zbt49vf/vbJCcnM3To0EuP/fOf/8zRo0cJDw/npz/9KTfddBN+fn64XC7Onj1LVlYWu3fvbvd8q1evZtu2bfj7+/ODH/yA+fPnExQUhNvtpqqqij179vDuu+9265+BiIhYl9YUEBERMSmbzcarr75KRkYGNltbZH/yigGzZs3i0UcfZfz48ZcKAYCoqCi+/vWv8x//8R8A13wIfVNTEwsWLOCJJ54gNjYWaLtqwd13382XvvQloO1D+rWora3loYce4pFHHiEyMhKA4OBg/v3f/53Zs2dfcd9ut5v/+Z//AWDq1Kk888wzl65w4O/vz9KlS/nxj39MTU3NNc10rZYvX05JSQm+vr68+OKL3HjjjZf+voYOHcpLL71EfHw8DoeDX//61+0eu3fvXgC++tWvMnv2bPz8/IC2v/vo6GgWL17MT3/60ys+ZvHixdx5552XjtQwDIO+ffty66238tvf/rZLX7OIiPQcKgVERERMatGiRcTExFzz42+66SYA9u3bh9PpvKZ9PPjgg1e8/eKRB4WFhTQ1NXm8Xz8/P7761a9+6r7/ea2DI0eOUFhYCMADDzyAYRiXPXbJkiXExcV5PM/1WLduHQBz5sxhyJAhl90fHBzMfffdB8CWLVuoq6u7dF9oaCgAZ8+e7fDzXctjRERErkalgIiIiEmNGzfuM7c5d+4cv/3tb7nrrruYPHkyw4cPJy0tjbS0NObPnw+0feN/Ld+eh4eHk5ycfMX7oqKiLv3v2tpaj/c9ePDgq65FcHHf/zzzoUOHAPD19WXs2LFXfKxhGEycONHjea6Vw+G4VF5kZGRcdbupU6cC4HK5Lr0O+L/i5i9/+QuPPPIImzZtoqqq6lOfc8aMGRiGwfvvv899993H6tWrKS8vv85XIiIivZXWFBARETGpvn37fur9e/fuZdmyZe0+lAcGBhIQEIBhGDidTqqrqwGu6dv8T1tA8JMLALa0tHTJvltbW9vdfvG1hIeHXzrM/kounlLQHWpqai4dhfFpz/vJIz4++aH/tttuIzc3l7/85S+sWbPm0ikTycnJTJ06lc997nOMHDmy3b4mTJjAt7/9bX7zm9+QmZlJZmbmpeeYMmUKixYtIj09vdNeo4iI9GwqBUREREzq4nnpV9La2sp//ud/Ultby7Bhw/iP//gPxo8fT3Bw8KVtioqKuPXWW4G28/HFnL73ve/xpS99ifXr17Nr1y727dt36aoFy5cv5ytf+Qrf+9732j3mvvvu47bbbmPdunXk5OSwd+9eysrKePvtt3n77beZM2cO//3f/42vr6+XXpWIiFiFTh8QERGxoH379nH69Gl8fHz44x//yI033tiuEICed855REQEAOfPn8fhcFx1u+48lD4sLOzSkQ0XL0d4JZ+87+LCip+UnJzMAw88wAsvvMCOHTt44403mDVrFtB2hYLNmzdf9pjo6GjuuecennvuObZv384777xz6TKEGzZs4G9/+9t1vTYREekdVAqIiIhY0JkzZ4C2D5hXO2w9KyurO0fqciNGjADaTle4uAL/P3O73ezatavbZvLz8yMtLQ2A7Ozsq263fft2oO3oj4uv42psNhtjxozht7/97aVFEy8+/tOkpaXxxBNPXFqLoiOPERERUSkgIiJiQSEhIUDbQoPnzp277P6ysrJrvhShWQ0bNuzSwod/+tOfrnhKxKpVqzh9+nS3znVxQccNGzZw/Pjxy+5vaGjgxRdfBODGG2+89HcHfOoRDz4+PpcO///klRY+7TEAffr0uewxIiIiV6NSQERExILGjx9PYGAgbrebb33rW+Tn5wPgdDrJzMzky1/+spcn7HyGYfCNb3wDgK1bt/Loo49eOlWgubmZt956ix/96EeEhYV1yvNVVVV96n8XF3j84he/SEJCAi0tLdx///189NFHuFwuoO2yivfeey8lJSX4+fnxrW99q91z3HnnnTzxxBPs2LGDxsbGS7eXl5fz05/+9NIlGG+88cZL9z300EM89thjfPTRR+0WmTx//jy///3vLx0hcvHKBiIiIp9GCw2KiIhYUEhICN/5znf48Y9/TE5ODnPnziUwMBCn00lzczMRERE89dRTPPjgg94etVPddtttHDhwgNdee41Vq1bxzjvvEBoaSmNjIy0tLaSnpzN69Gj++Mc/fuoVCjri0y4xCDB06FBWrVpFcHAwf/jDH7jvvvsoKytj2bJl+Pv74+vrS319PdB2msEvf/lLhg4d2m4fdXV1vP7667z++usYhkFISAitra3tCoJ77rmH6dOnX/r/zc3NlxYUBC6tJXHxuQDmzJlzaX0BERGRT6NSQERExKK++MUvEhcXx4svvsjBgwdxOp1ER0dz4403cv/991/TpQKt4Lvf/S4TJ07kz3/+M4cPH8bhcDBgwAAWLVrEv/7rv/L0008DEBoa2m0zDRkyhDVr1vDaa6+xadMmCgsLcTgcJCUlMWXKFO69916SkpIue9yvfvUrtm7dyq5duygpKeHcuXO0trYSHx/P6NGjWbp06WXlxPe//322bNlCTk4OhYWFnD17FofDQVRUFCNHjmTJkiXMnj27u166iIhYnOHWNYpERESkB/nCF77A3r17+fd//3cefvhhb48jIiJialpTQERERHqMnTt3XroywScPuRcREZErUykgIiIilvL444/z9ttvc/bs2UtXIKitreXvf/87Dz30EADp6emMGjXKm2OKiIhYgk4fEBEREUtZtGgRR48eBdoW8AsICKC2tvZSQTBo0CBefvlloqOjvTmmiIiIJagUEBEREUvZvHkzmzZtIjc3l3PnzlFfX09wcDCDBg3i1ltv5a677iIgIMDbY4qIiFiCSgERERERERGRXkprCoiIiIiIiIj0UioFRERERERERHopu7cH6A3cbjculzXO0rDZDMvMKiIiPZ9ySUREzMYK2WSzGRiG0aFtVQp0A5fLTVVVg7fH+Ex2u42IiCBqaxtpbXV5exwREenllEsiImI2VsmmyMggfHw6Vgro9AERERERERGRXkqlgIiIiIiIiEgvpVJAREREREREpJdSKSAiIiIiIiLSS6kUEBEREREREemlVAqIiIiIiIiI9FIqBURERERERER6KZUCIiIiIiIiIr2USgERERERERGRXsru7QFERERERES8zelsxeVyeXsMMTmXy+DCBR8cjmacTneXP59hGPj42DEMo8ueQ6WAiIiIiIj0Wk1NDTQ01NLa6vD2KGIR587ZurVAMgwbfn59CAkJx2737fT9qxQQEREREZFeqampgZqac/j5BRAe3h8fHx+g676RlZ7Bx8folqMEwI3L5aKlpZmmpgYqK8uIiIjCz8+/U59FpYCIiIiIiPRKDQ21+PkFEBHRv0sPz5aexW630drafUcK+PsHEBgYSlVVOfX154mMjO7U/WuhQRERERER6XWczlZaWx0EBgarEBDTs9lsBAWF4HBcwOl0duq+daSAAOByuTlSUEVLfjW+hpuBcWHYbPrlKCIiIiI908VzwttOGRAxPx+ftvUEXC5np/7cqhQQdh+rYPmmE1TXNV+6LSLEn3+ZNZjxaVFenExEREREpKvpizCxhq46okWnD/Ryu49V8NyKg+0KAYDqumaeW3GQ3ccqvDSZiIiIiIiIdDWVAr2Yy+Vm+aYTn7rN3zadwOXqjpU1RUREREREpLupFOjFjhefv+wIgX9WVdfM8eLz3TOQiIiIiIiIdCuVAr3Y+YZPLwQ83U5ERERERKQrPfnkj5k2bQJr177bafv8+teXMW3aBPbs2dVp+7QSLTTYi4UH+Xdou9BAvy6eREREREREzGjatAnX9Li33nqH2Ni4Tp5GuoJKgV5sSGI4ESH+n3kKwV82HmPJjIGMT+uPTddwFRERERHpNW64YfRlt7W0tHD06GEAhg4djq+v72Xb+Pl1zReLffv2IykpmaCg4E7bZ3R0DElJyfTp06fT9mklhtvt1ipyXczpdFFV1eDtMa7o4tUHrsbf10ZzS9s1XBOjglk8PZUxg/p12eUwRERELrLbbUREBFFd3UBrq8vb44hID9PS4qCy8gx9+8bi66sjYz1x5kwpd955O9A7jwiw221eySVPfmYjI4Pw8enYagFaU6CXG58WxcNLRhIR0v5UgsgQfx5eMpL/fngai6alEuDvQ3FFPc/+4wBP/HkXB/MqUZ8k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f/rTq95fX1/P8ePHAXj55ZeZOnXqNc/tdLqoqmq45sd3F7vdRkREENXVDbS2urw9joiI9CAul5sdh8tZtTWfio8vXRge7MfCKSnMGB2H3efyZY6USyIiYjZWyabIyCB8rpCtV2KZUuDgwYPceeeduN1uHn/8cZYuXYphGJSXl/Pggw9y6NAhZs+ezbPPPtspz/e73/2OZ599ltjYWN5//31stmtfk1GlgIiISJtWp4vtB8t4d1s+lbXNAPQN7cPtU1OYckMMPh/nrcvl5lRpDS1uA1/DzcC4MGw2w5uji4iIWOYzkyelQJes9lNfX8/hw4eprKwEoG/fvgwfPpzg4OBr3ufvf/97XC4Xixcv5q677rp0e3R0NL/61a+YN28eGzdu5OjRowwdOvS65ne73axcuRKARYsWXVchICIiIv/H7mNjxug4MkbEsGV/KauzCqisvcAr646yNruQ26elYvex8ffNJ6iua770uIgQf/5l1mDGp0V5cXoREZGep1NLgYsLDWZmZuJytW9NbDYbN954I9/85jdJS0vzaL8NDQ1kZmYCsHTp0svuT0lJIT09ne3bt7N+/frrLgVycnIoLi4G4I477riufYmIiMjlfO02bhmfwPRRsXyw9zRrsgopr27ihXcPX3H76rpmnltxkIeXjFQxICIi0ok67SvwjRs3snTpUj766COcTidut7vdf06nkw8++IClS5fy3nvvebTvI0eO4HA48PPzY9SoUVfcZvz48QDs37//ul/LihUrLu0zOTn5uvcnIiIiV+bn68OcSUn84sEMlkxP5bNOEPjbphO4XJY481FERMQSOuVIgeLiYr797W/jcDiIj4/nvvvuY+rUqcTExABQVlbGtm3beOmllygpKeHb3/42q1evvuxyhVeTn58PQFxcHL6+vlfcJikpqd2216qxsZH169cDsGTJkuval4iIiHRMHz87gxPC+ayP+1V1zRwvPs/Q5IhumUtERKSn65RS4KWXXsLhcDBmzBheeuklgoKC2t2flJREUlISixYt4qtf/Sr79+/nlVde4Yc//GGH9l9TUwNAWFjYVbe5eN/Fba/V+vXraWxsJCAggHnz5l3Xvj7Jbjf/ugQXF6Lo6IIUIiIinamuqaVD251vaLZEroqISM/TEz8zdUopkJWVhWEYPP7445cVAp8UGBjI448/zqJFi9i2bVuH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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "df_stats = pd.read_parquet(f\"{output_dir}/training_stats.parquet\")\n", + "\n", + "sns.set(style='darkgrid')\n", + "\n", + "sns.set(font_scale=1.5)\n", + "plt.rcParams[\"figure.figsize\"] = (12,6)\n", + "\n", + "plt.plot(df_stats['Training Loss'], 'b-o', label=\"Training\")\n", + "\n", + "plt.title(\"Training Loss\")\n", + "plt.xlabel(\"Epoch\")\n", + "plt.ylabel(\"Loss\")\n", + "plt.legend()\n", + "plt.xticks([1, 2, 3])\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "background_save": true, + "referenced_widgets": [ + "d3e3595c2ef84098b816efc19d1c5c18", + "e14462a59a8c4aaaa3582e97e894dfe2", + "072aa12dde834ce281df09dfcab946f3", + "5bdef3fd0caf44a289484a8aabc33524", + "bffc5249579a43898b986719006987c0", + "15ded26509db438db1b547f356c9da70" + ] + }, + "id": "qP1dGhg-PA4F", + "outputId": "be75721d-6209-4911-be45-8d19bdf64532" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d3e3595c2ef84098b816efc19d1c5c18", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "pytorch_model.bin: 0%| | 0.00/6.23G [00:00