├── .gitignore ├── requirements.txt ├── assets ├── demo1.png └── demo2.png ├── LICENSE ├── README.md └── training.ipynb /.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints 2 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | torch 2 | transformers 3 | accelerate 4 | pandas 5 | numpy 6 | tqdm -------------------------------------------------------------------------------- /assets/demo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morrisalp/taatiknet/HEAD/assets/demo1.png -------------------------------------------------------------------------------- /assets/demo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/morrisalp/taatiknet/HEAD/assets/demo2.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Contents are dual licensed under the the Creative Commons Attribution-ShareAlike 3.0 Unported License (CC-BY-SA) and the GNU Free Documentation License (GFDL). 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TaatikNet: Converting between Hebrew text and Latin transliteration 2 | ## A simple demonstration of character-level seq2seq learning 3 | 4 | 5 | Modern transformer networks are great for complex text-to-text tasks like machine translation, text summarization, paraphrasing and more. This repo shows a simple example of how to train a model given a dataset of paired examples, using a particularly interesting character-level task: **converting between Hebrew text and Latin transliteration**. 6 | 7 | Please see the accompanying blog post (TBD) for more information. 8 | 9 | ## Dataset 10 | 11 | The data in `data/he_transliterations.csv` contains nearly 15K Hebrew words along with nikkud (vowel symbols) and Latin transliterations. These were scraped from the [Hebrew Wiktionary](https://he.wiktionary.com/) in mid-2023. See the blog post for more details. 12 | 13 | ## Training 14 | 15 | See the contents of the accompanying [Jupyter notebook](training.ipynb) for simple, annotated training code for TaatikNet. It is fine-tuned on our training dataset using the base model ByT5-small ([paper](https://arxiv.org/abs/2105.13626), [HF model page](https://huggingface.co/google/byt5-small)), a byte-level (tokenizer-free) encoder-decoder transformer model. 16 | 17 | TaatikNet is trained to predict in both directions (Hebrew text ↔ Latin transliteration); additionally, vowel marks (in Hebrew) and stress accent marks (in transliteration) are sometimes randomly dropped in the input so the model learns to infer with or without them provided. 18 | 19 | ## Inference 20 | 21 | Inference on single words is simple with the HF Transformers "text2text-generation" pipeline API: 22 | 23 | ``` 24 | from transformers import pipeline 25 | 26 | pipe = pipeline("text2text-generation", model="malper/taatiknet") 27 | 28 | pipe("kornel")[0]['generated_text'] 29 | # returns 'קוֹרְנֶל' 30 | 31 | pipe("אולגוסטרביה", num_beams=10, num_return_sequences=10, max_length=100) 32 | # returns [{'generated_text': 'olgostrávya'}, ...] 33 | ``` 34 | 35 | Note that long outputs are likely to be cut off unless you increase `max_length` from the default value. 36 | 37 | If you want to use your own weights, replace `malper/taatiknet` with the model's location. 38 | 39 | To run inference on multiple words, you are recommended to split the text by whitespace. You may also want to group words into minibatches, and to normalize the input text (NFC Unicode normalization and handling some special characters) to match the model's training. See [the HuggingFace Spaces demo code](https://huggingface.co/spaces/malper/taatiknet/blob/main/app.py) for a demonstration of these points. 40 | 41 | ## Examples 42 | 43 | Check out some examples of inputs and outputs to the resulting model **TaatikNet**: 44 | 45 | ![](assets/demo1.png) 46 | ![](assets/demo2.png) 47 | 48 | (This uses beam search with 5 beams; the first result is the top beam.) 49 | 50 | You may play with this yourself at the [interactive demo](https://huggingface.co/spaces/malper/taatiknet) hosted by Hugging Face Spaces. 51 | -------------------------------------------------------------------------------- /training.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "id": "4C5kLduzDXci" 7 | }, 8 | "source": [ 9 | "# TaatikNet: Converting between Hebrew text and Latin transliteration\n", 10 | "## A simple demonstration of character-level seq2seq training\n", 11 | "\n", 12 | "Many NLP tasks require converting an input text sequence into some other text -- **seq2seq tasks**:\n", 13 | "* Machine translation (e.g. English to German)\n", 14 | "* Text summarization and paraphrasing (e.g. long English to short English)\n", 15 | "* Spelling correction (misspelled text to valid text)\n", 16 | "\n", 17 | "Given a dataset of paired text data, how can we easily train a deep learning model to convert from one domain to another?\n", 18 | "\n", 19 | "Let's see how to do this using an interesting and challenging example -- converting between **Hebrew text** (with or without vowel marks) and **Latin transliteration**. We call our resulting model **TaatikNet** (תעתיק *taatik* means \"transliteration\" in Hebrew).\n", 20 | "\n", 21 | "Let's get started!" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": { 27 | "id": "Mh1BxwxAEeoQ" 28 | }, 29 | "source": [ 30 | "# Requirements\n", 31 | "\n", 32 | "Make sure the requirements from `requirements.txt` are installed (`pip install -r requirements.txt`).\n", 33 | "\n", 34 | "If you run this notebook in Google Colab, uncomment the following line. You will also need to upload the dataset csv file manually." 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 1, 40 | "metadata": { 41 | "id": "NmW6Cj_FAwla" 42 | }, 43 | "outputs": [], 44 | "source": [ 45 | "# pip install transformers accelerate" 46 | ] 47 | }, 48 | { 49 | "cell_type": "markdown", 50 | "metadata": { 51 | "id": "BEvRG8NyFSNL" 52 | }, 53 | "source": [ 54 | "Let's get our imports out of the way now..." 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 2, 60 | "metadata": { 61 | "id": "jQIMqMYPFTy7" 62 | }, 63 | "outputs": [ 64 | { 65 | "name": "stderr", 66 | "output_type": "stream", 67 | "text": [ 68 | "2023-06-25 07:00:08.645229: I tensorflow/core/util/port.cc:110] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n", 69 | "2023-06-25 07:00:08.668081: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", 70 | "To enable the following instructions: AVX2 AVX_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", 71 | "2023-06-25 07:00:09.025064: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n" 72 | ] 73 | } 74 | ], 75 | "source": [ 76 | "import pandas as pd\n", 77 | "from torch.utils.data import Dataset, DataLoader\n", 78 | "import numpy as np\n", 79 | "from transformers import pipeline\n", 80 | "from tqdm.auto import trange, tqdm\n", 81 | "import torch" 82 | ] 83 | }, 84 | { 85 | "cell_type": "markdown", 86 | "metadata": { 87 | "id": "YpCC5EvrAI5N" 88 | }, 89 | "source": [ 90 | "# Data wrangling\n", 91 | "\n", 92 | "We'll use the provided dataset of Hebrew words and Latin transliterations, derived from the [Hebrew Wiktionary](https://he.wiktionary.org)." 93 | ] 94 | }, 95 | { 96 | "cell_type": "code", 97 | "execution_count": 3, 98 | "metadata": { 99 | "id": "J4x6OCF-AI5V" 100 | }, 101 | "outputs": [], 102 | "source": [ 103 | "df = pd.read_csv('data/he_transliterations.csv')" 104 | ] 105 | }, 106 | { 107 | "cell_type": "markdown", 108 | "metadata": { 109 | "id": "K0sOfIGPFoA3" 110 | }, 111 | "source": [ 112 | "We see it contains nearly 15K words. The transliterations usually have an accented vowel to mark stress:" 113 | ] 114 | }, 115 | { 116 | "cell_type": "code", 117 | "execution_count": 4, 118 | "metadata": { 119 | "colab": { 120 | "base_uri": "https://localhost:8080/", 121 | "height": 224 122 | }, 123 | "id": "46iVV36eAI5W", 124 | "outputId": "2546e9f1-6cbc-41ee-ec33-3b432c19f2dc" 125 | }, 126 | "outputs": [ 127 | { 128 | "name": "stdout", 129 | "output_type": "stream", 130 | "text": [ 131 | "2 rows\n" 132 | ] 133 | }, 134 | { 135 | "data": { 136 | "text/html": [ 137 | "
\n", 138 | "\n", 151 | "\n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | "
wordnikkudtransliteration
0אאוגניקהאֵאוּגֶנִיקָהeugénika
1אאוזינופילאֵאוֹזִינוֹפִילe'ozinofil
2אאוטינגאָאוּטִינְגautíng
3אבאָבav
4אבאַבav
\n", 193 | "
" 194 | ], 195 | "text/plain": [ 196 | " word nikkud transliteration\n", 197 | "0 אאוגניקה אֵאוּגֶנִיקָה eugénika\n", 198 | "1 אאוזינופיל אֵאוֹזִינוֹפִיל e'ozinofil\n", 199 | "2 אאוטינג אָאוּטִינְג autíng\n", 200 | "3 אב אָב av\n", 201 | "4 אב אַב av" 202 | ] 203 | }, 204 | "execution_count": 4, 205 | "metadata": {}, 206 | "output_type": "execute_result" 207 | } 208 | ], 209 | "source": [ 210 | "print(len(df.shape), 'rows')\n", 211 | "df.head()" 212 | ] 213 | }, 214 | { 215 | "cell_type": "markdown", 216 | "metadata": { 217 | "id": "sb44MqSYF4xK" 218 | }, 219 | "source": [ 220 | "To make this useable for training our model, we must convert it into a PyTorch Dataset object:" 221 | ] 222 | }, 223 | { 224 | "cell_type": "code", 225 | "execution_count": 5, 226 | "metadata": { 227 | "id": "uIf-8CZiAI5Z" 228 | }, 229 | "outputs": [], 230 | "source": [ 231 | "def randomly_remove_accent(text, prob):\n", 232 | " if np.random.random() < prob:\n", 233 | " return text.replace(f'\\u0341', '')\n", 234 | " return text\n", 235 | "\n", 236 | "class DS(Dataset):\n", 237 | " def __init__(self):\n", 238 | " self.df = df\n", 239 | "\n", 240 | " def __len__(self):\n", 241 | " return len(self.df)\n", 242 | "\n", 243 | " def __getitem__(self, idx):\n", 244 | " row = self.df.iloc[idx]\n", 245 | " out = {}\n", 246 | " if np.random.random() < 0.5:\n", 247 | " out['input'] = row.word if np.random.random() < 0.2 else row.nikkud\n", 248 | " out['target'] = row.transliteration\n", 249 | " else:\n", 250 | " out['input'] = randomly_remove_accent(row.transliteration, 0.5)\n", 251 | " out['target'] = row.nikkud\n", 252 | " return out\n", 253 | "\n", 254 | "ds = DS()" 255 | ] 256 | }, 257 | { 258 | "cell_type": "markdown", 259 | "metadata": { 260 | "id": "0vizQikrG42b" 261 | }, 262 | "source": [ 263 | "We've added code to randomly augment our data by having Hebrew text as either input or output, and by randomly dropping vowels or accent signs in the input text, as seen below:" 264 | ] 265 | }, 266 | { 267 | "cell_type": "code", 268 | "execution_count": 6, 269 | "metadata": { 270 | "colab": { 271 | "base_uri": "https://localhost:8080/" 272 | }, 273 | "id": "id0BVh9MAI5b", 274 | "outputId": "a0c6aba9-8597-42df-b4e9-403d12b1fd60" 275 | }, 276 | "outputs": [ 277 | { 278 | "name": "stdout", 279 | "output_type": "stream", 280 | "text": [ 281 | "{'input': 'אֵאוּגֶנִיקָה', 'target': 'eugénika'}\n", 282 | "{'input': 'eugenika', 'target': 'אֵאוּגֶנִיקָה'}\n", 283 | "{'input': 'eugénika', 'target': 'אֵאוּגֶנִיקָה'}\n", 284 | "{'input': 'eugénika', 'target': 'אֵאוּגֶנִיקָה'}\n", 285 | "{'input': 'eugenika', 'target': 'אֵאוּגֶנִיקָה'}\n", 286 | "{'input': 'אאוגניקה', 'target': 'eugénika'}\n", 287 | "{'input': 'eugénika', 'target': 'אֵאוּגֶנִיקָה'}\n", 288 | "{'input': 'אֵאוּגֶנִיקָה', 'target': 'eugénika'}\n", 289 | "{'input': 'אֵאוּגֶנִיקָה', 'target': 'eugénika'}\n", 290 | "{'input': 'אֵאוּגֶנִיקָה', 'target': 'eugénika'}\n" 291 | ] 292 | } 293 | ], 294 | "source": [ 295 | "for _ in range(10):\n", 296 | " print(ds[0])" 297 | ] 298 | }, 299 | { 300 | "cell_type": "markdown", 301 | "metadata": { 302 | "id": "23SjFY98GHA5" 303 | }, 304 | "source": [ 305 | "\n", 306 | "\n", 307 | "This would be slightly simpler if we only wanted to convert from one row of our DataFrame to the other (e.g. training a model to transliteration Hebrew text with vowels). Then we could replace all the code in `__getitem__` with something like `return row.to_dict()`. However, with this augmentation our model learns something more interesting -- to convert in either direction, and to handle input that may or may not contain vowels or accents." 308 | ] 309 | }, 310 | { 311 | "cell_type": "markdown", 312 | "metadata": { 313 | "id": "UPC8G4JEAI5c" 314 | }, 315 | "source": [ 316 | "# Base model: ByT5" 317 | ] 318 | }, 319 | { 320 | "cell_type": "markdown", 321 | "metadata": { 322 | "id": "jzySK-AgHaae" 323 | }, 324 | "source": [ 325 | "We first load our base model ByT5-small ([paper](https://arxiv.org/abs/2105.13626), [HF model page](https://huggingface.co/google/byt5-small)), a byte-level (tokenizer-free) encoder-decoder transformer model:" 326 | ] 327 | }, 328 | { 329 | "cell_type": "code", 330 | "execution_count": 7, 331 | "metadata": { 332 | "id": "1vQrnWBCAI5c" 333 | }, 334 | "outputs": [], 335 | "source": [ 336 | "pipe = pipeline(\"text2text-generation\", model='google/byt5-small', device_map='auto')" 337 | ] 338 | }, 339 | { 340 | "cell_type": "markdown", 341 | "metadata": { 342 | "id": "R44Y0aWIHiiV" 343 | }, 344 | "source": [ 345 | "For other seq2seq tasks you could simply replace BytT5 with any other encoder-decoder model. In our case, since our tasks uses non-Latin characters and involves reasoning on the character level, this model is more appropriate.\n", 346 | "\n", 347 | "\n", 348 | "Note: The related UNIKUD project ([post](https://towardsdatascience.com/unikud-adding-vowels-to-hebrew-text-with-deep-learning-powered-by-dagshub-56d238e22d3f), [repo](https://github.com/morrisalp/unikud)) used the encoder-only model CANINE as a base; here we use an encoder-decoder model since we must output text of arbitrary length." 349 | ] 350 | }, 351 | { 352 | "cell_type": "markdown", 353 | "metadata": { 354 | "id": "HbwidY4gAI5d" 355 | }, 356 | "source": [ 357 | "# Training\n", 358 | "\n", 359 | "We use the following settings:" 360 | ] 361 | }, 362 | { 363 | "cell_type": "code", 364 | "execution_count": 8, 365 | "metadata": { 366 | "id": "uSLaCqocAI5d" 367 | }, 368 | "outputs": [], 369 | "source": [ 370 | "epochs = 10\n", 371 | "batch_size = 32\n", 372 | "lr = 1e-3" 373 | ] 374 | }, 375 | { 376 | "cell_type": "markdown", 377 | "metadata": { 378 | "id": "khHkTEBJJLWD" 379 | }, 380 | "source": [ 381 | "We did not extensively tune these hyperparameters -- try playing with them and see if you can improve our results!\n", 382 | "\n", 383 | "We set up data loading with simple collation (adding padding to inputs and converting them into tensors per minibatch):" 384 | ] 385 | }, 386 | { 387 | "cell_type": "code", 388 | "execution_count": 9, 389 | "metadata": { 390 | "id": "5K3Grio4JCV1" 391 | }, 392 | "outputs": [], 393 | "source": [ 394 | "def collate(B):\n", 395 | " inputs = [x['input'] for x in B]\n", 396 | " targets = [x['target'] for x in B]\n", 397 | " inp = pipe.tokenizer(\n", 398 | " inputs,\n", 399 | " text_target=targets,\n", 400 | " max_length=100,\n", 401 | " padding=True,\n", 402 | " truncation=True,\n", 403 | " return_tensors='pt'\n", 404 | " )\n", 405 | " return inp\n", 406 | "\n", 407 | "dl = DataLoader(\n", 408 | " ds,\n", 409 | " collate_fn=collate,\n", 410 | " shuffle=True,\n", 411 | " batch_size=batch_size\n", 412 | ")" 413 | ] 414 | }, 415 | { 416 | "cell_type": "markdown", 417 | "metadata": { 418 | "id": "JJ0Qy4o1Ji55" 419 | }, 420 | "source": [ 421 | "Note that we do not bother here with validation or testing splits since this is just a simple demo.\n", 422 | "\n", 423 | "Our model is not yet tuned for our task so as expected, it outputs gibberish:" 424 | ] 425 | }, 426 | { 427 | "cell_type": "code", 428 | "execution_count": 10, 429 | "metadata": { 430 | "colab": { 431 | "base_uri": "https://localhost:8080/" 432 | }, 433 | "id": "cgvUwKknJwcH", 434 | "outputId": "7dfb3905-55b0-4cb4-d9f8-718afbc109b2" 435 | }, 436 | "outputs": [ 437 | { 438 | "name": "stdout", 439 | "output_type": "stream", 440 | "text": [ 441 | "Epoch 0: algoritm => 22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222\n", 442 | "Epoch 0: kokoro => okoroo-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-oroa-o\n", 443 | "Epoch 0: יִשְׂרָאֵל => אלאלאלאלאלאלאלאלאלאלאלאלאלאלאלאלאלאלאלאלאלאלאלאלא\n", 444 | "Epoch 0: דוריטוס => וסטריטוס\n", 445 | "סוריטוס\n", 446 | "סוריטוס\n", 447 | "סוריטוס\n", 448 | "סוריטוס\n", 449 | "סוריטוס\n", 450 | "סור\n", 451 | "Epoch 0: ajiliti => ajabiliti siti siti siti siti siti siti siti siti siti siti siti siti siti siti siti siti siti sit\n", 452 | "Epoch 0: פאנץ' => ץ'ץ'אנץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'ץ'\n", 453 | "Epoch 0: etherium => thethethethethethethethethethethethethethethethethethethethethethethethethethethethethethethetheth\n" 454 | ] 455 | } 456 | ], 457 | "source": [ 458 | "def evaluate(i, items=['algoritm', 'kokoro', 'יִשְׂרָאֵל', 'דוריטוס', 'ajiliti', \"פאנץ'\", 'etherium']):\n", 459 | " pipe.model.eval()\n", 460 | " for x in items:\n", 461 | " print(f'Epoch {i}: {x} =>',\n", 462 | " pipe(x, max_length=100)[0]['generated_text'])\n", 463 | "\n", 464 | "evaluate(0)" 465 | ] 466 | }, 467 | { 468 | "cell_type": "markdown", 469 | "metadata": { 470 | "id": "Kox37pUnJ0Jj" 471 | }, 472 | "source": [ 473 | "Now let's train our model and see how its output changes per epoch. This should take about half an hour to complete on GPU:" 474 | ] 475 | }, 476 | { 477 | "cell_type": "code", 478 | "execution_count": 11, 479 | "metadata": { 480 | "colab": { 481 | "base_uri": "https://localhost:8080/", 482 | "height": 712, 483 | "referenced_widgets": [ 484 | "879e8d35e93041d896fd84113ee150c8", 485 | "a5b73a6e13eb4a90b4e0e81e4fadc2c9", 486 | "3e2002a84eb04ed5bc55321eb5e55fa5", 487 | "b4a2873aecd441ea8f4d72e68b3b96ab", 488 | "8c8f319361d94f4a825993fa9fd3ef04", 489 | "bf966b183e4b4c15ad0124b5510461b3", 490 | "b16872b1d8a34c55bca9d03fee0c2d26", 491 | "c526abb4137248aaaf3c6f4e0bb3613f", 492 | "2965455bf5d648f59f449eb318dc0d9b", 493 | "946c2c6c9d8048a19d09c7f7e1cfa324", 494 | "97a86fdebe5d45e2b6e24596df7199db", 495 | "a0595d78a4d2428e877942bcf047468e", 496 | "1de8149168814805804464a51718cfb8", 497 | "16d8b74cb1974162ad75445b1dd8b6ed", 498 | "ae19f53afb454eda8d9b3009a5230dc3", 499 | "9e9a632bdceb440a94127e0c5740f334", 500 | "a28ba3cfaa4d4700ba951ba84fa180e6", 501 | "049fc17787cf4ea0b1d759ab23590ef0", 502 | "81b02dcc1f704cd8b9a2759237e20bdc", 503 | "379fd32ab1d84774a4de613a8eec825c", 504 | "4a93d608feb24a4a9a886c4663d4ad80", 505 | "cdc1819471c14cdbbb00b289f66c4aec", 506 | "37443314c73549b6a75e81c4abcdf074", 507 | "abef4362cc7f4fb3bf43ae84a40c5f11", 508 | "bda7ecb79e4443f9a7dd6b6737ce5563", 509 | "d572868d2e6b4394adf615b988618cb4", 510 | "502a104182c443508636b0426add3960", 511 | "d118a797f3d5439fabebb20378c292f8", 512 | "7036fc0fe6624106b4a11bdf5abd2b1c", 513 | "f8406e02408a4eb8a8265b5d2f985848", 514 | "d07f4bab5d654d4fa15aa9c8ab35e6ff", 515 | "ca0f870495654f299cb03882fa4debc6", 516 | "bb6c9093f7a047dda11ba79578456247", 517 | "5a0e7a0814294e9392efdbad9852985c", 518 | "8feaad6215514f34a8381821901224fa", 519 | "061b5bd45b674fc288a4434a569f88be", 520 | "626536db482849fc967f8ccdf49af04d", 521 | "c9a58f27b2f14ad18458a6f02b14a847", 522 | "ad3a6b34806b4812bb088ce6d9512b84", 523 | "77d4c73776aa425fae3204d05c2fef5c", 524 | "747d57495d054128baaafde4ca6b5eb5", 525 | "d9ed4c01ef164b209a2067ac6c80388e", 526 | "34bce401f2fc431fbbf1072bca3ed979", 527 | "c741db7d0550439f979759f588bcd7c7", 528 | "da8284c253c1427b9f5bd4b83279548b", 529 | "7d7b158fb7c34115b70da67ff9d02330", 530 | "473cdf8f4b384aa699a6ad078ad0a336", 531 | "2935e363a6f14ed08e209511245f0c6c", 532 | "12daa8b222de472dbe67b2d856276ffa", 533 | "9076a172c20a4f3ba860be80ed3c2987", 534 | "f31c06e20cf84f659480d8d0f4be50a6", 535 | "68cf6407acf74686b0e0ef472c51ad82", 536 | "2e96af9233014d379f9f55e689deeb34", 537 | "6f522324e2b04e7daed5e54582529b37", 538 | "8e8f66894fee4137914df1175ee9c75e", 539 | "20d4ef575aff48d78eab225843fb2446", 540 | "cf27cc3bafdd4482b441fc6e34366696", 541 | "862e43822549455fafbc742d8965c874", 542 | "2a4dca819f3c44d39908c932c02aff0c", 543 | "3d904c7a47c54174b6a45bcde4cad42f", 544 | "58ba589bb71047ccaca888f8b8f07223", 545 | "8ff3e9201c54476cacedb9b04d274f6d", 546 | "8b932843f727482586676c44607e7be9", 547 | "87cbfba9048a4fb49d29585458228721", 548 | "fe6b3020d51240538ad6f9b00067e889", 549 | "ac0a36ff698c46de9235e608a276b2a4", 550 | "e6ce6a08715a49f39f044ac3b873b14f", 551 | "96adc49910774c07b3751c3b2802e08b", 552 | "43d29fba0ede436b8dd6042cc27ac74f", 553 | "4572bf0fa8c54991aa7b165806e6ae65", 554 | "e1dbfff3fef7412ba89d507c58521366", 555 | "9c261204da454d96a71e4e7d535d1b05", 556 | "a76c97c50daa4b5d8b400d500f7442ca", 557 | "4bf6e5f2eebd4e20939d67cbf444e850", 558 | "51c92b9743964a4082b470d716dee956", 559 | "d1a57fe92fd543f1b4c72e33f4340fb3", 560 | "94d5eb5f48ca45558c49c50cd63d1b49" 561 | ] 562 | }, 563 | "id": "PA2Nb3kyAI5e", 564 | "outputId": "72322d0f-b164-4cf8-9bd6-a4849201495b" 565 | }, 566 | "outputs": [ 567 | { 568 | "data": { 569 | "application/vnd.jupyter.widget-view+json": { 570 | "model_id": "a03384dde71d4c5dbf6482792581640f", 571 | "version_major": 2, 572 | "version_minor": 0 573 | }, 574 | "text/plain": [ 575 | " 0%| | 0/10 [00:00 מְשִׁית\n", 600 | "Epoch 1: kokoro => מְשִׁית\n", 601 | "Epoch 1: יִשְׂרָאֵל => mará\n", 602 | "Epoch 1: דוריטוס => mará\n" 603 | ] 604 | }, 605 | { 606 | "name": "stderr", 607 | "output_type": "stream", 608 | "text": [ 609 | "/home/morrisalper/miniconda3/envs/notebooks/lib/python3.9/site-packages/transformers/pipelines/base.py:1081: UserWarning: You seem to be using the pipelines sequentially on GPU. In order to maximize efficiency please use a dataset\n", 610 | " warnings.warn(\n" 611 | ] 612 | }, 613 | { 614 | "name": "stdout", 615 | "output_type": "stream", 616 | "text": [ 617 | "Epoch 1: ajiliti => מְשִׁית\n", 618 | "Epoch 1: פאנץ' => mará\n", 619 | "Epoch 1: etherium => מְשִׁית\n" 620 | ] 621 | }, 622 | { 623 | "data": { 624 | "application/vnd.jupyter.widget-view+json": { 625 | "model_id": "c3e218cb846c4b749b67095836b34fbf", 626 | "version_major": 2, 627 | "version_minor": 0 628 | }, 629 | "text/plain": [ 630 | " 0%| | 0/452 [00:00 אַלְגּוֹרִיטִיטִיטִיטִיטִיטִיטִיטִים\n", 641 | "Epoch 2: kokoro => כּוֹקוֹרְבּוֹרוֹר\n", 642 | "Epoch 2: יִשְׂרָאֵל => yishishál\n", 643 | "Epoch 2: דוריטוס => dirít\n", 644 | "Epoch 2: ajiliti => אַדִּיטִי\n", 645 | "Epoch 2: פאנץ' => pitsút\n", 646 | "Epoch 2: etherium => אֶתֶרִיוּם\n" 647 | ] 648 | }, 649 | { 650 | "data": { 651 | "application/vnd.jupyter.widget-view+json": { 652 | "model_id": "d558291c243f4168ad7f4dad68de245e", 653 | "version_major": 2, 654 | "version_minor": 0 655 | }, 656 | "text/plain": [ 657 | " 0%| | 0/452 [00:00 אַלְגּוֹרִיתְם\n", 668 | "Epoch 3: kokoro => כּוֹקוֹרוֹ\n", 669 | "Epoch 3: יִשְׂרָאֵל => yisra'él\n", 670 | "Epoch 3: דוריטוס => doritós\n", 671 | "Epoch 3: ajiliti => עֲגִילִיתִי\n", 672 | "Epoch 3: פאנץ' => pa'ants\n", 673 | "Epoch 3: etherium => אֶתְהֶרִיוּם\n" 674 | ] 675 | }, 676 | { 677 | "data": { 678 | "application/vnd.jupyter.widget-view+json": { 679 | "model_id": "cc859b6004ce488795def9f1a65e3aa7", 680 | "version_major": 2, 681 | "version_minor": 0 682 | }, 683 | "text/plain": [ 684 | " 0%| | 0/452 [00:00 אַלְגּוֹרִיטְם\n", 695 | "Epoch 4: kokoro => קוֹקוֹרוֹ\n", 696 | "Epoch 4: יִשְׂרָאֵל => yisraél\n", 697 | "Epoch 4: דוריטוס => doritós\n", 698 | "Epoch 4: ajiliti => אֲגִילִיטִיתִי\n", 699 | "Epoch 4: פאנץ' => pa'ants\n", 700 | "Epoch 4: etherium => אֶתְהֵרִיאוּם\n" 701 | ] 702 | }, 703 | { 704 | "data": { 705 | "application/vnd.jupyter.widget-view+json": { 706 | "model_id": "2b70c7e1d4ed44ec8c3c3ab52de44fa4", 707 | "version_major": 2, 708 | "version_minor": 0 709 | }, 710 | "text/plain": [ 711 | " 0%| | 0/452 [00:00 אַלְגּוֹרִיתְם\n", 722 | "Epoch 5: kokoro => קוֹקוֹרוֹ\n", 723 | "Epoch 5: יִשְׂרָאֵל => yisraél\n", 724 | "Epoch 5: דוריטוס => doritós\n", 725 | "Epoch 5: ajiliti => אֲגִילִיטִי\n", 726 | "Epoch 5: פאנץ' => pánts\n", 727 | "Epoch 5: etherium => אֶתְהֵרִים\n" 728 | ] 729 | }, 730 | { 731 | "data": { 732 | "application/vnd.jupyter.widget-view+json": { 733 | "model_id": "accf2387d36d4fdebe5d44853147a51e", 734 | "version_major": 2, 735 | "version_minor": 0 736 | }, 737 | "text/plain": [ 738 | " 0%| | 0/452 [00:00 אַלְגּוֹרִיטְם\n", 749 | "Epoch 6: kokoro => קוֹקוֹרוֹ\n", 750 | "Epoch 6: יִשְׂרָאֵל => yisraél\n", 751 | "Epoch 6: דוריטוס => doritós\n", 752 | "Epoch 6: ajiliti => אֲגִ'ילִיטִי\n", 753 | "Epoch 6: פאנץ' => pa'aná\n", 754 | "Epoch 6: etherium => אֶתֶרְיוּם\n" 755 | ] 756 | }, 757 | { 758 | "data": { 759 | "application/vnd.jupyter.widget-view+json": { 760 | "model_id": "aa908259da4b475d86087eda4cf85ba9", 761 | "version_major": 2, 762 | "version_minor": 0 763 | }, 764 | "text/plain": [ 765 | " 0%| | 0/452 [00:00 אַלְגּוֹרִיטְם\n", 776 | "Epoch 7: kokoro => קוֹקוֹרוֹ\n", 777 | "Epoch 7: יִשְׂרָאֵל => yisraél\n", 778 | "Epoch 7: דוריטוס => dorítos\n", 779 | "Epoch 7: ajiliti => אָגִ'ילִיטִי\n", 780 | "Epoch 7: פאנץ' => pa'anách\n", 781 | "Epoch 7: etherium => אֶתְהֵרְיוּם\n" 782 | ] 783 | }, 784 | { 785 | "data": { 786 | "application/vnd.jupyter.widget-view+json": { 787 | "model_id": "7e67eef1b58a4516b2bdd409e013c591", 788 | "version_major": 2, 789 | "version_minor": 0 790 | }, 791 | "text/plain": [ 792 | " 0%| | 0/452 [00:00 אַלְגּוֹרִיתִיתִיתִיתִיתִיתִיתִיתִיתִיתִיתִיתִיתִ\n", 803 | "Epoch 8: kokoro => קוֹקוֹרוֹ\n", 804 | "Epoch 8: יִשְׂרָאֵל => yisrál\n", 805 | "Epoch 8: דוריטוס => dorítos\n", 806 | "Epoch 8: ajiliti => אֲגִ'ילִיטִי\n", 807 | "Epoch 8: פאנץ' => pántsh\n", 808 | "Epoch 8: etherium => אֶתֶרְיוּם\n" 809 | ] 810 | }, 811 | { 812 | "data": { 813 | "application/vnd.jupyter.widget-view+json": { 814 | "model_id": "8defeb59a45c4e5f9961d749f5d07600", 815 | "version_major": 2, 816 | "version_minor": 0 817 | }, 818 | "text/plain": [ 819 | " 0%| | 0/452 [00:00 אַלְגּוֹרִיטְם\n", 830 | "Epoch 9: kokoro => קוֹקוֹרוֹ\n", 831 | "Epoch 9: יִשְׂרָאֵל => yisraél\n", 832 | "Epoch 9: דוריטוס => dorítos\n", 833 | "Epoch 9: ajiliti => אָגִ'ילִיטִי\n", 834 | "Epoch 9: פאנץ' => pa'anátsh\n", 835 | "Epoch 9: etherium => אֶתְהֶרְיוּם\n" 836 | ] 837 | }, 838 | { 839 | "data": { 840 | "application/vnd.jupyter.widget-view+json": { 841 | "model_id": "1007d70207be4670aa14e8480bcb3044", 842 | "version_major": 2, 843 | "version_minor": 0 844 | }, 845 | "text/plain": [ 846 | " 0%| | 0/452 [00:00 אַלְגּוֹרִיטְם\n", 857 | "Epoch 10: kokoro => קוֹקוֹרוֹ\n", 858 | "Epoch 10: יִשְׂרָאֵל => yisraél\n", 859 | "Epoch 10: דוריטוס => dorítos\n", 860 | "Epoch 10: ajiliti => אָגִ'ילִיטִי\n", 861 | "Epoch 10: פאנץ' => pénetsh\n", 862 | "Epoch 10: etherium => אֶתֶרְיוּם\n" 863 | ] 864 | } 865 | ], 866 | "source": [ 867 | "optimizer = torch.optim.AdamW(pipe.model.parameters(), lr=lr)\n", 868 | "losses = []\n", 869 | "\n", 870 | "for i in trange(epochs):\n", 871 | " pipe.model.train()\n", 872 | " for B in tqdm(dl):\n", 873 | " optimizer.zero_grad()\n", 874 | " loss = pipe.model(**B).loss\n", 875 | " losses.append(loss.item())\n", 876 | " loss.backward()\n", 877 | " optimizer.step()\n", 878 | " evaluate(i + 1)" 879 | ] 880 | }, 881 | { 882 | "cell_type": "markdown", 883 | "metadata": { 884 | "id": "TAx6ObRNLQdb" 885 | }, 886 | "source": [ 887 | "# Final steps" 888 | ] 889 | }, 890 | { 891 | "cell_type": "markdown", 892 | "metadata": { 893 | "id": "WW7Cm0GLKJjz" 894 | }, 895 | "source": [ 896 | "Check out the model's (train) loss curve, and compare it to the outputs. We suspect the model first masters the prior distributions on Hebrew words and transliterations, and only later manages to understand the connection between the two:" 897 | ] 898 | }, 899 | { 900 | "cell_type": "code", 901 | "execution_count": 12, 902 | "metadata": { 903 | "colab": { 904 | "base_uri": "https://localhost:8080/", 905 | "height": 447 906 | }, 907 | "id": "igIHz6hmAI5h", 908 | "outputId": "d82f8400-f0e6-4171-cb1f-299966c565bc" 909 | }, 910 | "outputs": [ 911 | { 912 | "data": { 913 | "text/plain": [ 914 | "" 915 | ] 916 | }, 917 | "execution_count": 12, 918 | "metadata": {}, 919 | "output_type": "execute_result" 920 | }, 921 | { 922 | "data": { 923 | "image/png": "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", 924 | "text/plain": [ 925 | "
" 926 | ] 927 | }, 928 | "metadata": {}, 929 | "output_type": "display_data" 930 | } 931 | ], 932 | "source": [ 933 | "pd.Series(losses).plot(logy=True)" 934 | ] 935 | }, 936 | { 937 | "cell_type": "markdown", 938 | "metadata": { 939 | "id": "F5cVCWR0KkGW" 940 | }, 941 | "source": [ 942 | "Finally, let's save our work 😊" 943 | ] 944 | }, 945 | { 946 | "cell_type": "code", 947 | "execution_count": 13, 948 | "metadata": { 949 | "id": "f4dOspZaAI5h" 950 | }, 951 | "outputs": [], 952 | "source": [ 953 | "pipe.save_pretrained('taatiknet')" 954 | ] 955 | }, 956 | { 957 | "cell_type": "markdown", 958 | "metadata": { 959 | "id": "Dr1HpvU7Kuqx" 960 | }, 961 | "source": [ 962 | "See the instructions in the README for inference. You may also play with a deployed version of TaatikNet at the [interactive demo](https://huggingface.co/spaces/malper/taatiknet) hosted by Hugging Face Spaces." 963 | ] 964 | }, 965 | { 966 | "cell_type": "markdown", 967 | "metadata": { 968 | "id": "wWR4zYMoL1v7" 969 | }, 970 | "source": [ 971 | "If you went through this demo then congrats! You've trained a seq2seq model to solve a complex problem with a minimal amount of code. This demo could be easily adapted to training on datasets for most text-to-text generation problems by replacing ByT5 with any appropriate [encoder-decoder model](https://huggingface.co/docs/transformers/model_doc/encoder-decoder).\n", 972 | "\n", 973 | "Feel free to reach out to [Morris Alper](https://morrisalp.github.io/) with any questions, comments or suggestions on this demo." 974 | ] 975 | } 976 | ], 977 | "metadata": { 978 | "accelerator": "GPU", 979 | "colab": { 980 | "gpuType": "T4", 981 | "provenance": [] 982 | }, 983 | "kernelspec": { 984 | "display_name": "Python 3 (ipykernel)", 985 | "language": "python", 986 | "name": "python3" 987 | }, 988 | "language_info": { 989 | "codemirror_mode": { 990 | "name": "ipython", 991 | "version": 3 992 | }, 993 | "file_extension": ".py", 994 | "mimetype": "text/x-python", 995 | "name": "python", 996 | "nbconvert_exporter": "python", 997 | "pygments_lexer": "ipython3", 998 | "version": "3.9.16" 999 | }, 1000 | "widgets": { 1001 | "application/vnd.jupyter.widget-state+json": { 1002 | "049fc17787cf4ea0b1d759ab23590ef0": { 1003 | "model_module": "@jupyter-widgets/controls", 1004 | "model_module_version": "1.5.0", 1005 | "model_name": "DescriptionStyleModel", 1006 | "state": { 1007 | "_model_module": "@jupyter-widgets/controls", 1008 | "_model_module_version": "1.5.0", 1009 | "_model_name": "DescriptionStyleModel", 1010 | "_view_count": null, 1011 | "_view_module": "@jupyter-widgets/base", 1012 | "_view_module_version": "1.2.0", 1013 | "_view_name": "StyleView", 1014 | "description_width": "" 1015 | } 1016 | }, 1017 | "061b5bd45b674fc288a4434a569f88be": { 1018 | "model_module": "@jupyter-widgets/controls", 1019 | "model_module_version": "1.5.0", 1020 | "model_name": "FloatProgressModel", 1021 | "state": { 1022 | "_dom_classes": [], 1023 | "_model_module": "@jupyter-widgets/controls", 1024 | "_model_module_version": "1.5.0", 1025 | "_model_name": "FloatProgressModel", 1026 | "_view_count": null, 1027 | "_view_module": "@jupyter-widgets/controls", 1028 | "_view_module_version": "1.5.0", 1029 | "_view_name": "ProgressView", 1030 | "bar_style": "success", 1031 | "description": "", 1032 | "description_tooltip": null, 1033 | "layout": "IPY_MODEL_747d57495d054128baaafde4ca6b5eb5", 1034 | "max": 452, 1035 | "min": 0, 1036 | "orientation": "horizontal", 1037 | "style": "IPY_MODEL_d9ed4c01ef164b209a2067ac6c80388e", 1038 | "value": 452 1039 | } 1040 | }, 1041 | "12daa8b222de472dbe67b2d856276ffa": { 1042 | "model_module": "@jupyter-widgets/base", 1043 | "model_module_version": "1.2.0", 1044 | "model_name": "LayoutModel", 1045 | "state": { 1046 | "_model_module": "@jupyter-widgets/base", 1047 | "_model_module_version": "1.2.0", 1048 | "_model_name": "LayoutModel", 1049 | "_view_count": null, 1050 | "_view_module": "@jupyter-widgets/base", 1051 | "_view_module_version": "1.2.0", 1052 | "_view_name": "LayoutView", 1053 | "align_content": null, 1054 | "align_items": null, 1055 | "align_self": null, 1056 | "border": null, 1057 | "bottom": null, 1058 | "display": null, 1059 | "flex": null, 1060 | "flex_flow": null, 1061 | "grid_area": null, 1062 | "grid_auto_columns": null, 1063 | "grid_auto_flow": null, 1064 | "grid_auto_rows": null, 1065 | "grid_column": null, 1066 | "grid_gap": null, 1067 | "grid_row": null, 1068 | "grid_template_areas": null, 1069 | "grid_template_columns": null, 1070 | "grid_template_rows": null, 1071 | "height": null, 1072 | "justify_content": null, 1073 | "justify_items": null, 1074 | "left": null, 1075 | "margin": null, 1076 | "max_height": null, 1077 | "max_width": null, 1078 | "min_height": null, 1079 | "min_width": null, 1080 | "object_fit": null, 1081 | "object_position": null, 1082 | "order": null, 1083 | "overflow": null, 1084 | "overflow_x": null, 1085 | "overflow_y": null, 1086 | "padding": null, 1087 | "right": null, 1088 | "top": null, 1089 | "visibility": null, 1090 | "width": null 1091 | } 1092 | }, 1093 | "16d8b74cb1974162ad75445b1dd8b6ed": { 1094 | "model_module": "@jupyter-widgets/controls", 1095 | "model_module_version": "1.5.0", 1096 | "model_name": "FloatProgressModel", 1097 | "state": { 1098 | "_dom_classes": [], 1099 | "_model_module": "@jupyter-widgets/controls", 1100 | "_model_module_version": "1.5.0", 1101 | "_model_name": "FloatProgressModel", 1102 | "_view_count": null, 1103 | "_view_module": "@jupyter-widgets/controls", 1104 | "_view_module_version": "1.5.0", 1105 | "_view_name": "ProgressView", 1106 | "bar_style": "success", 1107 | "description": "", 1108 | "description_tooltip": null, 1109 | "layout": "IPY_MODEL_81b02dcc1f704cd8b9a2759237e20bdc", 1110 | "max": 452, 1111 | "min": 0, 1112 | "orientation": "horizontal", 1113 | "style": "IPY_MODEL_379fd32ab1d84774a4de613a8eec825c", 1114 | "value": 452 1115 | } 1116 | }, 1117 | "1de8149168814805804464a51718cfb8": { 1118 | "model_module": "@jupyter-widgets/controls", 1119 | "model_module_version": "1.5.0", 1120 | "model_name": "HTMLModel", 1121 | "state": { 1122 | "_dom_classes": [], 1123 | "_model_module": "@jupyter-widgets/controls", 1124 | "_model_module_version": "1.5.0", 1125 | "_model_name": "HTMLModel", 1126 | "_view_count": null, 1127 | "_view_module": "@jupyter-widgets/controls", 1128 | "_view_module_version": "1.5.0", 1129 | "_view_name": "HTMLView", 1130 | "description": "", 1131 | "description_tooltip": null, 1132 | "layout": "IPY_MODEL_a28ba3cfaa4d4700ba951ba84fa180e6", 1133 | "placeholder": "​", 1134 | "style": "IPY_MODEL_049fc17787cf4ea0b1d759ab23590ef0", 1135 | "value": "100%" 1136 | } 1137 | }, 1138 | "20d4ef575aff48d78eab225843fb2446": { 1139 | "model_module": "@jupyter-widgets/controls", 1140 | "model_module_version": "1.5.0", 1141 | "model_name": "HBoxModel", 1142 | "state": { 1143 | "_dom_classes": [], 1144 | "_model_module": "@jupyter-widgets/controls", 1145 | "_model_module_version": "1.5.0", 1146 | "_model_name": "HBoxModel", 1147 | "_view_count": null, 1148 | "_view_module": "@jupyter-widgets/controls", 1149 | "_view_module_version": "1.5.0", 1150 | "_view_name": "HBoxView", 1151 | "box_style": "", 1152 | "children": [ 1153 | "IPY_MODEL_cf27cc3bafdd4482b441fc6e34366696", 1154 | "IPY_MODEL_862e43822549455fafbc742d8965c874", 1155 | "IPY_MODEL_2a4dca819f3c44d39908c932c02aff0c" 1156 | ], 1157 | "layout": "IPY_MODEL_3d904c7a47c54174b6a45bcde4cad42f" 1158 | } 1159 | }, 1160 | "2935e363a6f14ed08e209511245f0c6c": { 1161 | "model_module": "@jupyter-widgets/controls", 1162 | "model_module_version": "1.5.0", 1163 | "model_name": "HTMLModel", 1164 | "state": { 1165 | "_dom_classes": [], 1166 | "_model_module": "@jupyter-widgets/controls", 1167 | "_model_module_version": "1.5.0", 1168 | "_model_name": "HTMLModel", 1169 | "_view_count": null, 1170 | "_view_module": "@jupyter-widgets/controls", 1171 | "_view_module_version": "1.5.0", 1172 | "_view_name": "HTMLView", 1173 | "description": "", 1174 | "description_tooltip": null, 1175 | "layout": "IPY_MODEL_6f522324e2b04e7daed5e54582529b37", 1176 | "placeholder": "​", 1177 | "style": "IPY_MODEL_8e8f66894fee4137914df1175ee9c75e", 1178 | "value": " 452/452 [05:03<00:00, 1.62it/s]" 1179 | } 1180 | }, 1181 | "2965455bf5d648f59f449eb318dc0d9b": { 1182 | "model_module": "@jupyter-widgets/controls", 1183 | "model_module_version": "1.5.0", 1184 | "model_name": "ProgressStyleModel", 1185 | "state": { 1186 | "_model_module": "@jupyter-widgets/controls", 1187 | "_model_module_version": "1.5.0", 1188 | "_model_name": "ProgressStyleModel", 1189 | "_view_count": null, 1190 | "_view_module": "@jupyter-widgets/base", 1191 | "_view_module_version": "1.2.0", 1192 | "_view_name": "StyleView", 1193 | "bar_color": null, 1194 | "description_width": "" 1195 | } 1196 | }, 1197 | "2a4dca819f3c44d39908c932c02aff0c": { 1198 | "model_module": "@jupyter-widgets/controls", 1199 | "model_module_version": "1.5.0", 1200 | "model_name": "HTMLModel", 1201 | "state": { 1202 | "_dom_classes": [], 1203 | "_model_module": "@jupyter-widgets/controls", 1204 | "_model_module_version": "1.5.0", 1205 | "_model_name": "HTMLModel", 1206 | "_view_count": null, 1207 | "_view_module": "@jupyter-widgets/controls", 1208 | "_view_module_version": "1.5.0", 1209 | "_view_name": "HTMLView", 1210 | "description": "", 1211 | "description_tooltip": null, 1212 | "layout": "IPY_MODEL_fe6b3020d51240538ad6f9b00067e889", 1213 | "placeholder": "​", 1214 | "style": "IPY_MODEL_ac0a36ff698c46de9235e608a276b2a4", 1215 | "value": " 452/452 [05:02<00:00, 1.67it/s]" 1216 | } 1217 | }, 1218 | "2e96af9233014d379f9f55e689deeb34": { 1219 | "model_module": "@jupyter-widgets/controls", 1220 | "model_module_version": "1.5.0", 1221 | "model_name": "ProgressStyleModel", 1222 | "state": { 1223 | "_model_module": "@jupyter-widgets/controls", 1224 | "_model_module_version": "1.5.0", 1225 | "_model_name": "ProgressStyleModel", 1226 | "_view_count": null, 1227 | "_view_module": "@jupyter-widgets/base", 1228 | "_view_module_version": "1.2.0", 1229 | "_view_name": "StyleView", 1230 | "bar_color": null, 1231 | "description_width": "" 1232 | } 1233 | }, 1234 | "34bce401f2fc431fbbf1072bca3ed979": { 1235 | "model_module": "@jupyter-widgets/base", 1236 | "model_module_version": "1.2.0", 1237 | "model_name": "LayoutModel", 1238 | "state": { 1239 | "_model_module": "@jupyter-widgets/base", 1240 | "_model_module_version": "1.2.0", 1241 | "_model_name": "LayoutModel", 1242 | "_view_count": null, 1243 | "_view_module": "@jupyter-widgets/base", 1244 | "_view_module_version": "1.2.0", 1245 | "_view_name": "LayoutView", 1246 | "align_content": null, 1247 | "align_items": null, 1248 | "align_self": null, 1249 | "border": null, 1250 | "bottom": null, 1251 | "display": null, 1252 | "flex": null, 1253 | "flex_flow": null, 1254 | "grid_area": null, 1255 | "grid_auto_columns": null, 1256 | "grid_auto_flow": null, 1257 | "grid_auto_rows": null, 1258 | "grid_column": null, 1259 | "grid_gap": null, 1260 | "grid_row": null, 1261 | "grid_template_areas": null, 1262 | "grid_template_columns": null, 1263 | "grid_template_rows": null, 1264 | "height": null, 1265 | "justify_content": null, 1266 | "justify_items": null, 1267 | "left": null, 1268 | "margin": null, 1269 | "max_height": null, 1270 | "max_width": null, 1271 | "min_height": null, 1272 | "min_width": null, 1273 | "object_fit": null, 1274 | "object_position": null, 1275 | "order": null, 1276 | "overflow": null, 1277 | "overflow_x": null, 1278 | "overflow_y": null, 1279 | "padding": null, 1280 | "right": null, 1281 | "top": null, 1282 | "visibility": null, 1283 | "width": null 1284 | } 1285 | }, 1286 | "37443314c73549b6a75e81c4abcdf074": { 1287 | "model_module": "@jupyter-widgets/controls", 1288 | "model_module_version": "1.5.0", 1289 | "model_name": "HBoxModel", 1290 | "state": { 1291 | "_dom_classes": [], 1292 | "_model_module": "@jupyter-widgets/controls", 1293 | "_model_module_version": "1.5.0", 1294 | "_model_name": "HBoxModel", 1295 | "_view_count": null, 1296 | "_view_module": "@jupyter-widgets/controls", 1297 | "_view_module_version": "1.5.0", 1298 | "_view_name": "HBoxView", 1299 | "box_style": "", 1300 | "children": [ 1301 | "IPY_MODEL_abef4362cc7f4fb3bf43ae84a40c5f11", 1302 | "IPY_MODEL_bda7ecb79e4443f9a7dd6b6737ce5563", 1303 | "IPY_MODEL_d572868d2e6b4394adf615b988618cb4" 1304 | ], 1305 | "layout": "IPY_MODEL_502a104182c443508636b0426add3960" 1306 | } 1307 | }, 1308 | "379fd32ab1d84774a4de613a8eec825c": { 1309 | "model_module": "@jupyter-widgets/controls", 1310 | "model_module_version": "1.5.0", 1311 | "model_name": "ProgressStyleModel", 1312 | "state": { 1313 | "_model_module": "@jupyter-widgets/controls", 1314 | "_model_module_version": "1.5.0", 1315 | "_model_name": "ProgressStyleModel", 1316 | "_view_count": null, 1317 | "_view_module": "@jupyter-widgets/base", 1318 | "_view_module_version": "1.2.0", 1319 | "_view_name": "StyleView", 1320 | "bar_color": null, 1321 | "description_width": "" 1322 | } 1323 | }, 1324 | "3d904c7a47c54174b6a45bcde4cad42f": { 1325 | "model_module": "@jupyter-widgets/base", 1326 | "model_module_version": "1.2.0", 1327 | "model_name": "LayoutModel", 1328 | "state": { 1329 | "_model_module": "@jupyter-widgets/base", 1330 | "_model_module_version": "1.2.0", 1331 | "_model_name": "LayoutModel", 1332 | "_view_count": null, 1333 | "_view_module": "@jupyter-widgets/base", 1334 | "_view_module_version": "1.2.0", 1335 | "_view_name": "LayoutView", 1336 | "align_content": null, 1337 | "align_items": null, 1338 | "align_self": null, 1339 | "border": null, 1340 | "bottom": null, 1341 | "display": null, 1342 | "flex": null, 1343 | "flex_flow": null, 1344 | "grid_area": null, 1345 | "grid_auto_columns": null, 1346 | "grid_auto_flow": null, 1347 | "grid_auto_rows": null, 1348 | "grid_column": null, 1349 | "grid_gap": null, 1350 | "grid_row": null, 1351 | "grid_template_areas": null, 1352 | "grid_template_columns": null, 1353 | "grid_template_rows": null, 1354 | "height": null, 1355 | "justify_content": null, 1356 | "justify_items": null, 1357 | "left": null, 1358 | "margin": null, 1359 | "max_height": null, 1360 | "max_width": null, 1361 | "min_height": null, 1362 | "min_width": null, 1363 | "object_fit": null, 1364 | "object_position": null, 1365 | "order": null, 1366 | "overflow": null, 1367 | "overflow_x": null, 1368 | "overflow_y": null, 1369 | "padding": null, 1370 | "right": null, 1371 | "top": null, 1372 | "visibility": null, 1373 | "width": null 1374 | } 1375 | }, 1376 | "3e2002a84eb04ed5bc55321eb5e55fa5": { 1377 | "model_module": "@jupyter-widgets/controls", 1378 | "model_module_version": "1.5.0", 1379 | "model_name": "FloatProgressModel", 1380 | "state": { 1381 | "_dom_classes": [], 1382 | "_model_module": "@jupyter-widgets/controls", 1383 | "_model_module_version": "1.5.0", 1384 | "_model_name": "FloatProgressModel", 1385 | "_view_count": null, 1386 | "_view_module": "@jupyter-widgets/controls", 1387 | "_view_module_version": "1.5.0", 1388 | "_view_name": "ProgressView", 1389 | "bar_style": "success", 1390 | "description": "", 1391 | "description_tooltip": null, 1392 | "layout": "IPY_MODEL_c526abb4137248aaaf3c6f4e0bb3613f", 1393 | "max": 6, 1394 | "min": 0, 1395 | "orientation": "horizontal", 1396 | "style": "IPY_MODEL_2965455bf5d648f59f449eb318dc0d9b", 1397 | "value": 6 1398 | } 1399 | }, 1400 | "43d29fba0ede436b8dd6042cc27ac74f": { 1401 | "model_module": "@jupyter-widgets/controls", 1402 | "model_module_version": "1.5.0", 1403 | "model_name": "FloatProgressModel", 1404 | "state": { 1405 | "_dom_classes": [], 1406 | "_model_module": "@jupyter-widgets/controls", 1407 | "_model_module_version": "1.5.0", 1408 | "_model_name": "FloatProgressModel", 1409 | "_view_count": null, 1410 | "_view_module": "@jupyter-widgets/controls", 1411 | "_view_module_version": "1.5.0", 1412 | "_view_name": "ProgressView", 1413 | "bar_style": "success", 1414 | "description": "", 1415 | "description_tooltip": null, 1416 | "layout": "IPY_MODEL_4bf6e5f2eebd4e20939d67cbf444e850", 1417 | "max": 452, 1418 | "min": 0, 1419 | "orientation": "horizontal", 1420 | "style": "IPY_MODEL_51c92b9743964a4082b470d716dee956", 1421 | "value": 452 1422 | } 1423 | }, 1424 | "4572bf0fa8c54991aa7b165806e6ae65": { 1425 | "model_module": "@jupyter-widgets/controls", 1426 | "model_module_version": "1.5.0", 1427 | "model_name": "HTMLModel", 1428 | "state": { 1429 | "_dom_classes": [], 1430 | "_model_module": "@jupyter-widgets/controls", 1431 | "_model_module_version": "1.5.0", 1432 | "_model_name": "HTMLModel", 1433 | "_view_count": null, 1434 | "_view_module": "@jupyter-widgets/controls", 1435 | "_view_module_version": "1.5.0", 1436 | "_view_name": "HTMLView", 1437 | "description": "", 1438 | "description_tooltip": null, 1439 | "layout": "IPY_MODEL_d1a57fe92fd543f1b4c72e33f4340fb3", 1440 | "placeholder": "​", 1441 | "style": "IPY_MODEL_94d5eb5f48ca45558c49c50cd63d1b49", 1442 | "value": " 452/452 [05:02<00:00, 1.78it/s]" 1443 | } 1444 | }, 1445 | "473cdf8f4b384aa699a6ad078ad0a336": { 1446 | "model_module": "@jupyter-widgets/controls", 1447 | "model_module_version": "1.5.0", 1448 | "model_name": "FloatProgressModel", 1449 | "state": { 1450 | "_dom_classes": [], 1451 | "_model_module": "@jupyter-widgets/controls", 1452 | "_model_module_version": "1.5.0", 1453 | "_model_name": "FloatProgressModel", 1454 | "_view_count": null, 1455 | "_view_module": "@jupyter-widgets/controls", 1456 | "_view_module_version": "1.5.0", 1457 | "_view_name": "ProgressView", 1458 | "bar_style": "success", 1459 | "description": "", 1460 | "description_tooltip": null, 1461 | "layout": "IPY_MODEL_68cf6407acf74686b0e0ef472c51ad82", 1462 | "max": 452, 1463 | "min": 0, 1464 | "orientation": "horizontal", 1465 | "style": "IPY_MODEL_2e96af9233014d379f9f55e689deeb34", 1466 | "value": 452 1467 | } 1468 | }, 1469 | "4a93d608feb24a4a9a886c4663d4ad80": { 1470 | "model_module": "@jupyter-widgets/base", 1471 | "model_module_version": "1.2.0", 1472 | "model_name": "LayoutModel", 1473 | "state": { 1474 | "_model_module": "@jupyter-widgets/base", 1475 | "_model_module_version": "1.2.0", 1476 | "_model_name": "LayoutModel", 1477 | "_view_count": null, 1478 | "_view_module": "@jupyter-widgets/base", 1479 | "_view_module_version": "1.2.0", 1480 | "_view_name": "LayoutView", 1481 | "align_content": null, 1482 | "align_items": null, 1483 | "align_self": null, 1484 | "border": null, 1485 | "bottom": null, 1486 | "display": null, 1487 | "flex": null, 1488 | "flex_flow": null, 1489 | "grid_area": null, 1490 | "grid_auto_columns": null, 1491 | "grid_auto_flow": null, 1492 | "grid_auto_rows": null, 1493 | "grid_column": null, 1494 | "grid_gap": null, 1495 | "grid_row": null, 1496 | "grid_template_areas": null, 1497 | "grid_template_columns": null, 1498 | "grid_template_rows": null, 1499 | "height": null, 1500 | "justify_content": null, 1501 | "justify_items": null, 1502 | "left": null, 1503 | "margin": null, 1504 | "max_height": null, 1505 | "max_width": null, 1506 | "min_height": null, 1507 | "min_width": null, 1508 | "object_fit": null, 1509 | "object_position": null, 1510 | "order": null, 1511 | "overflow": null, 1512 | "overflow_x": null, 1513 | "overflow_y": null, 1514 | "padding": null, 1515 | "right": null, 1516 | "top": null, 1517 | "visibility": null, 1518 | "width": null 1519 | } 1520 | }, 1521 | "4bf6e5f2eebd4e20939d67cbf444e850": { 1522 | "model_module": "@jupyter-widgets/base", 1523 | "model_module_version": "1.2.0", 1524 | "model_name": "LayoutModel", 1525 | "state": { 1526 | "_model_module": "@jupyter-widgets/base", 1527 | "_model_module_version": "1.2.0", 1528 | "_model_name": "LayoutModel", 1529 | "_view_count": null, 1530 | "_view_module": "@jupyter-widgets/base", 1531 | "_view_module_version": "1.2.0", 1532 | "_view_name": "LayoutView", 1533 | "align_content": null, 1534 | "align_items": null, 1535 | "align_self": null, 1536 | "border": null, 1537 | "bottom": null, 1538 | "display": null, 1539 | "flex": null, 1540 | "flex_flow": null, 1541 | "grid_area": null, 1542 | "grid_auto_columns": null, 1543 | "grid_auto_flow": null, 1544 | "grid_auto_rows": null, 1545 | "grid_column": null, 1546 | "grid_gap": null, 1547 | "grid_row": null, 1548 | "grid_template_areas": null, 1549 | "grid_template_columns": null, 1550 | "grid_template_rows": null, 1551 | "height": null, 1552 | "justify_content": null, 1553 | "justify_items": null, 1554 | "left": null, 1555 | "margin": null, 1556 | "max_height": null, 1557 | "max_width": null, 1558 | "min_height": null, 1559 | "min_width": null, 1560 | "object_fit": null, 1561 | "object_position": null, 1562 | "order": null, 1563 | "overflow": null, 1564 | "overflow_x": null, 1565 | "overflow_y": null, 1566 | "padding": null, 1567 | "right": null, 1568 | "top": null, 1569 | "visibility": null, 1570 | "width": null 1571 | } 1572 | }, 1573 | "502a104182c443508636b0426add3960": { 1574 | "model_module": "@jupyter-widgets/base", 1575 | "model_module_version": "1.2.0", 1576 | "model_name": "LayoutModel", 1577 | "state": { 1578 | "_model_module": "@jupyter-widgets/base", 1579 | "_model_module_version": "1.2.0", 1580 | "_model_name": "LayoutModel", 1581 | "_view_count": null, 1582 | "_view_module": "@jupyter-widgets/base", 1583 | "_view_module_version": "1.2.0", 1584 | "_view_name": "LayoutView", 1585 | "align_content": null, 1586 | "align_items": null, 1587 | "align_self": null, 1588 | "border": null, 1589 | "bottom": null, 1590 | "display": null, 1591 | "flex": null, 1592 | "flex_flow": null, 1593 | "grid_area": null, 1594 | "grid_auto_columns": null, 1595 | "grid_auto_flow": null, 1596 | "grid_auto_rows": null, 1597 | "grid_column": null, 1598 | "grid_gap": null, 1599 | "grid_row": null, 1600 | "grid_template_areas": null, 1601 | "grid_template_columns": null, 1602 | "grid_template_rows": null, 1603 | "height": null, 1604 | "justify_content": null, 1605 | "justify_items": null, 1606 | "left": null, 1607 | "margin": null, 1608 | "max_height": null, 1609 | "max_width": null, 1610 | "min_height": null, 1611 | "min_width": null, 1612 | "object_fit": null, 1613 | "object_position": null, 1614 | "order": null, 1615 | "overflow": null, 1616 | "overflow_x": null, 1617 | "overflow_y": null, 1618 | "padding": null, 1619 | "right": null, 1620 | "top": null, 1621 | "visibility": null, 1622 | "width": null 1623 | } 1624 | }, 1625 | "51c92b9743964a4082b470d716dee956": { 1626 | "model_module": "@jupyter-widgets/controls", 1627 | "model_module_version": "1.5.0", 1628 | "model_name": "ProgressStyleModel", 1629 | "state": { 1630 | "_model_module": "@jupyter-widgets/controls", 1631 | "_model_module_version": "1.5.0", 1632 | "_model_name": "ProgressStyleModel", 1633 | "_view_count": null, 1634 | "_view_module": "@jupyter-widgets/base", 1635 | "_view_module_version": "1.2.0", 1636 | "_view_name": "StyleView", 1637 | "bar_color": null, 1638 | "description_width": "" 1639 | } 1640 | }, 1641 | "58ba589bb71047ccaca888f8b8f07223": { 1642 | "model_module": "@jupyter-widgets/base", 1643 | "model_module_version": "1.2.0", 1644 | "model_name": "LayoutModel", 1645 | "state": { 1646 | "_model_module": "@jupyter-widgets/base", 1647 | "_model_module_version": "1.2.0", 1648 | "_model_name": "LayoutModel", 1649 | "_view_count": null, 1650 | "_view_module": "@jupyter-widgets/base", 1651 | "_view_module_version": "1.2.0", 1652 | "_view_name": "LayoutView", 1653 | "align_content": null, 1654 | "align_items": null, 1655 | "align_self": null, 1656 | "border": null, 1657 | "bottom": null, 1658 | "display": null, 1659 | "flex": null, 1660 | "flex_flow": null, 1661 | "grid_area": null, 1662 | "grid_auto_columns": null, 1663 | "grid_auto_flow": null, 1664 | "grid_auto_rows": null, 1665 | "grid_column": null, 1666 | "grid_gap": null, 1667 | "grid_row": null, 1668 | "grid_template_areas": null, 1669 | "grid_template_columns": null, 1670 | "grid_template_rows": null, 1671 | "height": null, 1672 | "justify_content": null, 1673 | "justify_items": null, 1674 | "left": null, 1675 | "margin": null, 1676 | "max_height": null, 1677 | "max_width": null, 1678 | "min_height": null, 1679 | "min_width": null, 1680 | "object_fit": null, 1681 | "object_position": null, 1682 | "order": null, 1683 | "overflow": null, 1684 | "overflow_x": null, 1685 | "overflow_y": null, 1686 | "padding": null, 1687 | "right": null, 1688 | "top": null, 1689 | "visibility": null, 1690 | "width": null 1691 | } 1692 | }, 1693 | "5a0e7a0814294e9392efdbad9852985c": { 1694 | "model_module": "@jupyter-widgets/controls", 1695 | "model_module_version": "1.5.0", 1696 | "model_name": "HBoxModel", 1697 | "state": { 1698 | "_dom_classes": [], 1699 | "_model_module": "@jupyter-widgets/controls", 1700 | "_model_module_version": "1.5.0", 1701 | "_model_name": "HBoxModel", 1702 | "_view_count": null, 1703 | "_view_module": "@jupyter-widgets/controls", 1704 | "_view_module_version": "1.5.0", 1705 | "_view_name": "HBoxView", 1706 | "box_style": "", 1707 | "children": [ 1708 | "IPY_MODEL_8feaad6215514f34a8381821901224fa", 1709 | "IPY_MODEL_061b5bd45b674fc288a4434a569f88be", 1710 | "IPY_MODEL_626536db482849fc967f8ccdf49af04d" 1711 | ], 1712 | "layout": "IPY_MODEL_c9a58f27b2f14ad18458a6f02b14a847" 1713 | } 1714 | }, 1715 | "626536db482849fc967f8ccdf49af04d": { 1716 | "model_module": "@jupyter-widgets/controls", 1717 | "model_module_version": "1.5.0", 1718 | "model_name": "HTMLModel", 1719 | "state": { 1720 | "_dom_classes": [], 1721 | "_model_module": "@jupyter-widgets/controls", 1722 | "_model_module_version": "1.5.0", 1723 | "_model_name": "HTMLModel", 1724 | "_view_count": null, 1725 | "_view_module": "@jupyter-widgets/controls", 1726 | "_view_module_version": "1.5.0", 1727 | "_view_name": "HTMLView", 1728 | "description": "", 1729 | "description_tooltip": null, 1730 | "layout": "IPY_MODEL_34bce401f2fc431fbbf1072bca3ed979", 1731 | "placeholder": "​", 1732 | "style": "IPY_MODEL_c741db7d0550439f979759f588bcd7c7", 1733 | "value": " 452/452 [05:01<00:00, 1.80it/s]" 1734 | } 1735 | }, 1736 | "68cf6407acf74686b0e0ef472c51ad82": { 1737 | "model_module": "@jupyter-widgets/base", 1738 | "model_module_version": "1.2.0", 1739 | "model_name": "LayoutModel", 1740 | "state": { 1741 | "_model_module": "@jupyter-widgets/base", 1742 | "_model_module_version": "1.2.0", 1743 | "_model_name": "LayoutModel", 1744 | "_view_count": null, 1745 | "_view_module": "@jupyter-widgets/base", 1746 | "_view_module_version": "1.2.0", 1747 | "_view_name": "LayoutView", 1748 | "align_content": null, 1749 | "align_items": null, 1750 | "align_self": null, 1751 | "border": null, 1752 | "bottom": null, 1753 | "display": null, 1754 | "flex": null, 1755 | "flex_flow": null, 1756 | "grid_area": null, 1757 | "grid_auto_columns": null, 1758 | "grid_auto_flow": null, 1759 | "grid_auto_rows": null, 1760 | "grid_column": null, 1761 | "grid_gap": null, 1762 | "grid_row": null, 1763 | "grid_template_areas": null, 1764 | "grid_template_columns": null, 1765 | "grid_template_rows": null, 1766 | "height": null, 1767 | "justify_content": null, 1768 | "justify_items": null, 1769 | "left": null, 1770 | "margin": null, 1771 | "max_height": null, 1772 | "max_width": null, 1773 | "min_height": null, 1774 | "min_width": null, 1775 | "object_fit": null, 1776 | "object_position": null, 1777 | "order": null, 1778 | "overflow": null, 1779 | "overflow_x": null, 1780 | "overflow_y": null, 1781 | "padding": null, 1782 | "right": null, 1783 | "top": null, 1784 | "visibility": null, 1785 | "width": null 1786 | } 1787 | }, 1788 | "6f522324e2b04e7daed5e54582529b37": { 1789 | "model_module": "@jupyter-widgets/base", 1790 | "model_module_version": "1.2.0", 1791 | "model_name": "LayoutModel", 1792 | "state": { 1793 | "_model_module": "@jupyter-widgets/base", 1794 | "_model_module_version": "1.2.0", 1795 | "_model_name": "LayoutModel", 1796 | "_view_count": null, 1797 | "_view_module": "@jupyter-widgets/base", 1798 | "_view_module_version": "1.2.0", 1799 | "_view_name": "LayoutView", 1800 | "align_content": null, 1801 | "align_items": null, 1802 | "align_self": null, 1803 | "border": null, 1804 | "bottom": null, 1805 | "display": null, 1806 | "flex": null, 1807 | "flex_flow": null, 1808 | "grid_area": null, 1809 | "grid_auto_columns": null, 1810 | "grid_auto_flow": null, 1811 | "grid_auto_rows": null, 1812 | "grid_column": null, 1813 | "grid_gap": null, 1814 | "grid_row": null, 1815 | "grid_template_areas": null, 1816 | "grid_template_columns": null, 1817 | "grid_template_rows": null, 1818 | "height": null, 1819 | "justify_content": null, 1820 | "justify_items": null, 1821 | "left": null, 1822 | "margin": null, 1823 | "max_height": null, 1824 | "max_width": null, 1825 | "min_height": null, 1826 | "min_width": null, 1827 | "object_fit": null, 1828 | "object_position": null, 1829 | "order": null, 1830 | "overflow": null, 1831 | "overflow_x": null, 1832 | "overflow_y": null, 1833 | "padding": null, 1834 | "right": null, 1835 | "top": null, 1836 | "visibility": null, 1837 | "width": null 1838 | } 1839 | }, 1840 | "7036fc0fe6624106b4a11bdf5abd2b1c": { 1841 | "model_module": "@jupyter-widgets/controls", 1842 | "model_module_version": "1.5.0", 1843 | "model_name": "DescriptionStyleModel", 1844 | "state": { 1845 | "_model_module": "@jupyter-widgets/controls", 1846 | "_model_module_version": "1.5.0", 1847 | "_model_name": "DescriptionStyleModel", 1848 | "_view_count": null, 1849 | "_view_module": "@jupyter-widgets/base", 1850 | "_view_module_version": "1.2.0", 1851 | "_view_name": "StyleView", 1852 | "description_width": "" 1853 | } 1854 | }, 1855 | "747d57495d054128baaafde4ca6b5eb5": { 1856 | "model_module": "@jupyter-widgets/base", 1857 | "model_module_version": "1.2.0", 1858 | "model_name": "LayoutModel", 1859 | "state": { 1860 | "_model_module": "@jupyter-widgets/base", 1861 | "_model_module_version": "1.2.0", 1862 | "_model_name": "LayoutModel", 1863 | "_view_count": null, 1864 | "_view_module": "@jupyter-widgets/base", 1865 | "_view_module_version": "1.2.0", 1866 | "_view_name": "LayoutView", 1867 | "align_content": null, 1868 | "align_items": null, 1869 | "align_self": null, 1870 | "border": null, 1871 | "bottom": null, 1872 | "display": null, 1873 | "flex": null, 1874 | "flex_flow": null, 1875 | "grid_area": null, 1876 | "grid_auto_columns": null, 1877 | "grid_auto_flow": null, 1878 | "grid_auto_rows": null, 1879 | "grid_column": null, 1880 | "grid_gap": null, 1881 | "grid_row": null, 1882 | "grid_template_areas": null, 1883 | "grid_template_columns": null, 1884 | "grid_template_rows": null, 1885 | "height": null, 1886 | "justify_content": null, 1887 | "justify_items": null, 1888 | "left": null, 1889 | "margin": null, 1890 | "max_height": null, 1891 | "max_width": null, 1892 | "min_height": null, 1893 | "min_width": null, 1894 | "object_fit": null, 1895 | "object_position": null, 1896 | "order": null, 1897 | "overflow": null, 1898 | "overflow_x": null, 1899 | "overflow_y": null, 1900 | "padding": null, 1901 | "right": null, 1902 | "top": null, 1903 | "visibility": null, 1904 | "width": null 1905 | } 1906 | }, 1907 | "77d4c73776aa425fae3204d05c2fef5c": { 1908 | "model_module": "@jupyter-widgets/controls", 1909 | "model_module_version": "1.5.0", 1910 | "model_name": "DescriptionStyleModel", 1911 | "state": { 1912 | "_model_module": "@jupyter-widgets/controls", 1913 | "_model_module_version": "1.5.0", 1914 | "_model_name": "DescriptionStyleModel", 1915 | "_view_count": null, 1916 | "_view_module": "@jupyter-widgets/base", 1917 | "_view_module_version": "1.2.0", 1918 | "_view_name": "StyleView", 1919 | "description_width": "" 1920 | } 1921 | }, 1922 | "7d7b158fb7c34115b70da67ff9d02330": { 1923 | "model_module": "@jupyter-widgets/controls", 1924 | "model_module_version": "1.5.0", 1925 | "model_name": "HTMLModel", 1926 | "state": { 1927 | "_dom_classes": [], 1928 | "_model_module": "@jupyter-widgets/controls", 1929 | "_model_module_version": "1.5.0", 1930 | "_model_name": "HTMLModel", 1931 | "_view_count": null, 1932 | "_view_module": "@jupyter-widgets/controls", 1933 | "_view_module_version": "1.5.0", 1934 | "_view_name": "HTMLView", 1935 | "description": "", 1936 | "description_tooltip": null, 1937 | "layout": "IPY_MODEL_9076a172c20a4f3ba860be80ed3c2987", 1938 | "placeholder": "​", 1939 | "style": "IPY_MODEL_f31c06e20cf84f659480d8d0f4be50a6", 1940 | "value": "100%" 1941 | } 1942 | }, 1943 | "81b02dcc1f704cd8b9a2759237e20bdc": { 1944 | "model_module": "@jupyter-widgets/base", 1945 | "model_module_version": "1.2.0", 1946 | "model_name": "LayoutModel", 1947 | "state": { 1948 | "_model_module": "@jupyter-widgets/base", 1949 | "_model_module_version": "1.2.0", 1950 | "_model_name": "LayoutModel", 1951 | "_view_count": null, 1952 | "_view_module": "@jupyter-widgets/base", 1953 | "_view_module_version": "1.2.0", 1954 | "_view_name": "LayoutView", 1955 | "align_content": null, 1956 | "align_items": null, 1957 | "align_self": null, 1958 | "border": null, 1959 | "bottom": null, 1960 | "display": null, 1961 | "flex": null, 1962 | "flex_flow": null, 1963 | "grid_area": null, 1964 | "grid_auto_columns": null, 1965 | "grid_auto_flow": null, 1966 | "grid_auto_rows": null, 1967 | "grid_column": null, 1968 | "grid_gap": null, 1969 | "grid_row": null, 1970 | "grid_template_areas": null, 1971 | "grid_template_columns": null, 1972 | "grid_template_rows": null, 1973 | "height": null, 1974 | "justify_content": null, 1975 | "justify_items": null, 1976 | "left": null, 1977 | "margin": null, 1978 | "max_height": null, 1979 | "max_width": null, 1980 | "min_height": null, 1981 | "min_width": null, 1982 | "object_fit": null, 1983 | "object_position": null, 1984 | "order": null, 1985 | "overflow": null, 1986 | "overflow_x": null, 1987 | "overflow_y": null, 1988 | "padding": null, 1989 | "right": null, 1990 | "top": null, 1991 | "visibility": null, 1992 | "width": null 1993 | } 1994 | }, 1995 | "862e43822549455fafbc742d8965c874": { 1996 | "model_module": "@jupyter-widgets/controls", 1997 | "model_module_version": "1.5.0", 1998 | "model_name": "FloatProgressModel", 1999 | "state": { 2000 | "_dom_classes": [], 2001 | "_model_module": "@jupyter-widgets/controls", 2002 | "_model_module_version": "1.5.0", 2003 | "_model_name": "FloatProgressModel", 2004 | "_view_count": null, 2005 | "_view_module": "@jupyter-widgets/controls", 2006 | "_view_module_version": "1.5.0", 2007 | "_view_name": "ProgressView", 2008 | "bar_style": "success", 2009 | "description": "", 2010 | "description_tooltip": null, 2011 | "layout": "IPY_MODEL_8b932843f727482586676c44607e7be9", 2012 | "max": 452, 2013 | "min": 0, 2014 | "orientation": "horizontal", 2015 | "style": "IPY_MODEL_87cbfba9048a4fb49d29585458228721", 2016 | "value": 452 2017 | } 2018 | }, 2019 | "879e8d35e93041d896fd84113ee150c8": { 2020 | "model_module": "@jupyter-widgets/controls", 2021 | "model_module_version": "1.5.0", 2022 | "model_name": "HBoxModel", 2023 | "state": { 2024 | "_dom_classes": [], 2025 | "_model_module": "@jupyter-widgets/controls", 2026 | "_model_module_version": "1.5.0", 2027 | "_model_name": "HBoxModel", 2028 | "_view_count": null, 2029 | "_view_module": "@jupyter-widgets/controls", 2030 | "_view_module_version": "1.5.0", 2031 | "_view_name": "HBoxView", 2032 | "box_style": "", 2033 | "children": [ 2034 | "IPY_MODEL_a5b73a6e13eb4a90b4e0e81e4fadc2c9", 2035 | "IPY_MODEL_3e2002a84eb04ed5bc55321eb5e55fa5", 2036 | "IPY_MODEL_b4a2873aecd441ea8f4d72e68b3b96ab" 2037 | ], 2038 | "layout": "IPY_MODEL_8c8f319361d94f4a825993fa9fd3ef04" 2039 | } 2040 | }, 2041 | "87cbfba9048a4fb49d29585458228721": { 2042 | "model_module": "@jupyter-widgets/controls", 2043 | "model_module_version": "1.5.0", 2044 | "model_name": "ProgressStyleModel", 2045 | "state": { 2046 | "_model_module": "@jupyter-widgets/controls", 2047 | "_model_module_version": "1.5.0", 2048 | "_model_name": "ProgressStyleModel", 2049 | "_view_count": null, 2050 | "_view_module": "@jupyter-widgets/base", 2051 | "_view_module_version": "1.2.0", 2052 | "_view_name": "StyleView", 2053 | "bar_color": null, 2054 | "description_width": "" 2055 | } 2056 | }, 2057 | "8b932843f727482586676c44607e7be9": { 2058 | "model_module": "@jupyter-widgets/base", 2059 | "model_module_version": "1.2.0", 2060 | "model_name": "LayoutModel", 2061 | "state": { 2062 | "_model_module": "@jupyter-widgets/base", 2063 | "_model_module_version": "1.2.0", 2064 | "_model_name": "LayoutModel", 2065 | "_view_count": null, 2066 | "_view_module": "@jupyter-widgets/base", 2067 | "_view_module_version": "1.2.0", 2068 | "_view_name": "LayoutView", 2069 | "align_content": null, 2070 | "align_items": null, 2071 | "align_self": null, 2072 | "border": null, 2073 | "bottom": null, 2074 | "display": null, 2075 | "flex": null, 2076 | "flex_flow": null, 2077 | "grid_area": null, 2078 | "grid_auto_columns": null, 2079 | "grid_auto_flow": null, 2080 | "grid_auto_rows": null, 2081 | "grid_column": null, 2082 | "grid_gap": null, 2083 | "grid_row": null, 2084 | "grid_template_areas": null, 2085 | "grid_template_columns": null, 2086 | "grid_template_rows": null, 2087 | "height": null, 2088 | "justify_content": null, 2089 | "justify_items": null, 2090 | "left": null, 2091 | "margin": null, 2092 | "max_height": null, 2093 | "max_width": null, 2094 | "min_height": null, 2095 | "min_width": null, 2096 | "object_fit": null, 2097 | "object_position": null, 2098 | "order": null, 2099 | "overflow": null, 2100 | "overflow_x": null, 2101 | "overflow_y": null, 2102 | "padding": null, 2103 | "right": null, 2104 | "top": null, 2105 | "visibility": null, 2106 | "width": null 2107 | } 2108 | }, 2109 | "8c8f319361d94f4a825993fa9fd3ef04": { 2110 | "model_module": "@jupyter-widgets/base", 2111 | "model_module_version": "1.2.0", 2112 | "model_name": "LayoutModel", 2113 | "state": { 2114 | "_model_module": "@jupyter-widgets/base", 2115 | "_model_module_version": "1.2.0", 2116 | "_model_name": "LayoutModel", 2117 | "_view_count": null, 2118 | "_view_module": "@jupyter-widgets/base", 2119 | "_view_module_version": "1.2.0", 2120 | "_view_name": "LayoutView", 2121 | "align_content": null, 2122 | "align_items": null, 2123 | "align_self": null, 2124 | "border": null, 2125 | "bottom": null, 2126 | "display": null, 2127 | "flex": null, 2128 | "flex_flow": null, 2129 | "grid_area": null, 2130 | "grid_auto_columns": null, 2131 | "grid_auto_flow": null, 2132 | "grid_auto_rows": null, 2133 | "grid_column": null, 2134 | "grid_gap": null, 2135 | "grid_row": null, 2136 | "grid_template_areas": null, 2137 | "grid_template_columns": null, 2138 | "grid_template_rows": null, 2139 | "height": null, 2140 | "justify_content": null, 2141 | "justify_items": null, 2142 | "left": null, 2143 | "margin": null, 2144 | "max_height": null, 2145 | "max_width": null, 2146 | "min_height": null, 2147 | "min_width": null, 2148 | "object_fit": null, 2149 | "object_position": null, 2150 | "order": null, 2151 | "overflow": null, 2152 | "overflow_x": null, 2153 | "overflow_y": null, 2154 | "padding": null, 2155 | "right": null, 2156 | "top": null, 2157 | "visibility": null, 2158 | "width": null 2159 | } 2160 | }, 2161 | "8e8f66894fee4137914df1175ee9c75e": { 2162 | "model_module": "@jupyter-widgets/controls", 2163 | "model_module_version": "1.5.0", 2164 | "model_name": "DescriptionStyleModel", 2165 | "state": { 2166 | "_model_module": "@jupyter-widgets/controls", 2167 | "_model_module_version": "1.5.0", 2168 | "_model_name": "DescriptionStyleModel", 2169 | "_view_count": null, 2170 | "_view_module": "@jupyter-widgets/base", 2171 | "_view_module_version": "1.2.0", 2172 | "_view_name": "StyleView", 2173 | "description_width": "" 2174 | } 2175 | }, 2176 | "8feaad6215514f34a8381821901224fa": { 2177 | "model_module": "@jupyter-widgets/controls", 2178 | "model_module_version": "1.5.0", 2179 | "model_name": "HTMLModel", 2180 | "state": { 2181 | "_dom_classes": [], 2182 | "_model_module": "@jupyter-widgets/controls", 2183 | "_model_module_version": "1.5.0", 2184 | "_model_name": "HTMLModel", 2185 | "_view_count": null, 2186 | "_view_module": "@jupyter-widgets/controls", 2187 | "_view_module_version": "1.5.0", 2188 | "_view_name": "HTMLView", 2189 | "description": "", 2190 | "description_tooltip": null, 2191 | "layout": "IPY_MODEL_ad3a6b34806b4812bb088ce6d9512b84", 2192 | "placeholder": "​", 2193 | "style": "IPY_MODEL_77d4c73776aa425fae3204d05c2fef5c", 2194 | "value": "100%" 2195 | } 2196 | }, 2197 | "8ff3e9201c54476cacedb9b04d274f6d": { 2198 | "model_module": "@jupyter-widgets/controls", 2199 | "model_module_version": "1.5.0", 2200 | "model_name": "DescriptionStyleModel", 2201 | "state": { 2202 | "_model_module": "@jupyter-widgets/controls", 2203 | "_model_module_version": "1.5.0", 2204 | "_model_name": "DescriptionStyleModel", 2205 | "_view_count": null, 2206 | "_view_module": "@jupyter-widgets/base", 2207 | "_view_module_version": "1.2.0", 2208 | "_view_name": "StyleView", 2209 | "description_width": "" 2210 | } 2211 | }, 2212 | "9076a172c20a4f3ba860be80ed3c2987": { 2213 | "model_module": "@jupyter-widgets/base", 2214 | "model_module_version": "1.2.0", 2215 | "model_name": "LayoutModel", 2216 | "state": { 2217 | "_model_module": "@jupyter-widgets/base", 2218 | "_model_module_version": "1.2.0", 2219 | "_model_name": "LayoutModel", 2220 | "_view_count": null, 2221 | "_view_module": "@jupyter-widgets/base", 2222 | "_view_module_version": "1.2.0", 2223 | "_view_name": "LayoutView", 2224 | "align_content": null, 2225 | "align_items": null, 2226 | "align_self": null, 2227 | "border": null, 2228 | "bottom": null, 2229 | "display": null, 2230 | "flex": null, 2231 | "flex_flow": null, 2232 | "grid_area": null, 2233 | "grid_auto_columns": null, 2234 | "grid_auto_flow": null, 2235 | "grid_auto_rows": null, 2236 | "grid_column": null, 2237 | "grid_gap": null, 2238 | "grid_row": null, 2239 | "grid_template_areas": null, 2240 | "grid_template_columns": null, 2241 | "grid_template_rows": null, 2242 | "height": null, 2243 | "justify_content": null, 2244 | "justify_items": null, 2245 | "left": null, 2246 | "margin": null, 2247 | "max_height": null, 2248 | "max_width": null, 2249 | "min_height": null, 2250 | "min_width": null, 2251 | "object_fit": null, 2252 | "object_position": null, 2253 | "order": null, 2254 | "overflow": null, 2255 | "overflow_x": null, 2256 | "overflow_y": null, 2257 | "padding": null, 2258 | "right": null, 2259 | "top": null, 2260 | "visibility": null, 2261 | "width": null 2262 | } 2263 | }, 2264 | "946c2c6c9d8048a19d09c7f7e1cfa324": { 2265 | "model_module": "@jupyter-widgets/base", 2266 | "model_module_version": "1.2.0", 2267 | "model_name": "LayoutModel", 2268 | "state": { 2269 | "_model_module": "@jupyter-widgets/base", 2270 | "_model_module_version": "1.2.0", 2271 | "_model_name": "LayoutModel", 2272 | "_view_count": null, 2273 | "_view_module": "@jupyter-widgets/base", 2274 | "_view_module_version": "1.2.0", 2275 | "_view_name": "LayoutView", 2276 | "align_content": null, 2277 | "align_items": null, 2278 | "align_self": null, 2279 | "border": null, 2280 | "bottom": null, 2281 | "display": null, 2282 | "flex": null, 2283 | "flex_flow": null, 2284 | "grid_area": null, 2285 | "grid_auto_columns": null, 2286 | "grid_auto_flow": null, 2287 | "grid_auto_rows": null, 2288 | "grid_column": null, 2289 | "grid_gap": null, 2290 | "grid_row": null, 2291 | "grid_template_areas": null, 2292 | "grid_template_columns": null, 2293 | "grid_template_rows": null, 2294 | "height": null, 2295 | "justify_content": null, 2296 | "justify_items": null, 2297 | "left": null, 2298 | "margin": null, 2299 | "max_height": null, 2300 | "max_width": null, 2301 | "min_height": null, 2302 | "min_width": null, 2303 | "object_fit": null, 2304 | "object_position": null, 2305 | "order": null, 2306 | "overflow": null, 2307 | "overflow_x": null, 2308 | "overflow_y": null, 2309 | "padding": null, 2310 | "right": null, 2311 | "top": null, 2312 | "visibility": null, 2313 | "width": null 2314 | } 2315 | }, 2316 | "94d5eb5f48ca45558c49c50cd63d1b49": { 2317 | "model_module": "@jupyter-widgets/controls", 2318 | "model_module_version": "1.5.0", 2319 | "model_name": "DescriptionStyleModel", 2320 | "state": { 2321 | "_model_module": "@jupyter-widgets/controls", 2322 | "_model_module_version": "1.5.0", 2323 | "_model_name": "DescriptionStyleModel", 2324 | "_view_count": null, 2325 | "_view_module": "@jupyter-widgets/base", 2326 | "_view_module_version": "1.2.0", 2327 | "_view_name": "StyleView", 2328 | "description_width": "" 2329 | } 2330 | }, 2331 | "96adc49910774c07b3751c3b2802e08b": { 2332 | "model_module": "@jupyter-widgets/controls", 2333 | "model_module_version": "1.5.0", 2334 | "model_name": "HTMLModel", 2335 | "state": { 2336 | "_dom_classes": [], 2337 | "_model_module": "@jupyter-widgets/controls", 2338 | "_model_module_version": "1.5.0", 2339 | "_model_name": "HTMLModel", 2340 | "_view_count": null, 2341 | "_view_module": "@jupyter-widgets/controls", 2342 | "_view_module_version": "1.5.0", 2343 | "_view_name": "HTMLView", 2344 | "description": "", 2345 | "description_tooltip": null, 2346 | "layout": "IPY_MODEL_9c261204da454d96a71e4e7d535d1b05", 2347 | "placeholder": "​", 2348 | "style": "IPY_MODEL_a76c97c50daa4b5d8b400d500f7442ca", 2349 | "value": "100%" 2350 | } 2351 | }, 2352 | "97a86fdebe5d45e2b6e24596df7199db": { 2353 | "model_module": "@jupyter-widgets/controls", 2354 | "model_module_version": "1.5.0", 2355 | "model_name": "DescriptionStyleModel", 2356 | "state": { 2357 | "_model_module": "@jupyter-widgets/controls", 2358 | "_model_module_version": "1.5.0", 2359 | "_model_name": "DescriptionStyleModel", 2360 | "_view_count": null, 2361 | "_view_module": "@jupyter-widgets/base", 2362 | "_view_module_version": "1.2.0", 2363 | "_view_name": "StyleView", 2364 | "description_width": "" 2365 | } 2366 | }, 2367 | "9c261204da454d96a71e4e7d535d1b05": { 2368 | "model_module": "@jupyter-widgets/base", 2369 | "model_module_version": "1.2.0", 2370 | "model_name": "LayoutModel", 2371 | "state": { 2372 | "_model_module": "@jupyter-widgets/base", 2373 | "_model_module_version": "1.2.0", 2374 | "_model_name": "LayoutModel", 2375 | "_view_count": null, 2376 | "_view_module": "@jupyter-widgets/base", 2377 | "_view_module_version": "1.2.0", 2378 | "_view_name": "LayoutView", 2379 | "align_content": null, 2380 | "align_items": null, 2381 | "align_self": null, 2382 | "border": null, 2383 | "bottom": null, 2384 | "display": null, 2385 | "flex": null, 2386 | "flex_flow": null, 2387 | "grid_area": null, 2388 | "grid_auto_columns": null, 2389 | "grid_auto_flow": null, 2390 | "grid_auto_rows": null, 2391 | "grid_column": null, 2392 | "grid_gap": null, 2393 | "grid_row": null, 2394 | "grid_template_areas": null, 2395 | "grid_template_columns": null, 2396 | "grid_template_rows": null, 2397 | "height": null, 2398 | "justify_content": null, 2399 | "justify_items": null, 2400 | "left": null, 2401 | "margin": null, 2402 | "max_height": null, 2403 | "max_width": null, 2404 | "min_height": null, 2405 | "min_width": null, 2406 | "object_fit": null, 2407 | "object_position": null, 2408 | "order": null, 2409 | "overflow": null, 2410 | "overflow_x": null, 2411 | "overflow_y": null, 2412 | "padding": null, 2413 | "right": null, 2414 | "top": null, 2415 | "visibility": null, 2416 | "width": null 2417 | } 2418 | }, 2419 | "9e9a632bdceb440a94127e0c5740f334": { 2420 | "model_module": "@jupyter-widgets/base", 2421 | "model_module_version": "1.2.0", 2422 | "model_name": "LayoutModel", 2423 | "state": { 2424 | "_model_module": "@jupyter-widgets/base", 2425 | "_model_module_version": "1.2.0", 2426 | "_model_name": "LayoutModel", 2427 | "_view_count": null, 2428 | "_view_module": "@jupyter-widgets/base", 2429 | "_view_module_version": "1.2.0", 2430 | "_view_name": "LayoutView", 2431 | "align_content": null, 2432 | "align_items": null, 2433 | "align_self": null, 2434 | "border": null, 2435 | "bottom": null, 2436 | "display": null, 2437 | "flex": null, 2438 | "flex_flow": null, 2439 | "grid_area": null, 2440 | "grid_auto_columns": null, 2441 | "grid_auto_flow": null, 2442 | "grid_auto_rows": null, 2443 | "grid_column": null, 2444 | "grid_gap": null, 2445 | "grid_row": null, 2446 | "grid_template_areas": null, 2447 | "grid_template_columns": null, 2448 | "grid_template_rows": null, 2449 | "height": null, 2450 | "justify_content": null, 2451 | "justify_items": null, 2452 | "left": null, 2453 | "margin": null, 2454 | "max_height": null, 2455 | "max_width": null, 2456 | "min_height": null, 2457 | "min_width": null, 2458 | "object_fit": null, 2459 | "object_position": null, 2460 | "order": null, 2461 | "overflow": null, 2462 | "overflow_x": null, 2463 | "overflow_y": null, 2464 | "padding": null, 2465 | "right": null, 2466 | "top": null, 2467 | "visibility": null, 2468 | "width": null 2469 | } 2470 | }, 2471 | "a0595d78a4d2428e877942bcf047468e": { 2472 | "model_module": "@jupyter-widgets/controls", 2473 | "model_module_version": "1.5.0", 2474 | "model_name": "HBoxModel", 2475 | "state": { 2476 | "_dom_classes": [], 2477 | "_model_module": "@jupyter-widgets/controls", 2478 | "_model_module_version": "1.5.0", 2479 | "_model_name": "HBoxModel", 2480 | "_view_count": null, 2481 | "_view_module": "@jupyter-widgets/controls", 2482 | "_view_module_version": "1.5.0", 2483 | "_view_name": "HBoxView", 2484 | "box_style": "", 2485 | "children": [ 2486 | "IPY_MODEL_1de8149168814805804464a51718cfb8", 2487 | "IPY_MODEL_16d8b74cb1974162ad75445b1dd8b6ed", 2488 | "IPY_MODEL_ae19f53afb454eda8d9b3009a5230dc3" 2489 | ], 2490 | "layout": "IPY_MODEL_9e9a632bdceb440a94127e0c5740f334" 2491 | } 2492 | }, 2493 | "a28ba3cfaa4d4700ba951ba84fa180e6": { 2494 | "model_module": "@jupyter-widgets/base", 2495 | "model_module_version": "1.2.0", 2496 | "model_name": "LayoutModel", 2497 | "state": { 2498 | "_model_module": "@jupyter-widgets/base", 2499 | "_model_module_version": "1.2.0", 2500 | "_model_name": "LayoutModel", 2501 | "_view_count": null, 2502 | "_view_module": "@jupyter-widgets/base", 2503 | "_view_module_version": "1.2.0", 2504 | "_view_name": "LayoutView", 2505 | "align_content": null, 2506 | "align_items": null, 2507 | "align_self": null, 2508 | "border": null, 2509 | "bottom": null, 2510 | "display": null, 2511 | "flex": null, 2512 | "flex_flow": null, 2513 | "grid_area": null, 2514 | "grid_auto_columns": null, 2515 | "grid_auto_flow": null, 2516 | "grid_auto_rows": null, 2517 | "grid_column": null, 2518 | "grid_gap": null, 2519 | "grid_row": null, 2520 | "grid_template_areas": null, 2521 | "grid_template_columns": null, 2522 | "grid_template_rows": null, 2523 | "height": null, 2524 | "justify_content": null, 2525 | "justify_items": null, 2526 | "left": null, 2527 | "margin": null, 2528 | "max_height": null, 2529 | "max_width": null, 2530 | "min_height": null, 2531 | "min_width": null, 2532 | "object_fit": null, 2533 | "object_position": null, 2534 | "order": null, 2535 | "overflow": null, 2536 | "overflow_x": null, 2537 | "overflow_y": null, 2538 | "padding": null, 2539 | "right": null, 2540 | "top": null, 2541 | "visibility": null, 2542 | "width": null 2543 | } 2544 | }, 2545 | "a5b73a6e13eb4a90b4e0e81e4fadc2c9": { 2546 | "model_module": "@jupyter-widgets/controls", 2547 | "model_module_version": "1.5.0", 2548 | "model_name": "HTMLModel", 2549 | "state": { 2550 | "_dom_classes": [], 2551 | "_model_module": "@jupyter-widgets/controls", 2552 | "_model_module_version": "1.5.0", 2553 | "_model_name": "HTMLModel", 2554 | "_view_count": null, 2555 | "_view_module": "@jupyter-widgets/controls", 2556 | "_view_module_version": "1.5.0", 2557 | "_view_name": "HTMLView", 2558 | "description": "", 2559 | "description_tooltip": null, 2560 | "layout": "IPY_MODEL_bf966b183e4b4c15ad0124b5510461b3", 2561 | "placeholder": "​", 2562 | "style": "IPY_MODEL_b16872b1d8a34c55bca9d03fee0c2d26", 2563 | "value": "100%" 2564 | } 2565 | }, 2566 | "a76c97c50daa4b5d8b400d500f7442ca": { 2567 | "model_module": "@jupyter-widgets/controls", 2568 | "model_module_version": "1.5.0", 2569 | "model_name": "DescriptionStyleModel", 2570 | "state": { 2571 | "_model_module": "@jupyter-widgets/controls", 2572 | "_model_module_version": "1.5.0", 2573 | "_model_name": "DescriptionStyleModel", 2574 | "_view_count": null, 2575 | "_view_module": "@jupyter-widgets/base", 2576 | "_view_module_version": "1.2.0", 2577 | "_view_name": "StyleView", 2578 | "description_width": "" 2579 | } 2580 | }, 2581 | "abef4362cc7f4fb3bf43ae84a40c5f11": { 2582 | "model_module": "@jupyter-widgets/controls", 2583 | "model_module_version": "1.5.0", 2584 | "model_name": "HTMLModel", 2585 | "state": { 2586 | "_dom_classes": [], 2587 | "_model_module": "@jupyter-widgets/controls", 2588 | "_model_module_version": "1.5.0", 2589 | "_model_name": "HTMLModel", 2590 | "_view_count": null, 2591 | "_view_module": "@jupyter-widgets/controls", 2592 | "_view_module_version": "1.5.0", 2593 | "_view_name": "HTMLView", 2594 | "description": "", 2595 | "description_tooltip": null, 2596 | "layout": "IPY_MODEL_d118a797f3d5439fabebb20378c292f8", 2597 | "placeholder": "​", 2598 | "style": "IPY_MODEL_7036fc0fe6624106b4a11bdf5abd2b1c", 2599 | "value": "100%" 2600 | } 2601 | }, 2602 | "ac0a36ff698c46de9235e608a276b2a4": { 2603 | "model_module": "@jupyter-widgets/controls", 2604 | "model_module_version": "1.5.0", 2605 | "model_name": "DescriptionStyleModel", 2606 | "state": { 2607 | "_model_module": "@jupyter-widgets/controls", 2608 | "_model_module_version": "1.5.0", 2609 | "_model_name": "DescriptionStyleModel", 2610 | "_view_count": null, 2611 | "_view_module": "@jupyter-widgets/base", 2612 | "_view_module_version": "1.2.0", 2613 | "_view_name": "StyleView", 2614 | "description_width": "" 2615 | } 2616 | }, 2617 | "ad3a6b34806b4812bb088ce6d9512b84": { 2618 | "model_module": "@jupyter-widgets/base", 2619 | "model_module_version": "1.2.0", 2620 | "model_name": "LayoutModel", 2621 | "state": { 2622 | "_model_module": "@jupyter-widgets/base", 2623 | "_model_module_version": "1.2.0", 2624 | "_model_name": "LayoutModel", 2625 | "_view_count": null, 2626 | "_view_module": "@jupyter-widgets/base", 2627 | "_view_module_version": "1.2.0", 2628 | "_view_name": "LayoutView", 2629 | "align_content": null, 2630 | "align_items": null, 2631 | "align_self": null, 2632 | "border": null, 2633 | "bottom": null, 2634 | "display": null, 2635 | "flex": null, 2636 | "flex_flow": null, 2637 | "grid_area": null, 2638 | "grid_auto_columns": null, 2639 | "grid_auto_flow": null, 2640 | "grid_auto_rows": null, 2641 | "grid_column": null, 2642 | "grid_gap": null, 2643 | "grid_row": null, 2644 | "grid_template_areas": null, 2645 | "grid_template_columns": null, 2646 | "grid_template_rows": null, 2647 | "height": null, 2648 | "justify_content": null, 2649 | "justify_items": null, 2650 | "left": null, 2651 | "margin": null, 2652 | "max_height": null, 2653 | "max_width": null, 2654 | "min_height": null, 2655 | "min_width": null, 2656 | "object_fit": null, 2657 | "object_position": null, 2658 | "order": null, 2659 | "overflow": null, 2660 | "overflow_x": null, 2661 | "overflow_y": null, 2662 | "padding": null, 2663 | "right": null, 2664 | "top": null, 2665 | "visibility": null, 2666 | "width": null 2667 | } 2668 | }, 2669 | "ae19f53afb454eda8d9b3009a5230dc3": { 2670 | "model_module": "@jupyter-widgets/controls", 2671 | "model_module_version": "1.5.0", 2672 | "model_name": "HTMLModel", 2673 | "state": { 2674 | "_dom_classes": [], 2675 | "_model_module": "@jupyter-widgets/controls", 2676 | "_model_module_version": "1.5.0", 2677 | "_model_name": "HTMLModel", 2678 | "_view_count": null, 2679 | "_view_module": "@jupyter-widgets/controls", 2680 | "_view_module_version": "1.5.0", 2681 | "_view_name": "HTMLView", 2682 | "description": "", 2683 | "description_tooltip": null, 2684 | "layout": "IPY_MODEL_4a93d608feb24a4a9a886c4663d4ad80", 2685 | "placeholder": "​", 2686 | "style": "IPY_MODEL_cdc1819471c14cdbbb00b289f66c4aec", 2687 | "value": " 452/452 [05:03<00:00, 1.75it/s]" 2688 | } 2689 | }, 2690 | "b16872b1d8a34c55bca9d03fee0c2d26": { 2691 | "model_module": "@jupyter-widgets/controls", 2692 | "model_module_version": "1.5.0", 2693 | "model_name": "DescriptionStyleModel", 2694 | "state": { 2695 | "_model_module": "@jupyter-widgets/controls", 2696 | "_model_module_version": "1.5.0", 2697 | "_model_name": "DescriptionStyleModel", 2698 | "_view_count": null, 2699 | "_view_module": "@jupyter-widgets/base", 2700 | "_view_module_version": "1.2.0", 2701 | "_view_name": "StyleView", 2702 | "description_width": "" 2703 | } 2704 | }, 2705 | "b4a2873aecd441ea8f4d72e68b3b96ab": { 2706 | "model_module": "@jupyter-widgets/controls", 2707 | "model_module_version": "1.5.0", 2708 | "model_name": "HTMLModel", 2709 | "state": { 2710 | "_dom_classes": [], 2711 | "_model_module": "@jupyter-widgets/controls", 2712 | "_model_module_version": "1.5.0", 2713 | "_model_name": "HTMLModel", 2714 | "_view_count": null, 2715 | "_view_module": "@jupyter-widgets/controls", 2716 | "_view_module_version": "1.5.0", 2717 | "_view_name": "HTMLView", 2718 | "description": "", 2719 | "description_tooltip": null, 2720 | "layout": "IPY_MODEL_946c2c6c9d8048a19d09c7f7e1cfa324", 2721 | "placeholder": "​", 2722 | "style": "IPY_MODEL_97a86fdebe5d45e2b6e24596df7199db", 2723 | "value": " 6/6 [30:21<00:00, 303.57s/it]" 2724 | } 2725 | }, 2726 | "bb6c9093f7a047dda11ba79578456247": { 2727 | "model_module": "@jupyter-widgets/controls", 2728 | "model_module_version": "1.5.0", 2729 | "model_name": "DescriptionStyleModel", 2730 | "state": { 2731 | "_model_module": "@jupyter-widgets/controls", 2732 | "_model_module_version": "1.5.0", 2733 | "_model_name": "DescriptionStyleModel", 2734 | "_view_count": null, 2735 | "_view_module": "@jupyter-widgets/base", 2736 | "_view_module_version": "1.2.0", 2737 | "_view_name": "StyleView", 2738 | "description_width": "" 2739 | } 2740 | }, 2741 | "bda7ecb79e4443f9a7dd6b6737ce5563": { 2742 | "model_module": "@jupyter-widgets/controls", 2743 | "model_module_version": "1.5.0", 2744 | "model_name": "FloatProgressModel", 2745 | "state": { 2746 | "_dom_classes": [], 2747 | "_model_module": "@jupyter-widgets/controls", 2748 | "_model_module_version": "1.5.0", 2749 | "_model_name": "FloatProgressModel", 2750 | "_view_count": null, 2751 | "_view_module": "@jupyter-widgets/controls", 2752 | "_view_module_version": "1.5.0", 2753 | "_view_name": "ProgressView", 2754 | "bar_style": "success", 2755 | "description": "", 2756 | "description_tooltip": null, 2757 | "layout": "IPY_MODEL_f8406e02408a4eb8a8265b5d2f985848", 2758 | "max": 452, 2759 | "min": 0, 2760 | "orientation": "horizontal", 2761 | "style": "IPY_MODEL_d07f4bab5d654d4fa15aa9c8ab35e6ff", 2762 | "value": 452 2763 | } 2764 | }, 2765 | "bf966b183e4b4c15ad0124b5510461b3": { 2766 | "model_module": "@jupyter-widgets/base", 2767 | "model_module_version": "1.2.0", 2768 | "model_name": "LayoutModel", 2769 | "state": { 2770 | "_model_module": "@jupyter-widgets/base", 2771 | "_model_module_version": "1.2.0", 2772 | "_model_name": "LayoutModel", 2773 | "_view_count": null, 2774 | "_view_module": "@jupyter-widgets/base", 2775 | "_view_module_version": "1.2.0", 2776 | "_view_name": "LayoutView", 2777 | "align_content": null, 2778 | "align_items": null, 2779 | "align_self": null, 2780 | "border": null, 2781 | "bottom": null, 2782 | "display": null, 2783 | "flex": null, 2784 | "flex_flow": null, 2785 | "grid_area": null, 2786 | "grid_auto_columns": null, 2787 | "grid_auto_flow": null, 2788 | "grid_auto_rows": null, 2789 | "grid_column": null, 2790 | "grid_gap": null, 2791 | "grid_row": null, 2792 | "grid_template_areas": null, 2793 | "grid_template_columns": null, 2794 | "grid_template_rows": null, 2795 | "height": null, 2796 | "justify_content": null, 2797 | "justify_items": null, 2798 | "left": null, 2799 | "margin": null, 2800 | "max_height": null, 2801 | "max_width": null, 2802 | "min_height": null, 2803 | "min_width": null, 2804 | "object_fit": null, 2805 | "object_position": null, 2806 | "order": null, 2807 | "overflow": null, 2808 | "overflow_x": null, 2809 | "overflow_y": null, 2810 | "padding": null, 2811 | "right": null, 2812 | "top": null, 2813 | "visibility": null, 2814 | "width": null 2815 | } 2816 | }, 2817 | "c526abb4137248aaaf3c6f4e0bb3613f": { 2818 | "model_module": "@jupyter-widgets/base", 2819 | "model_module_version": "1.2.0", 2820 | "model_name": "LayoutModel", 2821 | "state": { 2822 | "_model_module": "@jupyter-widgets/base", 2823 | "_model_module_version": "1.2.0", 2824 | "_model_name": "LayoutModel", 2825 | "_view_count": null, 2826 | "_view_module": "@jupyter-widgets/base", 2827 | "_view_module_version": "1.2.0", 2828 | "_view_name": "LayoutView", 2829 | "align_content": null, 2830 | "align_items": null, 2831 | "align_self": null, 2832 | "border": null, 2833 | "bottom": null, 2834 | "display": null, 2835 | "flex": null, 2836 | "flex_flow": null, 2837 | "grid_area": null, 2838 | "grid_auto_columns": null, 2839 | "grid_auto_flow": null, 2840 | "grid_auto_rows": null, 2841 | "grid_column": null, 2842 | "grid_gap": null, 2843 | "grid_row": null, 2844 | "grid_template_areas": null, 2845 | "grid_template_columns": null, 2846 | "grid_template_rows": null, 2847 | "height": null, 2848 | "justify_content": null, 2849 | "justify_items": null, 2850 | "left": null, 2851 | "margin": null, 2852 | "max_height": null, 2853 | "max_width": null, 2854 | "min_height": null, 2855 | "min_width": null, 2856 | "object_fit": null, 2857 | "object_position": null, 2858 | "order": null, 2859 | "overflow": null, 2860 | "overflow_x": null, 2861 | "overflow_y": null, 2862 | "padding": null, 2863 | "right": null, 2864 | "top": null, 2865 | "visibility": null, 2866 | "width": null 2867 | } 2868 | }, 2869 | "c741db7d0550439f979759f588bcd7c7": { 2870 | "model_module": "@jupyter-widgets/controls", 2871 | "model_module_version": "1.5.0", 2872 | "model_name": "DescriptionStyleModel", 2873 | "state": { 2874 | "_model_module": "@jupyter-widgets/controls", 2875 | "_model_module_version": "1.5.0", 2876 | "_model_name": "DescriptionStyleModel", 2877 | "_view_count": null, 2878 | "_view_module": "@jupyter-widgets/base", 2879 | "_view_module_version": "1.2.0", 2880 | "_view_name": "StyleView", 2881 | "description_width": "" 2882 | } 2883 | }, 2884 | "c9a58f27b2f14ad18458a6f02b14a847": { 2885 | "model_module": "@jupyter-widgets/base", 2886 | "model_module_version": "1.2.0", 2887 | "model_name": "LayoutModel", 2888 | "state": { 2889 | "_model_module": "@jupyter-widgets/base", 2890 | "_model_module_version": "1.2.0", 2891 | "_model_name": "LayoutModel", 2892 | "_view_count": null, 2893 | "_view_module": "@jupyter-widgets/base", 2894 | "_view_module_version": "1.2.0", 2895 | "_view_name": "LayoutView", 2896 | "align_content": null, 2897 | "align_items": null, 2898 | "align_self": null, 2899 | "border": null, 2900 | "bottom": null, 2901 | "display": null, 2902 | "flex": null, 2903 | "flex_flow": null, 2904 | "grid_area": null, 2905 | "grid_auto_columns": null, 2906 | "grid_auto_flow": null, 2907 | "grid_auto_rows": null, 2908 | "grid_column": null, 2909 | "grid_gap": null, 2910 | "grid_row": null, 2911 | "grid_template_areas": null, 2912 | "grid_template_columns": null, 2913 | "grid_template_rows": null, 2914 | "height": null, 2915 | "justify_content": null, 2916 | "justify_items": null, 2917 | "left": null, 2918 | "margin": null, 2919 | "max_height": null, 2920 | "max_width": null, 2921 | "min_height": null, 2922 | "min_width": null, 2923 | "object_fit": null, 2924 | "object_position": null, 2925 | "order": null, 2926 | "overflow": null, 2927 | "overflow_x": null, 2928 | "overflow_y": null, 2929 | "padding": null, 2930 | "right": null, 2931 | "top": null, 2932 | "visibility": null, 2933 | "width": null 2934 | } 2935 | }, 2936 | "ca0f870495654f299cb03882fa4debc6": { 2937 | "model_module": "@jupyter-widgets/base", 2938 | "model_module_version": "1.2.0", 2939 | "model_name": "LayoutModel", 2940 | "state": { 2941 | "_model_module": "@jupyter-widgets/base", 2942 | "_model_module_version": "1.2.0", 2943 | "_model_name": "LayoutModel", 2944 | "_view_count": null, 2945 | "_view_module": "@jupyter-widgets/base", 2946 | "_view_module_version": "1.2.0", 2947 | "_view_name": "LayoutView", 2948 | "align_content": null, 2949 | "align_items": null, 2950 | "align_self": null, 2951 | "border": null, 2952 | "bottom": null, 2953 | "display": null, 2954 | "flex": null, 2955 | "flex_flow": null, 2956 | "grid_area": null, 2957 | "grid_auto_columns": null, 2958 | "grid_auto_flow": null, 2959 | "grid_auto_rows": null, 2960 | "grid_column": null, 2961 | "grid_gap": null, 2962 | "grid_row": null, 2963 | "grid_template_areas": null, 2964 | "grid_template_columns": null, 2965 | "grid_template_rows": null, 2966 | "height": null, 2967 | "justify_content": null, 2968 | "justify_items": null, 2969 | "left": null, 2970 | "margin": null, 2971 | "max_height": null, 2972 | "max_width": null, 2973 | "min_height": null, 2974 | "min_width": null, 2975 | "object_fit": null, 2976 | "object_position": null, 2977 | "order": null, 2978 | "overflow": null, 2979 | "overflow_x": null, 2980 | "overflow_y": null, 2981 | "padding": null, 2982 | "right": null, 2983 | "top": null, 2984 | "visibility": null, 2985 | "width": null 2986 | } 2987 | }, 2988 | "cdc1819471c14cdbbb00b289f66c4aec": { 2989 | "model_module": "@jupyter-widgets/controls", 2990 | "model_module_version": "1.5.0", 2991 | "model_name": "DescriptionStyleModel", 2992 | "state": { 2993 | "_model_module": "@jupyter-widgets/controls", 2994 | "_model_module_version": "1.5.0", 2995 | "_model_name": "DescriptionStyleModel", 2996 | "_view_count": null, 2997 | "_view_module": "@jupyter-widgets/base", 2998 | "_view_module_version": "1.2.0", 2999 | "_view_name": "StyleView", 3000 | "description_width": "" 3001 | } 3002 | }, 3003 | "cf27cc3bafdd4482b441fc6e34366696": { 3004 | "model_module": "@jupyter-widgets/controls", 3005 | "model_module_version": "1.5.0", 3006 | "model_name": "HTMLModel", 3007 | "state": { 3008 | "_dom_classes": [], 3009 | "_model_module": "@jupyter-widgets/controls", 3010 | "_model_module_version": "1.5.0", 3011 | "_model_name": "HTMLModel", 3012 | "_view_count": null, 3013 | "_view_module": "@jupyter-widgets/controls", 3014 | "_view_module_version": "1.5.0", 3015 | "_view_name": "HTMLView", 3016 | "description": "", 3017 | "description_tooltip": null, 3018 | "layout": "IPY_MODEL_58ba589bb71047ccaca888f8b8f07223", 3019 | "placeholder": "​", 3020 | "style": "IPY_MODEL_8ff3e9201c54476cacedb9b04d274f6d", 3021 | "value": "100%" 3022 | } 3023 | }, 3024 | "d07f4bab5d654d4fa15aa9c8ab35e6ff": { 3025 | "model_module": "@jupyter-widgets/controls", 3026 | "model_module_version": "1.5.0", 3027 | "model_name": "ProgressStyleModel", 3028 | "state": { 3029 | "_model_module": "@jupyter-widgets/controls", 3030 | "_model_module_version": "1.5.0", 3031 | "_model_name": "ProgressStyleModel", 3032 | "_view_count": null, 3033 | "_view_module": "@jupyter-widgets/base", 3034 | "_view_module_version": "1.2.0", 3035 | "_view_name": "StyleView", 3036 | "bar_color": null, 3037 | "description_width": "" 3038 | } 3039 | }, 3040 | "d118a797f3d5439fabebb20378c292f8": { 3041 | "model_module": "@jupyter-widgets/base", 3042 | "model_module_version": "1.2.0", 3043 | "model_name": "LayoutModel", 3044 | "state": { 3045 | "_model_module": "@jupyter-widgets/base", 3046 | "_model_module_version": "1.2.0", 3047 | "_model_name": "LayoutModel", 3048 | "_view_count": null, 3049 | "_view_module": "@jupyter-widgets/base", 3050 | "_view_module_version": "1.2.0", 3051 | "_view_name": "LayoutView", 3052 | "align_content": null, 3053 | "align_items": null, 3054 | "align_self": null, 3055 | "border": null, 3056 | "bottom": null, 3057 | "display": null, 3058 | "flex": null, 3059 | "flex_flow": null, 3060 | "grid_area": null, 3061 | "grid_auto_columns": null, 3062 | "grid_auto_flow": null, 3063 | "grid_auto_rows": null, 3064 | "grid_column": null, 3065 | "grid_gap": null, 3066 | "grid_row": null, 3067 | "grid_template_areas": null, 3068 | "grid_template_columns": null, 3069 | "grid_template_rows": null, 3070 | "height": null, 3071 | "justify_content": null, 3072 | "justify_items": null, 3073 | "left": null, 3074 | "margin": null, 3075 | "max_height": null, 3076 | "max_width": null, 3077 | "min_height": null, 3078 | "min_width": null, 3079 | "object_fit": null, 3080 | "object_position": null, 3081 | "order": null, 3082 | "overflow": null, 3083 | "overflow_x": null, 3084 | "overflow_y": null, 3085 | "padding": null, 3086 | "right": null, 3087 | "top": null, 3088 | "visibility": null, 3089 | "width": null 3090 | } 3091 | }, 3092 | "d1a57fe92fd543f1b4c72e33f4340fb3": { 3093 | "model_module": "@jupyter-widgets/base", 3094 | "model_module_version": "1.2.0", 3095 | "model_name": "LayoutModel", 3096 | "state": { 3097 | "_model_module": "@jupyter-widgets/base", 3098 | "_model_module_version": "1.2.0", 3099 | "_model_name": "LayoutModel", 3100 | "_view_count": null, 3101 | "_view_module": "@jupyter-widgets/base", 3102 | "_view_module_version": "1.2.0", 3103 | "_view_name": "LayoutView", 3104 | "align_content": null, 3105 | "align_items": null, 3106 | "align_self": null, 3107 | "border": null, 3108 | "bottom": null, 3109 | "display": null, 3110 | "flex": null, 3111 | "flex_flow": null, 3112 | "grid_area": null, 3113 | "grid_auto_columns": null, 3114 | "grid_auto_flow": null, 3115 | "grid_auto_rows": null, 3116 | "grid_column": null, 3117 | "grid_gap": null, 3118 | "grid_row": null, 3119 | "grid_template_areas": null, 3120 | "grid_template_columns": null, 3121 | "grid_template_rows": null, 3122 | "height": null, 3123 | "justify_content": null, 3124 | "justify_items": null, 3125 | "left": null, 3126 | "margin": null, 3127 | "max_height": null, 3128 | "max_width": null, 3129 | "min_height": null, 3130 | "min_width": null, 3131 | "object_fit": null, 3132 | "object_position": null, 3133 | "order": null, 3134 | "overflow": null, 3135 | "overflow_x": null, 3136 | "overflow_y": null, 3137 | "padding": null, 3138 | "right": null, 3139 | "top": null, 3140 | "visibility": null, 3141 | "width": null 3142 | } 3143 | }, 3144 | "d572868d2e6b4394adf615b988618cb4": { 3145 | "model_module": "@jupyter-widgets/controls", 3146 | "model_module_version": "1.5.0", 3147 | "model_name": "HTMLModel", 3148 | "state": { 3149 | "_dom_classes": [], 3150 | "_model_module": "@jupyter-widgets/controls", 3151 | "_model_module_version": "1.5.0", 3152 | "_model_name": "HTMLModel", 3153 | "_view_count": null, 3154 | "_view_module": "@jupyter-widgets/controls", 3155 | "_view_module_version": "1.5.0", 3156 | "_view_name": "HTMLView", 3157 | "description": "", 3158 | "description_tooltip": null, 3159 | "layout": "IPY_MODEL_ca0f870495654f299cb03882fa4debc6", 3160 | "placeholder": "​", 3161 | "style": "IPY_MODEL_bb6c9093f7a047dda11ba79578456247", 3162 | "value": " 452/452 [05:03<00:00, 1.67it/s]" 3163 | } 3164 | }, 3165 | "d9ed4c01ef164b209a2067ac6c80388e": { 3166 | "model_module": "@jupyter-widgets/controls", 3167 | "model_module_version": "1.5.0", 3168 | "model_name": "ProgressStyleModel", 3169 | "state": { 3170 | "_model_module": "@jupyter-widgets/controls", 3171 | "_model_module_version": "1.5.0", 3172 | "_model_name": "ProgressStyleModel", 3173 | "_view_count": null, 3174 | "_view_module": "@jupyter-widgets/base", 3175 | "_view_module_version": "1.2.0", 3176 | "_view_name": "StyleView", 3177 | "bar_color": null, 3178 | "description_width": "" 3179 | } 3180 | }, 3181 | "da8284c253c1427b9f5bd4b83279548b": { 3182 | "model_module": "@jupyter-widgets/controls", 3183 | "model_module_version": "1.5.0", 3184 | "model_name": "HBoxModel", 3185 | "state": { 3186 | "_dom_classes": [], 3187 | "_model_module": "@jupyter-widgets/controls", 3188 | "_model_module_version": "1.5.0", 3189 | "_model_name": "HBoxModel", 3190 | "_view_count": null, 3191 | "_view_module": "@jupyter-widgets/controls", 3192 | "_view_module_version": "1.5.0", 3193 | "_view_name": "HBoxView", 3194 | "box_style": "", 3195 | "children": [ 3196 | "IPY_MODEL_7d7b158fb7c34115b70da67ff9d02330", 3197 | "IPY_MODEL_473cdf8f4b384aa699a6ad078ad0a336", 3198 | "IPY_MODEL_2935e363a6f14ed08e209511245f0c6c" 3199 | ], 3200 | "layout": "IPY_MODEL_12daa8b222de472dbe67b2d856276ffa" 3201 | } 3202 | }, 3203 | "e1dbfff3fef7412ba89d507c58521366": { 3204 | "model_module": "@jupyter-widgets/base", 3205 | "model_module_version": "1.2.0", 3206 | "model_name": "LayoutModel", 3207 | "state": { 3208 | "_model_module": "@jupyter-widgets/base", 3209 | "_model_module_version": "1.2.0", 3210 | "_model_name": "LayoutModel", 3211 | "_view_count": null, 3212 | "_view_module": "@jupyter-widgets/base", 3213 | "_view_module_version": "1.2.0", 3214 | "_view_name": "LayoutView", 3215 | "align_content": null, 3216 | "align_items": null, 3217 | "align_self": null, 3218 | "border": null, 3219 | "bottom": null, 3220 | "display": null, 3221 | "flex": null, 3222 | "flex_flow": null, 3223 | "grid_area": null, 3224 | "grid_auto_columns": null, 3225 | "grid_auto_flow": null, 3226 | "grid_auto_rows": null, 3227 | "grid_column": null, 3228 | "grid_gap": null, 3229 | "grid_row": null, 3230 | "grid_template_areas": null, 3231 | "grid_template_columns": null, 3232 | "grid_template_rows": null, 3233 | "height": null, 3234 | "justify_content": null, 3235 | "justify_items": null, 3236 | "left": null, 3237 | "margin": null, 3238 | "max_height": null, 3239 | "max_width": null, 3240 | "min_height": null, 3241 | "min_width": null, 3242 | "object_fit": null, 3243 | "object_position": null, 3244 | "order": null, 3245 | "overflow": null, 3246 | "overflow_x": null, 3247 | "overflow_y": null, 3248 | "padding": null, 3249 | "right": null, 3250 | "top": null, 3251 | "visibility": null, 3252 | "width": null 3253 | } 3254 | }, 3255 | "e6ce6a08715a49f39f044ac3b873b14f": { 3256 | "model_module": "@jupyter-widgets/controls", 3257 | "model_module_version": "1.5.0", 3258 | "model_name": "HBoxModel", 3259 | "state": { 3260 | "_dom_classes": [], 3261 | "_model_module": "@jupyter-widgets/controls", 3262 | "_model_module_version": "1.5.0", 3263 | "_model_name": "HBoxModel", 3264 | "_view_count": null, 3265 | "_view_module": "@jupyter-widgets/controls", 3266 | "_view_module_version": "1.5.0", 3267 | "_view_name": "HBoxView", 3268 | "box_style": "", 3269 | "children": [ 3270 | "IPY_MODEL_96adc49910774c07b3751c3b2802e08b", 3271 | "IPY_MODEL_43d29fba0ede436b8dd6042cc27ac74f", 3272 | "IPY_MODEL_4572bf0fa8c54991aa7b165806e6ae65" 3273 | ], 3274 | "layout": "IPY_MODEL_e1dbfff3fef7412ba89d507c58521366" 3275 | } 3276 | }, 3277 | "f31c06e20cf84f659480d8d0f4be50a6": { 3278 | "model_module": "@jupyter-widgets/controls", 3279 | "model_module_version": "1.5.0", 3280 | "model_name": "DescriptionStyleModel", 3281 | "state": { 3282 | "_model_module": "@jupyter-widgets/controls", 3283 | "_model_module_version": "1.5.0", 3284 | "_model_name": "DescriptionStyleModel", 3285 | "_view_count": null, 3286 | "_view_module": "@jupyter-widgets/base", 3287 | "_view_module_version": "1.2.0", 3288 | "_view_name": "StyleView", 3289 | "description_width": "" 3290 | } 3291 | }, 3292 | "f8406e02408a4eb8a8265b5d2f985848": { 3293 | "model_module": "@jupyter-widgets/base", 3294 | "model_module_version": "1.2.0", 3295 | "model_name": "LayoutModel", 3296 | "state": { 3297 | "_model_module": "@jupyter-widgets/base", 3298 | "_model_module_version": "1.2.0", 3299 | "_model_name": "LayoutModel", 3300 | "_view_count": null, 3301 | "_view_module": "@jupyter-widgets/base", 3302 | "_view_module_version": "1.2.0", 3303 | "_view_name": "LayoutView", 3304 | "align_content": null, 3305 | "align_items": null, 3306 | "align_self": null, 3307 | "border": null, 3308 | "bottom": null, 3309 | "display": null, 3310 | "flex": null, 3311 | "flex_flow": null, 3312 | "grid_area": null, 3313 | "grid_auto_columns": null, 3314 | "grid_auto_flow": null, 3315 | "grid_auto_rows": null, 3316 | "grid_column": null, 3317 | "grid_gap": null, 3318 | "grid_row": null, 3319 | "grid_template_areas": null, 3320 | "grid_template_columns": null, 3321 | "grid_template_rows": null, 3322 | "height": null, 3323 | "justify_content": null, 3324 | "justify_items": null, 3325 | "left": null, 3326 | "margin": null, 3327 | "max_height": null, 3328 | "max_width": null, 3329 | "min_height": null, 3330 | "min_width": null, 3331 | "object_fit": null, 3332 | "object_position": null, 3333 | "order": null, 3334 | "overflow": null, 3335 | "overflow_x": null, 3336 | "overflow_y": null, 3337 | "padding": null, 3338 | "right": null, 3339 | "top": null, 3340 | "visibility": null, 3341 | "width": null 3342 | } 3343 | }, 3344 | "fe6b3020d51240538ad6f9b00067e889": { 3345 | "model_module": "@jupyter-widgets/base", 3346 | "model_module_version": "1.2.0", 3347 | "model_name": "LayoutModel", 3348 | "state": { 3349 | "_model_module": "@jupyter-widgets/base", 3350 | "_model_module_version": "1.2.0", 3351 | "_model_name": "LayoutModel", 3352 | "_view_count": null, 3353 | "_view_module": "@jupyter-widgets/base", 3354 | "_view_module_version": "1.2.0", 3355 | "_view_name": "LayoutView", 3356 | "align_content": null, 3357 | "align_items": null, 3358 | "align_self": null, 3359 | "border": null, 3360 | "bottom": null, 3361 | "display": null, 3362 | "flex": null, 3363 | "flex_flow": null, 3364 | "grid_area": null, 3365 | "grid_auto_columns": null, 3366 | "grid_auto_flow": null, 3367 | "grid_auto_rows": null, 3368 | "grid_column": null, 3369 | "grid_gap": null, 3370 | "grid_row": null, 3371 | "grid_template_areas": null, 3372 | "grid_template_columns": null, 3373 | "grid_template_rows": null, 3374 | "height": null, 3375 | "justify_content": null, 3376 | "justify_items": null, 3377 | "left": null, 3378 | "margin": null, 3379 | "max_height": null, 3380 | "max_width": null, 3381 | "min_height": null, 3382 | "min_width": null, 3383 | "object_fit": null, 3384 | "object_position": null, 3385 | "order": null, 3386 | "overflow": null, 3387 | "overflow_x": null, 3388 | "overflow_y": null, 3389 | "padding": null, 3390 | "right": null, 3391 | "top": null, 3392 | "visibility": null, 3393 | "width": null 3394 | } 3395 | } 3396 | } 3397 | } 3398 | }, 3399 | "nbformat": 4, 3400 | "nbformat_minor": 4 3401 | } 3402 | --------------------------------------------------------------------------------