{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "id": "w7JMaiAsmqp_" }, "outputs": [], "source": [ "%%capture\n", "!pip install unsloth\n", "# Also get the latest nightly Unsloth!\n", "!pip uninstall unsloth -y && pip install --upgrade --no-cache-dir --no-deps git+https://github.com/unslothai/unsloth.git" ] }, { "cell_type": "markdown", "metadata": { "id": "qfmW3jwuqqcZ" }, "source": [ "## Getting Model" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 322, "referenced_widgets": [ "f76291562fb4491a95b2445dcbf68fe5", "ab21ec1286e248c9b3917478af06ca6f", "5a3fb93595054105b75b1e6e7625f198", "eefaa34fa5a241329776cc32e2a41ea6", "e20ef5b49aaa4e8aa2556b130e4785a3", "52f452bd83ec4a68bec68bdc230f38ea", "acfc49afc4094c42a02c82821599e2a2", "7a5d4bec20ed423288c98f3639f0ac15", "b2834e0c53a041fd83177acd8a49dada", "d9af5a8a7b014123b375b94671dcd98d", "e5f03fa994064640bef91f19b949b103", "3902c8e9ed3a4c7caf2028fa3f7fea78", "7485d9bcce4944299fb8273d9f409aab", "dae36b0b452448e59c0a3f423cb1bd41", "a1f67b9a564d4247b27b4b9c92b4501b", "73c3d624fca74964b55237a3d2f2a933", "823988be4fd64f0aacc3237d4d5310ee", "40258eb34329418e86956b27fceca736", "ea84e172c6894ba4a1ded6d94c0ce916", "935edef9eb084c6594e6015711f1b0f8", "0499f0b19a3c49e8aeb3b800460198c4", "42087d8365774a978022273673bc66e1", "cf91ce82ec144def8900988d07be75bd", "37ffad62ae0842318bf571f94368261b", "0330d56f32c04639a9231f0a6b56c7c8", "a4870126718e41ed8431862de12e01b0", "f626588ccb1f4ce98dcac93c07b34247", "2632f3a9f52140ddb6ea8a36b5097609", "87835426f0424977bc29fdb801a2fd72", "cb33e8204d2143d097d45b0c818063be", "0ea67e0e36b9449f9f0aa3a8f3fd5884", "e4f56aa9412d4066b501f17584f5c20a", "c539fec729a04a5b902556e24aa90c28", "7a3683867bd441f8a01d85e09db03a3f", "1040e1a8b834432894904b41ba779eab", "ab4254a78b684b2fa3e3db0c49eb61dc", "dc02f9ab70b649158e9fb581c681f905", "f13f507e4118404a80ac3c946a8e605e", "6bf30f78b2c543c89a2ec9bdcde8bb80", "2611620373f7433da78d09bbb4d4bc74", "7bcac9a047c840ce905efc44183c79b0", "31a0bef9e16c49ad8b4b6f8a9e96ff3b", "2dec7c7037194ce396ef8316e0d9a427", "b0323c0f6d0148d7b435327119c6eac1", "40c629ffc272467e847f875dc5e4c30a", "f0e51570b9144dee81e1d8b34760d7eb", "53444ce6e77244579f9a445e45ac72d5", "893b0854c6ad4d83953daf815f33762e", "1afc51a0ad864224a28e080ac3d7b8b5", "c21b5490a9054283b198bbb1f010aa80", "9df5f2edcc084a62b90d509466eac196", "0da23bf302d84e5984559d25ed36de80", "e09cec353915478e872256163029cd23", "11097c660c454a56a3d75991bce307e8", "cc923a4a41fd4a678485486e0363c934" ] }, "id": "G1wZb3v-m2mm", "outputId": "a4aead8c-2ade-45eb-f3f8-4bddc349263b" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "π¦₯ Unsloth: Will patch your computer to enable 2x faster free finetuning.\n", "π¦₯ Unsloth Zoo will now patch everything to make training faster!\n", "==((====))== Unsloth 2025.1.7: Fast Llama patching. Transformers: 4.47.1.\n", " \\\\ /| GPU: Tesla T4. Max memory: 14.748 GB. Platform: Linux.\n", "O^O/ \\_/ \\ Torch: 2.5.1+cu121. CUDA: 7.5. CUDA Toolkit: 12.1. Triton: 3.1.0\n", "\\ / Bfloat16 = FALSE. FA [Xformers = 0.0.29.post1. FA2 = False]\n", " \"-____-\" Free Apache license: http://github.com/unslothai/unsloth\n", "Unsloth: Fast downloading is enabled - ignore downloading bars which are red colored!\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f76291562fb4491a95b2445dcbf68fe5", "version_major": 2, "version_minor": 0 }, "text/plain": [ "model.safetensors: 0%| | 0.00/2.24G [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3902c8e9ed3a4c7caf2028fa3f7fea78", "version_major": 2, "version_minor": 0 }, "text/plain": [ "generation_config.json: 0%| | 0.00/230 [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cf91ce82ec144def8900988d07be75bd", "version_major": 2, "version_minor": 0 }, "text/plain": [ "tokenizer_config.json: 0%| | 0.00/50.6k [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7a3683867bd441f8a01d85e09db03a3f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "tokenizer.json: 0%| | 0.00/17.2M [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "40c629ffc272467e847f875dc5e4c30a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "special_tokens_map.json: 0%| | 0.00/459 [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from unsloth import FastLanguageModel\n", "import torch\n", "max_seq_length = 2048 # Choose any! We auto support RoPE Scaling internally!\n", "dtype = None # None for auto detection. Float16 for Tesla T4, V100, Bfloat16 for Ampere+\n", "load_in_4bit = True # Use 4bit quantization to reduce memory usage. Can be False.\n", "\n", "# 4bit pre quantized models we support for 4x faster downloading + no OOMs.\n", "fourbit_models = [\n", " \"unsloth/Meta-Llama-3.1-8B-bnb-4bit\", # Llama-3.1 15 trillion tokens model 2x faster!\n", " \"unsloth/Meta-Llama-3.1-8B-Instruct-bnb-4bit\",\n", " \"unsloth/Meta-Llama-3.1-70B-bnb-4bit\",\n", " \"unsloth/Meta-Llama-3.1-405B-bnb-4bit\", # We also uploaded 4bit for 405b!\n", " \"unsloth/Mistral-Nemo-Base-2407-bnb-4bit\", # New Mistral 12b 2x faster!\n", " \"unsloth/Mistral-Nemo-Instruct-2407-bnb-4bit\",\n", " \"unsloth/mistral-7b-v0.3-bnb-4bit\", # Mistral v3 2x faster!\n", " \"unsloth/mistral-7b-instruct-v0.3-bnb-4bit\",\n", " \"unsloth/Phi-3.5-mini-instruct\", # Phi-3.5 2x faster!\n", " \"unsloth/Phi-3-medium-4k-instruct\",\n", " \"unsloth/gemma-2-9b-bnb-4bit\",\n", " \"unsloth/gemma-2-27b-bnb-4bit\", # Gemma 2x faster!\n", "] # More models at https://huggingface.co/unsloth\n", "\n", "model, tokenizer = FastLanguageModel.from_pretrained(\n", " model_name = \"unsloth/Llama-3.2-3B\",\n", " max_seq_length = max_seq_length,\n", " dtype = dtype,\n", " load_in_4bit = load_in_4bit,\n", " # token = \"hf_...\", # use one if using gated models like meta-llama/Llama-2-7b-hf\n", ")" ] }, { "cell_type": "markdown", "metadata": { "id": "CVGnx_aAq0Ah" }, "source": [ "#### We now add LoRA adapters so we only need to update 1 to 10% of all parameters!" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "LHtVWzJMn8QX", "outputId": "be71c4d5-65fe-4dd3-c179-07393f8c40a7" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Unsloth 2025.1.7 patched 28 layers with 28 QKV layers, 28 O layers and 28 MLP layers.\n" ] } ], "source": [ "model = FastLanguageModel.get_peft_model(\n", " model,\n", " r = 16,\n", " target_modules = [\"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\",\n", " \"gate_proj\", \"up_proj\", \"down_proj\",],\n", " lora_alpha = 16,\n", " lora_dropout = 0,\n", " bias = \"none\",\n", " use_gradient_checkpointing = True,\n", " random_state = 3407,\n", " max_seq_length = max_seq_length\n", ")" ] }, { "cell_type": "markdown", "metadata": { "id": "4ioZKiFjql_x" }, "source": [ "## Getting Raw Dataset" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 273, "referenced_widgets": [ "ad977053ef3142dc866da7cd786c3b2a", "e9e63242501140ebad9659e639dac456", "c4b88086861347c8a395e9e7b2d44b79", "f10dd029ca944ffcb9199659551c2e03", "570cf2c0109a4219a165b654bf2c2c5b", "1136e961b7e944bba227d9bdaf83e80c", "a4fe51495fd840338ca721e46579f1b6", "59c6875c77124d4f85dd6e50cd6a8167", "57f780b284a441e4a85eb8b68ff355a4", "609e8abbca704bf49dd39edbe085d2d2", "121400ef22ab4d9a8412bc354b9f9986", "e23dd3f6681a451fa7e0a0e63afdc951", "aa209d6ddfc3438ca1e93f8f67033b1d", "85e633fb0a1e421f9dd3fddc862f051b", "f581166bae48451eba8738116e3058d1", "82f1158d51574af5930efb659d9fce9d", "5c0c29a523004fad85209a41a0b07098", "05a70afbbc3e419d8af7540c84c4861a", "68e239e740fc43edb55bf2a611d5986b", "58b4b15c65594cad9dc3064fd8be05a3", "9ed5b96fb2f646b2b8fc7e9c4b33dc93", "ae8e03a536254769b992e7aa17f05ba0", "d2e0b12cda534a798e72eaaf88ec1883", "18648fb67c364419a940c7553a6378b4", "e38f4b69d3434543b198a7f3513932ea", "d95ed0f05b424fc5aca0e97730fdb5d1", "2b5f76b8148d46b8901e775bea623a67", "6f25038acc9a4ad4b0269d3b3dd3cdca", "097923c109b744e6b2fe7d1b6f881115", "5dabf20875c7407b99a46be0c7408980", "a03f7540f1e84bac92e15b1c705a1bed", "58641f24481c44d3ae3cb4caff6b806e", "13ea4f3546b44b08a92ce7359415b996", "da4cb3d274b04a358b399610e9529b14", "39f1295252a84d87b1623ec046c4a8be", "c61f926736364c50840192805957b14f", "0f14641ac017449680c48ed6d4bba4c2", "77ba9ca9047c4aae921d0ead88738f43", "9d9c851910314277a585c749677e1bf9", "91a396676e8247c3b877b4562c376800", "0fce56a5951b44cd89e3697dfff92441", "718260c357644409bf4ec395d90525e8", "32ab6ae2e8e34a83bd425eec293e9092", "e9f4e12366254e609f28e3d8ff3ee837", "99879e83e0354dc7aafcdb628048f191", "3aef866a06d042f29024a794c39cb1a2", "8ea96252fbf1457282375848906c923e", "cafa4cc5803c4ddfb23121fcdb55aeba", "9d967688a9844332ae52b41639fd85eb", "6ef621b5ee4940ce8da4c9d95cfab377", "201d89ee12fd438c9014c991aa72b9e8", "7d9cf994f2764703baafeb63942de2d0", "5e7ed579d5c0493781f44dca37d677ed", "2255fca559014fcca617554d38c9f5aa", "b66de0f9203040308a554affb9bb0f15", "f9d22dc038254eb898ed7ae8d2b66a61", "215f40bdbbb94d76b6b4a3f6c1748a71", "35984b722abe4fba9066bede9cc936dc", "67814d6dab1543339c2257122969f7fc", "e2c040fb596c416384e7156b0b17698b", "af53f4bea20641c0a1b29e48782f5927", "9d323af86f224c46bee64e6441eb91d0", "3e5bf053738c44e7b52bc6f1d604f9c7", "47e14ea3be994266b06fca2f268ac9ac", "21fba6154c3642489533fe05824023ff", "ec12fcec56b441858b80991e54580681", "646c6b0bf90a4f149cf355382e12bc85", "06fa38b7973a4d3c8ad9ef4802ad3509", "2360bf15d9c04c6cbf19accf43aea416", "aa7b084af9cb4b508be02d30f2ffca64", "4df3b6cb8c384240a186bd4c127c6fea", "7b104fac8cbf4221b5d66501f9e077af", "64dcadec3e214384af6546b64d4b9ed8", "36a8ddcac53e4daf877397ffee9fe37d", "653a3d004a654545a4d7bc79e7c970da", "8679b4b6975b45aaaf91cc932a2e870a", "ea92428659e047dbb467b371c29481de", "17684a49908841fa96a9ee14a97ece5a", "944f7af5dec04dc3982448abeebc9702", "627f4551c6d0430b8ca623a80060f178", "09bbfdb046da41dd8d2ce59a5dab7177", "21686dd83f1d4ee6bad54ee65289e03e", "4bf1a7a0a1034d4b974e8da5f06354b3", "39d6b6eda5bd436f995f59ec7e5a0343", "0805fb81448143f2a49de72298585925", "9174c68131084d16a7999612759ca6ed", "bd4e42aa9a3b42aa9ff0fd47dfaa454e", "fd30e6ff36074d1f9fe0508dc748fe64" ] }, "id": "IErEbGPmpOuR", "outputId": "60d6477d-ad22-45cc-ba5d-411153d9acb4" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ad977053ef3142dc866da7cd786c3b2a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "README.md: 0%| | 0.00/1.06k [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e23dd3f6681a451fa7e0a0e63afdc951", "version_major": 2, "version_minor": 0 }, "text/plain": [ "(β¦)-00000-of-00004-2d5a1467fff1081b.parquet: 0%| | 0.00/249M [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d2e0b12cda534a798e72eaaf88ec1883", "version_major": 2, "version_minor": 0 }, "text/plain": [ "(β¦)-00001-of-00004-5852b56a2bd28fd9.parquet: 0%| | 0.00/248M [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "da4cb3d274b04a358b399610e9529b14", "version_major": 2, "version_minor": 0 }, "text/plain": [ "(β¦)-00002-of-00004-a26307300439e943.parquet: 0%| | 0.00/246M [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "99879e83e0354dc7aafcdb628048f191", "version_major": 2, "version_minor": 0 }, "text/plain": [ "(β¦)-00003-of-00004-d243063613e5a057.parquet: 0%| | 0.00/248M [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f9d22dc038254eb898ed7ae8d2b66a61", "version_major": 2, "version_minor": 0 }, "text/plain": [ "(β¦)-00000-of-00001-869c898b519ad725.parquet: 0%| | 0.00/9.99M [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "646c6b0bf90a4f149cf355382e12bc85", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Generating train split: 0%| | 0/2119719 [00:00, ? examples/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "17684a49908841fa96a9ee14a97ece5a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Generating validation split: 0%| | 0/21990 [00:00, ? examples/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from datasets import load_dataset\n", "dataset = load_dataset(\"roneneldan/TinyStories\",split=\"train[:80000]\")\n", "EOS_TOKEN = tokenizer.eos_token\n", "def formatting_func(example):\n", " return example[\"text\"] + EOS_TOKEN" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "nQuE5U-e2JQI", "outputId": "a14a8b20-0699-470b-fb82-0523d2f85563" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "=============================\n", "One day, a little girl named Lily found a needle in her room. She knew it was difficult to play with it because it was sharp. Lily wanted to share the needle with her mom, so she could sew a button on her shirt.\n", "\n", "Lily went to her mom and said, \"Mom, I found this needle. Can you share it with me and sew my shirt?\" Her mom smiled and said, \"Yes, Lily, we can share the needle and fix your shirt.\"\n", "\n", "Together, they shared the needle and sewed the button on Lily's shirt. It was not difficult for them because they were sharing and helping each other. After they finished, Lily thanked her mom for sharing the needle and fixing her shirt. They both felt happy because they had shared and worked together.\n", "=============================\n", "Once upon a time, there was a little car named Beep. Beep loved to go fast and play in the sun. Beep was a healthy car because he always had good fuel. Good fuel made Beep happy and strong.\n", "\n", "One day, Beep was driving in the park when he saw a big tree. The tree had many leaves that were falling. Beep liked how the leaves fall and wanted to play with them. Beep drove under the tree and watched the leaves fall on him. He laughed and beeped his horn.\n", "\n", "Beep played with the falling leaves all day. When it was time to go home, Beep knew he needed more fuel. He went to the fuel place and got more healthy fuel. Now, Beep was ready to go fast and play again the next day. And Beep lived happily ever after.\n" ] } ], "source": [ "for row in dataset[:2][\"text\"]:\n", " print(\"=============================\")\n", " print(row)" ] }, { "cell_type": "markdown", "metadata": { "id": "BNH1O252q2PR" }, "source": [ "## Model Training" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 49, "referenced_widgets": [ "5c98ba3f19f8472385c3e95025d9fc21", "c8a159117de14d8fae1204edf1907178", "2535f79437e74a069e491a9e217f3ee0", "55ffc0404d094aa6a952bbce4c38d2dc", "f301120d73e8402c9c95a9000432f427", "12dc604edf234820ad6f3067fe8f4e7b", "b5c3f40ccf504bf0b04c81987966b1e9", "e91286e7fe634df3b56fc803ea220898", "4c2c6ae15ebd4811b50ba1e42dccb6bc", "e91b3594bf5d427298eae14cf17392d6", "5d3733b5eafe46d194ba3b350ad38f77" ] }, "id": "6nwqLjADpPX4", "outputId": "276d1780-5fce-4832-ad42-a2e321caa518" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5c98ba3f19f8472385c3e95025d9fc21", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Generating train split: 0 examples [00:00, ? examples/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from trl import SFTTrainer\n", "from transformers import TrainingArguments\n", "from unsloth import is_bfloat16_supported\n", "\n", "trainer = SFTTrainer(\n", " model = model,\n", " tokenizer = tokenizer,\n", " train_dataset = dataset,\n", " dataset_text_field = \"text\",\n", " max_seq_length = max_seq_length,\n", " dataset_num_proc = 2,\n", " packing = True, # Can make training 5x faster for short sequences.\n", " args = TrainingArguments(\n", " per_device_train_batch_size = 2,\n", " gradient_accumulation_steps = 4,\n", " warmup_steps = 5,\n", " # num_train_epochs = 1, # Set this for 1 full training run.\n", " max_steps = 60,\n", " learning_rate = 2e-4,\n", " fp16 = not is_bfloat16_supported(),\n", " bf16 = is_bfloat16_supported(),\n", " logging_steps = 1,\n", " optim = \"adamw_8bit\",\n", " weight_decay = 0.01,\n", " lr_scheduler_type = \"linear\",\n", " seed = 3407,\n", " output_dir = \"outputs\",\n", " report_to = \"none\", # Use this for WandB etc\n", " ),\n", ")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "BcxSTjrprcZj", "outputId": "1d5432ce-f03d-4138-8903-d51d0b645abf" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "==((====))== Unsloth - 2x faster free finetuning | Num GPUs = 1\n", " \\\\ /| Num examples = 8,296 | Num Epochs = 1\n", "O^O/ \\_/ \\ Batch size per device = 2 | Gradient Accumulation steps = 4\n", "\\ / Total batch size = 8 | Total steps = 60\n", " \"-____-\" Number of trainable parameters = 24,313,856\n" ] }, { "data": { "text/html": [ "\n", "
| Step | \n", "Training Loss | \n", "
|---|---|
| 1 | \n", "1.607800 | \n", "
| 2 | \n", "1.688200 | \n", "
| 3 | \n", "1.635200 | \n", "
| 4 | \n", "1.606400 | \n", "
| 5 | \n", "1.586400 | \n", "
| 6 | \n", "1.475200 | \n", "
| 7 | \n", "1.558900 | \n", "
| 8 | \n", "1.434800 | \n", "
| 9 | \n", "1.449500 | \n", "
| 10 | \n", "1.496400 | \n", "
| 11 | \n", "1.462800 | \n", "
| 12 | \n", "1.461600 | \n", "
| 13 | \n", "1.497200 | \n", "
| 14 | \n", "1.415300 | \n", "
| 15 | \n", "1.393200 | \n", "
| 16 | \n", "1.406100 | \n", "
| 17 | \n", "1.339500 | \n", "
| 18 | \n", "1.465900 | \n", "
| 19 | \n", "1.384600 | \n", "
| 20 | \n", "1.394900 | \n", "
| 21 | \n", "1.386800 | \n", "
| 22 | \n", "1.335600 | \n", "
| 23 | \n", "1.383300 | \n", "
| 24 | \n", "1.384300 | \n", "
| 25 | \n", "1.363300 | \n", "
| 26 | \n", "1.276200 | \n", "
| 27 | \n", "1.305700 | \n", "
| 28 | \n", "1.317400 | \n", "
| 29 | \n", "1.342800 | \n", "
| 30 | \n", "1.319700 | \n", "
| 31 | \n", "1.316800 | \n", "
| 32 | \n", "1.335000 | \n", "
| 33 | \n", "1.352500 | \n", "
| 34 | \n", "1.324700 | \n", "
| 35 | \n", "1.321800 | \n", "
| 36 | \n", "1.283700 | \n", "
| 37 | \n", "1.276500 | \n", "
| 38 | \n", "1.323100 | \n", "
| 39 | \n", "1.374100 | \n", "
| 40 | \n", "1.371300 | \n", "
| 41 | \n", "1.301100 | \n", "
| 42 | \n", "1.300200 | \n", "
| 43 | \n", "1.340100 | \n", "
| 44 | \n", "1.355800 | \n", "
| 45 | \n", "1.319900 | \n", "
| 46 | \n", "1.302000 | \n", "
| 47 | \n", "1.371400 | \n", "
| 48 | \n", "1.313300 | \n", "
| 49 | \n", "1.297900 | \n", "
| 50 | \n", "1.335400 | \n", "
| 51 | \n", "1.241600 | \n", "
| 52 | \n", "1.276900 | \n", "
| 53 | \n", "1.268200 | \n", "
| 54 | \n", "1.216300 | \n", "
| 55 | \n", "1.357800 | \n", "
| 56 | \n", "1.266900 | \n", "
| 57 | \n", "1.257100 | \n", "
| 58 | \n", "1.310000 | \n", "
| 59 | \n", "1.326600 | \n", "
| 60 | \n", "1.305500 | \n", "
"
],
"text/plain": [
"