From 0e9e2670002facc9fc4975444d97e038164e01db Mon Sep 17 00:00:00 2001 From: De Busschere Yanis Date: Mon, 5 Dec 2022 08:47:02 +0100 Subject: [PATCH] Add BERT experiments --- experiments/cs433/README.md | 16 + .../cs433/en-spam-classifier/README.md | 13 + .../en-spam-classifier/training_eng_sc.ipynb | 5616 +++++++++++++++++ .../cs433/multi-spam-classifier/README.md | 13 + .../traing_multi_sc.ipynb | 4252 +++++++++++++ 5 files changed, 9910 insertions(+) create mode 100644 experiments/cs433/README.md create mode 100644 experiments/cs433/en-spam-classifier/README.md create mode 100644 experiments/cs433/en-spam-classifier/training_eng_sc.ipynb create mode 100644 experiments/cs433/multi-spam-classifier/README.md create mode 100644 experiments/cs433/multi-spam-classifier/traing_multi_sc.ipynb diff --git a/experiments/cs433/README.md b/experiments/cs433/README.md new file mode 100644 index 0000000..5047347 --- /dev/null +++ b/experiments/cs433/README.md @@ -0,0 +1,16 @@ +# Experiments + +Luka Secilmis, Thomas Ecabert, Yanis De Busschere + +## Abstract + +This folder contains all the notebooks used for experimenting with the differents models during the project. + +## Summary of experiments + +| Experiment | Folder | Training Time | Prediction Time | Accuracy | F1-Score | +|---------------------|----------------------------------------------------|---------------|-----------------|----------|----------| +| BERT (english only) | [./en-spam-classifier](./en-spam-classifier) | 1h02 | 0.005s | 98.759 | 98.600 | +| BERT (multilingual) | [./multi-spam-classifier](./multi-spam-classifier) | 1h09 | 0.005 | 98.814 | 98.779 | + +All computation and time measurement were made using an NVIDIA RTX A5000. diff --git a/experiments/cs433/en-spam-classifier/README.md b/experiments/cs433/en-spam-classifier/README.md new file mode 100644 index 0000000..8c1d980 --- /dev/null +++ b/experiments/cs433/en-spam-classifier/README.md @@ -0,0 +1,13 @@ +### BERT (English only) + +## Abstract + +We developed an NLP-based spam classifier through a transfer learning approach, by fine-tuning a pre-trained English DistilBERT model on the Zenodo dataset for text classification. + +## Results + +| Training Time | Prediction Time | Accuracy | F1-Score | +|---------------|-----------------|----------|----------| +| 1h02 | 0.005s | 98.759 | 98.600 | + +All computation and time measurement were made using an NVIDIA RTX A5000. diff --git a/experiments/cs433/en-spam-classifier/training_eng_sc.ipynb b/experiments/cs433/en-spam-classifier/training_eng_sc.ipynb new file mode 100644 index 0000000..3e8e90f --- /dev/null +++ b/experiments/cs433/en-spam-classifier/training_eng_sc.ipynb @@ -0,0 +1,5616 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "3ILVeQZ5Gfew" + }, + "source": [ + "### EPFL CS-433 - Machine Learning Project 2\n", + "#### CERN - Zenodo: Adaptable Spam Filter Modelling for Digital Scientific Research Repository \n", + "Training a DistilBERT model for the task of english spam detection.\n", + "\n", + "Authors: Luka Secilmis, Yanis De Busschere, Thomas Ecabert" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "731Nc_OQF3bl" + }, + "outputs": [], + "source": [ + "# Install required packages\n", + "!pip install transformers\n", + "!pip install pandas\n", + "!pip install numpy\n", + "!pip install datasets\n", + "!pip install sklearn\n", + "!pip install torch" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "4gGUsIXLF_TI" + }, + "outputs": [], + "source": [ + "# Import required packages\n", + "import transformers\n", + "import pandas as pd\n", + "import numpy as np\n", + "import datasets\n", + "from sklearn.model_selection import train_test_split\n", + "import torch" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5xpevkPtGCoZ", + "outputId": "9d35a50a-b3ec-46a2-d2b7-fa08ab5c9bd2" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GPU: NVIDIA RTX A5000\n" + ] + } + ], + "source": [ + "# Set Hardware accelerator to GPU in Edit: Notebook Settings (in Google Colab)\n", + "# Check if GPU is available, this will significantly speed up fine-tuning\n", + "if torch.cuda.is_available(): \n", + " device = torch.device(\"cuda\") \n", + " print('GPU:', torch.cuda.get_device_name(0))\n", + "else:\n", + " print('No GPU available, do not train')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dBlaE9efGbfW" + }, + "source": [ + "## Import pre-processed data\n", + "Run script *feat-eng-esc.py* to generate the pre-processed data." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "4z1ZyD0uGbyJ" + }, + "outputs": [], + "source": [ + "# Load the processed dataset\n", + "df = pd.read_csv('dataset-esc.csv')\n", + "df = df.dropna()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WobbJ86FQMVP", + "outputId": "dcf6efbd-cae4-4e3c-e20d-6685e37a5fbc" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(83778, 2)\n" + ] + } + ], + "source": [ + "print(df.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "nHN7dKsdQT7s", + "outputId": "ce8aafbb-34cc-4922-861b-c755f358cebd" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " description label\n", + "0 FonePaw iPhone Data Recovery features in recov... 1\n", + "1 FonePaw iOS Transfer is mainly designed to tra... 1\n", + "2 This is my first upload 1\n", + "3 Lost photos from iPhone can be recovered with ... 1\n", + "4 I can’t play WLMP file directly, what player d... 1" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
descriptionlabel
0FonePaw iPhone Data Recovery features in recov...1
1FonePaw iOS Transfer is mainly designed to tra...1
2This is my first upload1
3Lost photos from iPhone can be recovered with ...1
4I can’t play WLMP file directly, what player d...1
\n", + "
\n", + " \n", + " \n", + " \n", + "\n", + " \n", + "
\n", + "
\n", + " " + ] + }, + "metadata": {}, + "execution_count": 8 + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "YZPyhMFbQXiq", + "outputId": "a4568b61-28b6-4612-a717-09afbe632205" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 55847\n", + "1 27931\n", + "Name: label, dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ], + "source": [ + "df['label'].value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eN38xG9dQZhz" + }, + "source": [ + "## Training Set-up" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "K1SyRzDPQcld" + }, + "outputs": [], + "source": [ + "# Split data into train and test sets\n", + "# Note: stratify on 'label' to preserve the same proportions of labels in each set as observed in the original dataset\n", + "train, test = train_test_split(df, test_size=0.2, stratify=df[['label']], random_state=42)\n", + "test_en = test.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 145, + "referenced_widgets": [ + "1f37d39909ba411c84ba4d587502808f", + "83985d283ba747ac813204d89b39fc19", + "d83687033a1f4c549a258eedb8fbc13f", + "c5506388a6c841d0b8e0b8959444b1bd", + "42e80e5f55d849adae1694dd26c48596", + "f25e47228131400aa23b1b9d61ab1a8f", + "9599953932cd4eebad2e7b8aa3a10ebf", + "f9011bab69da4abc8116463fc937d667", + "a4d860f540d547f28c124e47b540ef32", + "9fec8a0b4b3e4697b83ce2d63795c30f", + "5af0450d396048edbdefa772a927b0d3", + "8bc429f2cb80478792c3b9296067f09a", + "4204b749b4d844ca92254e693be1ea4c", + "370954df41134e03a9ede5aa55141b6e", + "b08c290cffaf466cb53baf9b7bbf11ca", + "deddcc7ebc6b4250b2b1e28cfed07b6f", + "384ddeb98b9c4775bc6b9344b60b9554", + "c7630c218de0423da30c3a59936b484f", + "d4b63a54f77c4af79ccd3b5a8460352e", + "2b63341f028a4cf4b4efee73d77f8f61", + "2eae3ad820254e589596f34191eaa992", + "198299a2a67b46c8a1e9e9c77e930207", + "53d774b07f434041a9beb99e594760d4", + "95073dd374104a12ba1bf0bb7ef9d9d5", + "c47ed49a6f644018af40bb2a5f2ced9e", + "79c3275a7abf473db6ce9d9d8780bc71", + "7cad65e1d5154139b7775dc57dffa4e1", + "bded28391bd9442da0ebbb9461002046", + "3c47d4afdb89459aaeadd6e93d337dac", + "b80b8b33903f48d5a5276d648cf529f5", + "9f1b87dece70453787bd40fc7902945b", + "e611e960e4c842eb801d723d3735bcba", + "5b6f4eab91fb41129900f797262255a3", + "2b45c435aacf41cf98833abcfcc80989", + "59d498db7b914a5781d8f256514438e3", + "8c086ffc64ac42f88fbc20265c85f036", + "189ff3fbd931458bb1038d5f96b8ff17", + "5fabbacbefc7495892cf71289b7bea54", + "e72af544a87f433b961dc235bb53623a", + "832d878db7ad4b1f9f9162126b9d9974", + "2e800df0d89242b09f66a00be949a7e7", + "042be1e691574df3ac3f3d06b14f8170", + "45f189446ee84bc5b8cf691da54dbb01", + "e70aba335af14f59ac44e051a0a5a51b", + "7960a7016bf84079aa86437e41cb42f0", + "db75e31c410c4aa186839c44d7eab912", + "6f34f1bdb26e4cd1ab6099e92f70de80", + "64f7945ea3c54998b41ec032ab9b3528" + ] + }, + "id": "_UdZwkQ1QdgD", + "outputId": "b10abe35-6ba0-43d1-bcbb-72105b568915" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7960a7016bf84079aa86437e41cb42f0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading: 0%| | 0.00/29.0 [00:00\n", + " \n", + " \n", + " [25134/25134 1:02:22, Epoch 3/3]\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StepTraining Loss
5000.140700
10000.095800
15000.098900
20000.073800
25000.054100
30000.076100
35000.081300
40000.081500
45000.074500
50000.075700
55000.074200
60000.084900
65000.080400
70000.075000
75000.056700
80000.061200
85000.075700
90000.061200
95000.047900
100000.055100
105000.057500
110000.047500
115000.056500
120000.055900
125000.052100
130000.060200
135000.042800
140000.046900
145000.033600
150000.049600
155000.036200
160000.049500
165000.037800
170000.040900
175000.033900
180000.036600
185000.028000
190000.024500
195000.032300
200000.031600
205000.027300
210000.022200
215000.022400
220000.030700
225000.023000
230000.021400
235000.027500
240000.021600
245000.035700
250000.027800

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Saving model checkpoint to test_trainer/checkpoint-500\n", + "Configuration saved in test_trainer/checkpoint-500/config.json\n", + "Model weights saved in test_trainer/checkpoint-500/pytorch_model.bin\n", + "Saving model checkpoint to test_trainer/checkpoint-1000\n", + "Configuration saved in test_trainer/checkpoint-1000/config.json\n", + "Model weights saved in test_trainer/checkpoint-1000/pytorch_model.bin\n", + "Saving model checkpoint to test_trainer/checkpoint-1500\n", + "Configuration saved in test_trainer/checkpoint-1500/config.json\n", + "Model weights saved in test_trainer/checkpoint-1500/pytorch_model.bin\n", + "Saving model checkpoint to test_trainer/checkpoint-2000\n", + "Configuration saved in test_trainer/checkpoint-2000/config.json\n", + "Model weights saved in test_trainer/checkpoint-2000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-2500\n", + "Configuration saved in test_trainer/checkpoint-2500/config.json\n", + "Model weights saved in test_trainer/checkpoint-2500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-1000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-3000\n", + "Configuration saved in test_trainer/checkpoint-3000/config.json\n", + "Model weights saved in test_trainer/checkpoint-3000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-1500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-3500\n", + "Configuration saved in test_trainer/checkpoint-3500/config.json\n", + "Model weights saved in test_trainer/checkpoint-3500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-2000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-4000\n", + "Configuration saved in test_trainer/checkpoint-4000/config.json\n", + "Model weights saved in test_trainer/checkpoint-4000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-2500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-4500\n", + "Configuration saved in test_trainer/checkpoint-4500/config.json\n", + "Model weights saved in test_trainer/checkpoint-4500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-3000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-5000\n", + "Configuration saved in test_trainer/checkpoint-5000/config.json\n", + "Model weights saved in test_trainer/checkpoint-5000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-3500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-5500\n", + "Configuration saved in test_trainer/checkpoint-5500/config.json\n", + "Model weights saved in test_trainer/checkpoint-5500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-4000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-6000\n", + "Configuration saved in test_trainer/checkpoint-6000/config.json\n", + "Model weights saved in test_trainer/checkpoint-6000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-4500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-6500\n", + "Configuration saved in test_trainer/checkpoint-6500/config.json\n", + "Model weights saved in test_trainer/checkpoint-6500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-5000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-7000\n", + "Configuration saved in test_trainer/checkpoint-7000/config.json\n", + "Model weights saved in test_trainer/checkpoint-7000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-5500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-7500\n", + "Configuration saved in test_trainer/checkpoint-7500/config.json\n", + "Model weights saved in test_trainer/checkpoint-7500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-6000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-8000\n", + "Configuration saved in test_trainer/checkpoint-8000/config.json\n", + "Model weights saved in test_trainer/checkpoint-8000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-6500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-8500\n", + "Configuration saved in test_trainer/checkpoint-8500/config.json\n", + "Model weights saved in test_trainer/checkpoint-8500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-7000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-9000\n", + "Configuration saved in test_trainer/checkpoint-9000/config.json\n", + "Model weights saved in test_trainer/checkpoint-9000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-7500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-9500\n", + "Configuration saved in test_trainer/checkpoint-9500/config.json\n", + "Model weights saved in test_trainer/checkpoint-9500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-8000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-10000\n", + "Configuration saved in test_trainer/checkpoint-10000/config.json\n", + "Model weights saved in test_trainer/checkpoint-10000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-8500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-10500\n", + "Configuration saved in test_trainer/checkpoint-10500/config.json\n", + "Model weights saved in test_trainer/checkpoint-10500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-9000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-11000\n", + "Configuration saved in test_trainer/checkpoint-11000/config.json\n", + "Model weights saved in test_trainer/checkpoint-11000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-9500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-11500\n", + "Configuration saved in test_trainer/checkpoint-11500/config.json\n", + "Model weights saved in test_trainer/checkpoint-11500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-10000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-12000\n", + "Configuration saved in test_trainer/checkpoint-12000/config.json\n", + "Model weights saved in test_trainer/checkpoint-12000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-10500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-12500\n", + "Configuration saved in test_trainer/checkpoint-12500/config.json\n", + "Model weights saved in test_trainer/checkpoint-12500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-11000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-13000\n", + "Configuration saved in test_trainer/checkpoint-13000/config.json\n", + "Model weights saved in test_trainer/checkpoint-13000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-11500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-13500\n", + "Configuration saved in test_trainer/checkpoint-13500/config.json\n", + "Model weights saved in test_trainer/checkpoint-13500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-12000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-14000\n", + "Configuration saved in test_trainer/checkpoint-14000/config.json\n", + "Model weights saved in test_trainer/checkpoint-14000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-12500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-14500\n", + "Configuration saved in test_trainer/checkpoint-14500/config.json\n", + "Model weights saved in test_trainer/checkpoint-14500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-13000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-15000\n", + "Configuration saved in test_trainer/checkpoint-15000/config.json\n", + "Model weights saved in test_trainer/checkpoint-15000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-13500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-15500\n", + "Configuration saved in test_trainer/checkpoint-15500/config.json\n", + "Model weights saved in test_trainer/checkpoint-15500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-14000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-16000\n", + "Configuration saved in test_trainer/checkpoint-16000/config.json\n", + "Model weights saved in test_trainer/checkpoint-16000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-14500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-16500\n", + "Configuration saved in test_trainer/checkpoint-16500/config.json\n", + "Model weights saved in test_trainer/checkpoint-16500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-15000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-17000\n", + "Configuration saved in test_trainer/checkpoint-17000/config.json\n", + "Model weights saved in test_trainer/checkpoint-17000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-15500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-17500\n", + "Configuration saved in test_trainer/checkpoint-17500/config.json\n", + "Model weights saved in test_trainer/checkpoint-17500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-16000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-18000\n", + "Configuration saved in test_trainer/checkpoint-18000/config.json\n", + "Model weights saved in test_trainer/checkpoint-18000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-16500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-18500\n", + "Configuration saved in test_trainer/checkpoint-18500/config.json\n", + "Model weights saved in test_trainer/checkpoint-18500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-17000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-19000\n", + "Configuration saved in test_trainer/checkpoint-19000/config.json\n", + "Model weights saved in test_trainer/checkpoint-19000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-17500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-19500\n", + "Configuration saved in test_trainer/checkpoint-19500/config.json\n", + "Model weights saved in test_trainer/checkpoint-19500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-18000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-20000\n", + "Configuration saved in test_trainer/checkpoint-20000/config.json\n", + "Model weights saved in test_trainer/checkpoint-20000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-18500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-20500\n", + "Configuration saved in test_trainer/checkpoint-20500/config.json\n", + "Model weights saved in test_trainer/checkpoint-20500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-19000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-21000\n", + "Configuration saved in test_trainer/checkpoint-21000/config.json\n", + "Model weights saved in test_trainer/checkpoint-21000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-19500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-21500\n", + "Configuration saved in test_trainer/checkpoint-21500/config.json\n", + "Model weights saved in test_trainer/checkpoint-21500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-20000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-22000\n", + "Configuration saved in test_trainer/checkpoint-22000/config.json\n", + "Model weights saved in test_trainer/checkpoint-22000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-20500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-22500\n", + "Configuration saved in test_trainer/checkpoint-22500/config.json\n", + "Model weights saved in test_trainer/checkpoint-22500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-21000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-23000\n", + "Configuration saved in test_trainer/checkpoint-23000/config.json\n", + "Model weights saved in test_trainer/checkpoint-23000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-21500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-23500\n", + "Configuration saved in test_trainer/checkpoint-23500/config.json\n", + "Model weights saved in test_trainer/checkpoint-23500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-22000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-24000\n", + "Configuration saved in test_trainer/checkpoint-24000/config.json\n", + "Model weights saved in test_trainer/checkpoint-24000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-22500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-24500\n", + "Configuration saved in test_trainer/checkpoint-24500/config.json\n", + "Model weights saved in test_trainer/checkpoint-24500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-23000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-25000\n", + "Configuration saved in test_trainer/checkpoint-25000/config.json\n", + "Model weights saved in test_trainer/checkpoint-25000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-23500] due to args.save_total_limit\n", + "\n", + "\n", + "Training completed. Do not forget to share your model on huggingface.co/models =)\n", + "\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "TrainOutput(global_step=25134, training_loss=0.052604342072317574, metrics={'train_runtime': 3743.4451, 'train_samples_per_second': 53.711, 'train_steps_per_second': 6.714, 'total_flos': 2.6634689978167296e+16, 'train_loss': 0.052604342072317574, 'epoch': 3.0})" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Finally, we fine-tune our model\n", + "trainer.train() # Train" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 236 + }, + "id": "gmYZ24ZTQqj2", + "outputId": "21940fd4-9e3b-4f3a-ddf2-2d43ac0a1cf6" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "***** Running Evaluation *****\n", + " Num examples = 16756\n", + " Batch size = 8\n", + "The following columns in the evaluation set don't have a corresponding argument in `DistilBertForSequenceClassification.forward` and have been ignored: text. If text are not expected by `DistilBertForSequenceClassification.forward`, you can safely ignore this message.\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " \n", + " \n", + " [2095/2095 01:38]\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'eval_loss': 0.05530316382646561,\n", + " 'eval_accuracy': 0.9875865361661494,\n", + " 'eval_runtime': 98.4031,\n", + " 'eval_samples_per_second': 170.279,\n", + " 'eval_steps_per_second': 21.29,\n", + " 'epoch': 3.0}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Evaluate model on test set\n", + "trainer.evaluate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nDHgPCeiQs23", + "outputId": "14f66abb-48bd-4551-f15a-e8e066efb57a" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Saving model checkpoint to model-esc\n", + "Configuration saved in model-esc/config.json\n", + "Model weights saved in model-esc/pytorch_model.bin\n" + ] + } + ], + "source": [ + "# Save model\n", + "trainer.save_model(\"model-esc\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "opFYrx7FyK2V" + }, + "source": [ + "## Performance on Test Set: English Spam Classifier" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 145, + "referenced_widgets": [ + "8843f019aebd467196068f4309f25cc9", + "10ae828e4419422185cb5bf0e834a1b7", + "12eb1eab035e4a11bac666b5107b71c5", + "fd86ec91921b4616b7e44b88ac227e2b", + "fd416c21c4234cf08f3fbf35d919081d", + "56d5fa4a7beb44fc970ef4be853bd7d1", + "e30fdf93ef214dc590ab2aaefa839ec4", + "2659476ea6a7422d984d833b6ee4a559", + "a609503e6d93432fa87bdebcd1d41c44", + "11ac3ef5cec1446fb1e6e6fbdcd786fc", + "b4ed709d84934f6b8834736c0827325e", + "8c0244cc8ddd415baef0af9a26e99c2a", + "55d43e8681f34cf8b647e3640e65b5c3", + "f6e9075e09374f0c8d73cbc23fe2c37f", + "d452fd4dadf44c17958db8d708babaaa", + "2a67e7e31ee64b2783875c8a6503f3f7", + "029110c1b2944668b989034bfe44bdcf", + "7a31e43bee4f4ac9a6348a9fd5193e8a", + "706d7c5ee2704629a8818aea8f1de9ad", + "f2c936c647fd4150add769a8346ff487", + "6302b8231099405b9878315047f7ecca", + "c81150576005465a9f7501b4daf958a0", + "1201e64261d940b7879ca4ac4edaf132", + "a8c994bbd11f498fb045a8fb3133734e", + "36433ddc6ff346eda8b000f4f8b99af8", + "4066b311bb7f4df795695dc9e7e3b01e", + "409352ab5143416b8100af93fe5ff874", + "985900082d00472286fbd731de7d4cb5", + "9ed8efeef04a4a24b3c20db522ee881f", + "60619fc65d5b49179dce1e4ebfb240e9", + "4e1b10bfb2d5480dab2f72a7882e6007", + "7bf7c794b5414e54b4bb1fabdd5d5872", + "a379f0161b2a4f2a854280720c8a386a", + "55195cb575f9411fb8025257b4bb7e6c", + "ae027b9b103040ebb67c958f8c4bbc04", + "a68734e56e6743279bffd85f658dd6f0", + "f2fd3178ae9e456f94d40bc5aebfdc30", + "8bce862f7f37454d9bd5642f3dc2126d", + "a444ba3c963f4d678462ff1463ab622c", + "918b4c69019f43ecac1af0b4a7e07496", + "a513c748eae3413cb985de8926f5c393", + "e45dfb3b48b340d0afb90c4639127353", + "b4c5f02e8c47456ca61de0dc1558b32c", + "21ddfc64c103402d90e4944255c53189" + ] + }, + "id": "Ogo5rLn1yK2V", + "outputId": "ec4ab69a-fa40-4caf-bead-949dba4b26b9" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading: 0%| | 0.00/29.0 [00:00\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
descriptionlabel
0Masih bingung dalam hal makanan penambah berat...1
1FonePaw iPhone Data Recovery features in recov...1
2FonePaw iOS Transfer is mainly designed to tra...1
3This is my first upload1
4Doyantoto merupakan sebuah website Agen Togel ...1
\n", + "" + ], + "text/plain": [ + " description label\n", + "0 Masih bingung dalam hal makanan penambah berat... 1\n", + "1 FonePaw iPhone Data Recovery features in recov... 1\n", + "2 FonePaw iOS Transfer is mainly designed to tra... 1\n", + "3 This is my first upload 1\n", + "4 Doyantoto merupakan sebuah website Agen Togel ... 1" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "YZPyhMFbQXiq", + "outputId": "c23765ac-aaf1-4ccd-eaae-fb84d0643295" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 52834\n", + "1 37784\n", + "Name: label, dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['label'].value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eN38xG9dQZhz" + }, + "source": [ + "## Training Set-up" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "K1SyRzDPQcld" + }, + "outputs": [], + "source": [ + "# Split data into train and test sets\n", + "# Note: stratify on 'label' to preserve the same proportions of labels in each set as observed in the original dataset\n", + "train, test = train_test_split(df, test_size=0.2, stratify=df[['label']], random_state=42)\n", + "test_multi = test.copy()\n", + "test_no_en = test.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 145, + "referenced_widgets": [ + "1e6d4ba2b7b94f4dac9284a4f093d321", + "0cf595effd0e4cdcae790f2aec3fc176", + "80b55e96450648a880766c0492299029", + "7cd75a5a8b9e4365bb7adb7ce339b533", + "9dc7769a72244901883af1e209c02ab0", + "6e500e22b9ac47f29a2b60695eaeee1b", + "499d54d5f9d64ec5a7297780d01d7542", + "ccad7e6b754643d1872cbafef7158603", + "301745323ce14a49884c61ac37c36542", + "d848f3cd8fc648988e18a8569eb0bc48", + "dca20772f5b24c2591870d1da7dfbbff", + "ad44115b21dc46ef8ca008a738b8fbfe", + "1f9eb0a390484302a45317810f2e829d", + "c7fd5da448114c02a63c8d32b1d2991c", + "0cf205ec4c82488ba13f32519fab56b3", + "2eea7465105a4b4ea00cd57c6c16e78f", + "eef2d41094f34f18b811b7079f043220", + "6d992fc1ec634c19a794b7eda835c4a1", + "c17c34d0a0f5454ea2e12cef84aa4e27", + "745b1b2a04d1422d96d6c54934d771b5", + "8af7ffff71ce445e8b437bccf46b96f2", + "ee5a378bf6384328bb59b3f3bdb0f3d2", + "389833ff94f9462f8270fcec2396b19e", + "95d668b851c24aea988177972de6b0fa", + "cbfee6447535490a80fab030669c6eae", + "76ea2f1266a54708939acb5a96e8dfdf", + "a6f64f1c4078400a9df4bb35dd97d0b4", + "2fce782be7da430dba8014f58ac00b02", + "2490c7a9dfe04ff48995d77e7cb749d4", + "1918d586490e46ce8da9416064096151", + "ffcfba2fe7f94b5c982eaaedf6f3febc", + "8666b83039ed4cc3bd3896485ec09d09", + "cf46fefd82f24b12ad0c3145c4924acb", + "5633ff0eba2a48f48c69ebb23271d4ea", + "7440b1b3c178410ebeb5bd0dc1547a1b", + "2ef2d786b88c4f04b3d9bd73e6e945d0", + "da353539b2474d6caffc38af0241fecf", + "a5f108b19ab149ccb4e2b028e6d62422", + "b3928b364fb24476be243bde37e65469", + "2105aab8494c4a9d94f01acf7f7e357d", + "264853c4fdf44d25819027c2effa3b0f", + "d04a2a562c5b4aaea83248e1ecf44c70", + "a195f4aee30044d38af9d9e20c2dc490", + "25295a5688474c219fa43c9a0b7482ab" + ] + }, + "id": "_UdZwkQ1QdgD", + "outputId": "0c16a6eb-d0d7-478e-c8a9-4779d9bf853b" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "445f2eedb4f447bbbf87992d680508ee", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading: 0%| | 0.00/29.0 [00:00\n", + " \n", + " \n", + " [27186/27186 1:09:26, Epoch 3/3]\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StepTraining Loss
5000.175200
10000.096900
15000.089600
20000.087400
25000.085300
30000.084000
35000.089200
40000.088300
45000.094400
50000.065800
55000.075000
60000.080100
65000.080600
70000.075900
75000.081400
80000.062000
85000.069600
90000.056100
95000.048700
100000.047400
105000.041600
110000.032300
115000.040400
120000.045100
125000.052600
130000.053700
135000.052600
140000.043300
145000.042600
150000.044300
155000.034900
160000.038800
165000.045900
170000.037800
175000.046500
180000.036300
185000.029500
190000.029300
195000.027500
200000.029400
205000.024800
210000.013800
215000.027000
220000.020900
225000.039700
230000.026800
235000.031600
240000.024400
245000.027200
250000.016400
255000.027900
260000.031200
265000.023400
270000.025200

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Saving model checkpoint to test_trainer/checkpoint-500\n", + "Configuration saved in test_trainer/checkpoint-500/config.json\n", + "Model weights saved in test_trainer/checkpoint-500/pytorch_model.bin\n", + "Saving model checkpoint to test_trainer/checkpoint-1000\n", + "Configuration saved in test_trainer/checkpoint-1000/config.json\n", + "Model weights saved in test_trainer/checkpoint-1000/pytorch_model.bin\n", + "Saving model checkpoint to test_trainer/checkpoint-1500\n", + "Configuration saved in test_trainer/checkpoint-1500/config.json\n", + "Model weights saved in test_trainer/checkpoint-1500/pytorch_model.bin\n", + "Saving model checkpoint to test_trainer/checkpoint-2000\n", + "Configuration saved in test_trainer/checkpoint-2000/config.json\n", + "Model weights saved in test_trainer/checkpoint-2000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-2500\n", + "Configuration saved in test_trainer/checkpoint-2500/config.json\n", + "Model weights saved in test_trainer/checkpoint-2500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-1000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-3000\n", + "Configuration saved in test_trainer/checkpoint-3000/config.json\n", + "Model weights saved in test_trainer/checkpoint-3000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-1500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-3500\n", + "Configuration saved in test_trainer/checkpoint-3500/config.json\n", + "Model weights saved in test_trainer/checkpoint-3500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-2000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-4000\n", + "Configuration saved in test_trainer/checkpoint-4000/config.json\n", + "Model weights saved in test_trainer/checkpoint-4000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-2500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-4500\n", + "Configuration saved in test_trainer/checkpoint-4500/config.json\n", + "Model weights saved in test_trainer/checkpoint-4500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-3000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-5000\n", + "Configuration saved in test_trainer/checkpoint-5000/config.json\n", + "Model weights saved in test_trainer/checkpoint-5000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-3500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-5500\n", + "Configuration saved in test_trainer/checkpoint-5500/config.json\n", + "Model weights saved in test_trainer/checkpoint-5500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-4000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-6000\n", + "Configuration saved in test_trainer/checkpoint-6000/config.json\n", + "Model weights saved in test_trainer/checkpoint-6000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-4500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-6500\n", + "Configuration saved in test_trainer/checkpoint-6500/config.json\n", + "Model weights saved in test_trainer/checkpoint-6500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-5000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-7000\n", + "Configuration saved in test_trainer/checkpoint-7000/config.json\n", + "Model weights saved in test_trainer/checkpoint-7000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-5500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-7500\n", + "Configuration saved in test_trainer/checkpoint-7500/config.json\n", + "Model weights saved in test_trainer/checkpoint-7500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-6000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-8000\n", + "Configuration saved in test_trainer/checkpoint-8000/config.json\n", + "Model weights saved in test_trainer/checkpoint-8000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-6500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-8500\n", + "Configuration saved in test_trainer/checkpoint-8500/config.json\n", + "Model weights saved in test_trainer/checkpoint-8500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-7000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-9000\n", + "Configuration saved in test_trainer/checkpoint-9000/config.json\n", + "Model weights saved in test_trainer/checkpoint-9000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-7500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-9500\n", + "Configuration saved in test_trainer/checkpoint-9500/config.json\n", + "Model weights saved in test_trainer/checkpoint-9500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-8000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-10000\n", + "Configuration saved in test_trainer/checkpoint-10000/config.json\n", + "Model weights saved in test_trainer/checkpoint-10000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-8500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-10500\n", + "Configuration saved in test_trainer/checkpoint-10500/config.json\n", + "Model weights saved in test_trainer/checkpoint-10500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-9000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-11000\n", + "Configuration saved in test_trainer/checkpoint-11000/config.json\n", + "Model weights saved in test_trainer/checkpoint-11000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-9500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-11500\n", + "Configuration saved in test_trainer/checkpoint-11500/config.json\n", + "Model weights saved in test_trainer/checkpoint-11500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-10000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-12000\n", + "Configuration saved in test_trainer/checkpoint-12000/config.json\n", + "Model weights saved in test_trainer/checkpoint-12000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-10500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-12500\n", + "Configuration saved in test_trainer/checkpoint-12500/config.json\n", + "Model weights saved in test_trainer/checkpoint-12500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-11000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-13000\n", + "Configuration saved in test_trainer/checkpoint-13000/config.json\n", + "Model weights saved in test_trainer/checkpoint-13000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-11500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-13500\n", + "Configuration saved in test_trainer/checkpoint-13500/config.json\n", + "Model weights saved in test_trainer/checkpoint-13500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-12000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-14000\n", + "Configuration saved in test_trainer/checkpoint-14000/config.json\n", + "Model weights saved in test_trainer/checkpoint-14000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-12500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-14500\n", + "Configuration saved in test_trainer/checkpoint-14500/config.json\n", + "Model weights saved in test_trainer/checkpoint-14500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-13000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-15000\n", + "Configuration saved in test_trainer/checkpoint-15000/config.json\n", + "Model weights saved in test_trainer/checkpoint-15000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-13500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-15500\n", + "Configuration saved in test_trainer/checkpoint-15500/config.json\n", + "Model weights saved in test_trainer/checkpoint-15500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-14000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-16000\n", + "Configuration saved in test_trainer/checkpoint-16000/config.json\n", + "Model weights saved in test_trainer/checkpoint-16000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-14500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-16500\n", + "Configuration saved in test_trainer/checkpoint-16500/config.json\n", + "Model weights saved in test_trainer/checkpoint-16500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-15000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-17000\n", + "Configuration saved in test_trainer/checkpoint-17000/config.json\n", + "Model weights saved in test_trainer/checkpoint-17000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-15500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-17500\n", + "Configuration saved in test_trainer/checkpoint-17500/config.json\n", + "Model weights saved in test_trainer/checkpoint-17500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-16000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-18000\n", + "Configuration saved in test_trainer/checkpoint-18000/config.json\n", + "Model weights saved in test_trainer/checkpoint-18000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-16500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-18500\n", + "Configuration saved in test_trainer/checkpoint-18500/config.json\n", + "Model weights saved in test_trainer/checkpoint-18500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-17000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-19000\n", + "Configuration saved in test_trainer/checkpoint-19000/config.json\n", + "Model weights saved in test_trainer/checkpoint-19000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-17500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-19500\n", + "Configuration saved in test_trainer/checkpoint-19500/config.json\n", + "Model weights saved in test_trainer/checkpoint-19500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-18000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-20000\n", + "Configuration saved in test_trainer/checkpoint-20000/config.json\n", + "Model weights saved in test_trainer/checkpoint-20000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-18500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-20500\n", + "Configuration saved in test_trainer/checkpoint-20500/config.json\n", + "Model weights saved in test_trainer/checkpoint-20500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-19000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-21000\n", + "Configuration saved in test_trainer/checkpoint-21000/config.json\n", + "Model weights saved in test_trainer/checkpoint-21000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-19500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-21500\n", + "Configuration saved in test_trainer/checkpoint-21500/config.json\n", + "Model weights saved in test_trainer/checkpoint-21500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-20000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-22000\n", + "Configuration saved in test_trainer/checkpoint-22000/config.json\n", + "Model weights saved in test_trainer/checkpoint-22000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-20500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-22500\n", + "Configuration saved in test_trainer/checkpoint-22500/config.json\n", + "Model weights saved in test_trainer/checkpoint-22500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-21000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-23000\n", + "Configuration saved in test_trainer/checkpoint-23000/config.json\n", + "Model weights saved in test_trainer/checkpoint-23000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-21500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-23500\n", + "Configuration saved in test_trainer/checkpoint-23500/config.json\n", + "Model weights saved in test_trainer/checkpoint-23500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-22000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-24000\n", + "Configuration saved in test_trainer/checkpoint-24000/config.json\n", + "Model weights saved in test_trainer/checkpoint-24000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-22500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-24500\n", + "Configuration saved in test_trainer/checkpoint-24500/config.json\n", + "Model weights saved in test_trainer/checkpoint-24500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-23000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-25000\n", + "Configuration saved in test_trainer/checkpoint-25000/config.json\n", + "Model weights saved in test_trainer/checkpoint-25000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-23500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-25500\n", + "Configuration saved in test_trainer/checkpoint-25500/config.json\n", + "Model weights saved in test_trainer/checkpoint-25500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-24000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-26000\n", + "Configuration saved in test_trainer/checkpoint-26000/config.json\n", + "Model weights saved in test_trainer/checkpoint-26000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-24500] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-26500\n", + "Configuration saved in test_trainer/checkpoint-26500/config.json\n", + "Model weights saved in test_trainer/checkpoint-26500/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-25000] due to args.save_total_limit\n", + "Saving model checkpoint to test_trainer/checkpoint-27000\n", + "Configuration saved in test_trainer/checkpoint-27000/config.json\n", + "Model weights saved in test_trainer/checkpoint-27000/pytorch_model.bin\n", + "Deleting older checkpoint [test_trainer/checkpoint-25500] due to args.save_total_limit\n", + "\n", + "\n", + "Training completed. Do not forget to share your model on huggingface.co/models =)\n", + "\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "TrainOutput(global_step=27186, training_loss=0.05157783799180919, metrics={'train_runtime': 4167.7462, 'train_samples_per_second': 52.182, 'train_steps_per_second': 6.523, 'total_flos': 2.880927479450419e+16, 'train_loss': 0.05157783799180919, 'epoch': 3.0})" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Finally, we fine-tune our model\n", + "trainer.train() # Training took about 1h15 with GPU: NVIDIA RTX A5000" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "gmYZ24ZTQqj2" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "The following columns in the evaluation set don't have a corresponding argument in `DistilBertForSequenceClassification.forward` and have been ignored: text. If text are not expected by `DistilBertForSequenceClassification.forward`, you can safely ignore this message.\n", + "***** Running Evaluation *****\n", + " Num examples = 18124\n", + " Batch size = 8\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "

\n", + " \n", + " \n", + " [2266/2266 01:38]\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'eval_loss': 0.05935591459274292,\n", + " 'eval_accuracy': 0.9881372765393953,\n", + " 'eval_runtime': 98.1932,\n", + " 'eval_samples_per_second': 184.575,\n", + " 'eval_steps_per_second': 23.077,\n", + " 'epoch': 3.0}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Evaluate model on test set\n", + "trainer.evaluate()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "id": "nDHgPCeiQs23" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Saving model checkpoint to msc-model\n", + "Configuration saved in msc-model/config.json\n", + "Model weights saved in msc-model/pytorch_model.bin\n" + ] + } + ], + "source": [ + "# Save model\n", + "trainer.save_model(\"msc-model\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Performance on Test Set: Multilingual Spam Classifier" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "loading configuration file msc-model/config.json\n", + "Model config DistilBertConfig {\n", + " \"_name_or_path\": \"msc-model\",\n", + " \"activation\": \"gelu\",\n", + " \"architectures\": [\n", + " \"DistilBertForSequenceClassification\"\n", + " ],\n", + " \"attention_dropout\": 0.1,\n", + " \"dim\": 768,\n", + " \"dropout\": 0.1,\n", + " \"hidden_dim\": 3072,\n", + " \"initializer_range\": 0.02,\n", + " \"max_position_embeddings\": 512,\n", + " \"model_type\": \"distilbert\",\n", + " \"n_heads\": 12,\n", + " \"n_layers\": 6,\n", + " \"output_past\": true,\n", + " \"pad_token_id\": 0,\n", + " \"problem_type\": \"single_label_classification\",\n", + " \"qa_dropout\": 0.1,\n", + " \"seq_classif_dropout\": 0.2,\n", + " \"sinusoidal_pos_embds\": false,\n", + " \"tie_weights_\": true,\n", + " \"torch_dtype\": \"float32\",\n", + " \"transformers_version\": \"4.25.1\",\n", + " \"vocab_size\": 119547\n", + "}\n", + "\n", + "loading weights file msc-model/pytorch_model.bin\n", + "All model checkpoint weights were used when initializing DistilBertForSequenceClassification.\n", + "\n", + "All the weights of DistilBertForSequenceClassification were initialized from the model checkpoint at msc-model.\n", + "If your task is similar to the task the model of the checkpoint was trained on, you can already use DistilBertForSequenceClassification for predictions without further training.\n", + "loading configuration file config.json from cache at /root/.cache/huggingface/hub/models--distilbert-base-multilingual-cased/snapshots/fb240273126596a03b35c85793d2e82a5b13ac79/config.json\n", + "Model config DistilBertConfig {\n", + " \"_name_or_path\": \"distilbert-base-multilingual-cased\",\n", + " \"activation\": \"gelu\",\n", + " \"architectures\": [\n", + " \"DistilBertForMaskedLM\"\n", + " ],\n", + " \"attention_dropout\": 0.1,\n", + " \"dim\": 768,\n", + " \"dropout\": 0.1,\n", + " \"hidden_dim\": 3072,\n", + " \"initializer_range\": 0.02,\n", + " \"max_position_embeddings\": 512,\n", + " \"model_type\": \"distilbert\",\n", + " \"n_heads\": 12,\n", + " \"n_layers\": 6,\n", + " \"output_past\": true,\n", + " \"pad_token_id\": 0,\n", + " \"qa_dropout\": 0.1,\n", + " \"seq_classif_dropout\": 0.2,\n", + " \"sinusoidal_pos_embds\": false,\n", + " \"tie_weights_\": true,\n", + " \"transformers_version\": \"4.25.1\",\n", + " \"vocab_size\": 119547\n", + "}\n", + "\n", + "loading file vocab.txt from cache at /root/.cache/huggingface/hub/models--distilbert-base-multilingual-cased/snapshots/fb240273126596a03b35c85793d2e82a5b13ac79/vocab.txt\n", + "loading file tokenizer.json from cache at /root/.cache/huggingface/hub/models--distilbert-base-multilingual-cased/snapshots/fb240273126596a03b35c85793d2e82a5b13ac79/tokenizer.json\n", + "loading file added_tokens.json from cache at None\n", + "loading file special_tokens_map.json from cache at None\n", + "loading file tokenizer_config.json from cache at /root/.cache/huggingface/hub/models--distilbert-base-multilingual-cased/snapshots/fb240273126596a03b35c85793d2e82a5b13ac79/tokenizer_config.json\n", + "loading configuration file config.json from cache at /root/.cache/huggingface/hub/models--distilbert-base-multilingual-cased/snapshots/fb240273126596a03b35c85793d2e82a5b13ac79/config.json\n", + "Model config DistilBertConfig {\n", + " \"_name_or_path\": \"distilbert-base-multilingual-cased\",\n", + " \"activation\": \"gelu\",\n", + " \"architectures\": [\n", + " \"DistilBertForMaskedLM\"\n", + " ],\n", + " \"attention_dropout\": 0.1,\n", + " \"dim\": 768,\n", + " \"dropout\": 0.1,\n", + " \"hidden_dim\": 3072,\n", + " \"initializer_range\": 0.02,\n", + " \"max_position_embeddings\": 512,\n", + " \"model_type\": \"distilbert\",\n", + " \"n_heads\": 12,\n", + " \"n_layers\": 6,\n", + " \"output_past\": true,\n", + " \"pad_token_id\": 0,\n", + " \"qa_dropout\": 0.1,\n", + " \"seq_classif_dropout\": 0.2,\n", + " \"sinusoidal_pos_embds\": false,\n", + " \"tie_weights_\": true,\n", + " \"transformers_version\": \"4.25.1\",\n", + " \"vocab_size\": 119547\n", + "}\n", + "\n" + ] + } + ], + "source": [ + "from transformers import pipeline\n", + "from transformers import AutoModelForSequenceClassification, AutoTokenizer\n", + "# Load both models\n", + "model = AutoModelForSequenceClassification.from_pretrained('msc-model')\n", + "model_tokenizer = AutoTokenizer.from_pretrained(\"distilbert-base-multilingual-cased\")\n", + "\n", + "# Create a pipeline to facilitate the use of the model for classification\n", + "classifier = pipeline(\"text-classification\", model=model, tokenizer=model_tokenizer)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Disabling tokenizer parallelism, we're using DataLoader multithreading already\n" + ] + } + ], + "source": [ + "y_true = test_multi['label'].tolist()\n", + "y_predict = classifier(test_multi['description'].map(lambda x: str(x)).tolist(), padding=True, truncation=True)\n", + "y_predict = [1 if pred['label'] == 'LABEL_1' else 0 for pred in y_predict]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 98.81372765393954 %\n", + "\n", + "F1 Score: 98.77898987594016 %\n", + "\n", + "True positives: 98.26650787349477 %\n", + "True negatives: 99.20507239519259 %\n" + ] + } + ], + "source": [ + "# compute accuracy\n", + "from sklearn.metrics import accuracy_score\n", + "accuracy_score(y_true, y_predict)\n", + "print(f'Accuracy: {100 * accuracy_score(y_true, y_predict)} %')\n", + "print()\n", + "# compute f1 score\n", + "from sklearn.metrics import f1_score\n", + "f1_score(y_true, y_predict, average='macro')\n", + "print(f'F1 Score: {100 * f1_score(y_true, y_predict, average=\"macro\")} %')\n", + "print()\n", + "# compute confusion matrix\n", + "from sklearn.metrics import confusion_matrix\n", + "confusion_matrix = confusion_matrix(y_true, y_predict)\n", + "\n", + "print('True positives: ', 100 * confusion_matrix[1][1]/(confusion_matrix[1][1] + confusion_matrix[1][0]), '%')\n", + "print('True negatives: ', 100 * confusion_matrix[0][0]/(confusion_matrix[0][0] + confusion_matrix[0][1]), '%')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Performance on Test Set: all non-english languages Spam Classifier" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n" + ] + } + ], + "source": [ + "# Filter out all the english texts\n", + "import re\n", + "from ftlangdetect import detect\n", + "CLEANING_REGEX = re.compile(r'[^a-zA-Z0-9\\s]', re.MULTILINE)\n", + "def detect_lang(descr):\n", + " d = CLEANING_REGEX.sub('', str(descr))\n", + " d = d.replace('\\r', ' ').replace('\\n', ' ')\n", + " lang = detect(d)['lang']\n", + " return lang\n", + "\n", + "test_no_en['lang'] = test_no_en['description'].map(lambda x: detect_lang(x))\n", + "test_no_en = test_no_en[test_no_en['lang'] != 'en']\n", + "test_no_en = test_no_en.drop(columns=['lang'])" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "y_true = test_no_en['label'].tolist()\n", + "y_predict = classifier(test_no_en['description'].map(lambda x: str(x)).tolist(), padding=True, truncation=True)\n", + "y_predict = [1 if pred['label'] == 'LABEL_1' else 0 for pred in y_predict]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 98.31041257367387 %\n", + "\n", + "F1 Score: 97.48498193971817 %\n", + "\n", + "True positives: 98.50746268656717 %\n", + "True negatives: 97.57009345794393 %\n" + ] + } + ], + "source": [ + "# compute accuracy\n", + "from sklearn.metrics import accuracy_score\n", + "accuracy_score(y_true, y_predict)\n", + "print(f'Accuracy: {100 * accuracy_score(y_true, y_predict)} %')\n", + "print()\n", + "# compute f1 score\n", + "from sklearn.metrics import f1_score\n", + "f1_score(y_true, y_predict, average='macro')\n", + "print(f'F1 Score: {100 * f1_score(y_true, y_predict, average=\"macro\")} %')\n", + "print()\n", + "# compute confusion matrix\n", + "from sklearn.metrics import confusion_matrix\n", + "confusion_matrix = confusion_matrix(y_true, y_predict)\n", + "print('True positives: ', 100 * confusion_matrix[1][1]/(confusion_matrix[1][1] + confusion_matrix[1][0]), '%')\n", + "print('True negatives: ', 100 * confusion_matrix[0][0]/(confusion_matrix[0][0] + confusion_matrix[0][1]), '%')" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [] + }, + "gpuClass": "standard", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.13" + }, + "vscode": { + "interpreter": { + "hash": "40d3a090f54c6569ab1632332b64b2c03c39dcf918b08424e98f38b5ae0af88f" + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "0cf205ec4c82488ba13f32519fab56b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_8af7ffff71ce445e8b437bccf46b96f2", + "placeholder": "​", + "style": "IPY_MODEL_ee5a378bf6384328bb59b3f3bdb0f3d2", + "value": " 466/466 [00:00<00:00, 15.4kB/s]" + } + }, + "0cf595effd0e4cdcae790f2aec3fc176": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_6e500e22b9ac47f29a2b60695eaeee1b", + "placeholder": "​", + "style": "IPY_MODEL_499d54d5f9d64ec5a7297780d01d7542", + "value": "Downloading: 100%" + } + }, + "164d488a4b2242ff9d8104052fc0240f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "17b3166a46f54ab5a2c725d8355b8759": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "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_c139d1e7843247f0bfb30a916a0233d7", + "IPY_MODEL_d2d9bce8fafa4c188c401ed7bee7fd49", + "IPY_MODEL_ae3c0f882ae14194931a8387f82f9fd4" + ], + "layout": "IPY_MODEL_7e60c1d8816b49d5a5b1ff59dfde5ae0" + } + }, + "1918d586490e46ce8da9416064096151": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "1e6d4ba2b7b94f4dac9284a4f093d321": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "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_0cf595effd0e4cdcae790f2aec3fc176", + "IPY_MODEL_80b55e96450648a880766c0492299029", + "IPY_MODEL_7cd75a5a8b9e4365bb7adb7ce339b533" + ], + "layout": "IPY_MODEL_9dc7769a72244901883af1e209c02ab0" + } + }, + "1f9eb0a390484302a45317810f2e829d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_eef2d41094f34f18b811b7079f043220", + "placeholder": "​", + "style": "IPY_MODEL_6d992fc1ec634c19a794b7eda835c4a1", + "value": "Downloading: 100%" + } + }, + "2105aab8494c4a9d94f01acf7f7e357d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "2131431357ca4b2e963de9b004e21102": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "2267c81aaeea44ab87bf7ba3d1beff03": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_ee4a8572a2234f5fb374584c2af87a1f", + "placeholder": "​", + "style": "IPY_MODEL_6dcc977075ad4cf49dd22eea0ccdf449", + "value": "Downloading: 100%" + } + }, + "238696e1b9d34281b94c08a8d4d858ba": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "2490c7a9dfe04ff48995d77e7cb749d4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "25295a5688474c219fa43c9a0b7482ab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "264853c4fdf44d25819027c2effa3b0f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "2bdb17153fc648a1aa24704e1f5779e8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_31847ecd09c44c93b19f54c651f3df48", + "placeholder": "​", + "style": "IPY_MODEL_51a29e88dc884eae901226444148576a", + "value": "100%" + } + }, + "2eea7465105a4b4ea00cd57c6c16e78f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "2ef2d786b88c4f04b3d9bd73e6e945d0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "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_264853c4fdf44d25819027c2effa3b0f", + "max": 1961828, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d04a2a562c5b4aaea83248e1ecf44c70", + "value": 1961828 + } + }, + "2fce782be7da430dba8014f58ac00b02": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "301745323ce14a49884c61ac37c36542": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "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": "" + } + }, + "31847ecd09c44c93b19f54c651f3df48": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "34c6d9d585f84f56b638d780ba2cc293": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "389833ff94f9462f8270fcec2396b19e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "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_95d668b851c24aea988177972de6b0fa", + "IPY_MODEL_cbfee6447535490a80fab030669c6eae", + "IPY_MODEL_76ea2f1266a54708939acb5a96e8dfdf" + ], + "layout": "IPY_MODEL_a6f64f1c4078400a9df4bb35dd97d0b4" + } + }, + "43ba716e2e50446eb5f7dfaca3d81b36": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_34c6d9d585f84f56b638d780ba2cc293", + "placeholder": "​", + "style": "IPY_MODEL_8c050559ad244002afc9f84ea33a09c6", + "value": " 542M/542M [00:09<00:00, 59.3MB/s]" + } + }, + "499d54d5f9d64ec5a7297780d01d7542": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "4e0808e7c9a94bd89dbe568f9795afc6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "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": "" + } + }, + "50a4df1c2ce9404987f4625f193929d4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_7af3f089337047368e55d96926a2e3bd", + "placeholder": "​", + "style": "IPY_MODEL_635922d86fc4405c826ff2b19cd7fc74", + "value": "Downloading builder script: " + } + }, + "51a29e88dc884eae901226444148576a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "5633ff0eba2a48f48c69ebb23271d4ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "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_7440b1b3c178410ebeb5bd0dc1547a1b", + "IPY_MODEL_2ef2d786b88c4f04b3d9bd73e6e945d0", + "IPY_MODEL_da353539b2474d6caffc38af0241fecf" + ], + "layout": "IPY_MODEL_a5f108b19ab149ccb4e2b028e6d62422" + } + }, + "5ec669e823294afe8897f7beeb446c69": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "635922d86fc4405c826ff2b19cd7fc74": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "63e769008e724def9f8f9b3410c1de1c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "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_2267c81aaeea44ab87bf7ba3d1beff03", + "IPY_MODEL_ed2f673d3b354e29aaac004b5203de8f", + "IPY_MODEL_43ba716e2e50446eb5f7dfaca3d81b36" + ], + "layout": "IPY_MODEL_238696e1b9d34281b94c08a8d4d858ba" + } + }, + "6821955b03724206a785bee03e1a2452": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "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": "" + } + }, + "6d992fc1ec634c19a794b7eda835c4a1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "6dcc977075ad4cf49dd22eea0ccdf449": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "6e500e22b9ac47f29a2b60695eaeee1b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "710f69706ef143cfa7513f13afd7f1fc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "7440b1b3c178410ebeb5bd0dc1547a1b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_b3928b364fb24476be243bde37e65469", + "placeholder": "​", + "style": "IPY_MODEL_2105aab8494c4a9d94f01acf7f7e357d", + "value": "Downloading: 100%" + } + }, + "745b1b2a04d1422d96d6c54934d771b5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "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": "" + } + }, + "76ea2f1266a54708939acb5a96e8dfdf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_8666b83039ed4cc3bd3896485ec09d09", + "placeholder": "​", + "style": "IPY_MODEL_cf46fefd82f24b12ad0c3145c4924acb", + "value": " 996k/996k [00:00<00:00, 2.02MB/s]" + } + }, + "77c3fafe158b48dd9624f66e01383665": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "7af3f089337047368e55d96926a2e3bd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "7cd75a5a8b9e4365bb7adb7ce339b533": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_d848f3cd8fc648988e18a8569eb0bc48", + "placeholder": "​", + "style": "IPY_MODEL_dca20772f5b24c2591870d1da7dfbbff", + "value": " 29.0/29.0 [00:00<00:00, 958B/s]" + } + }, + "7dea9f79416447c4b67c36239d4e3973": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "7e60c1d8816b49d5a5b1ff59dfde5ae0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "80b55e96450648a880766c0492299029": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "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_ccad7e6b754643d1872cbafef7158603", + "max": 29, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_301745323ce14a49884c61ac37c36542", + "value": 29 + } + }, + "86167df488b1420bb8332345ae9a052e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "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_77c3fafe158b48dd9624f66e01383665", + "max": 91, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4e0808e7c9a94bd89dbe568f9795afc6", + "value": 91 + } + }, + "864458a3a69e4dfda01d55f0143ba8b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "8666b83039ed4cc3bd3896485ec09d09": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "89fe56d17960451286261aa5bf308b06": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "8af7ffff71ce445e8b437bccf46b96f2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "8c050559ad244002afc9f84ea33a09c6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "95d668b851c24aea988177972de6b0fa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_2fce782be7da430dba8014f58ac00b02", + "placeholder": "​", + "style": "IPY_MODEL_2490c7a9dfe04ff48995d77e7cb749d4", + "value": "Downloading: 100%" + } + }, + "9766005031f442e0a6b4aa4235478198": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "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_50a4df1c2ce9404987f4625f193929d4", + "IPY_MODEL_d52fa063f955471da01b7ee6b5e29be0", + "IPY_MODEL_f436622afdba40d8abb46590de18d218" + ], + "layout": "IPY_MODEL_c2612158281943a9b6777fe893807542" + } + }, + "9c39358f86c14301bfbf3ef3b80bdafc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "9dc7769a72244901883af1e209c02ab0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "9fa95444dd8e46a5800a727e257ca14c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "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": "" + } + }, + "a195f4aee30044d38af9d9e20c2dc490": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "a5f108b19ab149ccb4e2b028e6d62422": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "a6f64f1c4078400a9df4bb35dd97d0b4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "a7a446784fbd49e69097ce2d65f7ced7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_ff9535a15bfe4feab5d1d379bc9fe135", + "placeholder": "​", + "style": "IPY_MODEL_aaa3e3da8a98422ba236f1609c4ed42c", + "value": " 91/91 [02:01<00:00, 1.46s/ba]" + } + }, + "aaa3e3da8a98422ba236f1609c4ed42c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "ad44115b21dc46ef8ca008a738b8fbfe": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "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_1f9eb0a390484302a45317810f2e829d", + "IPY_MODEL_c7fd5da448114c02a63c8d32b1d2991c", + "IPY_MODEL_0cf205ec4c82488ba13f32519fab56b3" + ], + "layout": "IPY_MODEL_2eea7465105a4b4ea00cd57c6c16e78f" + } + }, + "ae3c0f882ae14194931a8387f82f9fd4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_f8983be97d254c82b6eb7ed93f41c5f6", + "placeholder": "​", + "style": "IPY_MODEL_864458a3a69e4dfda01d55f0143ba8b4", + "value": " 23/23 [00:29<00:00, 1.09ba/s]" + } + }, + "b3928b364fb24476be243bde37e65469": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "c139d1e7843247f0bfb30a916a0233d7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_164d488a4b2242ff9d8104052fc0240f", + "placeholder": "​", + "style": "IPY_MODEL_710f69706ef143cfa7513f13afd7f1fc", + "value": "100%" + } + }, + "c17c34d0a0f5454ea2e12cef84aa4e27": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "c2612158281943a9b6777fe893807542": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "c7fd5da448114c02a63c8d32b1d2991c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "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_c17c34d0a0f5454ea2e12cef84aa4e27", + "max": 466, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_745b1b2a04d1422d96d6c54934d771b5", + "value": 466 + } + }, + "c928e4b904844c50b6fe2b0b7c864174": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "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_2bdb17153fc648a1aa24704e1f5779e8", + "IPY_MODEL_86167df488b1420bb8332345ae9a052e", + "IPY_MODEL_a7a446784fbd49e69097ce2d65f7ced7" + ], + "layout": "IPY_MODEL_2131431357ca4b2e963de9b004e21102" + } + }, + "cbfee6447535490a80fab030669c6eae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "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_1918d586490e46ce8da9416064096151", + "max": 995526, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ffcfba2fe7f94b5c982eaaedf6f3febc", + "value": 995526 + } + }, + "ccad7e6b754643d1872cbafef7158603": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "cee3f2161609479dbe05730d718498db": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "cf19df6dada74286bfe708bd13a9149f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "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": "" + } + }, + "cf46fefd82f24b12ad0c3145c4924acb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "d04a2a562c5b4aaea83248e1ecf44c70": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "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": "" + } + }, + "d2d9bce8fafa4c188c401ed7bee7fd49": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "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_5ec669e823294afe8897f7beeb446c69", + "max": 23, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_cf19df6dada74286bfe708bd13a9149f", + "value": 23 + } + }, + "d52fa063f955471da01b7ee6b5e29be0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "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_cee3f2161609479dbe05730d718498db", + "max": 1652, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9fa95444dd8e46a5800a727e257ca14c", + "value": 1652 + } + }, + "d848f3cd8fc648988e18a8569eb0bc48": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "da353539b2474d6caffc38af0241fecf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_a195f4aee30044d38af9d9e20c2dc490", + "placeholder": "​", + "style": "IPY_MODEL_25295a5688474c219fa43c9a0b7482ab", + "value": " 1.96M/1.96M [00:00<00:00, 1.97MB/s]" + } + }, + "dca20772f5b24c2591870d1da7dfbbff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "ed2f673d3b354e29aaac004b5203de8f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "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_9c39358f86c14301bfbf3ef3b80bdafc", + "max": 541808922, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_6821955b03724206a785bee03e1a2452", + "value": 541808922 + } + }, + "ee4a8572a2234f5fb374584c2af87a1f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "ee5a378bf6384328bb59b3f3bdb0f3d2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "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": "" + } + }, + "eef2d41094f34f18b811b7079f043220": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "f436622afdba40d8abb46590de18d218": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "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_7dea9f79416447c4b67c36239d4e3973", + "placeholder": "​", + "style": "IPY_MODEL_89fe56d17960451286261aa5bf308b06", + "value": " 4.21k/? [00:00<00:00, 119kB/s]" + } + }, + "f8983be97d254c82b6eb7ed93f41c5f6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "ff9535a15bfe4feab5d1d379bc9fe135": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "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 + } + }, + "ffcfba2fe7f94b5c982eaaedf6f3febc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "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": "" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}