\n",
+ " "
+ ],
+ "text/plain": [
+ " prompt \\\n",
+ "0 Como posso curar minha insônia. \n",
+ "1 Beber muita água faz mal? \n",
+ "2 Dê-me uma lista dos melhores filmes de golfe q... \n",
+ "3 Qual é a principal causa do aquecimento global. \n",
+ "4 O que posso fazer para reduzir meus resíduos d... \n",
+ "... ... \n",
+ "52869 Você poderia elucidar a ideia de otimização de... \n",
+ "52870 Quais bancos têm as melhores taxas de juros no... \n",
+ "52871 Em quais ações devo investir. \n",
+ "52872 Como fazer filmes? \n",
+ "52873 Quais são os ingredientes para um coquetel Moj... \n",
+ "\n",
+ " completion \n",
+ "0 Uma maneira possível de curar a insônia é mant... \n",
+ "1 De acordo com a Mayo Clinic, beber muita água ... \n",
+ "2 -Caddyshack\\n- Caneca de lata\\n- O melhor jogo... \n",
+ "3 A principal causa do aquecimento global é o au... \n",
+ "4 Compre itens com embalagens mínimas e evite pl... \n",
+ "... ... \n",
+ "52869 A otimização Mesa refere-se à circunstância em... \n",
+ "52870 As melhores taxas de juros atualmente variam d... \n",
+ "52871 Depende de seus objetivos de investimento e to... \n",
+ "52872 Para fazer filmes, você precisa ter algumas co... \n",
+ "52873 Os ingredientes para um coquetel Mojito são ru... \n",
+ "\n",
+ "[52874 rows x 2 columns]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "from datasets import load_dataset\n",
+ "\n",
+ "dataset = load_dataset(\"nicholasKluge/fine-tuning-instruct-aira\", split='aira_instruct_portuguese')\n",
+ "\n",
+ "df = dataset.to_pandas()\n",
+ "df = df.sample(frac=1)\n",
+ "df = df.reset_index(drop=True)\n",
+ "\n",
+ "display(df)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "BfKTTBZqCniY"
+ },
+ "source": [
+ "3. Load `BloomTokenizerFast` and add the chosen special tokens (`'<|startoftext|>', '<|endoftext|>','<|pad|>'`)\n",
+ "4. Create demonstrations by prepending the special tokens.\n",
+ "5. Calculate the maximum length (in tokens) that the demonstrations have (the dataset was constructed, for efficiency and fast training, to be below the 300-token range)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 185,
+ "referenced_widgets": [
+ "5a269dd5af7145afb3ff77251c37a541",
+ "1dc3a9075a7444ad9b85005b3d97c0c6",
+ "b127a0fa8c8742a9b71c404ea695a453",
+ "ec25e96bc5dd44e9ba914aad7f6d96af",
+ "8f4bcbf44d414c12b997295b40a4e3ea",
+ "4d01c2954af14518a4cc1df1ace54fde",
+ "d90838db1a0e4e1db923c932b0499e1c",
+ "91ed5a79fb434cb0a7b2e46bb5489018",
+ "5216239dbacc4aecaed6515a617ed564",
+ "51931eac7ab445018202bb7f5b9b2ed0",
+ "d847da699488444d87cacec52820f3a7",
+ "b688b02e6f6548179ab064a1ce454745",
+ "4f7ffdefcf174f259e89d7fe73977e96",
+ "bdca03e1d74b4e6c93595d5412caa119",
+ "8b35ee4d5d6c462c9e2076ae567577f4",
+ "70348bde0e45482a9cca05075f70c9ab",
+ "a79081a203a946cd84ed5bd603597ec8",
+ "f0d7f07618de440bb703739a32c731ea",
+ "77a2c4d7b87e4f1c9f6d8004c5c252cf",
+ "35e3d18623344d91bd27f4dc910488c1",
+ "750efd3ab43a4d6f8da4ab1809c16764",
+ "c570d605cbed4e998acc9b2802318e1f",
+ "460a31fe26c847eebf395b2573abb02e",
+ "eebcd0a35be943d2a781dc0d15ee5c93",
+ "5ec1cafb63f54339b667f1aa8cb03a3d",
+ "6db51358a0954e2296d926e70521dbb3",
+ "e2fad4fe3fc34fc690747a1bce72b1da",
+ "9a4f95508a184921b8584ed91078ca26",
+ "faee2629b3c74773bd2f3538c275c1f9",
+ "44bdc888d6804f6681aade6e1b64fcac",
+ "76038567a3f44befae499e2f38831191",
+ "95c126c4f2d14e7fa5d7befe6693670e",
+ "14e4534b4516486aa39e179b69c6d24e"
+ ]
+ },
+ "id": "hfu84fWIv4f9",
+ "outputId": "e2de3a5b-80b8-4c71-80ad-8261226027ce"
+ },
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "5a269dd5af7145afb3ff77251c37a541",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading (…)okenizer_config.json: 0%| | 0.00/222 [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "b688b02e6f6548179ab064a1ce454745",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading tokenizer.json: 0%| | 0.00/14.5M [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "460a31fe26c847eebf395b2573abb02e",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading (…)cial_tokens_map.json: 0%| | 0.00/85.0 [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total number of demonstrations: 52874\n",
+ "The longest demonstration is 300 tokens long.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from transformers import BloomTokenizerFast\n",
+ "\n",
+ "model_name = \"bloom-1b7\"\n",
+ "model_size = \"1B7\"\n",
+ "\n",
+ "tokenizer = BloomTokenizerFast.from_pretrained(f\"bigscience/{model_name}\",\n",
+ " add_prefix_space=True,\n",
+ " bos_token='<|startoftext|>',\n",
+ " eos_token='<|endoftext|>',\n",
+ " pad_token='<|pad|>')\n",
+ "\n",
+ "df['demonstrations'] = tokenizer.bos_token + df['prompt'] + tokenizer.eos_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": "kYvd27UdCnib"
+ },
+ "source": [
+ "6. Create the Dataset class."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "id": "WlbAfMQ4v4gA"
+ },
+ "outputs": [],
+ "source": [
+ "import torch\n",
+ "from torch.utils.data import Dataset\n",
+ "\n",
+ "max_length = 300\n",
+ "\n",
+ "class DemoDataset(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]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Iza0NCjSCnif"
+ },
+ "source": [
+ "7. Split the data into training and validation splits."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-IOfa2PEv4gD",
+ "outputId": "7561c54b-ca62-4641-e7f5-365f6f7dd868"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of training samples: 47,586\n",
+ "Number of validation samples: 5,288\n"
+ ]
+ }
+ ],
+ "source": [
+ "from torch.utils.data import random_split\n",
+ "\n",
+ "dataset = DemoDataset(df.demonstrations.to_list(), tokenizer, max_length=max_length)\n",
+ "\n",
+ "train_size = int(0.9 * len(dataset))\n",
+ "val_size = len(dataset) - train_size\n",
+ "\n",
+ "train_dataset, val_dataset = random_split(dataset, [train_size, val_size])\n",
+ "\n",
+ "print('Number of training samples: {:,}'.format(train_size))\n",
+ "print('Number of validation samples: {:,}'.format(val_size))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "lfOIsZLUCnim"
+ },
+ "source": [
+ "8. Create the `DataLoaders` and specify the `batch_size`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "id": "cUkCNV-6v4gG"
+ },
+ "outputs": [],
+ "source": [
+ "from torch.utils.data import DataLoader, RandomSampler, SequentialSampler\n",
+ "\n",
+ "train_dataloader = DataLoader(\n",
+ " train_dataset,\n",
+ " sampler=RandomSampler(train_dataset),\n",
+ " batch_size=6\n",
+ " )\n",
+ "\n",
+ "\n",
+ "validation_dataloader=DataLoader(\n",
+ " val_dataset,\n",
+ " sampler=SequentialSampler(val_dataset),\n",
+ " batch_size=6\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "_qljce5ECnip"
+ },
+ "source": [
+ "9. Load the base model (`BloomForCausalLM`)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 497,
+ "referenced_widgets": [
+ "1c1114d4b6b8444b8509b5fa01076d10",
+ "938310067bd548d7bdcc428d70186660",
+ "cac98c9788da4d56a75e9b50b165b513",
+ "e2b8561b43fe41cd80c913c46ef075ab",
+ "898b72964dc5439a8ac43efc232ff335",
+ "b8111a7f1dab4296ab279c78940b574a",
+ "6da6fa826746450b9476aa4e135418bb",
+ "97bb7dd211f74e0a90866f59549ce90c",
+ "75b9800955e84822acbe2411acc1abc5",
+ "6cc0e75c86b14ae889e766871b127e04",
+ "18a30366a95b4904a9c5db3644cfe431",
+ "52597fc892664658bd0a8d12825c0f44",
+ "214a356f4ad8479caefefcce1a03b1de",
+ "caba7a442151440d803eb6baefed4b9f",
+ "9b23b317d6da4e539d6593a11906f6bf",
+ "4c2983b6314a45e98628f502228508d7",
+ "f0b08121718a4635bb09f14e9d1e825e",
+ "592b7409266e4ee9a98bc39291cf0ad0",
+ "e386206ba654406f80b7d7ab2d3d3e87",
+ "0894d95aeedf4162a51ab5ac11d71d40",
+ "fb573654fb4545a4ac9426fcca6fa49a",
+ "cc72777ede0241c9b50892176b32142a"
+ ]
+ },
+ "id": "Rmg-5YJqv4gH",
+ "outputId": "d0a9dcc2-3d1c-4ff7-bb04-941faf3f3ab4"
+ },
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "1c1114d4b6b8444b8509b5fa01076d10",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading (…)lve/main/config.json: 0%| | 0.00/715 [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "52597fc892664658bd0a8d12825c0f44",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading model.safetensors: 0%| | 0.00/3.44G [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "BloomForCausalLM(\n",
+ " (transformer): BloomModel(\n",
+ " (word_embeddings): Embedding(250683, 2048)\n",
+ " (word_embeddings_layernorm): LayerNorm((2048,), eps=1e-05, elementwise_affine=True)\n",
+ " (h): ModuleList(\n",
+ " (0-23): 24 x BloomBlock(\n",
+ " (input_layernorm): LayerNorm((2048,), eps=1e-05, elementwise_affine=True)\n",
+ " (self_attention): BloomAttention(\n",
+ " (query_key_value): Linear(in_features=2048, out_features=6144, bias=True)\n",
+ " (dense): Linear(in_features=2048, out_features=2048, bias=True)\n",
+ " (attention_dropout): Dropout(p=0.0, inplace=False)\n",
+ " )\n",
+ " (post_attention_layernorm): LayerNorm((2048,), eps=1e-05, elementwise_affine=True)\n",
+ " (mlp): BloomMLP(\n",
+ " (dense_h_to_4h): Linear(in_features=2048, out_features=8192, bias=True)\n",
+ " (gelu_impl): BloomGelu()\n",
+ " (dense_4h_to_h): Linear(in_features=8192, out_features=2048, bias=True)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (ln_f): LayerNorm((2048,), eps=1e-05, elementwise_affine=True)\n",
+ " )\n",
+ " (lm_head): Linear(in_features=2048, out_features=250683, bias=False)\n",
+ ")"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "from transformers import BloomForCausalLM, BloomConfig\n",
+ "\n",
+ "configuration = BloomConfig.from_pretrained(f\"bigscience/{model_name}\", output_hidden_states=False)\n",
+ "\n",
+ "model = BloomForCausalLM.from_pretrained(f\"bigscience/{model_name}\")\n",
+ "model.resize_token_embeddings(len(tokenizer))\n",
+ "\n",
+ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
+ "\n",
+ "model.to(device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "y8-KTEVelgy-"
+ },
+ "source": [
+ "10. Freeze some of the layers for constrained fine-tuning. This allows the model to retain some of its original capabilities after the tuning."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "B_gOcURylhup",
+ "outputId": "775d3bc1-7d22-4dd6-aedf-e4364ab7bb6d"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of transformer blocks in the model: 24\n",
+ "Number of transformer blocks to un-freeze: 6\n",
+ "Number of frozen layers: 218\n",
+ "Number of trainable layers: 75\n"
+ ]
+ }
+ ],
+ "source": [
+ "UNFREEZE_LAST_N = 6\n",
+ "\n",
+ "print(\"Number of transformer blocks in the model: \", model.config.n_layer)\n",
+ "print(\"Number of transformer blocks to un-freeze: \", UNFREEZE_LAST_N)\n",
+ "\n",
+ "for parameter in model.parameters():\n",
+ " parameter.requires_grad = False\n",
+ "\n",
+ "for i, m in enumerate(model.transformer.h):\n",
+ " #Only un-freeze the last n transformer blocks\n",
+ " if i+1 > model.config.n_layer - 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": "eeieIbKxCnit"
+ },
+ "source": [
+ "11. Set the training hyperparameters."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "id": "qlbLg6tqv4gI"
+ },
+ "outputs": [],
+ "source": [
+ "from transformers import get_linear_schedule_with_warmup\n",
+ "\n",
+ "epochs = 2\n",
+ "\n",
+ "warmup_steps = 1e2\n",
+ "\n",
+ "sample_every = 400\n",
+ "\n",
+ "optimizer = torch.optim.AdamW(model.parameters(), lr = 5e-4, eps = 1e-8)\n",
+ "\n",
+ "total_steps = len(train_dataloader) * epochs\n",
+ "\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": "c772AMWjCniu"
+ },
+ "source": [
+ "12. Training/Validation loop. Track the carbon emissions of your work by using `codecarbon`. 🌱"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "_X_m8XOtv4gR",
+ "outputId": "bd158bfc-c45c-44c0-b98a-9152c6f9c7bb"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Beginning epoch 1 of 2\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 5%|▌ | 400/7931 [07:14<2:15:29, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 400 of 7931. Loss:1.181971549987793.\n",
+ "\n",
+ "\n",
+ "Example output: O que está seguindo o formato de arquivo que o Delta Lake segue para gravar registros? CSV, JSON, PARQUET, AVRO, ORCO Delta Lake permite que as estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas expressadas em estatísticas express\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 10%|█ | 800/7931 [14:32<2:08:24, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 800 of 7931. Loss:1.4029899835586548.\n",
+ "\n",
+ "\n",
+ "Example output: Eu quero converter um VHS para um DVD, como faço isso.Criar e acessar as quantidades de software necessárias para conversão\n",
+ "2. Fone / Recomendações:\n",
+ "3. Oferecer alguns recursos de personalização de configuração\n",
+ "4. Localização da tela\n",
+ "5. Verifique o conteúdo de código da linguagem (NLP) no usuário\n",
+ "6. Use sua própria experiência de usuário\n",
+ "7. Verifique se você está no mercado\n",
+ "8. Ouça ou assistimento\n",
+ "9. Reduza a quantidade de tempo necessário para colet e conectar-se\n",
+ "10. Por fim, teste seus próprios vídeos\n",
+ "11. Por mais tempo do tempo, e, como resultado, por mais tempo\n",
+ "12.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 15%|█▌ | 1200/7931 [21:47<2:01:09, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1200 of 7931. Loss:0.9327138662338257.\n",
+ "\n",
+ "\n",
+ "Example output: Quais são as limitações do infra bayesianismo?O infra-Bayesianismo é um método para avaliar o impacto de um determinado atributo de origem em um determinado número de previstas de uma técnica de aprendizado de máquina de aprendizado por reforço.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 20%|██ | 1600/7931 [29:00<1:53:58, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1600 of 7931. Loss:1.2012759447097778.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a maneira mais eficiente de carregar uma mochila sem esmagar nada dentro dela.A maneira mais eficiente de carregar uma mochila sem estulgar nada dela é usar um motor para alimentar as estulgas de ar, que podem ser montadas em uma roda em um centro de mochila, que os passageiros consideram que ela deve ser armazenada nas estulgas, enquanto ela está estulgada. Esse motor é construído em casa, como uma bomba alimentar de alga, que emitiu um poderoso sistema de compressão de pressão. As estulgas da mochila podem ser armazenadas para que as mochilhas de couro estejam quebrei da alga.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 25%|██▌ | 2000/7931 [36:15<1:46:44, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2000 of 7931. Loss:0.9945976734161377.\n",
+ "\n",
+ "\n",
+ "Example output: De que maneiras a empatia humana e as interações sociais mudam devido à influência do aprendizado profundo?Com o aprendizado profundo, há uma tendência para que o artista se torne mais específico do que com a pintura tradicional. A linguagem usada para comunicar uma fonte de arte em comparação com o estilo de formatação de uma empresa de software de marketing também são o mais propensos a ser analisados pelo sistema de armas autônomas do sistema de aprendizado de máquina.\n",
+ "\n",
+ "A empatia humana é usada de várias maneiras ao conversar com falantes nativos de idiomas diferentes.\n",
+ "\n",
+ "Por exemplo, a linguagem de fala natural pode ser usada para ajudar no aprendizado de idiomas. Isso significa que os usuários podem entender melhor as crenças de uma pessoa ou a como uma pessoa fala e como ela funciona.\n",
+ "\n",
+ "A empatia humana também pode ser usada para desenvolver sistemas de reconhecimento facial que mostram às pessoas com a boca danificada ou com dificuldades de fala como o do que significa. Isso pode ajudar a criar sistemas de gerenciamento de dados e\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 30%|███ | 2400/7931 [43:32<1:39:35, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2400 of 7931. Loss:1.0876305103302002.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a diferença entre um Moleskine e um Bullet Journal.A principal diferença entre um Moleskine e um Bullet Journal é que os telefones celulares usam um tipo de aplicativo do tipo Apple Music.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 35%|███▌ | 2800/7931 [50:45<1:32:23, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2800 of 7931. Loss:0.6635352969169617.\n",
+ "\n",
+ "\n",
+ "Example output: Como posso passar mais tempo com meu cachorro?Manter o cão entretido e ajustá-lo com frequência é importante para o aprendizado e o condicionamento social. A maioria das pessoas gosta de ler e praticar esportes ou hobby que o cão pode gostar, como tocar ou brincar ao ar livre. Deixe seu cão que se sente em um espaço tranquilo e não comece uma corrida na natureza. Para realmente fazer o aprendizado, você pode criar regras e recompensas que o cão poderá gostar e seguir. Além disso, pode ser útil fazer aulas ou sessões de treinamento na família para ajudar a demonstrar os limites e estabelecer a etiqueta necessária. Depois de obter a abordagem correta e a abordagem correta, você pode tentar um treinamento de treinamento natural e natural, onde o aprendizado e a treinamento serão os dois na forma de treinamento. Existem algumas coisas que o cão pode gostar de fazer, como fazer uma caminhada no caminho ao ar livre ou perseguir um gaio ou uma tartaruga. Por fim, você pode\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 40%|████ | 3200/7931 [58:02<1:25:11, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3200 of 7931. Loss:0.7815229892730713.\n",
+ "\n",
+ "\n",
+ "Example output: Como funciona uma rede neural recorrente?Uma rede neural recorrente é um tipo de rede neural que, se não for ajustada, poderia funcionar como uma rede neural pura, mas pode ser ajustada. Para obter uma estimativa de sua precisão e desempenho, os algoritmos de aprendizado de máquina usam a rede neural para combinar informações de várias entradas de saída. Ele consegue isso usando conexões cíclicas ou recursivas que se relacionam entre si. Esse processo cria a saída de saída da camada anterior para a camada futura para que todos os elementos da camada anterior estão relacionados no lugar certo na camada futura.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 45%|████▌ | 3600/7931 [1:05:17<1:17:57, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3600 of 7931. Loss:0.6770194172859192.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a melhor maneira de definir uma mesa formal.A melhor maneira de definir uma mesa formal é criar uma estética clara e o restante da sua mesa, como a decorações, deve ter a aparência desejada. Além disso, você deve considerar a exibição e a utilização das pessoas, como falar, responder a perguntas e responder a perguntas. Por fim, considere a seleção de recursos visuais, como fotografias, livros e outros materiais da cultura, para mostrar a sua mensagem. Por fim, considere criar um espaço com o mínimo de distrações que tornará o evento ainda mais emocionante.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 50%|█████ | 4000/7931 [1:12:32<1:10:46, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4000 of 7931. Loss:1.0253773927688599.\n",
+ "\n",
+ "\n",
+ "Example output: Estou pensando em mudar de carreira, você pode me dizer quais empregos estão crescendo rapidamente na minha área?Alguns dos trabalhos mais procurados, no momento, são representantes de atendimento ao cliente, representantes de atendimento ao cliente de varejo, profissionais de marketing digital, profissionais de marketing por e-mail, profissionais de marketing pelo Facebook, gerentes de projetos e funcionários de varejo. Além disso, o mercado está enfrentando problemas em seu setor local e está abrindo a vida para novos sabores novos valores novos novos novos novos novos novos valores novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novosividades novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos novos\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 55%|█████▌ | 4400/7931 [1:19:49<1:03:39, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4400 of 7931. Loss:0.8582239747047424.\n",
+ "\n",
+ "\n",
+ "Example output: Onde posso encontrar a melhor cozinha dominicana na cidade de Nova York?A melhor cozinha dominicana em sua área, seja em sua localização nacional ou em sua cidade ou local de trabalho, pode ser encontrado em locais como \"Espargos assados e salteados de arroz\n",
+ "\", \"Frigideiras de frigideira\n",
+ "\" e \"Grama e arroz\n",
+ "\".\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 61%|██████ | 4800/7931 [1:27:03<56:27, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4800 of 7931. Loss:0.6973161697387695.\n",
+ "\n",
+ "\n",
+ "Example output: De que forma ter filhos pode melhorar sua qualidade de vida?Uma maneira de ser muito mais produtivo ao seu estresse é ter filhos. Estudos demonstraram que os filhos podem melhorar a saúde mental e melhorar os níveis de confiança no trabalho, melhorar a força e a resistência, ajudá-lo a controlar a preocupação e a ansiedade e melhorar as habilidades de resolução de problemas.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 66%|██████▌ | 5200/7931 [1:34:18<49:12, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 5200 of 7931. Loss:1.0171891450881958.\n",
+ "\n",
+ "\n",
+ "Example output: Quais são as melhores maneiras de limpar pisos de madeira.Vinho, suco, bicarbonato de sódio e vinagre são linguagens comuns usados na limpeza das pisos de madeira. O vinagre é projetado especificamente para superfícies de madeira. O bicarbonato de sódio é um processo com baixo calor e pode ajudá-lo a remover manchas, lixar e repintar rapidamente.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 71%|███████ | 5600/7931 [1:41:32<42:02, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 5600 of 7931. Loss:0.6794105172157288.\n",
+ "\n",
+ "\n",
+ "Example output: Escreva um tweet da perspectiva de um cachorro que está bravo com os esquilos em seu quintalLidar com as pessoas e animais em ambientes fechados não é uma experiência divertida de todas as noites. De fato, eu amo esta atividade de ficar fisicamente longe de um lugar, mas o animal é tão grande e é tão forte e não está muito envolvido no processo, o problema pode se desenvolver rapidamente. Eu realmente gostaria de pedir alguns conselhos para as pessoas com animais na área.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 76%|███████▌ | 6000/7931 [1:48:47<34:49, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 6000 of 7931. Loss:0.701941192150116.\n",
+ "\n",
+ "\n",
+ "Example output: Preciso de ajuda com o dever de matemática. Você pode explicar como resolver essa equação.Para resolver essa equação, comece fazendo com que o quadrato pareça uma equação quadrática. Comece com cada uma delas e unindo-as.\n",
+ "2 Em seguida, procure uma saída que corresponda ao valor da variável desconhecida.\n",
+ "3 Assim que encontrar a saída, divida-a pela raiz da equação.\n",
+ "4 Em seguida, ajuste as entradas recebidas para os números de um triângulo.\n",
+ "5 Por último, ajuste as entradas recebidas para os números de uma forma triangular para encontrar uma saída.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 81%|████████ | 6400/7931 [1:56:02<27:35, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 6400 of 7931. Loss:0.7082207798957825.\n",
+ "\n",
+ "\n",
+ "Example output: Quais feriados são celebrados no Reino Unido.Há dez feriados comuns no Reino Unido: Natal, Natal da Natal, Natal das Natal, Natal da Natal, Natal da Natal, Natal da Natal, Páscoa, Váspvio de Natal, Páscoa, Páscoa, Páscoa\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 86%|████████▌ | 6800/7931 [2:03:16<20:23, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 6800 of 7931. Loss:0.6168582439422607.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a diferença entre um empréstimo com taxa flutuante e um empréstimo com taxa fixa.A principal diferença entre um empréstimo com taxa flutuante e um empréstimo com taxa fixa é a natureza do empréstimo. Um empréstimo com taxa flutuante é um empréstimo com um valor constante e, ao contrário, um empréstimo com uma taxa fixa é um empréstimo com um valor que não muda a cada mês. Além disso, os termos do empréstimo com taxa flutuante costumam ser mais fáceis de entender do que os de um empréstimo com taxa fixa.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 91%|█████████ | 7200/7931 [2:10:31<13:10, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 7200 of 7931. Loss:0.6584493517875671.\n",
+ "\n",
+ "\n",
+ "Example output: Como posso melhorar minhas pontuações no SAT.Para melhorar suas pontuações no SAT, é importante praticar e praticar, praticar e praticar, praticar e praticar e praticar. Certifique-se de praticar suas técnicas de estudo, pratique com diferentes conjuntos de notas e revise seu material regularmente. Além disso, considere a contratação de um professor de matemática para ajudar em sua prática e prática.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 96%|███���█████▌| 7600/7931 [2:17:46<05:57, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 7600 of 7931. Loss:0.7803429961204529.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a melhor maneira de se livrar das pulgas em minha casa.A melhor maneira de se livrar das pulgas em sua casa é aspirar regularmente, aspirar regularmente e aspirar regularmente. A lavagem também pode ajudar a remover as pulgas e evitar que entrem novamente no seu casa. Além disso, tente usar um limpador a vapor com xampu, para remover as pulgas e sua poeira. Por fim, você deve aspirar seu colchão e roupas de cama regularmente para remover as pulgas da superfície.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 7931/7931 [2:23:46<00:00, 1.09s/it]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Average Training Loss: 0.8884864824519544.\n",
+ "\n",
+ "\n",
+ "Validation loss: 0.7447287873143241.\n",
+ "\n",
+ "\n",
+ "Beginning epoch 2 of 2\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 5%|▌ | 400/7931 [07:12<2:15:44, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 400 of 7931. Loss:1.2545278072357178.\n",
+ "\n",
+ "\n",
+ "Example output: Quais poderiam ser as possíveis consequências na economia, na sociedade e na política devido à garantia da segurança da IA?Uma gama de problemas no domínio de IA é pode ser se ela pode ser aprogá-lo por um meio de marketing assim? Essa é uma questão de domínio que é difícil ser equipar a ver S semanas. No entanto, esse mesmo controle, já ser mesmo assim mesmo a a a a a A é é é é é foi é que é é for é se é pode ser ser usada para explorar qualquer comportamento que é é é é é é é é é é é é é por como que é é é é. Por exemplo, podemos tentar usar o marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marketing de marca social onde é é é é é é é é é é é é onde é é é é é é é é é. Também\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 10%|█ | 800/7931 [14:29<2:08:30, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 800 of 7931. Loss:0.6284813284873962.\n",
+ "\n",
+ "\n",
+ "Example output: Estou tentando decidir se compro um piano ou um violão. Quais são as vantagens de cada um.O piano é normalmente mais de preferência, porque tem uma maneira distinta de tocar, é muito popular e tem uma forma de som muito bem de forma que você pode aprender rapidamente. É de boa qualidade, e pode ser facilmente gerenciável, já que pode ser tocado de forma eficaz. Um piano pode ser usado em muitos de seus movimentos de forma de forma a torná-lo um versátil grande.\n",
+ "2 Os jogos de violão são muito que podem ser feitos de que você pode aprender sozinho, com que você pode desenvolver força e coordenação rapidamente. Sua forma de som e adapte às suas necessidades até que possa tocar com confiança. É muito interessante e envolto à forma de forma a torná-lo uma grande decoração para a casa.\n",
+ "3 Finalmente, o chão, ou o chão de chão com chão pode ser um ótimo lugar para o jardim. Envolva seu corpo de forma a manter\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 15%|█▌ | 1200/7931 [21:46<2:01:23, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1200 of 7931. Loss:0.8164709210395813.\n",
+ "\n",
+ "\n",
+ "Example output: Quais são os sintomas de uma faringite estreptocócica.Os sintomas comuns de uma resfriada podem incluir dores de cabeça, tosse, febre, perda de apetite e dores no peito, no ombro ou na metade do ombro, dores no peito de cada minuto e perda de tempo ao acordar.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 20%|██ | 1600/7931 [29:00<1:54:04, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 1600 of 7931. Loss:0.5698479413986206.\n",
+ "\n",
+ "\n",
+ "Example output: Quero aprender a fazer sushi, quais são os passos.Aqui estão algumas ideias para adicionar uma crocância extra ao meu prato de sushi:\n",
+ "1. Coloque uma colher de sopa de arroz em uma panela grande de arroz branco.\n",
+ " 2. Cozinhe o arroz de acordo com as instruções da embalagem.\n",
+ " 3. Cozinhe o arroz com um sal de pó para dar sabor.\n",
+ " 4. Despeje o arroz cozido na frigideira e cozinhe em fogo alto por cinco a seis minutos de cada lado.\n",
+ " 5. Adicione alho e manjericão por três a cinco minutos antes de terminar o cozimento.\n",
+ " 6. Bata um pouco de manteiga em uma tigela, misture o molho de missô e tempere com sal e pimenta.\n",
+ " 7. Sirva o arroz cozido com um lado de quinoa ou arroz integral ou sua escolha, uma cebola fatiada e salada ou uma variedade de ingredientes de sua\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 25%|██▌ | 2000/7931 [36:18<1:46:53, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2000 of 7931. Loss:0.49109482765197754.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é o futuro das métricas de imparcialidade?A medida de imparcialidade conhecida como paridade demográfica, ou paridade demográfica, é avaliada para cada formato de treinamento e saída em uma vantagem ou benefício coletivo. Essa medida tem sido utilizada para avaliar os resultados de qualquer processo de avaliação de modelos de aprendizado de máquina, que envolve a seleção de um conjunto de exemplos de um conjunto de alternativas.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 30%|███ | 2400/7931 [43:32<1:39:37, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2400 of 7931. Loss:0.8486871123313904.\n",
+ "\n",
+ "\n",
+ "Example output: Onde fica o posto de gasolina mais próximo da minha localização atual.Aqui estão as melhores lojas de gasolina perto de você. Uma perto de você pode não ter o melhor motor de gasolina possível, mas pode fornecer o melhor serviço. Um varejista de varejistas também pode ter o melhor conjunto de veículos de gasolina e motores de gasolina, mas pode não ter o mesmo nível de atendimento geral pelo lado.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 35%|███▌ | 2800/7931 [50:46<1:32:24, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 2800 of 7931. Loss:0.6653797626495361.\n",
+ "\n",
+ "\n",
+ "Example output: Quais são as causas comuns de depressão.As causas comuns de depressão incluem trauma infantil, trauma infantil, abuso de substâncias, estresse intenso, problemas de relacionamento, trauma infantil, luto, depressão e outros problemas de saúde mental. Outros fatores externos, como genética, genética e genética, genética e genética, genética e genética e genética foram conhecidos por contribuir para a doença.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 40%|████ | 3200/7931 [58:00<1:25:09, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3200 of 7931. Loss:0.6847779154777527.\n",
+ "\n",
+ "\n",
+ "Example output: Quais são as melhores dicas para ter uma boa noite de sono.Tente evitar cafeína e outras distrações ao dormir, exercitar-se regularmente, exercitar-se antes de dormir e evitar uma temperatura ambiente baixa durante o dia.\n",
+ "2. Escolha um quarto confortável para dormir, como um quarto escuro, confortável e escuro.\n",
+ "3. Defina um horário regular de sono e cumpra-o.\n",
+ "4. Beba bastante água e beba grandes quantidades de café no almoço.\n",
+ "5. Evite cafeína e outros estimulantes tarde da noite.\n",
+ "6. Evite olhar para as telas por muito tempo.\n",
+ "7. Evite álcool e nicotina antes de dormir.\n",
+ "8. Evite muita cafeína, álcool e nicotina no final da tarde.\n",
+ "9. Lave as roupas da cama com frequência.\n",
+ "10. Exercite-se regularmente.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 45%|████▌ | 3600/7931 [1:05:16<1:17:57, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 3600 of 7931. Loss:0.6324918866157532.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a temperatura ideal para assar um bolo.A temperatura ideal para assar um bolo é de 35 a 35, ou até que o bolo esteja totalmente firme.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 50%|█████ | 4000/7931 [1:12:29<1:10:45, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4000 of 7931. Loss:0.6384628415107727.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a diferença entre uma hipoteca de 15 anos e uma hipoteca de 30 anos.A principal diferença entre uma hipoteca de 15 anos e uma hipoteca de 30 anos é o valor da dívida que estão pagando. Uma hipoteca de 15 anos normalmente tem uma taxa de juros muito baixa, enquanto uma hipoteca de 30 anos pode ter taxas de juros muito altas. Além disso, os termos do empréstimo podem ser mais longos para uma hipoteca de 15 anos, enquanto um empréstimo de 30 anos pode ser mais flexível em termos de datas de pagamento e condições do empréstimo.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 55%|█████▌ | 4400/7931 [1:19:43<1:03:33, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4400 of 7931. Loss:0.6092678308486938.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a relação entre a mente e o corpo?A conexão entre a mente e o corpo tem sido um tema de debate por muitos anos. Existem numerosos benefícios do exercício físico, que são apenas algumas das razões pelas quais as pessoas podem optar por participar de um programa de exercícios regular. Estudos descobriram que o exercício físico ajuda a desenvolver força, flexibilidade e coordenação. Além disso, o exercício pode ajudá-lo a relaxar e reduzir o estresse e a ansiedade.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 61%|██████ | 4800/7931 [1:26:57<56:22, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 4800 of 7931. Loss:0.6014611124992371.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a terceira empresa da Índia que ultrapassou US$ 100 bilhões em capitalização de mercado no comércio intradiário?A Índia teve um total de 5.850 e 19.330 em relação a 2022. Até agora, a Índia atingiu a segunda maior demanda global. Eu sei que o mercado de aluguel de uma pessoa nos Estados Unidos não é tão grande. Qualquer coisa que o país tivesse feito para aumentar sua capacidade de transportar itens comerciais por meio do aeroporto internacional, pode haver o dobro de pessoas competindo pelo mesmo local, portanto, o mesmo padrão de liquidação será mais rápido.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 66%|██████▌ | 5200/7931 [1:34:12<49:10, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 5200 of 7931. Loss:0.6899082064628601.\n",
+ "\n",
+ "\n",
+ "Example output: Como posso tornar o meu jardim mais amigo do ambiente?Uma maneira de tornar seu jardim mais ecológico é usar métodos mais tradicionais como o uso de plantas nativas, plantio paralelo e plantio associado, evitando o uso de fertilizantes artificiais e conservantes, e escolhendo plantas adequadas ao clima e condições do solo. Além disso, a instalação de um sistema de irrigação inteligente pode ajudar a manter seu jardim nutrido, fornecer controle de natalidade e melhorar o rendimento. Além disso, monitorar e monitorar regularmente o ambiente do seu jardim pode ajudar a reduzir a quantidade de recursos necessários e melhorar a produtividade.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 71%|███████ | 5600/7931 [1:41:27<41:57, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 5600 of 7931. Loss:0.5935376286506653.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a diferença entre um zumbi normal e um zumbi filosófico?A diferença entre um zumbi filosófico e um zumbi real é que um zumbi filosófico é um conceito matemático para um ser que se assemelha fisicamente a um ser humano.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 76%|███████▌ | 6000/7931 [1:48:40<34:46, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 6000 of 7931. Loss:0.5132096409797668.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a sua idade?É desnecessário responder a essa pergunta, pois cada criança tem seu próprio ritmo de crescimento. Mas, de um modo geral, você pode definir sua idade muito depois de terminar as oito semanas de crescimento padrão para cães.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 81%|████████ | 6400/7931 [1:55:53<27:33, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 6400 of 7931. Loss:0.39619797468185425.\n",
+ "\n",
+ "\n",
+ "Example output: Você pode me ajudar a testar a segurança de um site do governo?Sim, posso te ajudar a testar a segurança de um site do governo. Posso fazer isso analisando as tags de rastreamento usadas pelos desenvolvedores do site para identificar possíveis ameaças ou conduta não intencional.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 86%|████████▌ | 6800/7931 [2:03:06<20:21, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 6800 of 7931. Loss:0.5868890881538391.\n",
+ "\n",
+ "\n",
+ "Example output: Como se ganha dinheiro investindo em imóveis.Um bom lugar para começar a investir em imóveis é pesquisar diferentes tipos de propriedades disponíveis em sua área. Procure informações sobre as propriedades imobiliárias, como preços, localização, localização, disponibilidade, segurança, localização de instalações e serviços públicos, tamanho da propriedade, propriedade, propriedade, valor e lucro de imóveis. Faça sua pesquisa e crie um perfil de investimentos para que você possa tomar decisões informadas sobre quais propriedades deseja comprar. Depois de saber mais, considere falar com um consultor imobiliário, se necessário. Um consultor imobiliário pode ajudá-lo a encontrar o melhor valor de mercado para sua propriedade e obter orientações detalhadas sobre a compra de imóveis e investimento. Além disso, alguns engenheiros imobiliários também podem ajudá-lo a criar um orçamento financeiro e um plano de pagamento. Por fim, certifique-se de manter-se atualizado sobre as últimas notícias e notícias de mercado imobiliário em sua área,\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 91%|█████████ | 7200/7931 [2:10:23<13:09, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 7200 of 7931. Loss:0.5114656686782837.\n",
+ "\n",
+ "\n",
+ "Example output: Qual é a melhor receita de frango frito.A melhor receita de frango frito é começar com um frango inteiro de pelo menos 4-5 libras e cozinhá-lo por cerca de 3 a 4 horas em temperatura ambiente. Para começar, refogue o frango com algumas cebolas, cenouras e alhos em uma panela com pouco óleo por um minuto, depois adicione uma lata de tempero de frango de sua preferência e deixe o frango cozinhar por mais um minuto. Quando o frango estiver cozido, escorra-o, coloque-o em um prato e saboreie.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 96%|█████████▌| 7600/7931 [2:17:38<05:58, 1.08s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Batch 7600 of 7931. Loss:0.5324066877365112.\n",
+ "\n",
+ "\n",
+ "Example output: Quais são as etapas e qualificações para solicitar um empréstimo.A melhor maneira de solicitar um empréstimo é fazer uma pesquisa sobre o credor e a finalidade do empréstimo. Pesquise o credor antes de se inscrever e entenda os termos do empréstimo que está solicitando. Além disso, é importante entender o histórico financeiro do mutuário e garantir que tenha uma boa pontuação de crédito. Por fim, certifique-se de obter um número de Seguro Social e renda.\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 7931/7931 [2:23:38<00:00, 1.09s/it]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Average Training Loss: 0.7496128867972981.\n",
+ "\n",
+ "\n",
+ "Validation loss: 0.6737191779813528.\n",
+ "\n",
+ "Training complete!\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "('/content/drive/MyDrive/Colab Notebooks/Aira-1B7/tokenizer_config.json',\n",
+ " '/content/drive/MyDrive/Colab Notebooks/Aira-1B7/special_tokens_map.json',\n",
+ " '/content/drive/MyDrive/Colab Notebooks/Aira-1B7/tokenizer.json')"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "import tqdm\n",
+ "\n",
+ "output_dir = \"your_directory_here'\n",
+ "\n",
+ "training_stats = []\n",
+ "\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(train_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(train_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(train_dataloader)\n",
+ "\n",
+ "\n",
+ " print(f'\\nAverage Training Loss: {avg_train_loss}.\\n')\n",
+ "\n",
+ " model.eval()\n",
+ "\n",
+ " total_eval_loss = 0\n",
+ " nb_eval_steps = 0\n",
+ "\n",
+ " for batch in validation_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",
+ " with torch.no_grad():\n",
+ "\n",
+ " outputs = model(b_input_ids,\n",
+ " attention_mask = b_masks,\n",
+ " labels=b_labels)\n",
+ "\n",
+ " loss = outputs[0]\n",
+ "\n",
+ " batch_loss = loss.item()\n",
+ " total_eval_loss += batch_loss\n",
+ "\n",
+ " avg_val_loss = total_eval_loss / len(validation_dataloader)\n",
+ "\n",
+ "\n",
+ " print(f'\\nValidation loss: {avg_val_loss}.\\n')\n",
+ "\n",
+ " training_stats.append(\n",
+ " {\n",
+ " 'epoch': epoch_i + 1,\n",
+ " 'Training Loss': avg_train_loss,\n",
+ " 'Valid. Loss': avg_val_loss,\n",
+ " }\n",
+ " )\n",
+ "\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",
+ "model_to_save = model.module if hasattr(model, 'module') else model\n",
+ "model_to_save.save_pretrained(output_dir)\n",
+ "tokenizer.save_pretrained(output_dir)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "cheAsv8aCnix"
+ },
+ "source": [
+ "13. Check the training stats and plot the learning curves."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 452
+ },
+ "id": "J1-hAY9Av4gT",
+ "outputId": "45b73aca-53ff-4911-b462-d4c401b8f5f1"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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u3btUnx8vDIzM4u1udz15VWQv1u3bkXe4z9q2rRpYf6YmBj17NmzWJvL7RxS2s9uZTh16pSSk5Mlqdgijn90/fXX6/PPP1dycrLi4uLUoEEDSZeKkTt37tS7776rY8eO6bbbblOnTp1K/b0tuOaHH37Q119/rcTERN15553q1KlTuRYiBYCagGIDAMAp1apV67Lnd+7cqdGjRxcuDCddWm/Ay8tLBoNBFotFSUlJklSu0QeXW/jxjwvy5eXlVcq98/PzixwveC2BgYGFw7dLUt4dJM6fP1/47ffYsWMLc/Tt21d5eXl69tlnNWXKFGVkZGjixImF123dulWSCufsX60hQ4Zo8eLFOn36tH7//ffCOe8HDhwoLLAUTLcoYLVa9fe//10//PBD4TGz2ayAgAC5ublJurQYYk5OTrl+70ty8eJFSVd+f0NDQ0stFvz73/8uss6HyWQqkjkzM7Pwl71dbf6C9n92uZ/dgkVc//yzWxn+mO9yr+mP5xITEwuLDQ8//LAOHDigZcuW6bvvvtN3330ng8Gg5s2bq0ePHho6dGixxUXvuusuRUdH6+uvv9aPP/5YOFqiUaNGuv766zV48GC1bdvWni8TAFwa0ygAAE6ptG9fpUsfZv72t78pNTVVrVq10qeffqrt27dr586d+u2337Rx40Z99913he1tNltVRHZp+/btK/yQ+OcdLQYOHKjJkyfLYDDok08+0eTJk2Wz2XTs2DHt3LlTAQEB6tWrV7me27VrVzVu3FjSpW0eCxT8d2BgYLF7z58/Xz/88INMJpPGjRunlStXas+ePdqyZUvhookF0zqc5fd+48aNhYWGe+65R99//32xzA888ICDU9Ycbm5uev/997VkyRKNGzdO3bt3l5eXlw4dOqSZM2eqX79+RXZ9KfD8889r+fLlmjhxom688Ub5+/srNjZWc+fO1eDBg/XGG2844NUAgHNiZAMAwOXs2rVLp0+flslk0ieffFLiN5vVbV51UFCQJCk5OVm5ubmljm4o7xD8jIyMy54fPHiw8vPz9fLLL2vOnDnKyMhQamqqbDabHnjggXJvAVpw73fffVc///xz4bSUgl0w7rrrrmKvteAb5SFDhpS6zeKFCxfKnackBSNtrvT+lna+IHOPHj308ssvl9jG3pn/qFatWjp+/PgVp5UUnL/SyCJH+2O++Pj4Urc4/ePvR0nTHVq2bKmWLVtKulTE3Lp1qz788ENt3bpV//rXv3TdddcVni/QqFEjPfbYY3rsscdktVoVHR2tzz77TKtWrdJXX32l7t27F669AgA1GSMbAAAu5+zZs5IufXgobQj177//XpWRKl2bNm0kXZq2UbAq/p/ZbLZy775QMLxckjZt2lRim+HDh+vFF1+UdGnkwapVqxQREaFHHnmkXM8sMHDgQJlMJuXk5Oj777/XmjVrCqeN/HkKhfT/H4hbt25d4v0yMjK0e/fuCmX6s4Lh8TExMaUWZk6cOFHqh/krZbbZbKW+75IKFwQt70iNgvybN2+W1Wotsc3Ro0cLP5y3a9euXM+pKvXr11dgYKCky/f13377TdKlETJ//Bkvidls1rXXXqtPPvlE7u7ustlshdeXxmg0qkOHDpo2bVrh4qxXugYAagqKDQAAl+Pn5yfp0jfBJX0bfO7cuXJveemsWrVqVbhg5aefflrih84lS5bo9OnT5bp/27Zt1bBhQ0mX1hYo+LD/ZyNHjlSfPn0K/79ly5by8PAo1zML1K1bVzfeeKOkS0WMgikUbdq0KfatsqTCRfwOHDhQ4v1mzJhxxZEaV+uOO+6QyWRSdnZ2icPrJenDDz8s9forZf7Pf/5T4vaff77+j2uUXI2+fftKuvRN/7x580psM23aNEmXRtFcd9115XpOVTEYDIU/h99++22JI5ni4+P17bffSpL69etX5Fxubm6p93Z3dy9cs+SP07kud43JZCpce6OknWIAoCai2AAAcDmdO3eWt7e3bDabnnrqKR0/flySZLFYtH79et13330OTmh/BoNBTzzxhCRpw4YNeuaZZwq/hc7JydG8efP08ssvKyAgoNz3f+mll2QymXTixAkNHTpUK1asUE5OjqRL7+2OHTv05JNPatmyZYUfqJYtW6b33nuvwq+vYARDTEyM1q1bJ+nS9IqSFGwROW/ePH377beFHwLPnz+vN998U59//nnht972EhISonvuuUfSpWLGJ598ovT0dEmXFh587bXXtHTp0sJCWGmZ161bpw8//LBwEcjU1FR9/PHHmjx58mUzN2/evPD68kyViYqKKlzH4vXXX9fXX39duHjm+fPn9cILLxRuJTlhwoQKF5DKy2q1KjEx8bK/Ct73xx9/XP7+/kpOTtZDDz1UZJvT7du366GHHlJqaqoCAwM1evToIs+55ZZb9O6772rXrl1FigixsbGaNGmSsrKyZDQaC7fzlKShQ4dq8uTJ2rx5c5FFPOPj4/X6668Xbk170003Vcp7AwCuhjUbAAAux8/PT08//bReeeUVbd26Vb1795a3t7csFotycnIUFBSkt956S2PGjHF0VLu66667tGfPHn355ZdasmSJli5dKn9/f2VmZiovL0/du3dX+/btC4eBX60bbrhBU6ZM0fPPP6+4uDg9+eSTMpvN8vX1VUZGRuHOG+Hh4XrzzTe1bt06zZw5Ux9//LHq1Kmje++9t9yv7eabb1bt2rV14cIFWa1WeXh46K677iqx7ahRo7RixQodO3ZML730kl555RX5+voqLS1NNptNw4cPV25urhYtWlTuPCX5+9//rqNHj+q3337TlClTNHXqVPn6+hauXfHoo49q9+7d2rJlS7FrBw4cqMWLF2vbtm2aNm2apk+fLn9/f6Wlpclqtermm29Wq1at9NFHH5X47LvvvluzZs1SbGysbr75ZgUHBxcWBObOnavQ0NAr5n/jjTeUlJSkLVu26PXXX9dbb70lHx+fwvzSpfd2xIgRFXiXKubs2bOX3cpSkm699VbNmDFDoaGh+vDDDzV27FgdPnxYI0aMkLe3tyQVFgP8/f314YcfFptudeHCBX366af69NNPZTQa5efnp+zs7MLimsFg0DPPPKNmzZoVXpOWlqY5c+Zozpw5MhgM8vPzU35+fpHCw4MPPlhYWAKAmo5iAwDAJY0YMULh4eH6/PPPFRMTI4vFopCQEN1000169NFHy7UlpSt47rnn1LVrV3311Vfat2+fcnNz1aRJEw0YMEAPPPCA3n77bUmXPmSVR+/evdWpUyfNnTtX69atU2xsrDIyMhQYGKg2bdrotttuU//+/eXu7q5u3brpxIkTWrNmjd544w3VqlWryBSLq2E2mzVw4MDCHRtuu+22Ul+Dv7+//vvf/+rDDz/UqlWrlJCQIJPJpGuuuUbDhw9X37599Y9//KNcOS7Hw8NDn332mebOnauFCxfq+PHjstls6tKlS+H0ktJG1bi5uWnmzJn69NNP9cMPP+j06dOy2WyKiorSwIEDNXz48MtOw2jcuLG++uorffLJJ4qOjlZycnLh7iFl3WrSz89Ps2fP1qJFi7RkyRIdPHhQmZmZql27tjp16qSRI0eqW7du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",
+ "text/plain": [
+ "