diff --git "a/Leonce_Emmanuel_CheckIn4.ipynb" "b/Leonce_Emmanuel_CheckIn4.ipynb" new file mode 100644--- /dev/null +++ "b/Leonce_Emmanuel_CheckIn4.ipynb" @@ -0,0 +1,6528 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "16a72899-a701-4559-90bb-791f2a990807", + "metadata": { + "id": "16a72899-a701-4559-90bb-791f2a990807" + }, + "source": [ + "# Final Project Check-in 4\n", + "The goal of this check in is to fully implement your desired training approach for your task and evaluate pre and post training performance on your full evaluation benchmark datasets. This notebook will guide you through the necessary steps." + ] + }, + { + "cell_type": "markdown", + "id": "8fddd1ff-eaa8-4c4c-b126-0c35b489e394", + "metadata": { + "id": "8fddd1ff-eaa8-4c4c-b126-0c35b489e394" + }, + "source": [ + "## Step 1: Choose Your Training Approach (15 points)\n", + "In a markdown cell below, state which training method you plan to implement for your task. In one-two paragraphs, summarize why you chose that training approach, citing both things you have learned in class and your empirical results from implementing different training approaches for your task in the past two homeworks. Also describe any drawbacks you anticipate from the training approach you chose and why the advantages you anticipate outweigh those drawbacks." + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Training Approach – LoRA (Low-Rank Adaptation)\n", + "\n", + "For my final project, I have chosen to use LoRA (Low-Rank Adaptation) as the primary training method for fine-tuning a pretrained language model (specifically facebook/bart-large-cnn) on a financial question answering task.\n", + "\n", + "### Why LoRA?\n", + "\n", + "Over the last two homework assignments, I experimented with:\n", + "\n", + "Few-shot prompting\n", + "\n", + "Prompt tuning\n", + "\n", + "LoRA-based fine-tuning\n", + "\n", + "After comparing pre- and post-training performance across all approaches using BLEU, ROUGE-L, and Precision@1, LoRA consistently outperformed the others.\n", + "\n", + "![image.png](data:image/png;base64,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)\n", + "\n", + "LoRA generated more fluent, factually correct, and diverse outputs than prompt tuning.\n", + "\n", + "It generalized better to questions it hadn’t seen during training (based on validation performance).\n", + "\n", + "It retained prior knowledge from pretraining, showing no major signs of catastrophic forgetting.\n", + "\n", + "### Conceptual Justification\n", + "\n", + "Based on class lectures and readings:\n", + "\n", + "LoRA offers parameter-efficient fine-tuning by introducing trainable low-rank adapters into the frozen model.\n", + "\n", + "It is especially beneficial when:\n", + "\n", + "Training data is limited\n", + "\n", + "Domain adaptation is required\n", + "\n", + "You want to preserve general knowledge in the base model\n", + "\n", + "LoRA allowed me to inject domain-specific financial knowledge without overfitting or overwriting the base model's general language capabilities.\n", + "\n", + "\n", + "### Anticipated Drawbacks\n", + "\n", + "Slightly more complex to set up compared to prompt tuning.\n", + "\n", + "Still requires some GPU memory for training compared to training-free methods.\n", + "\n", + "May not scale well for tasks requiring deeper architectural changes.\n", + "\n", + "\n", + "### Why the Advantages Outweigh the Drawbacks\n", + "\n", + "The combination of performance, efficiency, and reliability makes LoRA the best fit for this task:\n", + "\n", + "It improved factual correctness and reduced hallucinations.\n", + "\n", + "It allowed me to finetune a large model like BART on a budget, thanks to its efficiency.\n", + "\n", + "It kept the core pretraining knowledge intact while specializing in financial domain reasoning.\n", + "\n", + "Given my project's goal of building an equity research assistant capable of answering questions from financial news articles, LoRA delivers the best performance with minimal risk and cost." + ], + "metadata": { + "id": "cU1_ZwwZhxVT" + }, + "id": "cU1_ZwwZhxVT" + }, + { + "cell_type": "markdown", + "id": "3d5e7e79-21d7-4856-b484-4d0703f4a637", + "metadata": { + "id": "3d5e7e79-21d7-4856-b484-4d0703f4a637" + }, + "source": [ + "## Step 2: Benchmark Your Model (20 points)\n", + "As you have done in your past two homeworks, use the `lm_eval` package or custom code to evaluate your model's pretraining performance on your 3 benchmark tasks and testing split from your training data (use the same testing split that you used in the homeworks for weeks 9 and 10), this time on the full datasets without setting a limit (5 points). Make sure to log samples as we have done in the past and print the results in a code cell below (5 points). For open-ended generation tasks, you can use a slurm script to benchmark your model since they may take a long time to run. If you go this route, make sure to save your results and model responses as separate json files and load and display them in a code cell below.\n", + "\n", + "With either approach, make sure to print 2 model responses (10 points)" + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install rouge-score" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "lGnnGbYpt5lB", + "outputId": "c2fcdccf-2445-428d-cd82-60d3db2530bf" + }, + "id": "lGnnGbYpt5lB", + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting rouge-score\n", + " Downloading rouge_score-0.1.2.tar.gz (17 kB)\n", + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Requirement already satisfied: absl-py in /usr/local/lib/python3.11/dist-packages (from rouge-score) (1.4.0)\n", + "Requirement already satisfied: nltk in /usr/local/lib/python3.11/dist-packages (from rouge-score) (3.9.1)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (from rouge-score) (2.0.2)\n", + "Requirement already satisfied: six>=1.14.0 in /usr/local/lib/python3.11/dist-packages (from rouge-score) (1.17.0)\n", + "Requirement already satisfied: click in /usr/local/lib/python3.11/dist-packages (from nltk->rouge-score) (8.1.8)\n", + "Requirement already satisfied: joblib in /usr/local/lib/python3.11/dist-packages (from nltk->rouge-score) (1.4.2)\n", + "Requirement already satisfied: regex>=2021.8.3 in /usr/local/lib/python3.11/dist-packages (from nltk->rouge-score) (2024.11.6)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (from nltk->rouge-score) (4.67.1)\n", + "Building wheels for collected packages: rouge-score\n", + " Building wheel for rouge-score (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for rouge-score: filename=rouge_score-0.1.2-py3-none-any.whl size=24934 sha256=4a818adee591073988e49cde96dc6a43f19e699b3906ac58ab40a59c2e1d0701\n", + " Stored in directory: /root/.cache/pip/wheels/1e/19/43/8a442dc83660ca25e163e1bd1f89919284ab0d0c1475475148\n", + "Successfully built rouge-score\n", + "Installing collected packages: rouge-score\n", + "Successfully installed rouge-score-0.1.2\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install -U langchain-community" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "uWUaf9xeTo67", + "outputId": "8f511071-c934-4eaa-c15b-ffc08d0ad8f2" + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting langchain-community\n", + " Downloading langchain_community-0.3.21-py3-none-any.whl.metadata (2.4 kB)\n", + "Collecting langchain-core<1.0.0,>=0.3.51 (from langchain-community)\n", + " Downloading langchain_core-0.3.51-py3-none-any.whl.metadata (5.9 kB)\n", + "Collecting langchain<1.0.0,>=0.3.23 (from langchain-community)\n", + " Downloading langchain-0.3.23-py3-none-any.whl.metadata (7.8 kB)\n", + "Requirement already satisfied: SQLAlchemy<3,>=1.4 in /usr/local/lib/python3.11/dist-packages (from langchain-community) (2.0.40)\n", + "Requirement already satisfied: requests<3,>=2 in /usr/local/lib/python3.11/dist-packages (from langchain-community) (2.32.3)\n", + "Requirement already satisfied: PyYAML>=5.3 in /usr/local/lib/python3.11/dist-packages (from langchain-community) (6.0.2)\n", + "Requirement already satisfied: aiohttp<4.0.0,>=3.8.3 in /usr/local/lib/python3.11/dist-packages (from langchain-community) (3.11.15)\n", + "Requirement already satisfied: tenacity!=8.4.0,<10,>=8.1.0 in /usr/local/lib/python3.11/dist-packages (from langchain-community) (9.1.2)\n", + "Collecting dataclasses-json<0.7,>=0.5.7 (from langchain-community)\n", + " Downloading dataclasses_json-0.6.7-py3-none-any.whl.metadata (25 kB)\n", + "Collecting pydantic-settings<3.0.0,>=2.4.0 (from langchain-community)\n", + " Downloading pydantic_settings-2.8.1-py3-none-any.whl.metadata (3.5 kB)\n", + "Requirement already satisfied: langsmith<0.4,>=0.1.125 in /usr/local/lib/python3.11/dist-packages (from langchain-community) (0.3.22)\n", + "Collecting httpx-sse<1.0.0,>=0.4.0 (from langchain-community)\n", + " Downloading httpx_sse-0.4.0-py3-none-any.whl.metadata (9.0 kB)\n", + "Requirement already satisfied: numpy<3,>=1.26.2 in /usr/local/lib/python3.11/dist-packages (from langchain-community) (2.0.2)\n", + "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (2.6.1)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (1.3.2)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (25.3.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (1.5.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (6.3.1)\n", + "Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (0.3.1)\n", + "Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain-community) (1.18.3)\n", + "Collecting marshmallow<4.0.0,>=3.18.0 (from dataclasses-json<0.7,>=0.5.7->langchain-community)\n", + " Downloading marshmallow-3.26.1-py3-none-any.whl.metadata (7.3 kB)\n", + "Collecting typing-inspect<1,>=0.4.0 (from dataclasses-json<0.7,>=0.5.7->langchain-community)\n", + " Downloading typing_inspect-0.9.0-py3-none-any.whl.metadata (1.5 kB)\n", + "Collecting langchain-text-splitters<1.0.0,>=0.3.8 (from langchain<1.0.0,>=0.3.23->langchain-community)\n", + " Downloading langchain_text_splitters-0.3.8-py3-none-any.whl.metadata (1.9 kB)\n", + "Requirement already satisfied: pydantic<3.0.0,>=2.7.4 in /usr/local/lib/python3.11/dist-packages (from langchain<1.0.0,>=0.3.23->langchain-community) (2.11.1)\n", + "Requirement already satisfied: jsonpatch<2.0,>=1.33 in /usr/local/lib/python3.11/dist-packages (from langchain-core<1.0.0,>=0.3.51->langchain-community) (1.33)\n", + "Requirement already satisfied: packaging<25,>=23.2 in /usr/local/lib/python3.11/dist-packages (from langchain-core<1.0.0,>=0.3.51->langchain-community) (24.2)\n", + "Requirement already satisfied: typing-extensions>=4.7 in /usr/local/lib/python3.11/dist-packages (from langchain-core<1.0.0,>=0.3.51->langchain-community) (4.13.0)\n", + "Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.11/dist-packages (from langsmith<0.4,>=0.1.125->langchain-community) (0.28.1)\n", + "Requirement already satisfied: orjson<4.0.0,>=3.9.14 in /usr/local/lib/python3.11/dist-packages (from langsmith<0.4,>=0.1.125->langchain-community) (3.10.16)\n", + "Requirement already satisfied: requests-toolbelt<2.0.0,>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from langsmith<0.4,>=0.1.125->langchain-community) (1.0.0)\n", + "Requirement already satisfied: zstandard<0.24.0,>=0.23.0 in /usr/local/lib/python3.11/dist-packages (from langsmith<0.4,>=0.1.125->langchain-community) (0.23.0)\n", + "Collecting python-dotenv>=0.21.0 (from pydantic-settings<3.0.0,>=2.4.0->langchain-community)\n", + " Downloading python_dotenv-1.1.0-py3-none-any.whl.metadata (24 kB)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2->langchain-community) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2->langchain-community) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2->langchain-community) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2->langchain-community) (2025.1.31)\n", + "Requirement already satisfied: greenlet>=1 in /usr/local/lib/python3.11/dist-packages (from SQLAlchemy<3,>=1.4->langchain-community) (3.1.1)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.11/dist-packages (from httpx<1,>=0.23.0->langsmith<0.4,>=0.1.125->langchain-community) (4.9.0)\n", + "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/dist-packages (from httpx<1,>=0.23.0->langsmith<0.4,>=0.1.125->langchain-community) (1.0.7)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.11/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->langsmith<0.4,>=0.1.125->langchain-community) (0.14.0)\n", + "Requirement already satisfied: jsonpointer>=1.9 in /usr/local/lib/python3.11/dist-packages (from jsonpatch<2.0,>=1.33->langchain-core<1.0.0,>=0.3.51->langchain-community) (3.0.0)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3.0.0,>=2.7.4->langchain<1.0.0,>=0.3.23->langchain-community) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.33.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3.0.0,>=2.7.4->langchain<1.0.0,>=0.3.23->langchain-community) (2.33.0)\n", + "Requirement already satisfied: typing-inspection>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3.0.0,>=2.7.4->langchain<1.0.0,>=0.3.23->langchain-community) (0.4.0)\n", + "Collecting mypy-extensions>=0.3.0 (from typing-inspect<1,>=0.4.0->dataclasses-json<0.7,>=0.5.7->langchain-community)\n", + " Downloading mypy_extensions-1.0.0-py3-none-any.whl.metadata (1.1 kB)\n", + "Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.11/dist-packages (from anyio->httpx<1,>=0.23.0->langsmith<0.4,>=0.1.125->langchain-community) (1.3.1)\n", + "Downloading langchain_community-0.3.21-py3-none-any.whl (2.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.5/2.5 MB\u001b[0m \u001b[31m25.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading dataclasses_json-0.6.7-py3-none-any.whl (28 kB)\n", + "Downloading httpx_sse-0.4.0-py3-none-any.whl (7.8 kB)\n", + "Downloading langchain-0.3.23-py3-none-any.whl (1.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.0/1.0 MB\u001b[0m \u001b[31m24.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading langchain_core-0.3.51-py3-none-any.whl (423 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m423.3/423.3 kB\u001b[0m \u001b[31m18.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading pydantic_settings-2.8.1-py3-none-any.whl (30 kB)\n", + "Downloading langchain_text_splitters-0.3.8-py3-none-any.whl (32 kB)\n", + "Downloading marshmallow-3.26.1-py3-none-any.whl (50 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.9/50.9 kB\u001b[0m \u001b[31m3.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading python_dotenv-1.1.0-py3-none-any.whl (20 kB)\n", + "Downloading typing_inspect-0.9.0-py3-none-any.whl (8.8 kB)\n", + "Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n", + "Installing collected packages: python-dotenv, mypy-extensions, marshmallow, httpx-sse, typing-inspect, pydantic-settings, dataclasses-json, langchain-core, langchain-text-splitters, langchain, langchain-community\n", + " Attempting uninstall: langchain-core\n", + " Found existing installation: langchain-core 0.3.49\n", + " Uninstalling langchain-core-0.3.49:\n", + " Successfully uninstalled langchain-core-0.3.49\n", + " Attempting uninstall: langchain-text-splitters\n", + " Found existing installation: langchain-text-splitters 0.3.7\n", + " Uninstalling langchain-text-splitters-0.3.7:\n", + " Successfully uninstalled langchain-text-splitters-0.3.7\n", + " Attempting uninstall: langchain\n", + " Found existing installation: langchain 0.3.22\n", + " Uninstalling langchain-0.3.22:\n", + " Successfully uninstalled langchain-0.3.22\n", + "Successfully installed dataclasses-json-0.6.7 httpx-sse-0.4.0 langchain-0.3.23 langchain-community-0.3.21 langchain-core-0.3.51 langchain-text-splitters-0.3.8 marshmallow-3.26.1 mypy-extensions-1.0.0 pydantic-settings-2.8.1 python-dotenv-1.1.0 typing-inspect-0.9.0\n" + ] + } + ], + "id": "uWUaf9xeTo67" + }, + { + "cell_type": "code", + "source": [ + "!pip install unstructured" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XXkwzjD8UEY1", + "outputId": "d8630776-14fc-4b81-d9b8-0f0e68fc9976" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting unstructured\n", + " Downloading unstructured-0.17.2-py3-none-any.whl.metadata (24 kB)\n", + "Requirement already satisfied: chardet in /usr/local/lib/python3.11/dist-packages (from unstructured) (5.2.0)\n", + "Collecting filetype (from unstructured)\n", + " Downloading filetype-1.2.0-py2.py3-none-any.whl.metadata (6.5 kB)\n", + "Collecting python-magic (from unstructured)\n", + " Downloading python_magic-0.4.27-py2.py3-none-any.whl.metadata (5.8 kB)\n", + "Requirement already satisfied: lxml in /usr/local/lib/python3.11/dist-packages (from unstructured) (5.3.1)\n", + "Requirement already satisfied: nltk in /usr/local/lib/python3.11/dist-packages (from unstructured) (3.9.1)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from unstructured) (2.32.3)\n", + "Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.11/dist-packages (from unstructured) (4.13.3)\n", + "Collecting emoji (from unstructured)\n", + " Downloading emoji-2.14.1-py3-none-any.whl.metadata (5.7 kB)\n", + "Requirement already satisfied: dataclasses-json in /usr/local/lib/python3.11/dist-packages (from unstructured) (0.6.7)\n", + "Collecting python-iso639 (from unstructured)\n", + " Downloading python_iso639-2025.2.18-py3-none-any.whl.metadata (14 kB)\n", + "Collecting langdetect (from unstructured)\n", + " Downloading langdetect-1.0.9.tar.gz (981 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m981.5/981.5 kB\u001b[0m \u001b[31m25.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (from unstructured) (2.0.2)\n", + "Collecting rapidfuzz (from unstructured)\n", + " Downloading rapidfuzz-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + "Collecting backoff (from unstructured)\n", + " Downloading backoff-2.2.1-py3-none-any.whl.metadata (14 kB)\n", + "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.11/dist-packages (from unstructured) (4.13.0)\n", + "Collecting unstructured-client (from unstructured)\n", + " Downloading unstructured_client-0.32.1-py3-none-any.whl.metadata (22 kB)\n", + "Requirement already satisfied: wrapt in /usr/local/lib/python3.11/dist-packages (from unstructured) (1.17.2)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (from unstructured) (4.67.1)\n", + "Requirement already satisfied: psutil in /usr/local/lib/python3.11/dist-packages (from unstructured) (5.9.5)\n", + "Collecting python-oxmsg (from unstructured)\n", + " Downloading python_oxmsg-0.0.2-py3-none-any.whl.metadata (5.0 kB)\n", + "Requirement already satisfied: html5lib in /usr/local/lib/python3.11/dist-packages (from unstructured) (1.1)\n", + "Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.11/dist-packages (from beautifulsoup4->unstructured) (2.6)\n", + "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /usr/local/lib/python3.11/dist-packages (from dataclasses-json->unstructured) (3.26.1)\n", + "Requirement already satisfied: typing-inspect<1,>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from dataclasses-json->unstructured) (0.9.0)\n", + "Requirement already satisfied: six>=1.9 in /usr/local/lib/python3.11/dist-packages (from html5lib->unstructured) (1.17.0)\n", + "Requirement already satisfied: webencodings in /usr/local/lib/python3.11/dist-packages (from html5lib->unstructured) (0.5.1)\n", + "Requirement already satisfied: click in /usr/local/lib/python3.11/dist-packages (from nltk->unstructured) (8.1.8)\n", + "Requirement already satisfied: joblib in /usr/local/lib/python3.11/dist-packages (from nltk->unstructured) (1.4.2)\n", + "Requirement already satisfied: regex>=2021.8.3 in /usr/local/lib/python3.11/dist-packages (from nltk->unstructured) (2024.11.6)\n", + "Collecting olefile (from python-oxmsg->unstructured)\n", + " Downloading olefile-0.47-py2.py3-none-any.whl.metadata (9.7 kB)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->unstructured) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->unstructured) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->unstructured) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests->unstructured) (2025.1.31)\n", + "Collecting aiofiles>=24.1.0 (from unstructured-client->unstructured)\n", + " Downloading aiofiles-24.1.0-py3-none-any.whl.metadata (10 kB)\n", + "Requirement already satisfied: cryptography>=3.1 in /usr/local/lib/python3.11/dist-packages (from unstructured-client->unstructured) (43.0.3)\n", + "Collecting eval-type-backport>=0.2.0 (from unstructured-client->unstructured)\n", + " Downloading eval_type_backport-0.2.2-py3-none-any.whl.metadata (2.2 kB)\n", + "Requirement already satisfied: httpx>=0.27.0 in /usr/local/lib/python3.11/dist-packages (from unstructured-client->unstructured) (0.28.1)\n", + "Requirement already satisfied: nest-asyncio>=1.6.0 in /usr/local/lib/python3.11/dist-packages (from unstructured-client->unstructured) (1.6.0)\n", + "Requirement already satisfied: pydantic>=2.10.3 in /usr/local/lib/python3.11/dist-packages (from unstructured-client->unstructured) (2.11.1)\n", + "Collecting pypdf>=4.0 (from unstructured-client->unstructured)\n", + " Downloading pypdf-5.4.0-py3-none-any.whl.metadata (7.3 kB)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from unstructured-client->unstructured) (2.8.2)\n", + "Requirement already satisfied: requests-toolbelt>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from unstructured-client->unstructured) (1.0.0)\n", + "Requirement already satisfied: typing-inspection>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from unstructured-client->unstructured) (0.4.0)\n", + "Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.11/dist-packages (from cryptography>=3.1->unstructured-client->unstructured) (1.17.1)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.11/dist-packages (from httpx>=0.27.0->unstructured-client->unstructured) (4.9.0)\n", + "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/dist-packages (from httpx>=0.27.0->unstructured-client->unstructured) (1.0.7)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.11/dist-packages (from httpcore==1.*->httpx>=0.27.0->unstructured-client->unstructured) (0.14.0)\n", + "Requirement already satisfied: packaging>=17.0 in /usr/local/lib/python3.11/dist-packages (from marshmallow<4.0.0,>=3.18.0->dataclasses-json->unstructured) (24.2)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.10.3->unstructured-client->unstructured) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.33.0 in /usr/local/lib/python3.11/dist-packages (from pydantic>=2.10.3->unstructured-client->unstructured) (2.33.0)\n", + "Requirement already satisfied: mypy-extensions>=0.3.0 in /usr/local/lib/python3.11/dist-packages (from typing-inspect<1,>=0.4.0->dataclasses-json->unstructured) (1.0.0)\n", + "Requirement already satisfied: pycparser in /usr/local/lib/python3.11/dist-packages (from cffi>=1.12->cryptography>=3.1->unstructured-client->unstructured) (2.22)\n", + "Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.11/dist-packages (from anyio->httpx>=0.27.0->unstructured-client->unstructured) (1.3.1)\n", + "Downloading unstructured-0.17.2-py3-none-any.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m51.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading backoff-2.2.1-py3-none-any.whl (15 kB)\n", + "Downloading emoji-2.14.1-py3-none-any.whl (590 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m590.6/590.6 kB\u001b[0m \u001b[31m34.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading filetype-1.2.0-py2.py3-none-any.whl (19 kB)\n", + "Downloading python_iso639-2025.2.18-py3-none-any.whl (167 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m167.6/167.6 kB\u001b[0m \u001b[31m15.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB)\n", + "Downloading python_oxmsg-0.0.2-py3-none-any.whl (31 kB)\n", + "Downloading rapidfuzz-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.1/3.1 MB\u001b[0m \u001b[31m70.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading unstructured_client-0.32.1-py3-none-any.whl (180 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━��━━━━━\u001b[0m \u001b[32m180.5/180.5 kB\u001b[0m \u001b[31m15.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading aiofiles-24.1.0-py3-none-any.whl (15 kB)\n", + "Downloading eval_type_backport-0.2.2-py3-none-any.whl (5.8 kB)\n", + "Downloading pypdf-5.4.0-py3-none-any.whl (302 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m302.3/302.3 kB\u001b[0m \u001b[31m24.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading olefile-0.47-py2.py3-none-any.whl (114 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m114.6/114.6 kB\u001b[0m \u001b[31m10.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hBuilding wheels for collected packages: langdetect\n", + " Building wheel for langdetect (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for langdetect: filename=langdetect-1.0.9-py3-none-any.whl size=993223 sha256=538ce9043293fe8b7578fab8dc11a084f41a2f482e34cd00557b156bfcc450fc\n", + " Stored in directory: /root/.cache/pip/wheels/0a/f2/b2/e5ca405801e05eb7c8ed5b3b4bcf1fcabcd6272c167640072e\n", + "Successfully built langdetect\n", + "Installing collected packages: filetype, rapidfuzz, python-magic, python-iso639, pypdf, olefile, langdetect, eval-type-backport, emoji, backoff, aiofiles, python-oxmsg, unstructured-client, unstructured\n", + "Successfully installed aiofiles-24.1.0 backoff-2.2.1 emoji-2.14.1 eval-type-backport-0.2.2 filetype-1.2.0 langdetect-1.0.9 olefile-0.47 pypdf-5.4.0 python-iso639-2025.2.18 python-magic-0.4.27 python-oxmsg-0.0.2 rapidfuzz-3.13.0 unstructured-0.17.2 unstructured-client-0.32.1\n" + ] + } + ], + "id": "XXkwzjD8UEY1" + }, + { + "cell_type": "code", + "source": [ + "!pip install transformers datasets rouge-score scikit-learn" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "f3aT3jjcWelR", + "outputId": "46a25bc1-9675-4ebf-e1f6-673da14f5255" + }, + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: transformers in /usr/local/lib/python3.11/dist-packages (4.50.3)\n", + "Collecting datasets\n", + " Downloading datasets-3.5.0-py3-none-any.whl.metadata (19 kB)\n", + "Requirement already satisfied: rouge-score in /usr/local/lib/python3.11/dist-packages (0.1.2)\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.11/dist-packages (1.6.1)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from transformers) (3.18.0)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.26.0 in /usr/local/lib/python3.11/dist-packages (from transformers) (0.30.1)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.11/dist-packages (from transformers) (2.0.2)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from transformers) (24.2)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.11/dist-packages (from transformers) (6.0.2)\n", + "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.11/dist-packages (from transformers) (2024.11.6)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from transformers) (2.32.3)\n", + "Requirement already satisfied: tokenizers<0.22,>=0.21 in /usr/local/lib/python3.11/dist-packages (from transformers) (0.21.1)\n", + "Requirement already satisfied: safetensors>=0.4.3 in /usr/local/lib/python3.11/dist-packages (from transformers) (0.5.3)\n", + "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.11/dist-packages (from transformers) (4.67.1)\n", + "Requirement already satisfied: pyarrow>=15.0.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (18.1.0)\n", + "Collecting dill<0.3.9,>=0.3.0 (from datasets)\n", + " Downloading dill-0.3.8-py3-none-any.whl.metadata (10 kB)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from datasets) (2.2.2)\n", + "Collecting xxhash (from datasets)\n", + " Downloading xxhash-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n", + "Collecting multiprocess<0.70.17 (from datasets)\n", + " Downloading multiprocess-0.70.16-py311-none-any.whl.metadata (7.2 kB)\n", + "Collecting fsspec<=2024.12.0,>=2023.1.0 (from fsspec[http]<=2024.12.0,>=2023.1.0->datasets)\n", + " Downloading fsspec-2024.12.0-py3-none-any.whl.metadata (11 kB)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.11/dist-packages (from datasets) (3.11.15)\n", + "Requirement already satisfied: absl-py in /usr/local/lib/python3.11/dist-packages (from rouge-score) (1.4.0)\n", + "Requirement already satisfied: nltk in /usr/local/lib/python3.11/dist-packages (from rouge-score) (3.9.1)\n", + "Requirement already satisfied: six>=1.14.0 in /usr/local/lib/python3.11/dist-packages (from rouge-score) (1.17.0)\n", + "Requirement already satisfied: scipy>=1.6.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (1.14.1)\n", + "Requirement already satisfied: joblib>=1.2.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (1.4.2)\n", + "Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn) (3.6.0)\n", + "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (2.6.1)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (1.3.2)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (25.3.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (1.5.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (6.3.1)\n", + "Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (0.3.1)\n", + "Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (1.18.3)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub<1.0,>=0.26.0->transformers) (4.13.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (2025.1.31)\n", + "Requirement already satisfied: click in /usr/local/lib/python3.11/dist-packages (from nltk->rouge-score) (8.1.8)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.2)\n", + "Downloading datasets-3.5.0-py3-none-any.whl (491 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.2/491.2 kB\u001b[0m \u001b[31m11.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading dill-0.3.8-py3-none-any.whl (116 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m10.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading fsspec-2024.12.0-py3-none-any.whl (183 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m13.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading multiprocess-0.70.16-py311-none-any.whl (143 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.5/143.5 kB\u001b[0m \u001b[31m13.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading xxhash-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (194 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m13.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: xxhash, fsspec, dill, multiprocess, datasets\n", + " Attempting uninstall: fsspec\n", + " Found existing installation: fsspec 2025.3.2\n", + " Uninstalling fsspec-2025.3.2:\n", + " Successfully uninstalled fsspec-2025.3.2\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "torch 2.6.0+cu124 requires nvidia-cublas-cu12==12.4.5.8; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cublas-cu12 12.5.3.2 which is incompatible.\n", + "torch 2.6.0+cu124 requires nvidia-cuda-cupti-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-cupti-cu12 12.5.82 which is incompatible.\n", + "torch 2.6.0+cu124 requires nvidia-cuda-nvrtc-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-nvrtc-cu12 12.5.82 which is incompatible.\n", + "torch 2.6.0+cu124 requires nvidia-cuda-runtime-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-runtime-cu12 12.5.82 which is incompatible.\n", + "torch 2.6.0+cu124 requires nvidia-cudnn-cu12==9.1.0.70; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cudnn-cu12 9.3.0.75 which is incompatible.\n", + "torch 2.6.0+cu124 requires nvidia-cufft-cu12==11.2.1.3; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cufft-cu12 11.2.3.61 which is incompatible.\n", + "torch 2.6.0+cu124 requires nvidia-curand-cu12==10.3.5.147; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-curand-cu12 10.3.6.82 which is incompatible.\n", + "torch 2.6.0+cu124 requires nvidia-cusolver-cu12==11.6.1.9; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cusolver-cu12 11.6.3.83 which is incompatible.\n", + "torch 2.6.0+cu124 requires nvidia-cusparse-cu12==12.3.1.170; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cusparse-cu12 12.5.1.3 which is incompatible.\n", + "torch 2.6.0+cu124 requires nvidia-nvjitlink-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-nvjitlink-cu12 12.5.82 which is incompatible.\n", + "gcsfs 2025.3.2 requires fsspec==2025.3.2, but you have fsspec 2024.12.0 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed datasets-3.5.0 dill-0.3.8 fsspec-2024.12.0 multiprocess-0.70.16 xxhash-3.5.0\n" + ] + } + ], + "id": "f3aT3jjcWelR" + }, + { + "cell_type": "code", + "source": [ + "!pip install evaluate" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "HCruArEVWM5Y", + "outputId": "408e61e4-d751-4f5a-fcbd-a9ca30c979b4" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting evaluate\n", + " Downloading evaluate-0.4.3-py3-none-any.whl.metadata (9.2 kB)\n", + "Requirement already satisfied: datasets>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from evaluate) (3.5.0)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.11/dist-packages (from evaluate) (2.0.2)\n", + "Requirement already satisfied: dill in /usr/local/lib/python3.11/dist-packages (from evaluate) (0.3.8)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from evaluate) (2.2.2)\n", + "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.11/dist-packages (from evaluate) (2.32.3)\n", + "Requirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.11/dist-packages (from evaluate) (4.67.1)\n", + "Requirement already satisfied: xxhash in /usr/local/lib/python3.11/dist-packages (from evaluate) (3.5.0)\n", + "Requirement already satisfied: multiprocess in /usr/local/lib/python3.11/dist-packages (from evaluate) (0.70.16)\n", + "Requirement already satisfied: fsspec>=2021.05.0 in /usr/local/lib/python3.11/dist-packages (from fsspec[http]>=2021.05.0->evaluate) (2024.12.0)\n", + "Requirement already satisfied: huggingface-hub>=0.7.0 in /usr/local/lib/python3.11/dist-packages (from evaluate) (0.30.1)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from evaluate) (24.2)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from datasets>=2.0.0->evaluate) (3.18.0)\n", + "Requirement already satisfied: pyarrow>=15.0.0 in /usr/local/lib/python3.11/dist-packages (from datasets>=2.0.0->evaluate) (18.1.0)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.11/dist-packages (from datasets>=2.0.0->evaluate) (3.11.15)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.11/dist-packages (from datasets>=2.0.0->evaluate) (6.0.2)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.7.0->evaluate) (4.13.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests>=2.19.0->evaluate) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests>=2.19.0->evaluate) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests>=2.19.0->evaluate) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests>=2.19.0->evaluate) (2025.1.31)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas->evaluate) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->evaluate) (2025.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->evaluate) (2025.2)\n", + "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (2.6.1)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.3.2)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (25.3.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.5.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (6.3.1)\n", + "Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (0.3.1)\n", + "Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.18.3)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas->evaluate) (1.17.0)\n", + "Downloading evaluate-0.4.3-py3-none-any.whl (84 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m84.0/84.0 kB\u001b[0m \u001b[31m4.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: evaluate\n", + "Successfully installed evaluate-0.4.3\n" + ] + } + ], + "id": "HCruArEVWM5Y" + }, + { + "cell_type": "code", + "source": [ + "!pip install peft" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FqbgpucNWTQ2", + "outputId": "3fafda4a-13de-487a-93a3-493402d45ae2" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: peft in /usr/local/lib/python3.11/dist-packages (0.14.0)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.11/dist-packages (from peft) (2.0.2)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from peft) (24.2)\n", + "Requirement already satisfied: psutil in /usr/local/lib/python3.11/dist-packages (from peft) (5.9.5)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.11/dist-packages (from peft) (6.0.2)\n", + "Requirement already satisfied: torch>=1.13.0 in /usr/local/lib/python3.11/dist-packages (from peft) (2.6.0+cu124)\n", + "Requirement already satisfied: transformers in /usr/local/lib/python3.11/dist-packages (from peft) (4.50.3)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (from peft) (4.67.1)\n", + "Requirement already satisfied: accelerate>=0.21.0 in /usr/local/lib/python3.11/dist-packages (from peft) (1.5.2)\n", + "Requirement already satisfied: safetensors in /usr/local/lib/python3.11/dist-packages (from peft) (0.5.3)\n", + "Requirement already satisfied: huggingface-hub>=0.25.0 in /usr/local/lib/python3.11/dist-packages (from peft) (0.30.1)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.25.0->peft) (3.18.0)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.25.0->peft) (2024.12.0)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.25.0->peft) (2.32.3)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.25.0->peft) (4.13.0)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.11/dist-packages (from torch>=1.13.0->peft) (3.4.2)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/dist-packages (from torch>=1.13.0->peft) (3.1.6)\n", + "Collecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-cuda-runtime-cu12==12.4.127 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-cuda-cupti-cu12==12.4.127 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", + "Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", + "Collecting nvidia-cublas-cu12==12.4.5.8 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-cufft-cu12==11.2.1.3 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-curand-cu12==10.3.5.147 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Collecting nvidia-cusolver-cu12==11.6.1.9 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", + "Collecting nvidia-cusparse-cu12==12.3.1.170 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n", + "Requirement already satisfied: nvidia-cusparselt-cu12==0.6.2 in /usr/local/lib/python3.11/dist-packages (from torch>=1.13.0->peft) (0.6.2)\n", + "Requirement already satisfied: nvidia-nccl-cu12==2.21.5 in /usr/local/lib/python3.11/dist-packages (from torch>=1.13.0->peft) (2.21.5)\n", + "Requirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch>=1.13.0->peft) (12.4.127)\n", + "Collecting nvidia-nvjitlink-cu12==12.4.127 (from torch>=1.13.0->peft)\n", + " Downloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n", + "Requirement already satisfied: triton==3.2.0 in /usr/local/lib/python3.11/dist-packages (from torch>=1.13.0->peft) (3.2.0)\n", + "Requirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.11/dist-packages (from torch>=1.13.0->peft) (1.13.1)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from sympy==1.13.1->torch>=1.13.0->peft) (1.3.0)\n", + "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.11/dist-packages (from transformers->peft) (2024.11.6)\n", + "Requirement already satisfied: tokenizers<0.22,>=0.21 in /usr/local/lib/python3.11/dist-packages (from transformers->peft) (0.21.1)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from jinja2->torch>=1.13.0->peft) (3.0.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub>=0.25.0->peft) (3.4.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub>=0.25.0->peft) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub>=0.25.0->peft) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests->huggingface-hub>=0.25.0->peft) (2025.1.31)\n", + "Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m1.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.8/13.8 MB\u001b[0m \u001b[31m18.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.6/24.6 MB\u001b[0m \u001b[31m27.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m883.7/883.7 kB\u001b[0m \u001b[31m27.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m2.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m13.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m7.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m95.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: nvidia-nvjitlink-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, nvidia-cusparse-cu12, nvidia-cudnn-cu12, nvidia-cusolver-cu12\n", + " Attempting uninstall: nvidia-nvjitlink-cu12\n", + " Found existing installation: nvidia-nvjitlink-cu12 12.5.82\n", + " Uninstalling nvidia-nvjitlink-cu12-12.5.82:\n", + " Successfully uninstalled nvidia-nvjitlink-cu12-12.5.82\n", + " Attempting uninstall: nvidia-curand-cu12\n", + " Found existing installation: nvidia-curand-cu12 10.3.6.82\n", + " Uninstalling nvidia-curand-cu12-10.3.6.82:\n", + " Successfully uninstalled nvidia-curand-cu12-10.3.6.82\n", + " Attempting uninstall: nvidia-cufft-cu12\n", + " Found existing installation: nvidia-cufft-cu12 11.2.3.61\n", + " Uninstalling nvidia-cufft-cu12-11.2.3.61:\n", + " Successfully uninstalled nvidia-cufft-cu12-11.2.3.61\n", + " Attempting uninstall: nvidia-cuda-runtime-cu12\n", + " Found existing installation: nvidia-cuda-runtime-cu12 12.5.82\n", + " Uninstalling nvidia-cuda-runtime-cu12-12.5.82:\n", + " Successfully uninstalled nvidia-cuda-runtime-cu12-12.5.82\n", + " Attempting uninstall: nvidia-cuda-nvrtc-cu12\n", + " Found existing installation: nvidia-cuda-nvrtc-cu12 12.5.82\n", + " Uninstalling nvidia-cuda-nvrtc-cu12-12.5.82:\n", + " Successfully uninstalled nvidia-cuda-nvrtc-cu12-12.5.82\n", + " Attempting uninstall: nvidia-cuda-cupti-cu12\n", + " Found existing installation: nvidia-cuda-cupti-cu12 12.5.82\n", + " Uninstalling nvidia-cuda-cupti-cu12-12.5.82:\n", + " Successfully uninstalled nvidia-cuda-cupti-cu12-12.5.82\n", + " Attempting uninstall: nvidia-cublas-cu12\n", + " Found existing installation: nvidia-cublas-cu12 12.5.3.2\n", + " Uninstalling nvidia-cublas-cu12-12.5.3.2:\n", + " Successfully uninstalled nvidia-cublas-cu12-12.5.3.2\n", + " Attempting uninstall: nvidia-cusparse-cu12\n", + " Found existing installation: nvidia-cusparse-cu12 12.5.1.3\n", + " Uninstalling nvidia-cusparse-cu12-12.5.1.3:\n", + " Successfully uninstalled nvidia-cusparse-cu12-12.5.1.3\n", + " Attempting uninstall: nvidia-cudnn-cu12\n", + " Found existing installation: nvidia-cudnn-cu12 9.3.0.75\n", + " Uninstalling nvidia-cudnn-cu12-9.3.0.75:\n", + " Successfully uninstalled nvidia-cudnn-cu12-9.3.0.75\n", + " Attempting uninstall: nvidia-cusolver-cu12\n", + " Found existing installation: nvidia-cusolver-cu12 11.6.3.83\n", + " Uninstalling nvidia-cusolver-cu12-11.6.3.83:\n", + " Successfully uninstalled nvidia-cusolver-cu12-11.6.3.83\n", + "Successfully installed nvidia-cublas-cu12-12.4.5.8 nvidia-cuda-cupti-cu12-12.4.127 nvidia-cuda-nvrtc-cu12-12.4.127 nvidia-cuda-runtime-cu12-12.4.127 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.2.1.3 nvidia-curand-cu12-10.3.5.147 nvidia-cusolver-cu12-11.6.1.9 nvidia-cusparse-cu12-12.3.1.170 nvidia-nvjitlink-cu12-12.4.127\n" + ] + } + ], + "id": "FqbgpucNWTQ2" + }, + { + "cell_type": "markdown", + "source": [ + "### Import Necessary Dependencies" + ], + "metadata": { + "id": "Sn06_JC8tzhf" + }, + "id": "Sn06_JC8tzhf" + }, + { + "cell_type": "code", + "source": [ + "import os\n", + "import pandas as pd\n", + "import numpy as np\n", + "import torch\n", + "from transformers import AutoModelForSeq2SeqLM, AutoTokenizer\n", + "from langchain.vectorstores import FAISS\n", + "from langchain.embeddings import HuggingFaceEmbeddings\n", + "from langchain.document_loaders import UnstructuredURLLoader\n", + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from rouge_score import rouge_scorer\n", + "from collections import Counter\n", + "import re\n", + "from datasets import load_dataset\n", + "from collections import Counter\n", + "import random\n", + "import evaluate" + ], + "metadata": { + "id": "yGgnPVcDtw13" + }, + "id": "yGgnPVcDtw13", + "execution_count": 7, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Load Pretrained Model and Tokenizer" + ], + "metadata": { + "id": "7tpQaF_HvbKN" + }, + "id": "7tpQaF_HvbKN" + }, + { + "cell_type": "code", + "source": [ + "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", + "MODEL_NAME = \"facebook/bart-large-cnn\"\n", + "\n", + "tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)\n", + "model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME).to(device)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 333, + "referenced_widgets": [ + "33064a345f3c49fcb8eec77918613d5c", + "561dc33b7b1b44b9b9d3e43237bd731a", + "510b34b0d80048a08e278ee92dd7f273", + "b92600a3b7fc4d518f207ad15f89d600", + "dec7700d4737411aa489b827c24cb548", + "991a5e7c38fa4b8bad07c2b20d5872b7", + "e4b8c4498d47488da427c5d0edeae7af", + "87e806bc56ce452aaac2b82b4d695fb1", + "fbbe111ff00f4584a9925e7632956bed", + "e9fd33af036c446683715944647eaf2b", + "f687e316e3f34ee5b4e9106da0717982", + "bc0619e09dc64b488f87933ed2a98608", + "169aa65e37b44a589d957853c9687c9b", + "09f940a029ce4fca9cc5e84f873c76ac", + "5fd9979c0bf645c3b9b5c0825ee06680", + "910fabbaae174a589edbf1ad4f526d1b", + "9ae2ff25090c4e97b6c2a5a9d976104d", + "77d07a68c58a41d8898d612afc376a22", + "4212b7221430478c913b71393d572d4f", + "d3378fc715244ba5a9a9fb2237f13051", + "89c13bda9f2a402a85e9618e30e01fe8", + "df5142e2487a44bdaa7f48821f3b1d28", + "d8f2b70a09a6418a8a17a3b1edcc2202", + "e02b660201ad43718ca20135f5aac892", + "ce61c7a890e748ada714d00a3492af6b", + "c1276bd7d8ef4dc19988e70d5b4c7d1b", + "51485a5915704961ab5b3e08ac34411a", + "4d94cb72fbf04c8bb7000753893e1e60", + "b9192d262e5e4eeaa47c722546b24f34", + "98e6c73f819c402e8cead19f1c6ea029", + "ea97f35287d44179b962829e0d6d38d9", + "19a10c3fe4f74c3baeaeec9334adeb3d", + "33b7bd588bbd4053a87e01a810d606ef", + "0a67e3e8980d4da1a4cbd09a1c395533", + "1f17b7b2e1f14ddf93ead8193e9199fa", + "72403e412ac14756ad5411705e1ebef4", + "5ff15e9fe8864cd580d9e854580d4b07", + "c6960704a2114883be95cc21e62b4c0f", + "1e3f4d3eaab24f79b143210930fc8e1e", + "41538491b58b4653ad642ee7561ab0a4", + "dcdab00cbcbb4a4fbcb573eae546c720", + "fff37da13feb46dd8441ddb15d4319a2", + "9002144f732c4e77b486845061eef2fc", + "29bd4d39d41c41278a4c0a2199b543b1", + "4b039a9438df4e58a088a5c1d9fb93f6", + "2c199ac515bc44dd95479422bb3cc201", + "ff044c0cc3cb4ab69b931ed1fba2a41d", + "8a7f3911b510412eb3f75bfdf72f8d98", + "aef8f2a0819d4dbbab3cfccb2aa818fc", + "74309fc0891d44d2b4eeb6bfaf3a7603", + "356d0df0535746acb529f3fbc8e95973", + "ea126ca304fa4396a6c88048fbf95aac", + "50f590124b5d4b0f81be1b2f94fd0c52", + "0bd92bc8f1b14846a110db1397663c8c", + "e2af3255909f42f1aac689c863e0fc90", + "b705fc1af0634eb099cea6c5ef385de2", + "00633af8e191416086cb16a185bb39fa", + "542b887b39a04b75a9e2b1db185a529b", + "5242b976df96448f904cd1b95c4e24ed", + "ddcb045def6844e5b7f6f8efc0acb68e", + "dbe5903603d3494f99a12795cb3c9147", + "78dc2e49762f48c5bfb78e5792e4d8c0", + "ed6c17acbb7846449f051f407cb1b26c", + "4dfc5b6aaf474987af92c22a1bfb000c", + "1892f534d1d14f0d812215fbd1b2ecf5", + "8d456cebc4c14b63b1323ae4e2b08b15" + ] + }, + "id": "5cF1ShpzQJIh", + "outputId": "eb958a0c-d32c-4156-cc19-818447e8fabd" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning: \n", + "The secret `HF_TOKEN` does not exist in your Colab secrets.\n", + "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n", + "You will be able to reuse this secret in all of your notebooks.\n", + "Please note that authentication is recommended but still optional to access public models or datasets.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "config.json: 0%| | 0.00/1.58k [00:00 best_bleu:\n", + " best_bleu = bleu\n", + " best_config_name = f\"run_{i+1}\"\n", + "\n", + "print(f\"\\n Best config: {best_config_name} with BLEU = {best_bleu:.3f}\")\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 986 + }, + "id": "tL8GIKc2PVFB", + "outputId": "20807ab8-b738-4e81-99ff-e1e66bbe3c94" + }, + "id": "tL8GIKc2PVFB", + "execution_count": 21, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + " Running config 1: LR=0.0002, Epochs=3\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/transformers/training_args.py:1611: FutureWarning: `evaluation_strategy` is deprecated and will be removed in version 4.46 of 🤗 Transformers. Use `eval_strategy` instead\n", + " warnings.warn(\n", + ":67: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `Seq2SeqTrainer.__init__`. Use `processing_class` instead.\n", + " trainer = Seq2SeqTrainer(\n", + "No label_names provided for model class `PeftModelForSeq2SeqLM`. Since `PeftModel` hides base models input arguments, if label_names is not given, label_names can't be set automatically within `Trainer`. Note that empty label_names list will be used instead.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + "
\n", + " \n", + " \n", + " [3/3 00:01, Epoch 3/3]\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", + "
EpochTraining LossValidation Loss
14.6119004.027294
23.8329003.791017
33.7649003.662988

" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + " Running config 2: LR=0.0001, Epochs=4\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/transformers/training_args.py:1611: FutureWarning: `evaluation_strategy` is deprecated and will be removed in version 4.46 of 🤗 Transformers. Use `eval_strategy` instead\n", + " warnings.warn(\n", + ":67: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `Seq2SeqTrainer.__init__`. Use `processing_class` instead.\n", + " trainer = Seq2SeqTrainer(\n", + "No label_names provided for model class `PeftModelForSeq2SeqLM`. Since `PeftModel` hides base models input arguments, if label_names is not given, label_names can't be set automatically within `Trainer`. Note that empty label_names list will be used instead.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + "

\n", + " \n", + " \n", + " [4/4 00:02, Epoch 4/4]\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", + "
EpochTraining LossValidation Loss
14.6119004.186360
24.0342004.049384
34.0868003.953845
44.1658003.906307

" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + " Running config 3: LR=5e-05, Epochs=5\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/transformers/training_args.py:1611: FutureWarning: `evaluation_strategy` is deprecated and will be removed in version 4.46 of 🤗 Transformers. Use `eval_strategy` instead\n", + " warnings.warn(\n", + ":67: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `Seq2SeqTrainer.__init__`. Use `processing_class` instead.\n", + " trainer = Seq2SeqTrainer(\n", + "No label_names provided for model class `PeftModelForSeq2SeqLM`. Since `PeftModel` hides base models input arguments, if label_names is not given, label_names can't be set automatically within `Trainer`. Note that empty label_names list will be used instead.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + "

\n", + " \n", + " \n", + " [5/5 00:03, Epoch 5/5]\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", + "
EpochTraining LossValidation Loss
14.6119004.286283
24.1469004.223115
34.2728004.175567
44.4061004.142850
54.4513004.123518

" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + " Best config: run_1 with BLEU = 0.212\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Use Learning Rate = 2e-4 (BEST ONE)" + ], + "metadata": { + "id": "SRB0At3gSTxD" + }, + "id": "SRB0At3gSTxD" + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 349 + }, + "id": "84e3d237-23b9-4170-b33e-ef95ab7d5cc0", + "outputId": "a45ce456-67d5-41b5-efdd-970938a42269" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/transformers/training_args.py:1611: FutureWarning: `evaluation_strategy` is deprecated and will be removed in version 4.46 of 🤗 Transformers. Use `eval_strategy` instead\n", + " warnings.warn(\n", + ":32: FutureWarning: `tokenizer` is deprecated and will be removed in version 5.0.0 for `Seq2SeqTrainer.__init__`. Use `processing_class` instead.\n", + " trainer = Seq2SeqTrainer(\n", + "No label_names provided for model class `PeftModelForSeq2SeqLM`. Since `PeftModel` hides base models input arguments, if label_names is not given, label_names can't be set automatically within `Trainer`. Note that empty label_names list will be used instead.\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "\n", + "

\n", + " \n", + " \n", + " [2/2 00:01, Epoch 2/2]\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
EpochTraining LossValidation Loss
13.9095003.412735
23.1019003.202263

" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "('./bart-lora-finance/best_model/tokenizer_config.json',\n", + " './bart-lora-finance/best_model/special_tokens_map.json',\n", + " './bart-lora-finance/best_model/vocab.json',\n", + " './bart-lora-finance/best_model/merges.txt',\n", + " './bart-lora-finance/best_model/added_tokens.json',\n", + " './bart-lora-finance/best_model/tokenizer.json')" + ] + }, + "metadata": {}, + "execution_count": 19 + } + ], + "source": [ + "import os\n", + "from transformers import Seq2SeqTrainer, Seq2SeqTrainingArguments, DataCollatorForSeq2Seq\n", + "\n", + "# Set output directory\n", + "output_dir = \"./bart-lora-finance\"\n", + "os.makedirs(output_dir, exist_ok=True)\n", + "\n", + "# Define training arguments\n", + "training_args = Seq2SeqTrainingArguments(\n", + " output_dir=output_dir,\n", + " evaluation_strategy=\"epoch\",\n", + " save_strategy=\"epoch\",\n", + " logging_strategy=\"epoch\",\n", + " learning_rate=2e-4,\n", + " per_device_train_batch_size=2,\n", + " per_device_eval_batch_size=2,\n", + " weight_decay=0.01,\n", + " save_total_limit=2,\n", + " num_train_epochs=2,\n", + " predict_with_generate=True,\n", + " fp16=torch.cuda.is_available(), # mixed precision if CUDA\n", + " logging_dir=os.path.join(output_dir, \"logs\"),\n", + " report_to=\"none\",\n", + " load_best_model_at_end=True,\n", + " metric_for_best_model=\"eval_loss\"\n", + ")\n", + "\n", + "# Data collator for seq2seq\n", + "data_collator = DataCollatorForSeq2Seq(tokenizer=tokenizer, model=lora_model)\n", + "\n", + "# Create trainer\n", + "trainer = Seq2SeqTrainer(\n", + " model=lora_model,\n", + " args=training_args,\n", + " train_dataset=train_ds,\n", + " eval_dataset=val_ds,\n", + " tokenizer=tokenizer,\n", + " data_collator=data_collator\n", + ")\n", + "\n", + "# Train the model\n", + "trainer.train()\n", + "\n", + "# Save best model\n", + "best_model_path = os.path.join(output_dir, \"best_model\")\n", + "trainer.save_model(best_model_path)\n", + "tokenizer.save_pretrained(best_model_path)\n" + ], + "id": "84e3d237-23b9-4170-b33e-ef95ab7d5cc0" + }, + { + "cell_type": "markdown", + "id": "f2e41d09-cedd-4787-87df-3af3355a500d", + "metadata": { + "id": "f2e41d09-cedd-4787-87df-3af3355a500d" + }, + "source": [ + "## Step 4: Assess Post-training Benchmark Performance (20 points)\n", + "Repeat Step 2 using your trained model." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "29bd05bd-1f1e-4b4c-be19-51349f8057d1", + "outputId": "93af2ed7-55e1-43ed-b314-22e578fc4dd6" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + " Post-Training Evaluation Results:\n", + "Average BLEU Score: 0.218\n", + "Average ROUGE-L Score: 0.431\n", + "Precision@1: 1.000\n", + "\n", + " Sample Predictions (2 per task):\n", + "\n", + "============================\n", + "Task: What is the impact of AI on Tesla’s stock movement?\n", + "\n", + "--- Sample 1 ---\n", + "Prediction: Tesla (TSLA.O) rallied 10% after Morgan Stanley upgraded the electric car maker to 'overweight' from 'equal-weight' Morgan Stanley said its Dojo supercomputer could boost the company's market value by nearly $600 billion. Tesla's stock is now trading at $370.\n", + "Reference: Tesla's stock rallied 10% after Morgan Stanley upgraded the electric car maker, citing the potential of its Dojo supercomputer.\n", + "\n", + "--- Sample 2 ---\n", + "Prediction: Tesla (TSLA.O) rallied 10% after Morgan Stanley upgraded the electric car maker to 'overweight' from 'equal-weight' Morgan Stanley said its Dojo supercomputer could boost the company's market value by nearly $600 billion. The company's stock is now valued at more than $50 billion.\n", + "Reference: Tesla's stock rallied 10% after Morgan Stanley upgraded the electric car maker, citing the potential of its Dojo supercomputer.\n" + ] + } + ], + "source": [ + "from transformers import AutoModelForSeq2SeqLM, AutoTokenizer\n", + "from rouge_score import rouge_scorer\n", + "from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction\n", + "import numpy as np\n", + "import pandas as pd\n", + "import torch\n", + "from peft import PeftModel, PeftConfig\n", + "from collections import defaultdict\n", + "\n", + "# Load LoRA-tuned model and tokenizer\n", + "peft_model_path = \"./bart-lora-finance/best_model\"\n", + "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", + "\n", + "config = PeftConfig.from_pretrained(peft_model_path)\n", + "base_model = AutoModelForSeq2SeqLM.from_pretrained(config.base_model_name_or_path).to(device)\n", + "model = PeftModel.from_pretrained(base_model, peft_model_path).to(device)\n", + "tokenizer = AutoTokenizer.from_pretrained(peft_model_path)\n", + "\n", + "# Prepare evaluation\n", + "scorer = rouge_scorer.RougeScorer(['rougeL'], use_stemmer=True)\n", + "smooth = SmoothingFunction().method1\n", + "\n", + "results = []\n", + "bleu_scores, rouge_scores, precision_scores = [], [], []\n", + "\n", + "# Iterate over held-out validation data (val_df)\n", + "for _, row in val_df.iterrows():\n", + " question, context, reference = row['question'], row['context'], row['answer']\n", + " prompt = f\"Instruction: {question}\\n\\n[Context Information]\\n{context}\"\n", + "\n", + " for _ in range(2): # Generate 2 predictions per question\n", + " inputs = tokenizer(prompt, return_tensors=\"pt\", truncation=True, max_length=512).to(device)\n", + " with torch.no_grad():\n", + " outputs = model.generate(\n", + " **inputs,\n", + " max_new_tokens=100,\n", + " temperature=0.7,\n", + " top_k=50,\n", + " top_p=0.95,\n", + " do_sample=True\n", + " )\n", + " prediction = tokenizer.decode(outputs[0], skip_special_tokens=True).strip()\n", + "\n", + " results.append({\n", + " \"question\": question,\n", + " \"reference\": reference,\n", + " \"prediction\": prediction\n", + " })\n", + "\n", + " # Compute metrics\n", + " bleu = sentence_bleu([reference.split()], prediction.split(), smoothing_function=smooth)\n", + " rouge = scorer.score(reference, prediction)['rougeL'].fmeasure\n", + " ref_words = set(reference.lower().split())\n", + " pred_words = set(prediction.lower().split())\n", + " precision_at_1 = 1 if len(ref_words & pred_words) > 0 else 0\n", + "\n", + " bleu_scores.append(bleu)\n", + " rouge_scores.append(rouge)\n", + " precision_scores.append(precision_at_1)\n", + "\n", + "# Compute average metrics\n", + "avg_bleu = np.mean(bleu_scores)\n", + "avg_rouge = np.mean(rouge_scores)\n", + "precision_at_1 = np.mean(precision_scores)\n", + "\n", + "# Print metrics\n", + "print(\"\\n Post-Training Evaluation Results:\")\n", + "print(f\"Average BLEU Score: {avg_bleu:.3f}\")\n", + "print(f\"Average ROUGE-L Score: {avg_rouge:.3f}\")\n", + "print(f\"Precision@1: {precision_at_1:.3f}\")\n", + "\n", + "# Print 2 responses per task\n", + "print(\"\\n Sample Predictions (2 per task):\")\n", + "grouped = defaultdict(list)\n", + "for r in results:\n", + " grouped[r['question']].append(r)\n", + "\n", + "for question, examples in grouped.items():\n", + " print(\"\\n============================\")\n", + " print(f\"Task: {question}\")\n", + " for i, ex in enumerate(examples[:2]):\n", + " print(f\"\\n--- Sample {i+1} ---\")\n", + " print(f\"Prediction: {ex['prediction']}\")\n", + " print(f\"Reference: {ex['reference']}\")\n" + ], + "id": "29bd05bd-1f1e-4b4c-be19-51349f8057d1" + }, + { + "cell_type": "markdown", + "id": "bc4354cb-edfb-4bf8-9638-456ad594a3f8", + "metadata": { + "id": "bc4354cb-edfb-4bf8-9638-456ad594a3f8" + }, + "source": [ + "## Step 5: Interpretation of Results (20 points)\n", + "In one-two paragraphs, summarize the results from training your model, noting how the outputs improved post training, how performance on the benchmarks and testing split changed post training, and whether and how the improvements and drawbacks from training you noticed empirically matched those you anticipated in Step 1 above." + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Summary of Training Results and Model Improvements\n", + "\n", + "After training the facebook/bart-large-cnn model using LoRA (Low-Rank Adaptation) on our financial QA dataset, we observed several meaningful improvements in the model's output quality and benchmark performance:\n", + "\n", + "\n", + "![image.png](data:image/png;base64,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)\n", + "\n", + "### Interpretation\n", + "\n", + "BLEU Score\n", + "\n", + "BLEU improved from 0.000 → 0.218, a strong signal that output text is now better aligned with reference answers in terms of word overlap and ordering.\n", + "\n", + "This shows that LoRA enabled the model to learn specific phrasing patterns from your training data.\n", + "\n", + "\n", + "ROUGE-L\n", + "\n", + "ROUGE-L jumped from 0.0566 → 0.431, showing the model is now producing more semantically similar summaries/responses.\n", + "\n", + "Indicates a large gain in relevance and faithfulness of responses to original content.\n", + "\n", + "Precision@1\n", + "\n", + "Precision@1 improved from near 0 to perfect (1.0), meaning every generated answer contains at least one key term from the reference.\n", + "\n", + "This is especially important in financial QA, where factual correctness is critical.\n", + "\n", + "### Qualitative Improvements\n", + "\n", + "Pre-training responses often contained generic or template-like outputs (e.g., social media references or vague summaries).\n", + "\n", + "Post-training outputs became more fact-specific, often correctly citing figures (e.g., “10% stock surge”) and demonstrating better contextual understanding.\n", + "\n", + "Responses were less likely to hallucinate or add non-financial filler content.\n", + "\n", + "### Empirical vs Anticipated Outcomes\n", + "\n", + "![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABCkAAAGSCAYAAADOw5t2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAALkOSURBVHhe7P19iGPXnS96f3UPDzzPOdjxrsofF5OYULsMxyRDNfGu7hynKlwH3FvpDiFhOpEqMXMDMe6W4hvIzLjKUSUMIWnHW+NMLmFOqyokXDPMRKqMQ8wQ1VR1QwyRxsTuSihxEhJIS5hcH3PhSpYd38P548JZzx/Wb2XtpbX11qpqVff3A5uu3u9r7bV+e+2l/ZJSSikQEREREREREd1i/5M9goiIiIiIiIjoVmAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTEgppZQ9cpBUKmWPIiIiIiIiIiIaaJTuh4k6KcZchIjojsR4SUQ0XYyrREQn16gxnI97EBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhAR0VD5fB6pVAqLi4totVr25LE0Gg3Mzc0hlUqhWCzak4mIiIjoDnbsnRTb29tIpVJ6qFQq9ixERNQzKzGzVCoBAJrNJp5//nl78lj29/fR7XYBABsbG/bk21qxWNTHMp1O25OJ6Ih1Oh1UKhWk02ndWSodsPl8HvV63V5EM+svO1gnwxhIRKM49k6K73//+7H/v/DCC7H/3wk2NzeRTqeRTqfRaDTsyURE2nHFzGFxqVAoAAB838eFCxfsyWMJwxC+7wMAoiiyJx+bRqOh07y5uWlPJqLbTKPRwJkzZ7C2thbrLEWvA7ZUKmF1dRXpdBqdTie2LBERHZ9j7aRoNBo4ODiIjdvZ2bnjTgS//OUvsb+/j/39fbz99tv2ZCIi4Jhj5rC4dPnyZSilcOPGDSwsLNiTx7K0tIQbN25AKYX19XV78rF5++23dZp/+ctf2pOJ6DbSaDTw8MMPo9ls6nG+7yMMQ4RhGJt3f3+fv/ITEd1Cx9pJ8aMf/Uj/HQSB/vvatWv6byIiegdjJhHRdGxsbMTu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57a2trZw/fr12G3E6N3q1mw2kcvlYrczB0GAcrkce4eFOHfuHKrVat92iOjONo2YOambiUuTxMFRjBPD9/b2Yi9Y9n0fhUIBL7/8MhYXF2PzmmS5pMdRktLm+z5yuRwODw/7PhGYzWZRrVZjt2xnMhnUajV85zvfic1LRMdnaWkJL7/8sm7r2Z8GzeVyqNVq2Nvb62vv2R577DHUajVnPbdjwuXLl1Eul5HJZGLbDIIAURQ5t3flyhXUajXnMoVCAb///e/74uCo7M85A8AjjzwS+79gDCSiWyGl3unRGFkqlcKYixyrdDqtnyes1Wp9LyAiIjousx4vZxFjOBENwrhKRHRyjRrDj/ROCiIiIiIiIiKiUbGTgoiIiIiIiIhmAjspiIiIiIiIiGgm3HbvpCAimhWMl0RE08W4SkR0co0aw3knBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMSCmllD1ykFQqZY8iIiIiIiIiIhpolO6HiTopxlyEiOiOxHhJRDRdjKtERCfXqDGcj3sQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBERERHRidFoNNBqtezRRHSbOJZOilQqpYd6vW5PpiNWr9djx2AUrVYL+Xwec3NzPHYT5iHRpMyyNmi4k+vkNBSLRaRSKRSLRXuS0+7uLhYXF2+b/Dfj2lGyy605LC4uIp/Pj3Sxkc1m9TJJKpUKUqkU0um0PYlIq1QqSKfTsTaOlMVB9VpixqB5KC6dTk89zxqNBk6dOoUgCOxJUyH77BrS6TQqlYq9CDBBTJXyNGww49k425B0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nWTc/HHlsWncNBDdCewYkSSl3pl5ZKlUCmMuQkR0R5o0XqZSKYRhyC8lEN2h5Cse7Xbb+Z6Z7e1tXLp0CVEUjf3FgZNu0rh60tTrdayurt6Rx5iIbl+jxnC+k4KIiIhohiS9LFbIyxvlfTRERES3E3ZSEBEREc0QeTHumTNnsLm5iWKxqId0Oo2NjQ0EQYALFy7YixIREZ147KQgIiIimiHr6+uoVqsIggClUgkbGxt6AICtrS3s7e05HwUhIiI66fhOCiKiI8J4SUQ0XYyrREQn16gxnHdSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc2ElFJK2SMHSaVS9igiIiIiIiIiooFG6X6YqJNizEWIiO5IjJdERNPFuEpEdHKNGsP5uAcRERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcF3dEajQbm5uaQSqVQLBbtyXQMeAyIiIhOhlarhUajYY8moinqdDqo1+v26ETjzn8SHEsnRSqV0sPtloE0G+r1ui5j6XTanpxof38f3W4XALCxsWFPnppWq4V8Pq8vxlkX/uS4jsFJYsbMQQPL0M0pFotITaFzTOLPOLHndiF56BoWFxeRz+fRarXsxZBOp/vmdw3msRm0LXuZUeeV+en2J8d7c3PTnhRjtieOwkmPF0EQ4NSpU+yoOEYnrcxIfKd3TJIfX/ziF7G6uort7e3Y+KTYlDT/SXYsnRQ0ukql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ZWUFh4eHyGazuHr1KjY2NvRw/fp1FAoFHBwcsN1JRLcM76QgIjoijJdERNPFuEpEdHKNGsN5JwURERERERERzQR2UhARERERERHRTGAnBRERERERERHNBHZSEBEREREREdFMYCcFEREREREREc0EdlIQERERERER0UxgJwURERERERERzQR2UhARERERERHRTGAnBRHRCdJqtdBoNOzRZOl0OqjX6/ZoIiIiIppx7KQgIppBxWIRc3NzSKVSSKVSenwQBDh16hQ7Kob44he/iNXVVWxvb9uTiIiOXavVQj6fj8X1dDqN3d1de9Y7huQBEZGNnRRERDOmUqlgY2MDABBFEaIo0tN834fnebjrrruMJWZHpVJBsVhEq9WyJx0r3/cBAO9973vtSUREx6rRaCAIApRKJczNzSEMQwRBgP39fZw/fx6VSsVehIjojpZSSil75CCpVApjLkJEdEeaNF5ms1ns7OygWq3i3Llz9uSZlk6nsb+/j1qthpWVFXvybafT6eDatWt4z3vec0ekl+hWmzSu3koSF3O5HK5cuaLH7+7u4vz58wCAZrOJhYUFY6nbXyqVQhiG2NvbsycR0W1q1BjOOymIiGbMm2++CQC4++677Uk0QxqNBu6//36sra3hpZdesicTEaHVamF/fx++78c6KADg3LlzyGQyAIBXXnklNo2I6E7GTgoiohmRTqeRSqWwv78PAFhdXe17J4XMYzOf7S0Wi1hcXNTLZrNZdDodexEg4TnpbDY79ksnR9n3YrGIVCqFYrFoLPknsg5722aad3d3sby8rNe9vLzsfD+HbGsa60LvMRZ73ocffhhnz55FrVbDhQsX7EWIaMY0Go2x4t2k8cL0+uuvAwAWFxftSQCAD37wgwCAP/zhD/Ykp3q9jmw2q/djbm4O+Xze+YhdvV5HqhdzO51OLO2Li4uJsRi9u8Q2Nzdj55Ll5eWhj6Zsb2/35ZNsfxDXecuVpk6ng2KxONE2iOjkYCcFEdGM+PznP48oivT7FHK5XN87KQbpdDpIp9PY2NjA4uIiwjCE7/vY2dlxvpzMfE46m80iiiIUCgVcvXoVq6urQxujppvd91Fsbm7qW6Plme6DgwM8/PDDzsbsIOOsa3NzE2tra5ifn0e5XEa5XMb8/Dy63S5838fKysodd5s20UlTr9fx8MMPo1Qq4ezZs4iiCJlM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95UrV+B5Hi5duqTPDfl8PnZuMN9XBADr6+v6MZb7778f+Xwe+Xwei4uLuoNmlK+YDJLNZhEEAXZ2dmLnrHw+j0uXLsHzPPz1X/+1vRgRnURqTBMsQkR0R5o0XoZhqACoWq1mT9LTbABUGIb2aKWUUlEUKQAqiiJ7kmq326pQKCjf9xUABUAFQaDK5bI968iiKIqtz9Rut1Umk9HTfN9XURSpdrutcrmcM91JaVZKqVqt5ky7pPlm13V4eKjCMFSe56lcLqeiKFJRFKlMJqOCINDpsLdDREcjqf6O4vDwUOVyOeV5nq67mUwmsf6OGy9cZB2jDKMYJw2yj1EUqcPDw1jsDYJAbW1t2Ytok54btra2YrHRjPE2DMi/pPNWu91WURT1bSOXy6lmsxmbl4hmz6ixLqXemXlkqVQKYy5CRHRHYrw8+eQrHu122/kL5fb2Ni5duoQoivp+WSSi6WNcHV29Xsfq6irjExHNjFFjOB/3ICIiSiAv1EsiLwF917veZU8iIiIiogmwk4KIiCiBvAzuzJkz+h0bMqTTaf05wQsXLtiLEhEREdEE+LgHEdERYby8Pezu7uIf/uEfcPXqVXS7XT0+DEN86lOfwoULF5yPghDR9DGujo6PexDRrBk1hrOTgojoiDBeEhFNF+MqEdHJNWoM5+MeRERERERERDQT2ElBRERERERERDOBnRRERERERERENBPYSUFEREREREREM4GdFEREREREREQ0E9hJQUREREREREQzgZ0URERERERERDQT2ElBRERERERERDOBnRRERERERERENBPYSUFEREREREREM4GdFEREREREREQ0E9hJQUREREREREQzgZ0URERERERERDQT2ElBRERERERERDOBnRRERERERERENBPYSUFEREREREREM4GdFEREREREREQ0E9hJQUREREREREQzgZ0URERERERERDQT2ElBRERERERERDOBnRRERERERERENBPYSUFEREREREREM4GdFEREREREREQ0E1JKKWWPHCSVStmjiIiIiIiIiIgGGqX7YaJOijEXISK6IzFeEhFNF+MqEdHJNWoM5+MeRERERERERDQT2ElBRERERERERDOBnRRERERERERENBPYSUFEREREREREM4GdFHTLVCoVpFIpzM3NYXd3155MRDOg1Wqh0WjYo8fW6XRQr9ft0URE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K27jqdxyRFFkWq2WnVe/D8MwtS7z6m00GqXSNADodDqpDg2/8wNQsmR7CQCY7TTtqnsR7F/M93o9m+afz90Lej/t4ODAxhY+jQ+yaFyi8ZmatSw35vB/vNP18GO4Xq9nJKdTQOM4N44yczoefHnTamzlr49x1tW/4M373jjxq78ct778tHnpel3g1+Ui28ZPy8tLt5lf97qMrE4xnzixqd8Josv183FjV1/e98ZZL78cZsaygNPI2wd9i03lWDRj5V8Iuge3e9Lw09zv3QPTvUDO6pmWJRt494LaP/jcC2q34ZxVprxp/LzzOgfccvgnD3cetwz+srLWx013DQYD+30QBKk0t2MgjuNUQ+tuB7++/Yt7d31OU99mTr34y/Mbcrfe3GXOqzc/3e/cKk5+xfADHkDJku0lAGC207SrGl/4sYXKu0jWOCjvPK+xpR9zatyQZd6FsJ+XcebJujtVYyA/htN5/JjJOPFN0bszN6/jIUvetHpBm1UOM4nv/XXNy8vMKMes+jJz0vUHQb8j5TTbJisvja39+jVO3fv7WhbJ+IHNTZOcfSyvPmfNk7VdlHZ4+fUFnEbePui70DEpisWibG5u2s9XrlyRV199NTWNKpfL9v1HH31k3//ud7+z79944w373vXTn/5UXn755dR3cRzb9w8ePLDvHz58aN+7yxSR1LodHx+n0pRfpizFYnEq7+985zv2vZv39va2TDqPZHt7W4bDoR0PwvXZZ5+lPqu89dE8P983Pv+fXLfblX//+992mpOTE2eOtHfeeUeuXLliP3/729+271999dVUfV+5ckWKxaL97Hrc+s7yj3/8w74vFouyvr6eSv/mN79p3//pT39Kpamsetvc3JQgCOznMAylVCpJvV6Xl156Se7fvy/379+/kFGgAQDA6ei5340HXF//+tdFZsQeeef5KIpEvDjkcfnxq+sLX/iC/5WNzfwYTuPJ7e3t1PfnTeO8drst9ckjL93X2tra1Lrev39fjDFTcdgiZtWX5KQ///zzIiLyn//8x0+a6SzzWtTGxkYq/lZuTP+4hsOhnJyc2DEv/Fe73RY5xzICWS60k2IZb7/9tn3/wQcfiEwOosFgICIilUol86DN4zbsepD5F/46SIy+9HnJImKXe1a0UZOME0uz2bSD9IRhKFtbW7K1tSX7+/up6ZahAy3pYDia59bWlj/puTmv+v7zn/9s37fb7al8b9++bdOXHSjq3r17qY6KdrstOzs7cu3aNdnY2Jg5GCsAAHjy9Nz/pS99yU8ScS4+l4k9RES+9rWviUwek76KxuOxHYjdHQzxPGM/rUN93KX/yqvj4XAou7u7UiqVUgNBXsZHZq6vr0sYhtJut6fiTo1Z8zrMltHtdqVaraYGui8UCrZTYVH6g+VgMJjaXjy2FE/KynZSvPzyy/ai9eHDhzIcDlN3VLh3IjxNdnd35fbt27aBieNYkiSRJElSF/HLGA6HEkWR7O/vy2AwkDAMpVarSZIkUqlU/MnhKJfL8vDhQ6nValP1PxgM5NatW1OdLwAAAE9Sv9+Xq1evyt27d+WFF16Qd999VzqdjnQ6HTk4OPAnP3PuHbxZL1ez2ZQwDGV/f1/W19fl3r17dl0va5z661//WkREbty4IYeHh3J0dCTValV2dnYkiqKpu4mXVa1WZWtrS46Pj+WVV16RVqtl60zv8FlWsVic2k7u6/79+/4swLlZ2U4KEZF3333Xvv/oo4/s3zSCIMi99S6P+/eIF154QWRyO7/LPxj911n673//a9+7v9T/7Gc/s+97vZ40m03Z3t6W7e1t2djYsGnL+MMf/mDv1ojjWB49eiR7e3uyvb0tP/zhD/3Jz8151fc3vvEN+/48Gtj19XXZ29uTR48eyWAwkEajkdpmv/nNb1LTAwCA1aF/A/3Xv/7lJ4k4d1r4P0bM89e//lVERL7yla/4SU/cW2+9JScnJ9JoNKTZbMrbb78tm5ubsrm5KV/96lf9yc+M1qF/B4Hq9/vS7XbtY0XH47Hcvn1bgiCQBw8eyL1796RcLtt1ffHFF/0sLoXnn39egiCQIAjk7t27cuvWLTk+PpYkSU4Vi7qOjo5kf39foiiSv/zlL7K3tyc3b960dbbMneYiIl/84hdFROTRo0d+kpX113PgPK10J4U75sQHH3xgx6OY1/v4i1/8IvVM5fF4nBrL4lvf+pZ97/Y2+s8BHg6HUiqV7Ou02u321IH929/+1r6/ceOGSMbfIdz/vo3H45mNxyx//OMf7Xu9NVH9/e9/T30+b2dR3/54HC+99JJ9n3Vr3dHRkc1zd3c3lTZLv9+38+kzyNfX16VcLsvPf/5zOx3/0QMAYHXprfV541J9/PHHIk485uv3+/5XIs4YFm4csip0bIismNn9oeysaR1qnfq+973vpf5uouN5+OObKT/muwzG47F897vflRs3bsgnn3xifyh79OiRbG9vL92J4Pvb3/4mIiI/+MEPMvNyr4EWoX9PGQwGUzG0TOLzra0t+clPfuInAedmpTsp1tfX7YCX7oCL8/7qcXJyIlevXrUDvpRKJfsfuCAI5Pvf/76d9v3337fvq9WqHB4eSrfblaOjI4njWNrttrTbbXv3xWltbW3J7u6u1Ot1KZfLqU6Td955RyTjJOeui1uGZb3yyiv2/e9//3vbG1qv1+Xu3bupac/baevbHVNkf3/fbluZDBpVq9VsehzH0mw2pdvtSrPZlDt37th8l/m147nnnrPzvffee3b8ieFwmBp81a1fAACwWt544w0JgkD29/enOhz6/b5Uq1URkdy7S996662pi7dqtSonJydSLBanLq7n3U1wEfSOT7+83W5X7ty5k/pOaeyVd8eJK29arcNqtTq17GazKYPBQKIoshfXzz33nMjkV3z/4vrw8DB1h/Fl8dlnn9k7mM9jH9CYWO/kUePxWKrVauqayTVrv/zRj34kMomh/e3wy1/+UmRGJx5wLvzHfcyz7CzuYxyzHsXjPubSf1SO8R5LKTnPozbeIyrdx1z6L/+xl8Z7RGXWy3/E5rwyGW+aMAxTj1R1X/4jiNxHe/rr4JbLfRTTvPUZDAa5y3frX7xtO2vbzFvmrHmXrW8zowxqNBrN3O6S8azweWUwM7ZHXp6AS5ZsLwEAs522XdVHRcrkUYpJkpg4jm1skRUfaixTqVRMEAQmjmNTq9VsvJEVrxgnJg3D0CRJksp73mMus+Q9hlNpuVw6TxAEplarmSRJUuWRjNhHY26dx3+ku2vWtPpI1yAITKVSMUmS2GVm1Zmul9ZXkiQ2dtZHmvpln1VfZk66xn9++U+zbfLyyot1gyAwxWIxc3/zZeVrJjGv7rfFYtEkSWJqtZq9VtD90y/HrP3SOI+PDcNwap8h3sVZyTuWfItN5Vg0YzXvQlB3/qyDSbkXp1nPiDZeJ0WSJKbT6aQuWuM4zs3fTNbTPVnpAVmr1aYOynllMhnTDAYDe/Br3n7joLRxFqeB7/V6U2VU/rKy9Hq9qeUfHBwY45zc5II6KcyS9a20DO48vkajkVq2rp+W1TWvDKrRaEwtN4oikyRJ7roC5hTtJQBgtsdpV3u9nu1w0PP5rPhQ4wmTEZvFcZx7ET8ajVLLcWOM01wI6zz+hbrSsviy1rnX65nRaDS1Xlnz+OvomzVtq9VKxZ0az2bVmV9fYRiaSqViRqOR7Vzyyz6rvsycdI3//PKfZttk5aXlEadDLJl01Lgxql8mn5+vKyuu1/z0Bza/HH49Z+V9cHCQun7SDg3iXZyVvGPJVzCfT7ywQqEgS87yWMbjsVy9etXeNtXr9aZuqxMRqdfr9hE5SZJc+HOhfd1u1/7nrlgsPvYgOQAun4tuLwHgaXeR7WqpVJJ2u31hy8PTQa9JWq1W5kD//X5frl27xvUBnkmLtuErOyaFjjnw2muv2Q6KKIoyOygAAAAA4Enzx4rw/e9//xNxxvUAMG1lOyl2dnZkZ2cnNVjkr371q9Q0AAAAALAqdED8O3fuSLVatT+81ut1qVarsrW1JUEQyHvvvefPCmBiZTspXMViUTqdjmxubvpJAAAAALASNjc3pdfrSblcluPjY/vD687OjnzyySdSq9Xk4cOH3B0OzLDyY1IAwGVFewkAZ4t2FQAur0Xb8EtxJwUAAAAAAHj60UkBAAAAAABWAp0UAAAAAABgJdBJAQAAAAAAVgKdFAAAAAAAYCXQSQEAAAAAAFYCnRQAAAAAAGAl0EkBAAAAAABWAp0UAAAAAABgJdBJAQAAAAAAVgKdFAAAAAAAYCXQSQEAAAAAAFYCnRQAAAAAAGAl0EkBAAAAAABWQsEYY/wvZykUCv5XAAAAAAAAMy3S/bB0JwUAAAAAAMB54O8eAAAAAABgJdBJAQAAAAAAVgKdFAAAAAAAYCXQSQEAAAAAAFYCnRQAAAAAAGAl0EkBAAAAAABWAp0UAAAAAABgJdBJAQAAAAAAVsL/AfcnGdGz5Q4sAAAAAElFTkSuQmCC)\n", + "\n", + "### Conclusion\n", + "\n", + "LoRA significantly improved the model’s ability to retrieve and summarize financial data accurately while remaining efficient to train. Compared to prompt tuning, LoRA delivered better performance with modest compute cost, making it a compelling option for financial QA systems or other retrieval-augmented generation (RAG) pipelines.\n", + "\n", + "\n" + ], + "metadata": { + "id": "R2S4GvEWTD3Z" + }, + "id": "R2S4GvEWTD3Z" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + }, + "colab": { + "provenance": [], + "gpuType": "T4" + }, + "accelerator": "GPU", + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "33064a345f3c49fcb8eec77918613d5c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_561dc33b7b1b44b9b9d3e43237bd731a", + "IPY_MODEL_510b34b0d80048a08e278ee92dd7f273", + "IPY_MODEL_b92600a3b7fc4d518f207ad15f89d600" + ], + "layout": "IPY_MODEL_dec7700d4737411aa489b827c24cb548" + } + }, + "561dc33b7b1b44b9b9d3e43237bd731a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_991a5e7c38fa4b8bad07c2b20d5872b7", + "placeholder": "​", + "style": "IPY_MODEL_e4b8c4498d47488da427c5d0edeae7af", + "value": "config.json: 100%" + } + }, + "510b34b0d80048a08e278ee92dd7f273": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_87e806bc56ce452aaac2b82b4d695fb1", + "max": 1585, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_fbbe111ff00f4584a9925e7632956bed", + "value": 1585 + } + }, + "b92600a3b7fc4d518f207ad15f89d600": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e9fd33af036c446683715944647eaf2b", + "placeholder": "​", + "style": "IPY_MODEL_f687e316e3f34ee5b4e9106da0717982", + "value": " 1.58k/1.58k [00:00<00:00, 83.4kB/s]" + } + }, + "dec7700d4737411aa489b827c24cb548": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "991a5e7c38fa4b8bad07c2b20d5872b7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e4b8c4498d47488da427c5d0edeae7af": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "87e806bc56ce452aaac2b82b4d695fb1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fbbe111ff00f4584a9925e7632956bed": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e9fd33af036c446683715944647eaf2b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f687e316e3f34ee5b4e9106da0717982": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bc0619e09dc64b488f87933ed2a98608": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_169aa65e37b44a589d957853c9687c9b", + "IPY_MODEL_09f940a029ce4fca9cc5e84f873c76ac", + "IPY_MODEL_5fd9979c0bf645c3b9b5c0825ee06680" + ], + "layout": "IPY_MODEL_910fabbaae174a589edbf1ad4f526d1b" + } + }, + "169aa65e37b44a589d957853c9687c9b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9ae2ff25090c4e97b6c2a5a9d976104d", + "placeholder": "​", + "style": "IPY_MODEL_77d07a68c58a41d8898d612afc376a22", + "value": "vocab.json: 100%" + } + }, + "09f940a029ce4fca9cc5e84f873c76ac": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4212b7221430478c913b71393d572d4f", + "max": 898823, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d3378fc715244ba5a9a9fb2237f13051", + "value": 898823 + } + }, + "5fd9979c0bf645c3b9b5c0825ee06680": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_89c13bda9f2a402a85e9618e30e01fe8", + "placeholder": "​", + "style": "IPY_MODEL_df5142e2487a44bdaa7f48821f3b1d28", + "value": " 899k/899k [00:00<00:00, 7.80MB/s]" + } + }, + "910fabbaae174a589edbf1ad4f526d1b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9ae2ff25090c4e97b6c2a5a9d976104d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "77d07a68c58a41d8898d612afc376a22": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4212b7221430478c913b71393d572d4f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d3378fc715244ba5a9a9fb2237f13051": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "89c13bda9f2a402a85e9618e30e01fe8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "df5142e2487a44bdaa7f48821f3b1d28": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d8f2b70a09a6418a8a17a3b1edcc2202": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e02b660201ad43718ca20135f5aac892", + "IPY_MODEL_ce61c7a890e748ada714d00a3492af6b", + "IPY_MODEL_c1276bd7d8ef4dc19988e70d5b4c7d1b" + ], + "layout": "IPY_MODEL_51485a5915704961ab5b3e08ac34411a" + } + }, + "e02b660201ad43718ca20135f5aac892": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4d94cb72fbf04c8bb7000753893e1e60", + "placeholder": "​", + "style": "IPY_MODEL_b9192d262e5e4eeaa47c722546b24f34", + "value": "merges.txt: 100%" + } + }, + "ce61c7a890e748ada714d00a3492af6b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_98e6c73f819c402e8cead19f1c6ea029", + "max": 456318, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ea97f35287d44179b962829e0d6d38d9", + "value": 456318 + } + }, + "c1276bd7d8ef4dc19988e70d5b4c7d1b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_19a10c3fe4f74c3baeaeec9334adeb3d", + "placeholder": "​", + "style": "IPY_MODEL_33b7bd588bbd4053a87e01a810d606ef", + "value": " 456k/456k [00:00<00:00, 12.4MB/s]" + } + }, + "51485a5915704961ab5b3e08ac34411a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4d94cb72fbf04c8bb7000753893e1e60": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b9192d262e5e4eeaa47c722546b24f34": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "98e6c73f819c402e8cead19f1c6ea029": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ea97f35287d44179b962829e0d6d38d9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "19a10c3fe4f74c3baeaeec9334adeb3d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "33b7bd588bbd4053a87e01a810d606ef": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0a67e3e8980d4da1a4cbd09a1c395533": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1f17b7b2e1f14ddf93ead8193e9199fa", + "IPY_MODEL_72403e412ac14756ad5411705e1ebef4", + "IPY_MODEL_5ff15e9fe8864cd580d9e854580d4b07" + ], + "layout": "IPY_MODEL_c6960704a2114883be95cc21e62b4c0f" + } + }, + "1f17b7b2e1f14ddf93ead8193e9199fa": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1e3f4d3eaab24f79b143210930fc8e1e", + "placeholder": "​", + "style": "IPY_MODEL_41538491b58b4653ad642ee7561ab0a4", + "value": "tokenizer.json: 100%" + } + }, + "72403e412ac14756ad5411705e1ebef4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dcdab00cbcbb4a4fbcb573eae546c720", + "max": 1355863, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_fff37da13feb46dd8441ddb15d4319a2", + "value": 1355863 + } + }, + "5ff15e9fe8864cd580d9e854580d4b07": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9002144f732c4e77b486845061eef2fc", + "placeholder": "​", + "style": "IPY_MODEL_29bd4d39d41c41278a4c0a2199b543b1", + "value": " 1.36M/1.36M [00:00<00:00, 13.6MB/s]" + } + }, + "c6960704a2114883be95cc21e62b4c0f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1e3f4d3eaab24f79b143210930fc8e1e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "41538491b58b4653ad642ee7561ab0a4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "dcdab00cbcbb4a4fbcb573eae546c720": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fff37da13feb46dd8441ddb15d4319a2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9002144f732c4e77b486845061eef2fc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "29bd4d39d41c41278a4c0a2199b543b1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4b039a9438df4e58a088a5c1d9fb93f6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2c199ac515bc44dd95479422bb3cc201", + "IPY_MODEL_ff044c0cc3cb4ab69b931ed1fba2a41d", + "IPY_MODEL_8a7f3911b510412eb3f75bfdf72f8d98" + ], + "layout": "IPY_MODEL_aef8f2a0819d4dbbab3cfccb2aa818fc" + } + }, + "2c199ac515bc44dd95479422bb3cc201": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_74309fc0891d44d2b4eeb6bfaf3a7603", + "placeholder": "​", + "style": "IPY_MODEL_356d0df0535746acb529f3fbc8e95973", + "value": "model.safetensors: 100%" + } + }, + "ff044c0cc3cb4ab69b931ed1fba2a41d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ea126ca304fa4396a6c88048fbf95aac", + "max": 1625222120, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_50f590124b5d4b0f81be1b2f94fd0c52", + "value": 1625222120 + } + }, + "8a7f3911b510412eb3f75bfdf72f8d98": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0bd92bc8f1b14846a110db1397663c8c", + "placeholder": "​", + "style": "IPY_MODEL_e2af3255909f42f1aac689c863e0fc90", + "value": " 1.63G/1.63G [00:14<00:00, 144MB/s]" + } + }, + "aef8f2a0819d4dbbab3cfccb2aa818fc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "74309fc0891d44d2b4eeb6bfaf3a7603": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "356d0df0535746acb529f3fbc8e95973": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ea126ca304fa4396a6c88048fbf95aac": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "50f590124b5d4b0f81be1b2f94fd0c52": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "0bd92bc8f1b14846a110db1397663c8c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e2af3255909f42f1aac689c863e0fc90": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b705fc1af0634eb099cea6c5ef385de2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_00633af8e191416086cb16a185bb39fa", + "IPY_MODEL_542b887b39a04b75a9e2b1db185a529b", + "IPY_MODEL_5242b976df96448f904cd1b95c4e24ed" + ], + "layout": "IPY_MODEL_ddcb045def6844e5b7f6f8efc0acb68e" + } + }, + "00633af8e191416086cb16a185bb39fa": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dbe5903603d3494f99a12795cb3c9147", + "placeholder": "​", + "style": "IPY_MODEL_78dc2e49762f48c5bfb78e5792e4d8c0", + "value": "generation_config.json: 100%" + } + }, + "542b887b39a04b75a9e2b1db185a529b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ed6c17acbb7846449f051f407cb1b26c", + "max": 363, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4dfc5b6aaf474987af92c22a1bfb000c", + "value": 363 + } + }, + "5242b976df96448f904cd1b95c4e24ed": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1892f534d1d14f0d812215fbd1b2ecf5", + "placeholder": "​", + "style": "IPY_MODEL_8d456cebc4c14b63b1323ae4e2b08b15", + "value": " 363/363 [00:00<00:00, 9.30kB/s]" + } + }, + "ddcb045def6844e5b7f6f8efc0acb68e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dbe5903603d3494f99a12795cb3c9147": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "78dc2e49762f48c5bfb78e5792e4d8c0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ed6c17acbb7846449f051f407cb1b26c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4dfc5b6aaf474987af92c22a1bfb000c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1892f534d1d14f0d812215fbd1b2ecf5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8d456cebc4c14b63b1323ae4e2b08b15": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c3b12513dcd445cb89150808f05107c7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4ae476f3cedc47b3b479867bef1d3ece", + "IPY_MODEL_bc0645ad1b9543da8ab52950590420b7", + "IPY_MODEL_b7d2e2ec43c04b2084e268a10881fdff" + ], + "layout": "IPY_MODEL_c35d5d1cb52f47fc8e6e2a8db3072045" + } + }, + "4ae476f3cedc47b3b479867bef1d3ece": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b6ebee8484d74c688ab5af2ccc556375", + "placeholder": "​", + "style": "IPY_MODEL_5412501e1bdd469a8cd6dc1cc451baaf", + "value": "Downloading builder script: 100%" + } + }, + "bc0645ad1b9543da8ab52950590420b7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7cceec22d83043e6bfedbf74f4939382", + "max": 5937, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b08f5bdaa0b94fbc87232f848688c3d3", + "value": 5937 + } + }, + "b7d2e2ec43c04b2084e268a10881fdff": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9f1841f8e5dd42f1a032fe4ea8d81b3b", + "placeholder": "​", + "style": "IPY_MODEL_2c0b1ffc766c41c387b6198b8e5b6c45", + "value": " 5.94k/5.94k [00:00<00:00, 345kB/s]" + } + }, + "c35d5d1cb52f47fc8e6e2a8db3072045": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b6ebee8484d74c688ab5af2ccc556375": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5412501e1bdd469a8cd6dc1cc451baaf": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7cceec22d83043e6bfedbf74f4939382": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b08f5bdaa0b94fbc87232f848688c3d3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9f1841f8e5dd42f1a032fe4ea8d81b3b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2c0b1ffc766c41c387b6198b8e5b6c45": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6c78d26a82c841b891c20ff4123a2a9f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0279c6c91f594f76911d92894d562724", + "IPY_MODEL_e925af094cf648229c69f90cb43ca2f0", + "IPY_MODEL_cddb5ce12eff477caf7dbb3b4134a62e" + ], + "layout": "IPY_MODEL_06f165aaf3f14bc884ed362d39dfd75d" + } + }, + "0279c6c91f594f76911d92894d562724": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9406793a250e47a195a23042b9007347", + "placeholder": "​", + "style": "IPY_MODEL_144fba33ab52449b92f92817819f1b4c", + "value": "Downloading extra modules: " + } + }, + "e925af094cf648229c69f90cb43ca2f0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_89b9be1e01bc4637a46830630030696e", + "max": 1554, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_161fdf3b0a354620be56c4ddf82cc7a9", + "value": 1554 + } + }, + "cddb5ce12eff477caf7dbb3b4134a62e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_12fc564467a34b3a850a23b80c15f359", + "placeholder": "​", + "style": "IPY_MODEL_3438c5bf1a184ee389fc009290be7186", + "value": " 4.07k/? [00:00<00:00, 121kB/s]" + } + }, + "06f165aaf3f14bc884ed362d39dfd75d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9406793a250e47a195a23042b9007347": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "144fba33ab52449b92f92817819f1b4c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "89b9be1e01bc4637a46830630030696e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "161fdf3b0a354620be56c4ddf82cc7a9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "12fc564467a34b3a850a23b80c15f359": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3438c5bf1a184ee389fc009290be7186": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2a6cb53d2ce042b1b79797f07d84fedc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_afb77fa406b44f8d8025e0c51af10fe7", + "IPY_MODEL_820ceb959f954543b9c997e775399fa4", + "IPY_MODEL_4a4c141ca94a422db67aa9231b1bea48" + ], + "layout": "IPY_MODEL_7ea22118ba9a47758bf1667e727b38b9" + } + }, + "afb77fa406b44f8d8025e0c51af10fe7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_48930a0d163e4ae0b7f1917125f6e511", + "placeholder": "​", + "style": "IPY_MODEL_a8ae3e3771d34cfb9bdfb7aad16baa89", + "value": "Downloading extra modules: 100%" + } + }, + "820ceb959f954543b9c997e775399fa4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9cd62176d3fc4d769aed9530fb08f517", + "max": 3344, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d287ce7aaaaf415a92745f14692fe82a", + "value": 3344 + } + }, + "4a4c141ca94a422db67aa9231b1bea48": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e1335db382e2464bbadfa622537c9fa1", + "placeholder": "​", + "style": "IPY_MODEL_953af19eca024faa956dc2ffc46db651", + "value": " 3.34k/3.34k [00:00<00:00, 130kB/s]" + } + }, + "7ea22118ba9a47758bf1667e727b38b9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "48930a0d163e4ae0b7f1917125f6e511": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a8ae3e3771d34cfb9bdfb7aad16baa89": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9cd62176d3fc4d769aed9530fb08f517": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d287ce7aaaaf415a92745f14692fe82a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e1335db382e2464bbadfa622537c9fa1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "953af19eca024faa956dc2ffc46db651": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8987d50e34cf4e9fab7abb91e13e8de3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_05122a3b039d47459db76c49b38e3347", + "IPY_MODEL_c041153d32ee4f5e8de22060a8846859", + "IPY_MODEL_21e7f6e2d6e140a88201519e9ce74c00" + ], + "layout": "IPY_MODEL_725e280b9a0243279b3200767e27206d" + } + }, + "05122a3b039d47459db76c49b38e3347": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_686dc65c2ddf4bc1ac0f4caa78582e6d", + "placeholder": "​", + "style": "IPY_MODEL_d4e11b6d8cea43269fbe0d8e3f0dacdd", + "value": "Map: 100%" + } + }, + "c041153d32ee4f5e8de22060a8846859": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3fdc1c7b7ac34dc3a1f20428e8a90607", + "max": 2, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8fbb6a62bf464a10a0a1ae80694c5b35", + "value": 2 + } + }, + "21e7f6e2d6e140a88201519e9ce74c00": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_18fd3ab56cd343bcbc2659b4efbc56aa", + "placeholder": "​", + "style": "IPY_MODEL_969b8502808a4eae8429e3bbbe408be1", + "value": " 2/2 [00:00<00:00, 100.81 examples/s]" + } + }, + "725e280b9a0243279b3200767e27206d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "686dc65c2ddf4bc1ac0f4caa78582e6d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d4e11b6d8cea43269fbe0d8e3f0dacdd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3fdc1c7b7ac34dc3a1f20428e8a90607": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8fbb6a62bf464a10a0a1ae80694c5b35": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "18fd3ab56cd343bcbc2659b4efbc56aa": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "969b8502808a4eae8429e3bbbe408be1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d04d4630f94d467cb33e6853c288f47e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cb51dd6295ab4de49553b133ed698aeb", + "IPY_MODEL_b5b70440d2bb403bad5819aef395ef23", + "IPY_MODEL_238d10c3b78848cbb745de5c8ba3c364" + ], + "layout": "IPY_MODEL_365cbc4c086943d4aca9b238bfb7257d" + } + }, + "cb51dd6295ab4de49553b133ed698aeb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cccce1ad13284158ac54705e259784dc", + "placeholder": "​", + "style": "IPY_MODEL_7f6f77d7762c49498d98d3099c3d38c7", + "value": "Map: 100%" + } + }, + "b5b70440d2bb403bad5819aef395ef23": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dc7cced5932443bca0471a30a20a4120", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a03b3bcc685c4ee3bb9ee16782c2a22c", + "value": 1 + } + }, + "238d10c3b78848cbb745de5c8ba3c364": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d4d6cc0d80194e9fa1d2c2f3792f20d5", + "placeholder": "​", + "style": "IPY_MODEL_bf0252a7b44b48c4b06a01d0cc71b4da", + "value": " 1/1 [00:00<00:00, 51.97 examples/s]" + } + }, + "365cbc4c086943d4aca9b238bfb7257d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cccce1ad13284158ac54705e259784dc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7f6f77d7762c49498d98d3099c3d38c7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "dc7cced5932443bca0471a30a20a4120": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a03b3bcc685c4ee3bb9ee16782c2a22c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d4d6cc0d80194e9fa1d2c2f3792f20d5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bf0252a7b44b48c4b06a01d0cc71b4da": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ad92ffadc4fb4179a05fb71f2b6a6420": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a367d77510e54e2992d348d58915a17d", + "IPY_MODEL_693f923f85cc4d38b4b9ef87140a8b6f", + "IPY_MODEL_06e7bb942c8f4bdb82426e60e2c5d7a0" + ], + "layout": "IPY_MODEL_367dc4ee74e748e8849e878b92d7844f" + } + }, + "a367d77510e54e2992d348d58915a17d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_38420a876c834fc282d61a56acf31c8f", + "placeholder": "​", + "style": "IPY_MODEL_b65da0936792425987d06b0fddbd1383", + "value": "Map: 100%" + } + }, + "693f923f85cc4d38b4b9ef87140a8b6f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b7f611e76dd04a08b59952201f5bc86c", + "max": 2, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_681a668d8239431189403c0c3fb7dc3b", + "value": 2 + } + }, + "06e7bb942c8f4bdb82426e60e2c5d7a0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_63e721da801a40c9815b0fa836825f87", + "placeholder": "​", + "style": "IPY_MODEL_ab51d8d76df54670a3655d6c91abe6a2", + "value": " 2/2 [00:00<00:00, 49.14 examples/s]" + } + }, + "367dc4ee74e748e8849e878b92d7844f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "38420a876c834fc282d61a56acf31c8f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b65da0936792425987d06b0fddbd1383": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b7f611e76dd04a08b59952201f5bc86c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "681a668d8239431189403c0c3fb7dc3b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "63e721da801a40c9815b0fa836825f87": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ab51d8d76df54670a3655d6c91abe6a2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0268ad43ccd444ea8290918fa23337cf": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_6582416450a54d7d88e263b2f073e69d", + "IPY_MODEL_c945fc3b7e174dc1a7a88c2dfe0dd4f7", + "IPY_MODEL_5666112b8fd646f48be57c8cdc9d4c65" + ], + "layout": "IPY_MODEL_8d10ee2ccd574fd2afe5969a06f73db3" + } + }, + "6582416450a54d7d88e263b2f073e69d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_09661a09a2604966b9a1d400b97d30de", + "placeholder": "​", + "style": "IPY_MODEL_ced8e587601d43ca9500ce59306a9c0a", + "value": "Map: 100%" + } + }, + "c945fc3b7e174dc1a7a88c2dfe0dd4f7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6c51da1a110f4330a8e4ed09f8d69715", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e38e73addeca44a4b12d69d39fc5b19c", + "value": 1 + } + }, + "5666112b8fd646f48be57c8cdc9d4c65": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_260a6183b02544a59e6710e26b2572c1", + "placeholder": "​", + "style": "IPY_MODEL_cc69b2fd585249aaa0b7f1e1126f6d23", + "value": " 1/1 [00:00<00:00, 59.68 examples/s]" + } + }, + "8d10ee2ccd574fd2afe5969a06f73db3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "09661a09a2604966b9a1d400b97d30de": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ced8e587601d43ca9500ce59306a9c0a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6c51da1a110f4330a8e4ed09f8d69715": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e38e73addeca44a4b12d69d39fc5b19c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "260a6183b02544a59e6710e26b2572c1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cc69b2fd585249aaa0b7f1e1126f6d23": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file