Przetwarzanie_tekstu/projekt/T5_sms_spam.ipynb

6039 lines
308 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "ZXsOR6oJOJbd"
},
"source": [
"# Instalacja pakietów"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8l0hzptKNiZS",
"outputId": "00b4e80b-9d2a-42f1-e087-1412429b63bd"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
"Collecting transformers\n",
" Downloading transformers-4.26.1-py3-none-any.whl (6.3 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.3/6.3 MB\u001b[0m \u001b[31m39.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting datasets\n",
" Downloading datasets-2.9.0-py3-none-any.whl (462 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m462.8/462.8 KB\u001b[0m \u001b[31m22.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: torch in /usr/local/lib/python3.8/dist-packages (1.13.1+cu116)\n",
"Collecting sentencepiece\n",
" Downloading sentencepiece-0.1.97-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m28.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.8/dist-packages (from transformers) (23.0)\n",
"Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (1.21.6)\n",
"Collecting tokenizers!=0.11.3,<0.14,>=0.11.1\n",
" Downloading tokenizers-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.6/7.6 MB\u001b[0m \u001b[31m23.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.8/dist-packages (from transformers) (4.64.1)\n",
"Requirement already satisfied: filelock in /usr/local/lib/python3.8/dist-packages (from transformers) (3.9.0)\n",
"Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.8/dist-packages (from transformers) (6.0)\n",
"Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (2022.6.2)\n",
"Collecting huggingface-hub<1.0,>=0.11.0\n",
" Downloading huggingface_hub-0.12.1-py3-none-any.whl (190 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m190.3/190.3 KB\u001b[0m \u001b[31m6.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from transformers) (2.25.1)\n",
"Collecting responses<0.19\n",
" Downloading responses-0.18.0-py3-none-any.whl (38 kB)\n",
"Collecting multiprocess\n",
" Downloading multiprocess-0.70.14-py38-none-any.whl (132 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m132.0/132.0 KB\u001b[0m \u001b[31m5.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: pyarrow>=6.0.0 in /usr/local/lib/python3.8/dist-packages (from datasets) (9.0.0)\n",
"Collecting xxhash\n",
" Downloading xxhash-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (213 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m213.0/213.0 KB\u001b[0m \u001b[31m14.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: dill<0.3.7 in /usr/local/lib/python3.8/dist-packages (from datasets) (0.3.6)\n",
"Requirement already satisfied: fsspec[http]>=2021.11.1 in /usr/local/lib/python3.8/dist-packages (from datasets) (2023.1.0)\n",
"Requirement already satisfied: aiohttp in /usr/local/lib/python3.8/dist-packages (from datasets) (3.8.4)\n",
"Requirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (from datasets) (1.3.5)\n",
"Requirement already satisfied: typing-extensions in /usr/local/lib/python3.8/dist-packages (from torch) (4.5.0)\n",
"Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (3.0.1)\n",
"Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.3)\n",
"Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.8.2)\n",
"Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (22.2.0)\n",
"Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (4.0.2)\n",
"Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (6.0.4)\n",
"Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.8/dist-packages (from aiohttp->datasets) (1.3.1)\n",
"Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (4.0.0)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (1.24.3)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2022.12.7)\n",
"Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2.10)\n",
"Collecting urllib3<1.27,>=1.21.1\n",
" Downloading urllib3-1.26.14-py2.py3-none-any.whl (140 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m140.6/140.6 KB\u001b[0m \u001b[31m8.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2.8.2)\n",
"Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas->datasets) (2022.7.1)\n",
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.8/dist-packages (from python-dateutil>=2.7.3->pandas->datasets) (1.15.0)\n",
"Installing collected packages: tokenizers, sentencepiece, xxhash, urllib3, multiprocess, responses, huggingface-hub, transformers, datasets\n",
" Attempting uninstall: urllib3\n",
" Found existing installation: urllib3 1.24.3\n",
" Uninstalling urllib3-1.24.3:\n",
" Successfully uninstalled urllib3-1.24.3\n",
"Successfully installed datasets-2.9.0 huggingface-hub-0.12.1 multiprocess-0.70.14 responses-0.18.0 sentencepiece-0.1.97 tokenizers-0.13.2 transformers-4.26.1 urllib3-1.26.14 xxhash-3.2.0\n"
]
}
],
"source": [
"!pip install transformers datasets torch sentencepiece"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "dhN0rmb5Oi3d"
},
"source": [
"# Załadowanie datasetu"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "tnaDkwZ2Pbnn"
},
"outputs": [],
"source": [
"from datasets import load_dataset"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 263,
"referenced_widgets": [
"c396a3f65bb947ffa33130c424d9d93b",
"fe2dd0bc42b84c5890d2c3dccaf66992",
"245239c79fa74387bed598565bbc24a4",
"926ce941393e4004bec99d38e82ea879",
"65433acf8e5345d580c6bf8c949c0064",
"293dc96088f942a3afc9af735d4c7117",
"a7dc0ef4c814401f8b2ff982063b66cc",
"790101eedd824ab893a7c7a1c0039163",
"6889bbe799b54d9eade42250c2e5caa6",
"5cc03bba39a74eaab7da908c6c24b1fb",
"db67393d589c4d5bbbdab58adf51f970",
"2c5a4622661a4465910b5f1f95bea742",
"3d4560baaec44c40b5d5c27ed8eba68a",
"dffa3d04bfe548e9aea5d4327ecca77a",
"01ce10b9b22f48839824dda0a40ec5e8",
"b839f01904ce41398b5286a801bbf4a7",
"e36e4ad05a5040a4b67e0a133156358e",
"892dbc4c003941409202f31523589835",
"4a82770611cc4ba29aea5c462ce0c5be",
"a3767cd0d3cd454595230f7933a0b2fe",
"a77ad82dae14426b97ecc94166511b5c",
"98e29231304e4d9ba32e0368ec5b3fd5",
"d64108ba247a4ac5a93b3bdeede7fd9a",
"aea219a8097b4d989664c09fcff9eb93",
"b2721b8b11ed42e29c623a10a8c8e13f",
"3d9d73ddd88446c5aeef5b2362bb878b",
"b955aea22f9e4ce2882b5e722ae1dda8",
"2a1ebe1ed1c64921bb7cdb0ed1e57b2b",
"9980c1ddad4a475e97130c0efc2f3efe",
"57feff796f4241f292cb4617ed85cfe0",
"9297c35ec1f7494caab95714d65e34ab",
"dd110977a96d4f19b37e923c4296fbdd",
"953c5391bd5e49ad9b3752794929e08c",
"b8c9fbbce7b84bf4a2f5b90c9d35ce0f",
"51ab0b4ff03f4bdab8f5ba3fef868d4a",
"fca8377c5d6e480180d22925109d431c",
"a8854ee753ff4d179718690c3361b5a0",
"72918e6a9c7e46f291f85c7adf237eb9",
"fd3d449f08554666887c54c329baecd9",
"8c83da8d3d54491a9f4c535bdb5611e1",
"fb3f2df569ff42c89dea846f0df4b62f",
"e298b598c6474c3fa2b7bada616110cc",
"7838193eee55441d865d6f056454b841",
"9ff537b0b2c745968c7d22e90cbe3894",
"6b52b5d926bc43a3b70238c4fbfad7da",
"733b55697ed8437c8d1d180756f7d3bb",
"0d67db8eb2504316819ba0b4691aecb0",
"6c402b861e4b49ad8b7d07c053e069bd",
"0ea8f8e157634292b17babbdee9f46e0",
"5016ba950fa447ae8d0f3a8191c8a34c",
"8af86d8fcbbc41bd9e4bfee243bdb759",
"16ddb3f4068040c9bbe5fa74c1b0177c",
"f1424f2fde924cb88e05fc4a98d8e354",
"afd518d5660e49b599d930c7f6040f87",
"8a7c3caf8629499fbff1966e7544fc85",
"bca3b484a8374617836c78a5a7247f19",
"a6ad21ce2df942cc87a7009a76913bd7",
"991524a5133c4ae9a1e6067be42f6ee4",
"d4ed92b329c74cda9e38dc380fee1b71",
"0e7dd3e98f64447dbe54df8d80fed381",
"3034d7c759324b91bf84b704a023dd77",
"4c3563f49ed0497ab2dc8739e4570d5b",
"5788c4c9888e4def886297d645c670a3",
"b713a8211c324197a5b66b05b4bfbb10",
"9ab2665c20b8408490cc3fa43762b225",
"b640800aca9f431883d8c309dd3b1daf"
]
},
"id": "cCiAuRqrOkvV",
"outputId": "f0e3ddd0-5cc7-47e2-9910-8b6b84cbd896"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading builder script: 0%| | 0.00/3.21k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "c396a3f65bb947ffa33130c424d9d93b"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading metadata: 0%| | 0.00/1.69k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "2c5a4622661a4465910b5f1f95bea742"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading readme: 0%| | 0.00/4.87k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "d64108ba247a4ac5a93b3bdeede7fd9a"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Downloading and preparing dataset sms_spam/plain_text to /root/.cache/huggingface/datasets/sms_spam/plain_text/1.0.0/53f051d3b5f62d99d61792c91acefe4f1577ad3e4c216fb0ad39e30b9f20019c...\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading data: 0%| | 0.00/203k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "b8c9fbbce7b84bf4a2f5b90c9d35ce0f"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Generating train split: 0%| | 0/5574 [00:00<?, ? examples/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "6b52b5d926bc43a3b70238c4fbfad7da"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Dataset sms_spam downloaded and prepared to /root/.cache/huggingface/datasets/sms_spam/plain_text/1.0.0/53f051d3b5f62d99d61792c91acefe4f1577ad3e4c216fb0ad39e30b9f20019c. Subsequent calls will reuse this data.\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
" 0%| | 0/1 [00:00<?, ?it/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "bca3b484a8374617836c78a5a7247f19"
}
},
"metadata": {}
}
],
"source": [
"dataset = load_dataset(\"sms_spam\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JKFHPko3OnAV",
"outputId": "6c5513f7-90f2-4977-a938-539c6f623aaa"
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'sms': 'Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...\\n',\n",
" 'label': 0}"
]
},
"metadata": {},
"execution_count": 4
}
],
"source": [
"dataset['train'][0]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "l140vJrgYxPr"
},
"source": [
"# Modyfikacja datasetu - klasyfikacja"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1boUF-YiY3_y",
"outputId": "23bb86a0-9015-46b4-b36e-84007cad246e"
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'sms': 'binary classification: Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...',\n",
" 'label': '0'}"
]
},
"metadata": {},
"execution_count": 5
}
],
"source": [
"parsed_dataset = []\n",
"\n",
"for row in dataset['train']:\n",
" text = \"binary classification: \" + row['sms'].replace(\"\\n\", \"\")\n",
" new_row = {}\n",
" new_row['sms'] = text\n",
" if row['label'] == 0:\n",
" new_row['label'] = \"0\"\n",
" else:\n",
" new_row['label'] = \"1\"\n",
" parsed_dataset.append(new_row)\n",
"\n",
"parsed_dataset[0]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "O-J-jBDxPJcn"
},
"source": [
"# Tokenizer T5"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"id": "P23AYPX1PZ6g"
},
"outputs": [],
"source": [
"from transformers import T5Tokenizer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 203,
"referenced_widgets": [
"8263f80bfd30477389a7d24450a41aa9",
"d46c7aa929e24e5da4a3508e1ec82795",
"84a7f048c34541708b01a64726037e94",
"c545335c355d43c2b158eb7ea1032b68",
"45f93d1c8d574efc8573cd9c30be2fa4",
"6bc7141208cf4f2787890daa6dd900b5",
"5fd95d4231824740a4df2c7d7cb015a0",
"154741e5c910415f9e87da6cb5e1c578",
"7dda689c19df4ff9b854cede266b804b",
"863b386cb073419e96e8ae0d01554a36",
"663902a693b5405c85be17bbe46e0650",
"e76d348dd73d4e88994fa53449b69a0c",
"bd65017865934166878adf8aa6c352c9",
"0dc9cdebd0bd480d86fd2b7151f8617f",
"ac095333a156479bbba127d424b48943",
"2b2a144c8b434a0eb6b91c532965a956",
"9674fadc0e6448f1ad34f2e47d6dec14",
"1ed148605a1c4d97a8ff1bbab36b0f8e",
"3ed7755f2175486d8407dea96ecd8898",
"9afc3775ccc440c4b58e606e5daa9e75",
"9d94d64ee8c4465489f4b645080030e5",
"4fdd5febab8d42e6b79438a69d39622e"
]
},
"id": "q5Jz0E_oPMBr",
"outputId": "1c5a4105-22c9-41d1-9d46-19120868ae9e"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)ve/main/spiece.model: 0%| | 0.00/792k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "8263f80bfd30477389a7d24450a41aa9"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)lve/main/config.json: 0%| | 0.00/1.21k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "e76d348dd73d4e88994fa53449b69a0c"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.8/dist-packages/transformers/models/t5/tokenization_t5.py:163: FutureWarning: This tokenizer was incorrectly instantiated with a model max length of 512 which will be corrected in Transformers v5.\n",
"For now, this behavior is kept to avoid breaking backwards compatibility when padding/encoding with `truncation is True`.\n",
"- Be aware that you SHOULD NOT rely on t5-base automatically truncating your input to 512 when padding/encoding.\n",
"- If you want to encode/pad to sequences longer than 512 you can either instantiate this tokenizer with `model_max_length` or pass `max_length` when encoding/padding.\n",
"- To avoid this warning, please instantiate this tokenizer with `model_max_length` set to your preferred value.\n",
" warnings.warn(\n"
]
}
],
"source": [
"tokenizer = T5Tokenizer.from_pretrained('t5-base')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "dfxJQpoePsvI",
"outputId": "a4b4cfa8-5334-4be6-c3ec-124840ecdcfa"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Original: binary classification: Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...\n",
"Tokenized: ['▁binary', '▁classification', ':', '▁Go', '▁until', '▁jur', 'ong', '▁point', ',', '▁crazy', '.', '.', '▁Available', '▁only', '▁in', '▁bug', 'is', '▁', 'n', '▁great', '▁world', '▁la', '▁', 'e', '▁buffet', '...', '▁Cine', '▁there', '▁got', '▁', 'a', 'more', '▁wa', 't', '...']\n",
"Token IDs: [14865, 13774, 10, 1263, 552, 10081, 2444, 500, 6, 6139, 5, 5, 8144, 163, 16, 8143, 159, 3, 29, 248, 296, 50, 3, 15, 15385, 233, 17270, 132, 530, 3, 9, 3706, 8036, 17, 233]\n"
]
}
],
"source": [
"sms = parsed_dataset[0]['sms']\n",
"print('Original: ', sms)\n",
"print('Tokenized: ', tokenizer.tokenize(sms))\n",
"print('Token IDs: ', tokenizer.convert_tokens_to_ids(tokenizer.tokenize(sms)))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UpluhM8cU5Ir"
},
"source": [
"# Check maximum lenght of a sentence"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "7uNUkixPU85O",
"outputId": "b34a2f27-9478-4fc9-cdbb-23081472ec92"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Max sentence length: 341\n"
]
}
],
"source": [
"max_len = 0\n",
"\n",
"for sentence in parsed_dataset:\n",
" input_ids = tokenizer.encode(sentence['sms'], add_special_tokens=True)\n",
" max_len = max(max_len, len(input_ids))\n",
"\n",
"print('Max sentence length: ', max_len)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "lj0issBznZfK",
"outputId": "d406d5a6-e278-47aa-b03e-8ee33c5871ac"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Max sentence length: 3\n"
]
}
],
"source": [
"max_label_len = 0\n",
"\n",
"for sentence in parsed_dataset:\n",
" input_ids = tokenizer.encode(sentence['label'], add_special_tokens=True)\n",
" max_label_len = max(max_label_len, len(input_ids))\n",
"\n",
"print('Max sentence length: ', max_label_len)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nfw62HdgSERb"
},
"source": [
"# Pre train tokenization"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"id": "KTXYalS1VLqH"
},
"outputs": [],
"source": [
"import torch"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Z28QYfLnSGxR",
"outputId": "aa3c2dce-488c-48a5-f47d-18026ac678d6"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Original: {'sms': 'binary classification: Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat...', 'label': '0'}\n",
"Token IDs: tensor([14865, 13774, 10, 1263, 552, 10081, 2444, 500, 6, 6139,\n",
" 5, 5, 8144, 163, 16, 8143, 159, 3, 29, 248,\n",
" 296, 50, 3, 15, 15385, 233, 17270, 132, 530, 3,\n",
" 9, 3706, 8036, 17, 233, 1, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0])\n",
"Label token IDs: tensor([ 3, 632, 1])\n"
]
}
],
"source": [
"input_ids = []\n",
"target_ids = []\n",
"attention_masks = []\n",
"\n",
"for sentence in parsed_dataset:\n",
" encoded_dict = tokenizer.encode_plus(\n",
" sentence['sms'],\n",
" add_special_tokens = True,\n",
" max_length = 341,\n",
" padding = 'max_length',\n",
" truncation=True,\n",
" return_attention_mask = True,\n",
" return_tensors = 'pt',\n",
" )\n",
" \n",
" encoded_target_dict = tokenizer.encode_plus(\n",
" sentence['label'],\n",
" add_special_tokens = True,\n",
" max_length = 3,\n",
" padding = 'max_length',\n",
" truncation=True,\n",
" return_attention_mask = True,\n",
" return_tensors = 'pt',\n",
" )\n",
" \n",
" input_ids.append(encoded_dict['input_ids'])\n",
" target_ids.append(encoded_target_dict['input_ids'])\n",
" attention_masks.append(encoded_dict['attention_mask'])\n",
"\n",
"input_ids = torch.cat(input_ids, dim=0)\n",
"target_ids = torch.cat(target_ids, dim=0)\n",
"attention_masks = torch.cat(attention_masks, dim=0)\n",
"\n",
"print('Original: ', parsed_dataset[0])\n",
"print('Token IDs:', input_ids[0])\n",
"print('Label token IDs:', target_ids[0])"
]
},
{
"cell_type": "code",
"source": [
"print('Label token IDs:', target_ids[123])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Ld1xH-BD0G-M",
"outputId": "67aca9e1-5dca-48d7-97b7-26f9781bf51f"
},
"execution_count": 13,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Label token IDs: tensor([209, 1, 0])\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qD_t0y0KVVSy"
},
"source": [
"# Split dataset\n",
"Class balance ratio should be similar to base dataset ratio."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"id": "vN_SatRIVa4c"
},
"outputs": [],
"source": [
"from torch.utils.data import TensorDataset, random_split"
]
},
{
"cell_type": "code",
"source": [
"def check_class_balance(dataset):\n",
" spam_count = 0.0\n",
" not_spam_count = 0.0\n",
" for row in dataset:\n",
" if row[2][1].item() == 1:\n",
" spam_count += 1.0\n",
" else:\n",
" not_spam_count += 1.0\n",
" return spam_count / not_spam_count "
],
"metadata": {
"id": "oo9C8ATt0dTq"
},
"execution_count": 15,
"outputs": []
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Mm6vc6lLVW3l",
"outputId": "e7223b64-86a7-459d-b681-1ea1e0db02d8"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Spam to not spam messages ratio: 0.15475450590428838\n",
"\n",
"1,000 test samples\n",
"Ratio: 0.15074798619102417\n",
"\n",
"4,116 training samples\n",
"Ratio: 0.15455820476858345\n",
"\n",
" 458 validation samples\n",
"Ratio: 0.16539440203562342\n",
"\n"
]
}
],
"source": [
"dataset = TensorDataset(input_ids, attention_masks, target_ids)\n",
"print(\"Spam to not spam messages ratio: {}\\n\".format(check_class_balance(dataset)))\n",
"\n",
"test_size = 1000\n",
"dataset_len = len(dataset)\n",
"train_size = int(0.9 * (dataset_len-test_size))\n",
"val_size = (dataset_len-test_size) - train_size\n",
"\n",
"test_dataset, train_dataset, val_dataset = random_split(dataset, [test_size, train_size, val_size])\n",
"\n",
"print('{:>5,} test samples'.format(test_size))\n",
"print(\"Ratio: {}\\n\".format(check_class_balance(test_dataset)))\n",
"print('{:>5,} training samples'.format(train_size))\n",
"print(\"Ratio: {}\\n\".format(check_class_balance(train_dataset)))\n",
"print('{:>5,} validation samples'.format(val_size))\n",
"print(\"Ratio: {}\\n\".format(check_class_balance(val_dataset)))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "bmgQOP4EVfA1"
},
"source": [
"# Create train and validation loaders"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "CxnQ3cmIVlNh"
},
"outputs": [],
"source": [
"from torch.utils.data import DataLoader, RandomSampler, SequentialSampler"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "0hcpO_onVjEC"
},
"outputs": [],
"source": [
"batch_size = 16\n",
"\n",
"train_dataloader = DataLoader(\n",
" train_dataset,\n",
" sampler = RandomSampler(train_dataset),\n",
" batch_size = batch_size\n",
" )\n",
"\n",
"validation_dataloader = DataLoader(\n",
" val_dataset,\n",
" sampler = SequentialSampler(val_dataset),\n",
" batch_size = batch_size\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "efwhqLyyVu9z"
},
"source": [
"# Device check"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ANBCfNGnVwVk",
"outputId": "ff2ff959-f0e9-47f3-d504-9daa45f870c2"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"There are 1 GPU(s) available.\n",
"We will use the GPU: Tesla T4\n"
]
}
],
"source": [
"if torch.cuda.is_available(): \n",
" device = torch.device(\"cuda\")\n",
"\n",
" print('There are %d GPU(s) available.' % torch.cuda.device_count())\n",
" print('We will use the GPU:', torch.cuda.get_device_name(0))\n",
"\n",
"else:\n",
" print('No GPU available, using the CPU instead.')\n",
" device = torch.device(\"cpu\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "okTx_ynMV0rH"
},
"source": [
"# Load T5 model"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Eu-7Eed8WgN0"
},
"outputs": [],
"source": [
"from transformers import T5ForConditionalGeneration"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000,
"referenced_widgets": [
"68418b4f08654a2c8a19bdefa31ef7e2",
"f59f1fe74df84329baa0137729651d7e",
"4e6666f32de94c14973b2f5895c4f4ec",
"9a8b0e9cf614453789dceff586f47682",
"a4e1407e1a42416087a3138812851afa",
"1813bc00d8db4de5a7bb7cd276346312",
"ab6b0613a4934f34aad4d28cd855362d",
"7514dfc8c5c34f29ab9a246ba6b45dc2",
"017b00a3a26743d3a761a5b05f72fe73",
"1cfe23326f964bb0a2925456aea14ad5",
"384aac4ea3274eebbb43ea847036793a",
"17986d272156460f8e9bcee2559088d9",
"f1c7c8e7770848dabf155be27b342c6f",
"719b8ebc46884edd9b36829f49680c98",
"f28050af08f947678a41e1ea5611067f",
"2ff5d9e91bf64330a2747c9c518ba31c",
"85bd410d586b4ac98b8df72f980c0194",
"feb7905c359e4acd9c9f848fb63d5d55",
"b1d4154a8b054c8380a9ac70c311755b",
"2fee9e3e54ae41c8977beaae6802010f",
"42dc0f0578ed4105abeee4362667a98a",
"04bb3488deec4565a0864049b122437d"
]
},
"id": "JKv9O8kfV2zZ",
"outputId": "ad88a39b-bdc7-4325-b588-ed5feb453c3e"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)\"pytorch_model.bin\";: 0%| | 0.00/892M [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "68418b4f08654a2c8a19bdefa31ef7e2"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)neration_config.json: 0%| | 0.00/147 [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "17986d272156460f8e9bcee2559088d9"
}
},
"metadata": {}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"T5ForConditionalGeneration(\n",
" (shared): Embedding(32128, 768)\n",
" (encoder): T5Stack(\n",
" (embed_tokens): Embedding(32128, 768)\n",
" (block): ModuleList(\n",
" (0): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" (relative_attention_bias): Embedding(32, 12)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (1): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (2): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (3): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (4): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (5): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (6): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (7): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (8): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (9): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (10): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (11): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" )\n",
" (final_layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (decoder): T5Stack(\n",
" (embed_tokens): Embedding(32128, 768)\n",
" (block): ModuleList(\n",
" (0): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" (relative_attention_bias): Embedding(32, 12)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (1): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (2): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (3): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (4): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (5): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (6): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (7): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (8): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (9): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (10): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" (11): T5Block(\n",
" (layer): ModuleList(\n",
" (0): T5LayerSelfAttention(\n",
" (SelfAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (1): T5LayerCrossAttention(\n",
" (EncDecAttention): T5Attention(\n",
" (q): Linear(in_features=768, out_features=768, bias=False)\n",
" (k): Linear(in_features=768, out_features=768, bias=False)\n",
" (v): Linear(in_features=768, out_features=768, bias=False)\n",
" (o): Linear(in_features=768, out_features=768, bias=False)\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (2): T5LayerFF(\n",
" (DenseReluDense): T5DenseActDense(\n",
" (wi): Linear(in_features=768, out_features=3072, bias=False)\n",
" (wo): Linear(in_features=3072, out_features=768, bias=False)\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" (act): ReLU()\n",
" )\n",
" (layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" )\n",
" )\n",
" )\n",
" (final_layer_norm): T5LayerNorm()\n",
" (dropout): Dropout(p=0.1, inplace=False)\n",
" )\n",
" (lm_head): Linear(in_features=768, out_features=32128, bias=False)\n",
")"
]
},
"metadata": {},
"execution_count": 19
}
],
"source": [
"model = T5ForConditionalGeneration.from_pretrained('t5-base')\n",
"\n",
"model.cuda()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "F_SDAwxoawDy"
},
"source": [
"# Helper functions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "s-q6_F38bLVA"
},
"outputs": [],
"source": [
"import datetime\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "FzUi8908ax61"
},
"outputs": [],
"source": [
"def calculate_accuracy(preds, target):\n",
" results_ok = 0.0\n",
" results_false = 0.0\n",
"\n",
" for idx, pred in enumerate(preds):\n",
" if pred == target[idx]:\n",
" results_ok += 1.0\n",
" else:\n",
" results_false += 1.0\n",
"\n",
" return results_ok / (results_ok + results_false)\n",
"\n",
"def format_time(elapsed):\n",
" '''\n",
" Takes a time in seconds and returns a string hh:mm:ss\n",
" '''\n",
" elapsed_rounded = int(round((elapsed)))\n",
" return str(datetime.timedelta(seconds=elapsed_rounded))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ucChBa-9bXJy"
},
"source": [
"# Init training"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "A7XUF4PNbYy8"
},
"outputs": [],
"source": [
"optimizer = torch.optim.AdamW(model.parameters(),\n",
" lr = 3e-4,\n",
" eps = 1e-8\n",
" )\n",
"\n",
"epochs = 4\n",
"total_steps = len(train_dataloader) * epochs"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DAzQWODja0A3"
},
"source": [
"# Training"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Hoa7NlU0bI7G"
},
"outputs": [],
"source": [
"import random\n",
"import time"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "xsHxfslka1u5",
"outputId": "e40d00a1-baf8-4554-e5ec-aeb87ee35f66"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\n",
"======== Epoch 1 / 4 ========\n",
"Training...\n",
" Batch 40 of 258. Elapsed: 0:01:12.\n",
" Batch 80 of 258. Elapsed: 0:02:20.\n",
" Batch 120 of 258. Elapsed: 0:03:28.\n",
" Batch 160 of 258. Elapsed: 0:04:36.\n",
" Batch 200 of 258. Elapsed: 0:05:45.\n",
" Batch 240 of 258. Elapsed: 0:06:53.\n",
"\n",
" Average training loss: 0.09\n",
" Average training acc: 0.81\n",
" Training epcoh took: 0:07:23\n",
"\n",
"Running Validation...\n",
" Accuracy: 0.83\n",
" Validation took: 0:00:27\n",
" Validation Loss: 0.00\n",
"\n",
"======== Epoch 2 / 4 ========\n",
"Training...\n",
" Batch 40 of 258. Elapsed: 0:01:09.\n",
" Batch 80 of 258. Elapsed: 0:02:17.\n",
" Batch 120 of 258. Elapsed: 0:03:25.\n",
" Batch 160 of 258. Elapsed: 0:04:33.\n",
" Batch 200 of 258. Elapsed: 0:05:42.\n",
" Batch 240 of 258. Elapsed: 0:06:50.\n",
"\n",
" Average training loss: 0.00\n",
" Average training acc: 0.86\n",
" Training epcoh took: 0:07:19\n",
"\n",
"Running Validation...\n",
" Accuracy: 0.83\n",
" Validation took: 0:00:26\n",
" Validation Loss: 0.00\n",
"\n",
"======== Epoch 3 / 4 ========\n",
"Training...\n",
" Batch 40 of 258. Elapsed: 0:01:08.\n",
" Batch 80 of 258. Elapsed: 0:02:16.\n",
" Batch 120 of 258. Elapsed: 0:03:24.\n",
" Batch 160 of 258. Elapsed: 0:04:32.\n",
" Batch 200 of 258. Elapsed: 0:05:41.\n",
" Batch 240 of 258. Elapsed: 0:06:49.\n",
"\n",
" Average training loss: 0.00\n",
" Average training acc: 0.85\n",
" Training epcoh took: 0:07:18\n",
"\n",
"Running Validation...\n",
" Accuracy: 0.83\n",
" Validation took: 0:00:26\n",
" Validation Loss: 0.00\n",
"\n",
"======== Epoch 4 / 4 ========\n",
"Training...\n",
" Batch 40 of 258. Elapsed: 0:01:08.\n",
" Batch 80 of 258. Elapsed: 0:02:16.\n",
" Batch 120 of 258. Elapsed: 0:03:24.\n",
" Batch 160 of 258. Elapsed: 0:04:32.\n",
" Batch 200 of 258. Elapsed: 0:05:41.\n",
" Batch 240 of 258. Elapsed: 0:06:49.\n",
"\n",
" Average training loss: 0.00\n",
" Average training acc: 0.86\n",
" Training epcoh took: 0:07:18\n",
"\n",
"Running Validation...\n",
" Accuracy: 0.83\n",
" Validation took: 0:00:26\n",
" Validation Loss: 0.00\n",
"\n",
"Training complete!\n",
"Total training took 0:31:02 (h:mm:ss)\n"
]
}
],
"source": [
"# This training code is based on the `run_glue.py` script here:\n",
"# https://github.com/huggingface/transformers/blob/5bfcd0485ece086ebcbed2d008813037968a9e58/examples/run_glue.py#L128\n",
"\n",
"seed_val = 42\n",
"\n",
"random.seed(seed_val)\n",
"np.random.seed(seed_val)\n",
"torch.manual_seed(seed_val)\n",
"torch.cuda.manual_seed_all(seed_val)\n",
"\n",
"training_stats = []\n",
"total_t0 = time.time()\n",
"\n",
"for epoch_i in range(0, epochs):\n",
" \n",
" # ========================================\n",
" # Training\n",
" # ========================================\n",
"\n",
" print(\"\")\n",
" print('======== Epoch {:} / {:} ========'.format(epoch_i + 1, epochs))\n",
" print('Training...')\n",
"\n",
" t0 = time.time()\n",
" total_train_loss = 0\n",
" total_train_acc = 0\n",
"\n",
" model.train()\n",
"\n",
" for step, batch in enumerate(train_dataloader):\n",
" if step % 40 == 0 and not step == 0:\n",
" elapsed = format_time(time.time() - t0)\n",
" print(' Batch {:>5,} of {:>5,}. Elapsed: {:}.'.format(step, len(train_dataloader), elapsed))\n",
"\n",
" b_input_ids = batch[0].to(device)\n",
" b_input_mask = batch[1].to(device)\n",
"\n",
" y = batch[2].to(device)\n",
" y_ids = y[:, :-1].contiguous()\n",
" lm_labels = y[:, 1:].clone().detach()\n",
" lm_labels[y[:, 1:] == tokenizer.pad_token_id] = -100 \n",
"\n",
" outputs = model(\n",
" input_ids=b_input_ids,\n",
" attention_mask=b_input_mask,\n",
" decoder_input_ids=y_ids,\n",
" labels=lm_labels\n",
" )\n",
"\n",
" generated_ids = model.generate(\n",
" input_ids = b_input_ids,\n",
" attention_mask = b_input_mask, \n",
" max_length=3, \n",
" num_beams=2,\n",
" repetition_penalty=2.5, \n",
" length_penalty=1.0, \n",
" early_stopping=True\n",
" )\n",
"\n",
" preds = [tokenizer.decode(g, skip_special_tokens=True, clean_up_tokenization_spaces=True) for g in generated_ids]\n",
" target = [tokenizer.decode(t, skip_special_tokens=True, clean_up_tokenization_spaces=True) for t in y]\n",
" total_train_acc += calculate_accuracy(preds, target) \n",
"\n",
" loss = outputs[0]\n",
"\n",
" optimizer.zero_grad()\n",
" loss.backward()\n",
" optimizer.step()\n",
"\n",
" total_train_loss += loss.item()\n",
"\n",
" avg_train_loss = total_train_loss / len(train_dataloader) \n",
" avg_train_acc = total_train_acc / len(train_dataloader) \n",
" training_time = format_time(time.time() - t0)\n",
"\n",
" print(\"\")\n",
" print(\" Average training loss: {0:.2f}\".format(avg_train_loss))\n",
" print(\" Average training acc: {0:.2f}\".format(avg_train_acc))\n",
" print(\" Training epcoh took: {:}\".format(training_time))\n",
" \n",
" # ========================================\n",
" # Validation\n",
" # ========================================\n",
"\n",
" print(\"\")\n",
" print(\"Running Validation...\")\n",
"\n",
" t0 = time.time()\n",
" model.eval()\n",
"\n",
" total_eval_loss = 0\n",
" total_eval_accuracy = 0\n",
"\n",
" for batch in validation_dataloader:\n",
" b_input_ids = batch[0].to(device)\n",
" b_input_mask = batch[1].to(device)\n",
"\n",
" y = batch[2].to(device)\n",
" y_ids = y[:, :-1].contiguous()\n",
" lm_labels = y[:, 1:].clone().detach()\n",
" lm_labels[y[:, 1:] == tokenizer.pad_token_id] = -100\n",
" \n",
" with torch.no_grad(): \n",
"\n",
" outputs = model(\n",
" input_ids=b_input_ids,\n",
" attention_mask=b_input_mask,\n",
" decoder_input_ids=y_ids,\n",
" labels=lm_labels\n",
" )\n",
"\n",
" loss = outputs[0]\n",
" total_eval_loss += loss.item()\n",
"\n",
" generated_ids = model.generate(\n",
" input_ids = b_input_ids,\n",
" attention_mask = b_input_mask, \n",
" max_length=3, \n",
" num_beams=2,\n",
" repetition_penalty=2.5, \n",
" length_penalty=1.0, \n",
" early_stopping=True\n",
" )\n",
"\n",
" preds = [tokenizer.decode(g, skip_special_tokens=True, clean_up_tokenization_spaces=True) for g in generated_ids]\n",
" target = [tokenizer.decode(t, skip_special_tokens=True, clean_up_tokenization_spaces=True) for t in y]\n",
" total_eval_accuracy += calculate_accuracy(preds, target) \n",
"\n",
" avg_val_loss = total_eval_loss / len(validation_dataloader)\n",
"\n",
" avg_val_accuracy = total_eval_accuracy / len(validation_dataloader)\n",
" print(\" Accuracy: {0:.2f}\".format(avg_val_accuracy))\n",
" \n",
" validation_time = format_time(time.time() - t0)\n",
" print(\" Validation took: {:}\".format(validation_time))\n",
" print(\" Validation Loss: {0:.2f}\".format(avg_val_loss))\n",
"\n",
" training_stats.append(\n",
" {\n",
" 'epoch': epoch_i + 1,\n",
" 'Training Loss': avg_train_loss,\n",
" 'Training Accur.': avg_train_acc,\n",
" 'Valid. Loss': avg_val_loss,\n",
" 'Valid. Accur.': avg_val_accuracy,\n",
" 'Training Time': training_time,\n",
" 'Validation Time': validation_time\n",
" }\n",
" )\n",
"\n",
"print(\"\")\n",
"print(\"Training complete!\")\n",
"\n",
"print(\"Total training took {:} (h:mm:ss)\".format(format_time(time.time()-total_t0)))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xIpFPoRb91Or"
},
"source": [
"# Train summary"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "GjYqBrrO93Oh",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"outputId": "326edb05-56a5-4376-d793-424e5e122507"
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Training Loss Training Accur. Valid. Loss Valid. Accur. \\\n",
"epoch \n",
"1 9.03e-02 0.81 9.89e-07 0.83 \n",
"2 1.30e-05 0.86 2.26e-08 0.83 \n",
"3 3.05e-06 0.85 0.00e+00 0.83 \n",
"4 5.13e-06 0.86 0.00e+00 0.83 \n",
"\n",
" Training Time Validation Time \n",
"epoch \n",
"1 0:07:23 0:00:27 \n",
"2 0:07:19 0:00:26 \n",
"3 0:07:18 0:00:26 \n",
"4 0:07:18 0:00:26 "
],
"text/html": [
"\n",
" <div id=\"df-970792fa-8287-4ad4-ac66-0d66603dad55\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Training Loss</th>\n",
" <th>Training Accur.</th>\n",
" <th>Valid. Loss</th>\n",
" <th>Valid. Accur.</th>\n",
" <th>Training Time</th>\n",
" <th>Validation Time</th>\n",
" </tr>\n",
" <tr>\n",
" <th>epoch</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>9.03e-02</td>\n",
" <td>0.81</td>\n",
" <td>9.89e-07</td>\n",
" <td>0.83</td>\n",
" <td>0:07:23</td>\n",
" <td>0:00:27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1.30e-05</td>\n",
" <td>0.86</td>\n",
" <td>2.26e-08</td>\n",
" <td>0.83</td>\n",
" <td>0:07:19</td>\n",
" <td>0:00:26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3.05e-06</td>\n",
" <td>0.85</td>\n",
" <td>0.00e+00</td>\n",
" <td>0.83</td>\n",
" <td>0:07:18</td>\n",
" <td>0:00:26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5.13e-06</td>\n",
" <td>0.86</td>\n",
" <td>0.00e+00</td>\n",
" <td>0.83</td>\n",
" <td>0:07:18</td>\n",
" <td>0:00:26</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-970792fa-8287-4ad4-ac66-0d66603dad55')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-970792fa-8287-4ad4-ac66-0d66603dad55 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-970792fa-8287-4ad4-ac66-0d66603dad55');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 25
}
],
"source": [
"import pandas as pd\n",
"\n",
"pd.set_option('precision', 2)\n",
"df_stats = pd.DataFrame(data=training_stats)\n",
"\n",
"df_stats = df_stats.set_index('epoch')\n",
"df_stats"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Xk3gzkeU96v3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 427
},
"outputId": "0fab6cbe-dd1c-4bdd-a986-24ae72d30aec"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
],
"image/png": "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/PnzDaT7Lwo8AK9WXl6uuXPn6uuvv9aSJUvUrVs305EAj3ThwgWFh4dXGCssLNSmTZvUokULRUREGEoGeI6WLVtW+cbV1157TVeuXNHTTz+tNm3a1H2wH6DAe7AlS5ZIkvtZ1qmpqdqzZ4+aNGmiiRMnmowGeIwXX3xRW7du1d133638/PwKH7LRuHFjDR061GA6wHPMnTtXAQEB6t69u2w2m7777jutXbtWZ8+e1auvvmo6HuARQkJCqvx3Y/ny5fLx8fGYf1P4JFYPFh0dXeX4bbfdpq1bt9ZxGsAzJScna/fu3VW+xloB/mvNmjVKTU3VkSNHdOnSJYWEhKhbt26aOnWq+vTpYzoe4NGSk5M96pNYKfAAAACAF+EpNAAAAIAXocADAAAAXoQCDwAAAHgRCjwAAADgRSjwAAAAgBehwAMAAABehAIPAAAAeBEKPADA4yUnJ2vw4MGmYwCAR/A1HQAAYMauXbs0adKkal/38fFRRkZGHSYCANQEBR4AGrikpCQNHDiw0rjVyi9pAcATUeABoIGLi4vT6NGjTccAANQQt1cAANeVk5Oj6OhoLV68WGlpaRo1apTi4+N11113afHixbp69WqlY7KysjR79mz17dtX8fHxGjFihJYuXary8vJKc+12u/74xz9qyJAh6ty5sxISEjRlyhRt37690tzc3Fz95je/Ue/evdW1a1dNmzZNx44dq5XrBgBPxR14AGjgiouLdeHChUrj/v7+Cg4Odn+9detWnTp1ShMmTFCzZs20detW/fWvf9WZM2f0wgsvuOd98803Sk5Olq+vr3vutm3btHDhQmVlZWnRokXuuTk5OXr44YeVl5en0aNHq3PnziouLtb+/fu1Y8cO9e/f3z33ypUrmjhxorp27ap58+YpJydHK1as0KxZs5SWliYfH59a+g4BgGehwANAA7d48WItXry40vhdd92lN9980/11VlaW1qxZo9tvv12SNHHiRD3++ONau3atxo0bp27dukmS/vSnP8nhcOj9999XTEyMe+7cuXOVlpamMWPGKCEhQZL0+9//XufOnVNKSoruvPPOCud3Op0Vvr548aKmTZumGTNmuMfCw8P1yiuvaMeOHZWOB4D6igIPAA3cuHHjlJiYWGk8PDy8wtf9+vVzl3dJslgsmj59uj755BNt3rxZ3bp1U15envbt26dhw4a5y/u1ub/61a+0ceNGbd68WQkJCcrPz9e///1v3XnnnVWW7x++idZqtVZ6as4dd9whSTpx4gQFHkCDQYEHgAYuKipK/fr1+9F57du3rzTWoUMHSdKpU6ck/WdLzPfHv69du3ayWq3uuSdPnpTL5VJcXFyNckZGRiogIKDCWGhoqCQpPz+/Rn8GANQHvIkVAOAVrrfH3eVy1WESADCLAg8AqJHs7OxKY0eOHJEktWrVSpLUsmXLCuPfd/ToUTmdTvfc1q1by2KxKDMzs7YiA0C9RIEHANTIjh07dPDgQffXLpdLKSkpkqShQ4dKkiIiItS9e3dt27ZNhw8frjD3rbfekiQNGzZM0n+2vwwcOFCff/65duzYUel83FUHgKqxBx4AGriMjAylpqZW+dq1Yi5JMTExeuSRRzRhwgTZbDZt2bJFO3bs0OjRo9W9e3f3vAULFig5OVkTJkzQ+PHjZbPZtG3bNn3xxRdKSkpyP4FGkp599lllZGRoxowZuv/++3X77bertLRU+/fv12233abf/va3tXfhAOClKPAA0MClpaUpLS2tytc+/vhj997zwYMHq23btnrzzTd17NgxRUSqItthAAAAvUlEQVREaNasWZo1a1aFY+Lj4/X+++/rL3/5i9577z1duXJFrVq10vz58zV16tQKc1u1aqUPPvhAr7/+uj7//HOlpqaqSZMmiomJ0bhx42rnggHAy1lc/I4SAHAdOTk5GjJkiB5//HH9+te/Nh0HABo89sADAAAAXoQCDwAAAHgRCjwAAADgRdgDDwAAAHgR7sADAAAAXoQCDwAAAHgRCjwAAADgRSjwAAAAgBehwAMAAABehAIPAAAAeJH/B2IGvbfqU7aRAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"import seaborn as sns\n",
"\n",
"sns.set(style='darkgrid')\n",
"\n",
"sns.set(font_scale=1.5)\n",
"plt.rcParams[\"figure.figsize\"] = (12,6)\n",
"\n",
"plt.plot(df_stats['Training Loss'], 'b-o', label=\"Training\")\n",
"plt.plot(df_stats['Valid. Loss'], 'g-o', label=\"Validation\")\n",
"\n",
"plt.title(\"Training & Validation Loss\")\n",
"plt.xlabel(\"Epoch\")\n",
"plt.ylabel(\"Loss\")\n",
"plt.legend()\n",
"plt.xticks([1, 2, 3, 4])\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UJlKxl0r-W-m"
},
"source": [
"# Create test loader"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "eQGsEEDh-YxG"
},
"outputs": [],
"source": [
"prediction_dataloader = DataLoader(\n",
" test_dataset,\n",
" sampler = SequentialSampler(test_dataset),\n",
" batch_size = batch_size\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gHSDNWvA-aq9"
},
"source": [
"# Evaluate on test dataset"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "OPcQkHnJ-c9A",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d5f3a63f-f9f6-4e68-b9d8-39e826ac1a3d"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Predicting labels for 1,000 test sentences...\n",
" DONE.\n"
]
}
],
"source": [
"print('Predicting labels for {:,} test sentences...'.format(len(test_dataset)))\n",
"\n",
"model.eval()\n",
"predictions , true_labels = [], []\n",
"total_test_acc = 0\n",
"\n",
"for batch in prediction_dataloader:\n",
"\n",
" b_input_ids = batch[0].to(device)\n",
" b_input_mask = batch[1].to(device)\n",
" y = batch[2].to(device)\n",
" \n",
" with torch.no_grad(): \n",
"\n",
" generated_ids = model.generate(\n",
" input_ids = b_input_ids,\n",
" attention_mask = b_input_mask, \n",
" max_length=3, \n",
" num_beams=2,\n",
" repetition_penalty=2.5, \n",
" length_penalty=1.0, \n",
" early_stopping=True\n",
" )\n",
" \n",
" preds = [tokenizer.decode(g, skip_special_tokens=True, clean_up_tokenization_spaces=True) for g in generated_ids]\n",
" target = [tokenizer.decode(t, skip_special_tokens=True, clean_up_tokenization_spaces=True) for t in y]\n",
" total_test_acc += calculate_accuracy(preds, target) \n",
"\n",
" predictions.append(preds)\n",
" true_labels.append(target)\n",
"\n",
"print(' DONE.')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "ifz56jYW-zBN",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "7f68ebc4-1205-4522-f5b5-74fb49d63565"
},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0.873015873015873"
]
},
"metadata": {},
"execution_count": 29
}
],
"source": [
"avg_test_accuracy = total_test_acc / len(prediction_dataloader)\n",
"avg_test_accuracy"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "1LqVo4wW-2g-",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "9c4820aa-4d8d-41dd-d3c4-d751927fcac0"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Sample prediction: 0, expected: 0\n"
]
}
],
"source": [
"print(\"Sample prediction: {}, expected: {}\".format(predictions[2][10], true_labels[2][10]))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "dLYc9WXz_B1o"
},
"source": [
"# MCC Score"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "hPEPpXXX_DXR",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "5ce9215b-0d24-4126-f80e-4bfa831b48bb"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Calculating Matthews Corr. Coef. for each batch...\n"
]
}
],
"source": [
"from sklearn.metrics import matthews_corrcoef\n",
"\n",
"matthews_set = []\n",
"print('Calculating Matthews Corr. Coef. for each batch...')\n",
"\n",
"for i in range(len(true_labels)):\n",
" matthews = matthews_corrcoef(true_labels[i], predictions[i]) \n",
" matthews_set.append(matthews)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "qjtAYcme_EyM",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 427
},
"outputId": "4728121a-b291-4ff8-ff2e-2197d04810ce"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
],
"image/png": "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U0BAgGnZsmU2r9e6dWtTixYtHrru9PR0U6dOnUwBAQGmdu3amd58803TokWLTIcPHzbdvXvXom9eXp6pR48epqCgIFNSUlKBufL7p6enm5o1a2bq2rWr6ebNm+brN2/eNHXp0sXUrFkzU0ZGhrn9hRdeMAUEBJg2bdpUYM5evXqZunXrZjGPyWQy7d692xQQEGDasmVLsfeYP//y5cst2pcvX24KCAgwLVq0qEDbvn37LPrevHnT1KlTJ4ufW/7P/NlnnzVdvXq12Drur+f+P02bNjVt2LChQP+srKwCbbdu3TKFhYWZXnzxRYv2SZMmmQICAgpdd9SoUYXem8lksvhZv/zyy6aAgADT4sWLLfosWbKkyPEAftvYfgPgieTj46POnTubt0Ls3r1bN2/eLHTrjXRv/7ikEu0hz8zMLHbfti0qVaqk2NhYjR49Wl5eXtq1a5c+/vhjDRs2TF27dtU333xj7puUlKTTp0+rX79+atiwYYG5nJzu/Wt///79unXrloYPH25xT56enho+fLhu3bqlb7/91mKst7e3+vXrZ9F26tQpnTp1Sj179lROTo7S0tLMf1q2bCl3d/dCt40UxtPTU0OHDrVoGzp0qDw9PS22sXz++ed65pln1KRJE4v1cnJy1L59eyUkJCg7O9tinj59+qhKlSo21ZGvZs2aWr58uZYvX65ly5bpww8/VEhIiN59911t2bLFoq+7u7v5v9++fVvXr1/X7du31bZtWyUnJ5v/+bEmPT1dX3/9tTp06KAOHToUuJ7/s/v11/mnOeVr27atpHvbrwA8Wdh+A+CJ1b9/f40ZM0ZHjhzRli1bFBwcrPr16xfaNz/4ZmVl2Ty/p6dnifpbU7lyZU2cOFETJ07U9evX9cMPP2jHjh36/PPPFRUVpfj4eNWpU8e8/75x48ZW57t48aIkqUGDBgWu5belpKRYtNeuXbvAlo7k5GRJ0rx58zRv3rxC17p69WrxN/h/899/GpGLi4tq165tUUtycrKys7OLfMdAkq5fv67q1aubv3766adtquHX3N3d1b59e4u2Xr16KSIiQu+//746d+4sHx8fSfeOQp0zZ4727t1b6DsAN27cKPYXwgsXLshkMhX7s8vn5+cnV1dXizZvb29J935BAPBkIdQDeGKFhoaqatWqWrBggQ4ePKh33323yL75Qff+FzGtadCg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\n"
},
"metadata": {}
}
],
"source": [
"ax = sns.barplot(x=list(range(len(matthews_set))), y=matthews_set, ci=None)\n",
"\n",
"plt.title('MCC Score per Batch')\n",
"plt.ylabel('MCC Score (-1 to +1)')\n",
"plt.xlabel('Batch #')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "rkonN244_HPz",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "0f08315b-7d90-4d6e-ad6f-559cf4573fa8"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Total MCC: 0.042\n"
]
}
],
"source": [
"flat_predictions = np.concatenate(predictions, axis=0)\n",
"flat_true_labels = np.concatenate(true_labels, axis=0)\n",
"\n",
"mcc = matthews_corrcoef(flat_true_labels, flat_predictions)\n",
"print('Total MCC: %.3f' % mcc)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "GPhCp068_Iwq"
},
"source": [
"# Save model"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "avafCMoS_KDF",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "e7983c91-ecab-4b7c-de48-9c5db5737ca9"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Mounted at /content/gdrive/\n",
"Saving model to /content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/T5_Model\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"('/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/T5_Model/tokenizer_config.json',\n",
" '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/T5_Model/special_tokens_map.json',\n",
" '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/T5_Model/spiece.model',\n",
" '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/T5_Model/added_tokens.json')"
]
},
"metadata": {},
"execution_count": 34
}
],
"source": [
"from google.colab import drive\n",
"\n",
"drive.mount('/content/gdrive/', force_remount=True)\n",
"\n",
"output_dir = '/content/gdrive/My Drive/UAM/Przetwarzanie-tekstu/T5_Model'\n",
"print(\"Saving model to %s\" % output_dir)\n",
"\n",
"model_to_save = model.module if hasattr(model, 'module') else model \n",
"model_to_save.save_pretrained(output_dir)\n",
"tokenizer.save_pretrained(output_dir)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wHzm2_nDA6i-"
},
"source": [
"# Bibliografia\n",
"- https://github.com/Shivanandroy/T5-Finetuning-PyTorch/blob/main/notebook/T5_Fine_tuning_with_PyTorch.ipynb\n",
"- https://mccormickml.com/2019/07/22/BERT-fine-tuning/#a1-saving--loading-fine-tuned-model\n",
"- https://huggingface.co/docs/transformers/model_doc/t5#training"
]
}
],
"metadata": {
"colab": {
"provenance": []
},
"gpuClass": "standard",
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"68418b4f08654a2c8a19bdefa31ef7e2": {
"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_f59f1fe74df84329baa0137729651d7e",
"IPY_MODEL_4e6666f32de94c14973b2f5895c4f4ec",
"IPY_MODEL_9a8b0e9cf614453789dceff586f47682"
],
"layout": "IPY_MODEL_a4e1407e1a42416087a3138812851afa"
}
},
"f59f1fe74df84329baa0137729651d7e": {
"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_1813bc00d8db4de5a7bb7cd276346312",
"placeholder": "",
"style": "IPY_MODEL_ab6b0613a4934f34aad4d28cd855362d",
"value": "Downloading (…)&quot;pytorch_model.bin&quot;;: 100%"
}
},
"4e6666f32de94c14973b2f5895c4f4ec": {
"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_7514dfc8c5c34f29ab9a246ba6b45dc2",
"max": 891691430,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_017b00a3a26743d3a761a5b05f72fe73",
"value": 891691430
}
},
"9a8b0e9cf614453789dceff586f47682": {
"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_1cfe23326f964bb0a2925456aea14ad5",
"placeholder": "",
"style": "IPY_MODEL_384aac4ea3274eebbb43ea847036793a",
"value": " 892M/892M [00:12&lt;00:00, 72.4MB/s]"
}
},
"a4e1407e1a42416087a3138812851afa": {
"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
}
},
"1813bc00d8db4de5a7bb7cd276346312": {
"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
}
},
"ab6b0613a4934f34aad4d28cd855362d": {
"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": ""
}
},
"7514dfc8c5c34f29ab9a246ba6b45dc2": {
"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
}
},
"017b00a3a26743d3a761a5b05f72fe73": {
"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": ""
}
},
"1cfe23326f964bb0a2925456aea14ad5": {
"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
}
},
"384aac4ea3274eebbb43ea847036793a": {
"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": ""
}
},
"17986d272156460f8e9bcee2559088d9": {
"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_f1c7c8e7770848dabf155be27b342c6f",
"IPY_MODEL_719b8ebc46884edd9b36829f49680c98",
"IPY_MODEL_f28050af08f947678a41e1ea5611067f"
],
"layout": "IPY_MODEL_2ff5d9e91bf64330a2747c9c518ba31c"
}
},
"f1c7c8e7770848dabf155be27b342c6f": {
"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_85bd410d586b4ac98b8df72f980c0194",
"placeholder": "",
"style": "IPY_MODEL_feb7905c359e4acd9c9f848fb63d5d55",
"value": "Downloading (…)neration_config.json: 100%"
}
},
"719b8ebc46884edd9b36829f49680c98": {
"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_b1d4154a8b054c8380a9ac70c311755b",
"max": 147,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_2fee9e3e54ae41c8977beaae6802010f",
"value": 147
}
},
"f28050af08f947678a41e1ea5611067f": {
"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_42dc0f0578ed4105abeee4362667a98a",
"placeholder": "",
"style": "IPY_MODEL_04bb3488deec4565a0864049b122437d",
"value": " 147/147 [00:00&lt;00:00, 3.74kB/s]"
}
},
"2ff5d9e91bf64330a2747c9c518ba31c": {
"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
}
},
"85bd410d586b4ac98b8df72f980c0194": {
"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
}
},
"feb7905c359e4acd9c9f848fb63d5d55": {
"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": ""
}
},
"b1d4154a8b054c8380a9ac70c311755b": {
"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
}
},
"2fee9e3e54ae41c8977beaae6802010f": {
"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": ""
}
},
"42dc0f0578ed4105abeee4362667a98a": {
"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
}
},
"04bb3488deec4565a0864049b122437d": {
"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": ""
}
},
"c396a3f65bb947ffa33130c424d9d93b": {
"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_fe2dd0bc42b84c5890d2c3dccaf66992",
"IPY_MODEL_245239c79fa74387bed598565bbc24a4",
"IPY_MODEL_926ce941393e4004bec99d38e82ea879"
],
"layout": "IPY_MODEL_65433acf8e5345d580c6bf8c949c0064"
}
},
"fe2dd0bc42b84c5890d2c3dccaf66992": {
"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_293dc96088f942a3afc9af735d4c7117",
"placeholder": "",
"style": "IPY_MODEL_a7dc0ef4c814401f8b2ff982063b66cc",
"value": "Downloading builder script: 100%"
}
},
"245239c79fa74387bed598565bbc24a4": {
"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_790101eedd824ab893a7c7a1c0039163",
"max": 3208,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_6889bbe799b54d9eade42250c2e5caa6",
"value": 3208
}
},
"926ce941393e4004bec99d38e82ea879": {
"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_5cc03bba39a74eaab7da908c6c24b1fb",
"placeholder": "",
"style": "IPY_MODEL_db67393d589c4d5bbbdab58adf51f970",
"value": " 3.21k/3.21k [00:00&lt;00:00, 41.4kB/s]"
}
},
"65433acf8e5345d580c6bf8c949c0064": {
"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
}
},
"293dc96088f942a3afc9af735d4c7117": {
"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
}
},
"a7dc0ef4c814401f8b2ff982063b66cc": {
"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": ""
}
},
"790101eedd824ab893a7c7a1c0039163": {
"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
}
},
"6889bbe799b54d9eade42250c2e5caa6": {
"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": ""
}
},
"5cc03bba39a74eaab7da908c6c24b1fb": {
"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
}
},
"db67393d589c4d5bbbdab58adf51f970": {
"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": ""
}
},
"2c5a4622661a4465910b5f1f95bea742": {
"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_3d4560baaec44c40b5d5c27ed8eba68a",
"IPY_MODEL_dffa3d04bfe548e9aea5d4327ecca77a",
"IPY_MODEL_01ce10b9b22f48839824dda0a40ec5e8"
],
"layout": "IPY_MODEL_b839f01904ce41398b5286a801bbf4a7"
}
},
"3d4560baaec44c40b5d5c27ed8eba68a": {
"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_e36e4ad05a5040a4b67e0a133156358e",
"placeholder": "",
"style": "IPY_MODEL_892dbc4c003941409202f31523589835",
"value": "Downloading metadata: 100%"
}
},
"dffa3d04bfe548e9aea5d4327ecca77a": {
"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_4a82770611cc4ba29aea5c462ce0c5be",
"max": 1687,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_a3767cd0d3cd454595230f7933a0b2fe",
"value": 1687
}
},
"01ce10b9b22f48839824dda0a40ec5e8": {
"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_a77ad82dae14426b97ecc94166511b5c",
"placeholder": "",
"style": "IPY_MODEL_98e29231304e4d9ba32e0368ec5b3fd5",
"value": " 1.69k/1.69k [00:00&lt;00:00, 24.3kB/s]"
}
},
"b839f01904ce41398b5286a801bbf4a7": {
"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
}
},
"e36e4ad05a5040a4b67e0a133156358e": {
"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
}
},
"892dbc4c003941409202f31523589835": {
"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": ""
}
},
"4a82770611cc4ba29aea5c462ce0c5be": {
"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
}
},
"a3767cd0d3cd454595230f7933a0b2fe": {
"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": ""
}
},
"a77ad82dae14426b97ecc94166511b5c": {
"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
}
},
"98e29231304e4d9ba32e0368ec5b3fd5": {
"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": ""
}
},
"d64108ba247a4ac5a93b3bdeede7fd9a": {
"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_aea219a8097b4d989664c09fcff9eb93",
"IPY_MODEL_b2721b8b11ed42e29c623a10a8c8e13f",
"IPY_MODEL_3d9d73ddd88446c5aeef5b2362bb878b"
],
"layout": "IPY_MODEL_b955aea22f9e4ce2882b5e722ae1dda8"
}
},
"aea219a8097b4d989664c09fcff9eb93": {
"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_2a1ebe1ed1c64921bb7cdb0ed1e57b2b",
"placeholder": "",
"style": "IPY_MODEL_9980c1ddad4a475e97130c0efc2f3efe",
"value": "Downloading readme: 100%"
}
},
"b2721b8b11ed42e29c623a10a8c8e13f": {
"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_57feff796f4241f292cb4617ed85cfe0",
"max": 4872,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_9297c35ec1f7494caab95714d65e34ab",
"value": 4872
}
},
"3d9d73ddd88446c5aeef5b2362bb878b": {
"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_dd110977a96d4f19b37e923c4296fbdd",
"placeholder": "",
"style": "IPY_MODEL_953c5391bd5e49ad9b3752794929e08c",
"value": " 4.87k/4.87k [00:00&lt;00:00, 81.3kB/s]"
}
},
"b955aea22f9e4ce2882b5e722ae1dda8": {
"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
}
},
"2a1ebe1ed1c64921bb7cdb0ed1e57b2b": {
"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
}
},
"9980c1ddad4a475e97130c0efc2f3efe": {
"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": ""
}
},
"57feff796f4241f292cb4617ed85cfe0": {
"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
}
},
"9297c35ec1f7494caab95714d65e34ab": {
"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": ""
}
},
"dd110977a96d4f19b37e923c4296fbdd": {
"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
}
},
"953c5391bd5e49ad9b3752794929e08c": {
"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": ""
}
},
"b8c9fbbce7b84bf4a2f5b90c9d35ce0f": {
"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_51ab0b4ff03f4bdab8f5ba3fef868d4a",
"IPY_MODEL_fca8377c5d6e480180d22925109d431c",
"IPY_MODEL_a8854ee753ff4d179718690c3361b5a0"
],
"layout": "IPY_MODEL_72918e6a9c7e46f291f85c7adf237eb9"
}
},
"51ab0b4ff03f4bdab8f5ba3fef868d4a": {
"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_fd3d449f08554666887c54c329baecd9",
"placeholder": "",
"style": "IPY_MODEL_8c83da8d3d54491a9f4c535bdb5611e1",
"value": "Downloading data: 100%"
}
},
"fca8377c5d6e480180d22925109d431c": {
"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_fb3f2df569ff42c89dea846f0df4b62f",
"max": 203415,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_e298b598c6474c3fa2b7bada616110cc",
"value": 203415
}
},
"a8854ee753ff4d179718690c3361b5a0": {
"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_7838193eee55441d865d6f056454b841",
"placeholder": "",
"style": "IPY_MODEL_9ff537b0b2c745968c7d22e90cbe3894",
"value": " 203k/203k [00:00&lt;00:00, 1.12MB/s]"
}
},
"72918e6a9c7e46f291f85c7adf237eb9": {
"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
}
},
"fd3d449f08554666887c54c329baecd9": {
"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
}
},
"8c83da8d3d54491a9f4c535bdb5611e1": {
"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": ""
}
},
"fb3f2df569ff42c89dea846f0df4b62f": {
"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
}
},
"e298b598c6474c3fa2b7bada616110cc": {
"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": ""
}
},
"7838193eee55441d865d6f056454b841": {
"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
}
},
"9ff537b0b2c745968c7d22e90cbe3894": {
"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": ""
}
},
"6b52b5d926bc43a3b70238c4fbfad7da": {
"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_733b55697ed8437c8d1d180756f7d3bb",
"IPY_MODEL_0d67db8eb2504316819ba0b4691aecb0",
"IPY_MODEL_6c402b861e4b49ad8b7d07c053e069bd"
],
"layout": "IPY_MODEL_0ea8f8e157634292b17babbdee9f46e0"
}
},
"733b55697ed8437c8d1d180756f7d3bb": {
"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_5016ba950fa447ae8d0f3a8191c8a34c",
"placeholder": "",
"style": "IPY_MODEL_8af86d8fcbbc41bd9e4bfee243bdb759",
"value": "Generating train split: 100%"
}
},
"0d67db8eb2504316819ba0b4691aecb0": {
"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": "",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_16ddb3f4068040c9bbe5fa74c1b0177c",
"max": 5574,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_f1424f2fde924cb88e05fc4a98d8e354",
"value": 5574
}
},
"6c402b861e4b49ad8b7d07c053e069bd": {
"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_afd518d5660e49b599d930c7f6040f87",
"placeholder": "",
"style": "IPY_MODEL_8a7c3caf8629499fbff1966e7544fc85",
"value": " 5574/5574 [00:01&lt;00:00, 4695.80 examples/s]"
}
},
"0ea8f8e157634292b17babbdee9f46e0": {
"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": "hidden",
"width": null
}
},
"5016ba950fa447ae8d0f3a8191c8a34c": {
"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
}
},
"8af86d8fcbbc41bd9e4bfee243bdb759": {
"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": ""
}
},
"16ddb3f4068040c9bbe5fa74c1b0177c": {
"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
}
},
"f1424f2fde924cb88e05fc4a98d8e354": {
"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": ""
}
},
"afd518d5660e49b599d930c7f6040f87": {
"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
}
},
"8a7c3caf8629499fbff1966e7544fc85": {
"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": ""
}
},
"bca3b484a8374617836c78a5a7247f19": {
"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_a6ad21ce2df942cc87a7009a76913bd7",
"IPY_MODEL_991524a5133c4ae9a1e6067be42f6ee4",
"IPY_MODEL_d4ed92b329c74cda9e38dc380fee1b71"
],
"layout": "IPY_MODEL_0e7dd3e98f64447dbe54df8d80fed381"
}
},
"a6ad21ce2df942cc87a7009a76913bd7": {
"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_3034d7c759324b91bf84b704a023dd77",
"placeholder": "",
"style": "IPY_MODEL_4c3563f49ed0497ab2dc8739e4570d5b",
"value": "100%"
}
},
"991524a5133c4ae9a1e6067be42f6ee4": {
"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_5788c4c9888e4def886297d645c670a3",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_b713a8211c324197a5b66b05b4bfbb10",
"value": 1
}
},
"d4ed92b329c74cda9e38dc380fee1b71": {
"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_9ab2665c20b8408490cc3fa43762b225",
"placeholder": "",
"style": "IPY_MODEL_b640800aca9f431883d8c309dd3b1daf",
"value": " 1/1 [00:00&lt;00:00, 9.49it/s]"
}
},
"0e7dd3e98f64447dbe54df8d80fed381": {
"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
}
},
"3034d7c759324b91bf84b704a023dd77": {
"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
}
},
"4c3563f49ed0497ab2dc8739e4570d5b": {
"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": ""
}
},
"5788c4c9888e4def886297d645c670a3": {
"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
}
},
"b713a8211c324197a5b66b05b4bfbb10": {
"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": ""
}
},
"9ab2665c20b8408490cc3fa43762b225": {
"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
}
},
"b640800aca9f431883d8c309dd3b1daf": {
"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": ""
}
},
"8263f80bfd30477389a7d24450a41aa9": {
"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_d46c7aa929e24e5da4a3508e1ec82795",
"IPY_MODEL_84a7f048c34541708b01a64726037e94",
"IPY_MODEL_c545335c355d43c2b158eb7ea1032b68"
],
"layout": "IPY_MODEL_45f93d1c8d574efc8573cd9c30be2fa4"
}
},
"d46c7aa929e24e5da4a3508e1ec82795": {
"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_6bc7141208cf4f2787890daa6dd900b5",
"placeholder": "",
"style": "IPY_MODEL_5fd95d4231824740a4df2c7d7cb015a0",
"value": "Downloading (…)ve/main/spiece.model: 100%"
}
},
"84a7f048c34541708b01a64726037e94": {
"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_154741e5c910415f9e87da6cb5e1c578",
"max": 791656,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_7dda689c19df4ff9b854cede266b804b",
"value": 791656
}
},
"c545335c355d43c2b158eb7ea1032b68": {
"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_863b386cb073419e96e8ae0d01554a36",
"placeholder": "",
"style": "IPY_MODEL_663902a693b5405c85be17bbe46e0650",
"value": " 792k/792k [00:00&lt;00:00, 2.27MB/s]"
}
},
"45f93d1c8d574efc8573cd9c30be2fa4": {
"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
}
},
"6bc7141208cf4f2787890daa6dd900b5": {
"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
}
},
"5fd95d4231824740a4df2c7d7cb015a0": {
"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": ""
}
},
"154741e5c910415f9e87da6cb5e1c578": {
"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
}
},
"7dda689c19df4ff9b854cede266b804b": {
"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": ""
}
},
"863b386cb073419e96e8ae0d01554a36": {
"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
}
},
"663902a693b5405c85be17bbe46e0650": {
"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": ""
}
},
"e76d348dd73d4e88994fa53449b69a0c": {
"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_bd65017865934166878adf8aa6c352c9",
"IPY_MODEL_0dc9cdebd0bd480d86fd2b7151f8617f",
"IPY_MODEL_ac095333a156479bbba127d424b48943"
],
"layout": "IPY_MODEL_2b2a144c8b434a0eb6b91c532965a956"
}
},
"bd65017865934166878adf8aa6c352c9": {
"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_9674fadc0e6448f1ad34f2e47d6dec14",
"placeholder": "",
"style": "IPY_MODEL_1ed148605a1c4d97a8ff1bbab36b0f8e",
"value": "Downloading (…)lve/main/config.json: 100%"
}
},
"0dc9cdebd0bd480d86fd2b7151f8617f": {
"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_3ed7755f2175486d8407dea96ecd8898",
"max": 1208,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_9afc3775ccc440c4b58e606e5daa9e75",
"value": 1208
}
},
"ac095333a156479bbba127d424b48943": {
"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_9d94d64ee8c4465489f4b645080030e5",
"placeholder": "",
"style": "IPY_MODEL_4fdd5febab8d42e6b79438a69d39622e",
"value": " 1.21k/1.21k [00:00&lt;00:00, 18.1kB/s]"
}
},
"2b2a144c8b434a0eb6b91c532965a956": {
"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
}
},
"9674fadc0e6448f1ad34f2e47d6dec14": {
"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
}
},
"1ed148605a1c4d97a8ff1bbab36b0f8e": {
"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": ""
}
},
"3ed7755f2175486d8407dea96ecd8898": {
"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
}
},
"9afc3775ccc440c4b58e606e5daa9e75": {
"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": ""
}
},
"9d94d64ee8c4465489f4b645080030e5": {
"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
}
},
"4fdd5febab8d42e6b79438a69d39622e": {
"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": 0
}