diff --git a/docs/source/JAX_porting_HF_model.ipynb b/docs/source/JAX_porting_HF_model.ipynb new file mode 100644 index 0000000..b8ebf08 --- /dev/null +++ b/docs/source/JAX_porting_HF_model.ipynb @@ -0,0 +1,6872 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "wXMWNV2Rw-wE" + }, + "source": [ + "# Converting the LLama 3.2 1B model from Hugging Face to JAX\n", + "\n", + "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/jax-ml/jax-ai-stack/blob/main/docs/JAX_porting_HF_model.ipynb)\n", + "\n", + "[![Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://github.com/jax-ml/jax-ai-stack/blob/main/docs/JAX_porting_HF_model.ipynb)\n", + "\n", + "This tutorial demonstrates to convert Meta's [Llama 3.2 1B model](https://huggingface.co/meta-llama/Llama-3.2-1B) from Hugging Face to a JAX model and run it on T4 GPU.\n", + "\n", + "You need some familiarity with [Flax](https://flax.readthedocs.io/en/latest/index.html), a library for building Neural Networks in JAX, to follow along. If you are getting started, check out the tutorials on [Getting started with JAX for AI](https://jax-ai-stack.readthedocs.io/en/latest/getting_started_with_jax_for_AI.html#example-a-simple-neural-network-with-flax) and [Flax's MNIST tutorial](https://flax.readthedocs.io/en/latest/mnist_tutorial.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Iuq-_y1qyXLF" + }, + "source": [ + "## Setup\n", + "\n", + "Let's install the `jax-ai-stack`, we'll use the `jax` and `flax` libraries from the stack in this tutorial. We will also need `huggingface_hub` for downloading model weights and `transformers` for tokenization." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "q5ueiKcIw8Sl", + "outputId": "79f0281a-3b98-462f-8cc4-9a4450e7124a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/2.3 MB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\n", + "\u001b[2K \u001b[91m━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.6/2.3 MB\u001b[0m \u001b[31m17.9 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\n", + "\u001b[2K \u001b[91m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m \u001b[32m2.3/2.3 MB\u001b[0m \u001b[31m33.5 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\r\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.3/2.3 MB\u001b[0m \u001b[31m23.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.2/2.2 MB\u001b[0m \u001b[31m21.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m394.9/394.9 kB\u001b[0m \u001b[31m19.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m86.2/86.2 kB\u001b[0m \u001b[31m5.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m102.0/102.0 MB\u001b[0m \u001b[31m6.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m144.7/144.7 kB\u001b[0m \u001b[31m3.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 kB\u001b[0m \u001b[31m3.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.9/50.9 kB\u001b[0m \u001b[31m2.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m1.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.7/9.7 MB\u001b[0m \u001b[31m13.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h\n", + " _| _| _| _| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _|_|_|_| _|_| _|_|_| _|_|_|_|\n", + " _| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|\n", + " _|_|_|_| _| _| _| _|_| _| _|_| _| _| _| _| _| _|_| _|_|_| _|_|_|_| _| _|_|_|\n", + " _| _| _| _| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|\n", + " _| _| _|_| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _| _| _| _|_|_| _|_|_|_|\n", + "\n", + " To log in, `huggingface_hub` requires a token generated from https://huggingface.co/settings/tokens .\n", + "Enter your token (input will not be visible): \n", + "Add token as git credential? (Y/n) n\n", + "Token is valid (permission: write).\n", + "The token `diffusion` has been saved to /root/.cache/huggingface/stored_tokens\n", + "Your token has been saved to /root/.cache/huggingface/token\n", + "Login successful.\n", + "The current active token is: `diffusion`\n" + ] + } + ], + "source": [ + "!pip install -q jax-ai-stack\n", + "!pip install -Uq transformers huggingface_hub\n", + "!huggingface-cli login" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dLCAc5Wbyl4N" + }, + "source": [ + "Take care of the imports." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "VnGrbnX1yjsQ" + }, + "outputs": [], + "source": [ + "import jax\n", + "import jax.numpy as jnp\n", + "from flax import nnx\n", + "from safetensors import safe_open\n", + "from pathlib import Path\n", + "import os\n", + "from huggingface_hub import snapshot_download\n", + "from transformers import AutoTokenizer\n", + "from dataclasses import dataclass" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7oUeDSNozsF0" + }, + "source": [ + "## Define the configuration" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZlmwhxkcyD9V" + }, + "source": [ + "The Hugging Face Transformers library has [some tips for using the Llama3 model](https://huggingface.co/docs/transformers/main/en/model_doc/llama3). For further reference, the modeling code in the transformers library lives in the [`models/llama/modeling_llama.py` file](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llama/modeling_llama.py).\n", + "\n", + "Before we create the model in JAX, we need to define some parameters. You can refer to the [Llama2 documentation for the configuration options](https://huggingface.co/docs/transformers/main/en/model_doc/llama2#transformers.LlamaConfig)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "9WErwCTtzv7x" + }, + "outputs": [], + "source": [ + "@dataclass\n", + "class LlamaConfig:\n", + " def __init__(self):\n", + " self.dim = 2048\n", + " self.n_layers = 16\n", + " self.n_heads = 32\n", + " self.n_kv_heads = 8\n", + " self.head_dim = self.dim // self.n_heads\n", + " self.intermediate_size = 14336\n", + " self.vocab_size = 128256\n", + " self.multiple_of = 256\n", + " self.norm_eps = 1e-05\n", + " self.rope_theta = 500000.0\n", + "\n", + "config = LlamaConfig()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "mRNFx-eBywHO" + }, + "source": [ + "## Load the model weights\n", + "\n", + "We'll use the transformers library to download the model weights.\n", + "\n", + "Meta requires [acceptance of the license](https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct/discussions/130) before you can access the files. You will also need a Hugging Face access token, please refer to [Hugging Face documentation](https://huggingface.co/docs/hub/en/security-tokens) to set it up." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 483, + "referenced_widgets": [ + "fad155559da44fdb88eca53c7336b623", + "7bff39f20c8d47d896e67d0c12d3876a", + "065de156ffc04f6c90f6d0acab5cf79d", + "e368b2711e4f4eaa9208713d4505d4ca", + "fa203d94c35b4d3f8d3eb116a27f09f7", + "f941be815cd2460084bd06ed8512cdf3", + "5946811b94d3457dbe4dc2346cae03db", + "bd6e501bfc234d1d8a0aeeacb857d6b3", + "c5ffb6869bf242f6b5d62daa94e88700", + "b3680e93364d4dd7a95ce078c947bf5d", + "d37fbf370c144435bc81fc67d1e9ae20", + "bb75a58ea37f470aadfd36471f6f2d54", + "c79d201995224a359485b65fb2d4ac3d", + "237d55df9c6c49b8bbb89bbf76eb1eb0", + "65bd947bb2e64a6783efd9b18a6f22d6", + "56d3affb3f564c9d8f5269311ad8c9a0", + "55359e5ff8f7468a88cc5241b233a5cf", + "d2d62d19e9ef459b8694fa8fc04f7670", + "72cd64d2d0c3464b80f19e669d021504", + "3f48608bb20e44e59a87dc7249e8d147", + "025fbb3ad18a4dfeb6db1f394fae4736", + "911317598fa4427db665316e8db46b1f", + "b8000a8b6aa54446af809ad5cc7f019d", + "024be3b7d5214124b7d41d76b7a97182", + "d99c871aadde47af8449f3431ba7a886", + "2b231602bb554268b099b2baa14511cf", + "b1755ba29f8741088c20fb681b681c00", + "b43ce79062894691a1bf9886c2b8e6b8", + "f5437b12aae84e4d9658e6f6c3846a0f", + "5eb8545b4db54496add70dcf4357e0f3", + "8c7b08d959d2470f9e7a46d81eb0ebea", + "06191421335c4de89310c24207b631a6", + "2d0083b45f8247069bd72d9066e987a0", + "700d269b34e64f85a7e111c61f0a3b7e", + "74788132cad749719f76ab3972a899ed", + "79549aac63d7460296593a3e3ce7f09b", + "3a9bed3445d24beeb69ab9402dc34d13", + "85bed253cdd9456e83bb8b33e54aab9e", + "99d44ee67bad499b9bc2a00a28c34bc3", + "0c35c1a8ac804b1faab2f18088b43c23", + "4ac2e640b7964f47b6d017e4159eaf3a", + "c15cfdc0727d471b9a5a218f12c26d02", + "d5205f2eb06e45a894c3ca20f4261fab", + "520359af946a4032a9635194db487774", + "012bbe7b346b47eaa9227581c669975c", + "1ac1326418b44cef96160767e3831096", + "10a92b00f7014a9e9aedb6574581705d", + "726878209f214f25b7492f2f7a9b2ee6", + "ef73037c897e487d97e2ce89724b60bd", + "32b0fa4dfb5347ebb793431275c8d72d", + "3228aca1d0194c86bdb5f86c6058c72c", + "b2dbeb90af1044808e8848eb030b8766", + "3507db8a8fd34390aa9e15d9105f1d0a", + "b937de3f7db84e74b80e28d6fea6bfc1", + "5c67cb28b3e749ea8e9aeffbbc165468", + "c4a6eb5b48fc46b898e1ac513d3772c7", + "a3a69a28441c468d84871dd17744e7c2", + "b2a9193016534cada856067258345f56", + "56ec8c7bc5294637b5a1a11d3c3767e7", + "7dc2253fac944438817793c45a5bb9ab", + "4b021d221f65417b8628494ae789b701", + "1fbbccba07b14f8e99e761b250d35964", + "d7776768213d415daf2241f0ac1f2187", + "8301b9cb00614b65a81017b21a6985c2", + "f62c9d394bb34fe2b9d127366e921f94", + "f0bf0884100a4ebcb1377fa459de2de3", + "0cbe17f150144c5aaaa0eba198b611c1", + "03142c82be754e08a24d4aa19575d4e5", + "644dcf0d2ff34ee195064d1f89ab057e", + "3c742306b7984844b53084f86e1d010c", + "01861f72c37c498899edf210a74b7e85", + "b799afa71a054a50b72c6de0b54386b5", + "0a8f989898864470bd2916dfe3b60fd5", + "35683985e8d14dfaa4403a1acd7cdae1", + "a3dd2174043f4192bf2a2b3a6341b65d", + "6ff5f4651a0245f6b17faccca91cb9c1", + "dc4b72a79c3245bb9c0b02afbae086dd", + "722265be6b854f978734b3cbf87b18fb", + "1bb372afbb734e2483a58250257a5fd9", + "b7020b71b9c24032b00fc1821bf82228", + "0a6244614b194f9d9c424d308b65a8a0", + "071cada4af0440bf8116f2bc854ab8c0", + "276fdd8b53714675b36575cc71a3df02", + "8a40b083ab3b4d689294afef37f3d147", + "217a6d792eb54aa78cc638759b00e1c1", + "ad80a83d5abb4b5f923281d3a7d63c24", + "7979764d457849bb94bbdc5505d55d3b", + "aa42716485a14d3683e16307eb6c6e0c", + "382149dd5bcb4624895569c8ac170372", + "3c75a409325d43bea8f6d43279afd9d9", + "3908b6b8d7134dd69473194179da8fea", + "1779c500960a43a5a7ee9bb58dad5207", + "5ed2bd8b3a644fffaa302e77bada2e2e", + "382a319b54f14e4ca09b4170598b75b7", + "da8122dc54ef4a1084ede9392a74db43", + "41f944e91b1740dd928a80e6d0590e3f", + "21a9438874234d018b77b3380329cd07", + "c94b67f0f2124b14bf49866c20b62b8c", + "5e83455db1d048d5ae686cdf729710ef", + "73ae1efa75824e1a989fac364a2b4e09", + "f78f2721fbae44b997386f066db00b29", + "563979534a11436ebee23fe2bb6c8dca", + "3349480e1c644cdf80b58163884ab2f7", + "c858a04e271b412b8f8446e7eb68889b", + "801ced0f3a6c49adab0023d21ab0d4d7", + "9665d42f9d5447b19335f7439fe9b2d5", + "b14d4b1b435d409db1af150bbdf020c1", + "2abd9963b97449b2b0d8ef3e05ef1e3d", + "4dcf5d9d66804b49aaee7fa30767f132", + "ab0a80d6acdf4aafb7e5a57457cbc9d0", + "39fd896e2a264cd78379f08c9add13e9", + "23d21e1a6acb4a718be7c18c5be2c93f", + "715fdf4b1efc46f5907534f68d7fdd92", + "e915104b595a4b74b00d2468be0a587c", + "4d6e4c16e3b14d538594874dea58da6d", + "1ef70d5159ae49f5a80075beeae2fb17", + "c9a1b1a8afa346df8147a04452954835", + "d46a3bffadf64e228ea0aaeff39fe6d1", + "7c47c3e59e9f4fae9a8d61588b9ebe3d", + "0158f2d795a447cbaedc022a212f8105", + "04728a4d860f46b3a26403572dd9106b", + "d9048c4f46094a2e885af9fb06470633", + "8b9d3f9eef254d739a65e6fb087354ab", + "d9912461020141f1af9cad9bfe744af8", + "764e9f8ad0004be8884893947ce8fdb0", + "2bc1f621cf504672a1bd36dea5e1a93e", + "5d4ab4e1171d4c8f823f8e194500d81c", + "7982f63e70f341f3917f05d124ec06cf", + "e5ce5b265b014766876319b383c788b9", + "8e234d1b27e04131af7a2bc31921d8d7", + "68685cb68293451b89d8d9f314d7e644", + "f05997ae6c414c13ad8d9b120f92174c", + "887709ff4cb741f8b347810e21da6382", + "ed6e5f48072f48709c47a6e8e10497ad", + "5997c80b0e56441db8004eeb92fc6012", + "0456360e7c604781bc8fe20cd4865d28", + "93ef5a0fee6f418d90c4dd660d2a0069", + "3a3f098bf41d45c39e85eadae66f807a", + "d9846792be4946a1b6b0498b30fa6e34", + "a071743d438941d7ab0fb454097aeb45", + "a3564e4cab5f45c6b4060c07d6834afd", + "d13d2c418680468eb424ae66d97c3144", + "0301038b0e7446169e2556436e37a8ad", + "719fd442f6f14e58b73b7f8e0d39ae9d", + "e7aaad97570b4d99ac62b0a47e93ac34", + "1d230d9fd3d34f00be74e857f2beda39", + "39fe533e3ae94b7ca0cdffd0200b6a92", + "3d2fe7971efd4ee18ec33361ac5cc031", + "bfa096d185d0485ab0b8b6817e94f86f", + "4a9c1bbdab4244339bf7d3a0b1786569", + "f4e6583d1f3148d3ba2613b696cd71c5", + "a5d84bf775b549ceb4bf09f5f42a5b4c", + "7aaa91cb372d4513b8de20281999e0a9", + "df7a459d5b2d456a814cacd85c07b8d2" + ] + }, + "id": "oVAJOEEOzEA9", + "outputId": "652b44c5-c9e5-4c88-b5ea-cb703be948ed" + }, + "outputs": [], + "source": [ + "model_id = \"meta-llama/Llama-3.2-1B\"\n", + "if os.path.exists('/kaggle'):\n", + " weights_base_dir = '/kaggle/tmp'\n", + "elif os.path.exists('/content'):\n", + " # Colab\n", + " weights_base_dir = '/content'\n", + "else:\n", + " # Local machine\n", + " weights_base_dir = '.'\n", + "\n", + "path_to_model_weights = os.path.join(weights_base_dir, model_id)\n", + "\n", + "snapshot_download(repo_id=model_id, local_dir=path_to_model_weights)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4Xo6QyVR0UkF" + }, + "source": [ + "Then extract the model weights from the safetensors file and store them in the `weights` dict. These weights will be loaded into our JAX model soon." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "pERpzsPS0fLj" + }, + "outputs": [], + "source": [ + "def load_safetensors():\n", + " weights = {}\n", + " safetensors_files = Path(path_to_model_weights).glob('*.safetensors')\n", + "\n", + " for file in safetensors_files:\n", + " with safe_open(file, framework=\"jax\", device=\"cpu\") as f:\n", + " for key in f.keys():\n", + " weights[key] = f.get_tensor(key)\n", + " return weights\n", + "\n", + "weights = load_safetensors()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6ToKOCWIPJl1" + }, + "source": [ + "Note that the weights are stored as `bfloat16`." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vQ7Bmvj70jjA" + }, + "source": [ + "## Define the Flax model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HdHQwfSO1xfY" + }, + "source": [ + "Now we can define the model in Flax.\n", + "\n", + "[This Transformer vs Llama diagram](https://docs.nvidia.com/deeplearning/transformer-engine/user-guide/_images/transformer_vs_llama.svg) from Nvidia visualizes the model architecture pretty nicely. We will define each layer using [Flax's NNX.Module](https://flax.readthedocs.io/en/latest/api_reference/flax.nnx/module.html#flax.nnx.Module).\n", + "\n", + "We will start by defining the RMS normalization layer. Note how we load the parameters from the `weights` dict." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "8Zi7p42-0qya" + }, + "outputs": [], + "source": [ + "class LlamaRMSNorm(nnx.Module):\n", + "\n", + " def __init__(self, name=None, layer_idx=None, rngs=None):\n", + " if name is None and layer_idx is None:\n", + " # Final normalization layer\n", + " self.norm_weights = nnx.Param(weights[\"model.norm.weight\"], rngs=rngs)\n", + " else:\n", + " self.norm_weights = nnx.Param(weights[f\"model.layers.{layer_idx}.{name}.weight\"], rngs=rngs)\n", + "\n", + " def __call__(self, hidden_states):\n", + " input_dtype = hidden_states.dtype\n", + " hidden_states = hidden_states.astype(jnp.float32)\n", + " squared_mean = jnp.mean(jnp.square(hidden_states), axis=-1, keepdims=True)\n", + " hidden_states = hidden_states * jnp.reciprocal(jnp.sqrt(squared_mean + config.norm_eps))\n", + " return self.norm_weights * hidden_states.astype(input_dtype)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8ZecTSm_2SVT" + }, + "source": [ + "Llama 3 uses [Rotary Position Embedding (RoPE)](https://arxiv.org/abs/2104.09864) to encode both token and positional embeddings. For a gentle introduction to RoPE, please refer to the [CMU lecture slides](https://www.cs.cmu.edu/~mgormley/courses/10423-s24//slides/lecture5-vit-ink.pdf) and this awesome [EleutherAI blog](https://blog.eleuther.ai/rotary-embeddings/)." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "ZgrersK60ycn" + }, + "outputs": [], + "source": [ + "class LlamaRotaryEmbedding(nnx.Module):\n", + "\n", + " def __init__(self, dim, base=10000, rngs=None):\n", + " self.dim = dim\n", + " self.base = base\n", + "\n", + " def __call__(self, position_ids):\n", + " inv_freq = 1.0 / (self.base ** (jnp.arange(0, self.dim, 2, dtype=jnp.float32) / self.dim))\n", + " inv_freq_expanded = jnp.expand_dims(inv_freq, axis=(0, 1))\n", + " position_ids_expanded = jnp.expand_dims(position_ids, axis=(0, 2)).astype(jnp.float32)\n", + " freqs = jnp.einsum('bij,bjk->bijk', position_ids_expanded, inv_freq_expanded)\n", + " emb = jnp.concatenate([freqs, freqs], axis=-1)\n", + " cos = jnp.cos(emb).squeeze(2).astype(jnp.bfloat16)\n", + " sin = jnp.sin(emb).squeeze(2).astype(jnp.bfloat16)\n", + " return cos, sin" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8omcCyDO4OdS" + }, + "source": [ + "Now we create the attention layers. Note how we load the weights into the q, k and v projection layers." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "vkPG8ILr0zwg" + }, + "outputs": [], + "source": [ + "class LlamaAttention(nnx.Module):\n", + "\n", + " def __init__(self, layer_idx, rngs=None):\n", + " self.q_proj = nnx.Linear(config.dim, config.n_heads * config.head_dim, use_bias=False, rngs=rngs)\n", + " self.q_proj.kernel.value = weights[f\"model.layers.{layer_idx}.self_attn.q_proj.weight\"].T\n", + " self.k_proj = nnx.Linear(config.dim, config.n_kv_heads * config.head_dim, use_bias=False, rngs=rngs)\n", + " self.k_proj.kernel.value = weights[f\"model.layers.{layer_idx}.self_attn.k_proj.weight\"].T\n", + " self.v_proj = nnx.Linear(config.dim, config.n_kv_heads * config.head_dim, use_bias=False, rngs=rngs)\n", + " self.v_proj.kernel.value = weights[f\"model.layers.{layer_idx}.self_attn.v_proj.weight\"].T\n", + " self.o_proj = nnx.Linear(config.n_heads * config.head_dim, config.dim, use_bias=False, rngs=rngs)\n", + " self.o_proj.kernel.value = weights[f\"model.layers.{layer_idx}.self_attn.o_proj.weight\"].T\n", + " self.rotary_emb = LlamaRotaryEmbedding(config.head_dim, base=config.rope_theta, rngs=rngs)\n", + "\n", + " # Alternative implementation: https://github.com/google/flax/blob/5d896bc1a2c68e2099d147cd2bc18ebb6a46a0bd/examples/gemma/positional_embeddings.py#L45\n", + " def apply_rotary_pos_emb(self, q, k, cos, sin, unsqueeze_dim=1):\n", + " cos = jnp.expand_dims(cos, axis=unsqueeze_dim)\n", + " sin = jnp.expand_dims(sin, axis=unsqueeze_dim)\n", + " q_embed = (q * cos) + (self.rotate_half(q) * sin)\n", + " k_embed = (k * cos) + (self.rotate_half(k) * sin)\n", + " return q_embed, k_embed\n", + "\n", + " def rotate_half(self, x):\n", + " x1 = x[..., : x.shape[-1] // 2]\n", + " x2 = x[..., x.shape[-1] // 2 :]\n", + " return jnp.concatenate([-x2, x1], axis=-1)\n", + "\n", + " def repeat_kv(self, hidden_states, n_repeat):\n", + " batch, n_kv_heads, seq_len, head_dim = hidden_states.shape\n", + " if n_repeat == 1:\n", + " return hidden_states\n", + " hidden_states = hidden_states[:, :, None, :, :].repeat(n_repeat, axis=2)\n", + " return hidden_states.reshape(batch, n_kv_heads * n_repeat, seq_len, head_dim)\n", + "\n", + " def __call__(self, x, position_ids):\n", + " batch_size, seq_len, _ = x.shape\n", + " query = self.q_proj(x).reshape(batch_size, seq_len, config.n_heads, config.head_dim).transpose((0, 2, 1, 3))\n", + " key = self.k_proj(x).reshape(batch_size, seq_len, config.n_kv_heads, config.head_dim).transpose((0, 2, 1, 3))\n", + " value = self.v_proj(x).reshape(batch_size, seq_len, config.n_kv_heads, config.head_dim).transpose((0, 2, 1, 3))\n", + " # Assuming batch_size=1\n", + " cos, sin = self.rotary_emb(position_ids[0])\n", + " query, key = self.apply_rotary_pos_emb(query, key, cos, sin)\n", + "\n", + " key = self.repeat_kv(key, config.n_heads // config.n_kv_heads)\n", + " value = self.repeat_kv(value, config.n_heads // config.n_kv_heads)\n", + "\n", + " attn_weights = jnp.matmul(query, jnp.transpose(key, (0, 1, 3, 2)))\n", + " attn_weights = (attn_weights.astype(jnp.float32) / jnp.sqrt(config.head_dim)).astype(jnp.bfloat16)\n", + " attn_weights = jax.nn.softmax(attn_weights.astype(jnp.float32), axis=-1).astype(jnp.bfloat16)\n", + " attn_output = jnp.matmul(attn_weights, value).transpose((0, 2, 1, 3)).reshape(batch_size, seq_len, -1)\n", + " output = self.o_proj(attn_output)\n", + " return output" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "J0hDkS4N3yor" + }, + "source": [ + "MLP layer follows the attention layer. Similarly we load the weights into the gate, up and down projection layers." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "id": "y5qP9b82047Y" + }, + "outputs": [], + "source": [ + "class LlamaMLP(nnx.Module):\n", + "\n", + " def __init__(self, layer_idx, rngs=None):\n", + " self.gate_proj = nnx.Linear(config.dim, config.intermediate_size, use_bias=False, rngs=rngs)\n", + " self.gate_proj.kernel.value = weights[f\"model.layers.{layer_idx}.mlp.gate_proj.weight\"].T\n", + " self.up_proj = nnx.Linear(config.dim, config.intermediate_size, use_bias=False, rngs=rngs)\n", + " self.up_proj.kernel.value = weights[f\"model.layers.{layer_idx}.mlp.up_proj.weight\"].T\n", + " self.down_proj = nnx.Linear(config.intermediate_size, config.dim, use_bias=False, rngs=rngs)\n", + " self.down_proj.kernel.value = weights[f\"model.layers.{layer_idx}.mlp.down_proj.weight\"].T\n", + "\n", + " def __call__(self, x):\n", + " return self.down_proj(jax.nn.silu(self.gate_proj(x)) * self.up_proj(x))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "keogeCxz30Tw" + }, + "source": [ + "We assemble the decoder block." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "dW--6pPv1EQI" + }, + "outputs": [], + "source": [ + "class LlamaTransformerBlock(nnx.Module):\n", + "\n", + " def __init__(self, layer_idx, rngs=None):\n", + " self.input_layernorm = LlamaRMSNorm(name=\"input_layernorm\", layer_idx=layer_idx, rngs=rngs)\n", + " self.attention = LlamaAttention(layer_idx=layer_idx, rngs=rngs)\n", + " self.post_attention_layernorm = LlamaRMSNorm(name=\"post_attention_layernorm\", layer_idx=layer_idx, rngs=rngs)\n", + " self.mlp = LlamaMLP(layer_idx=layer_idx, rngs=rngs)\n", + "\n", + " def __call__(self, x, position_ids):\n", + " residual = x\n", + " x = self.input_layernorm(x)\n", + " x = self.attention(x, position_ids)\n", + " x = residual + x\n", + "\n", + " residual = x\n", + " x = self.post_attention_layernorm(x)\n", + " x = self.mlp(x)\n", + " x = residual + x\n", + " return x" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5mvjJWU54Biz" + }, + "source": [ + "Finally we have the enire model." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "W85ioRay1HYz" + }, + "outputs": [], + "source": [ + "class LlamaForCausalLM(nnx.Module):\n", + "\n", + " def __init__(self, rngs=None):\n", + " self.token_embed = nnx.Embed(num_embeddings=config.vocab_size, features=config.dim, dtype=jnp.bfloat16, rngs=rngs)\n", + " self.token_embed.embedding.value = weights[\"model.embed_tokens.weight\"]\n", + "\n", + " self.layers = [LlamaTransformerBlock(layer_idx=idx, rngs=rngs) for idx in range(config.n_layers)]\n", + " self.lm_head = nnx.Linear(config.dim, config.vocab_size, use_bias=False, rngs=rngs)\n", + " self.lm_head.kernel.value = weights[\"model.embed_tokens.weight\"].T\n", + " self.norm = LlamaRMSNorm(name=None, layer_idx=None, rngs=rngs)\n", + "\n", + " def __call__(self, input_ids, position_ids):\n", + " assert input_ids.shape[0] == 1, \"Only batch size 1 is supported\"\n", + " x = self.token_embed(input_ids)\n", + " for layer in self.layers:\n", + " x = layer(x, position_ids)\n", + " x = self.norm(x)\n", + " logits = self.lm_head(x)\n", + " return logits" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gBfFRlNx1b8Z" + }, + "source": [ + "## Run the Flax model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZWcxgcsI4ESh" + }, + "source": [ + "Let's take it for a spin! We are still going to use the tokenizer from Hugging Face (since our primary focus is re-building the model instead of the tokenizer)." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 391, + "referenced_widgets": [ + "db648ae2225e4b218939567f4a281f0f", + "380c07798cb74ae6be9b2cf685147612", + "702f71d9c479447b808416ae78cc6655", + "12dcaca581244bdd8da549e2f46e673a", + "eee35be4166146fa8dce1e510981d548", + "a3ea606f028a468a90d344e5c7f37350", + "7777b8d4c67143dfbfc0cfaaef7e8590", + "04bffebb0634453f8131067a166da151", + "862950930b404af2b04b99d767a3f720", + "d2a87f06b3ab451eb7a05091853a285f", + "6c5ff424c33a4d0fb4e652903e7dfae6", + "2af63ae9858e4a829c873e6e07ee16fa", + "102504d1910b49f5aaefad9367eeb0a6", + "0524a8c9f6d4430dab46b41c963909e1", + "176ce9bb62224fd9a329bf0c1d5309b3", + "e9601f2f9fb849029cb6a6aeac381e70", + "bab68630e8204fe5a00a1c53942499c3", + "c57de29a1b414584a242e4aed467f395", + "280fe6e6deec40a6a3bb0351b13b3cc5", + "e94bbdd0b8a046a8aa933fd78d5f370b", + "287728ac8e8144cd96e2c758fecbaf69", + "7c97faa07a61453ea7fdb2cad69e07b2", + "d8a684387f654b81bec5036fffd89494", + "7a1e5e604d3645b19d218d03f4cfab1a", + "d419362b5245474594099068513ef888", + "394ca11fa4294e34837de20b1dd9cd9b", + "adc9d4338d8143e79f122d2a5145354b", + "95fda494a07a4966bc3db9444fd39093", + "2d407f3736824068a1f069037b079bc9", + "caf5ea5ffc3d48dc98967ee2560fa6df", + "341da67846ac4a3ba78072b554b4688d", + "47266581f7fb4189bb274c3e11af2a6c", + "216dbc57cb1d4d668468619ae28c1f1c" + ] + }, + "id": "HsQAmr-h1ZYa", + "outputId": "1c4df76f-e505-4664-8976-27631a4731e4" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "db648ae2225e4b218939567f4a281f0f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "tokenizer_config.json: 0%| | 0.00/50.5k [00:00The capital of Japan is Tokyo. Tokyo is the largest city in Japan and the capital of Japan.\n" + ] + } + ], + "source": [ + "model = LlamaForCausalLM(rngs=nnx.Rngs(0))\n", + "\n", + "# We no longer need `weights`\n", + "del weights\n", + "\n", + "tokenizer = AutoTokenizer.from_pretrained(model_id)\n", + "input_text = \"The capital of Japan is\"\n", + "\n", + "input_ids = tokenizer(input_text, return_tensors=\"jax\")[\"input_ids\"]\n", + "position_ids = jnp.asarray([jnp.arange(input_ids.shape[1])])\n", + "\n", + "for _ in range(15):\n", + " logits = model(input_ids, position_ids)\n", + " next_token = jnp.argmax(logits[:, -1, :], axis=-1)\n", + " input_ids = jnp.concatenate([input_ids, next_token[:, None]], axis=1)\n", + " position_ids = jnp.asarray([jnp.arange(input_ids.shape[1])])\n", + " print(f\"Generated token: {next_token[0]}\")\n", + "\n", + "print(tokenizer.decode(input_ids[0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QLAM95pf5RMu" + }, + "source": [ + "There you have it. We have successfully converted the Hugging Face model weights from the safetensors file, loaded them up in our JAX model, and run the model.\n", + "\n", + "For simplicity, we have left out many optimizations (JIT, batch inference, KV cache, accelerators, SPMD and etc.) to speed things up. Feel free to implement them as an exercise." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "id": "40d8e941" + }, + "outputs": [], + "source": [ + "del model\n", + "del tokenizer" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IJfrKpEa7DLb" + }, + "source": [ + "## Convert weights from other frameworks\n", + "\n", + "You can also convert weights from other frameworks. Afer all, weights are just numbers. But note that the tensor names and layouts could be different (this is expected since different frameworks may implement differently), so you may need to adjust your code accordingly.\n", + "\n", + "**Before proceeding, you may need to restart the runtime to release the GPU memory.**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GrzUleJt78Lm" + }, + "source": [ + "### Keras Hub" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kRdNtJj_TlaF" + }, + "source": [ + "We will use Keras Hub to load the Llama 3.2 1B model and extract the weights." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "AoMY1AbX69-Z" + }, + "outputs": [], + "source": [ + "!pip install -Uq keras-hub\n", + "\n", + "import keras_hub\n", + "\n", + "llama_lm = keras_hub.models.Llama3CausalLM.from_preset(\"hf://meta-llama/Llama-3.2-1B\", dtype=\"bfloat16\")\n", + "\n", + "weights_dict = {}\n", + "for layer in llama_lm.backbone.layers:\n", + " weights = layer.get_weights()\n", + " if weights:\n", + " weights_dict[layer.name] = weights" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AD1cA9GcUjR4" + }, + "source": [ + "For example, here are the embeddings. You then need to extract every weight tensor and load them up in JAX like we did for the Hugging Face model." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "jDt2YqTtSyiO", + "outputId": "cbccfa16-10ad-42a3-b7fc-5f355b748530" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[array([[0.0045166, 0.0166016, 0.0209961, ..., -0.00537109, -0.0422363,\n", + " -0.0314941],\n", + " [0.0214844, -0.0238037, 0.0211182, ..., -0.0107422, -0.00106049,\n", + " -0.0373535],\n", + " [0.0136108, 0.010437, 0.0127563, ..., 0.00811768, -0.012207,\n", + " 0.00512695],\n", + " ...,\n", + " [0.000850677, 0.0163574, -0.0192871, ..., -0.000326157,\n", + " -0.00297546, 0.00662231],\n", + " [0.000850677, 0.0163574, -0.0192871, ..., -0.000326157,\n", + " -0.00297546, 0.00662231],\n", + " [0.000850677, 0.0163574, -0.0192871, ..., -0.000326157,\n", + " -0.00297546, 0.00662231]], dtype=bfloat16)]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "weights_dict[\"token_embedding\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "039c5e4a" + }, + "outputs": [], + "source": [ + "del llama_lm\n", + "del weights_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KE-hPLhG8Hrs" + }, + "source": [ + "### PyTorch\n", + "\n", + "When you download the Hugging Face model, the original PyTorch model weights released by Meta are automatically downloaded as well. They are located in the `original` subfolder (another way to access them is to visit [Meta's Llama website](https://www.llama.com/llama-downloads/) and go from there). We can load the weights like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "r5qUM0O-8J4C", + "outputId": "64d6745a-c885-4aff-925e-cb3312ad717c" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":13: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " model_weights = torch.load(os.path.join(path_to_model_weights, \"consolidated.00.pth\"))\n" + ] + } + ], + "source": [ + "import torch\n", + "import os\n", + "\n", + "if os.path.exists('/kaggle'):\n", + " weights_base_dir = '/kaggle/tmp'\n", + "elif os.path.exists('/content'):\n", + " # Colab\n", + " weights_base_dir = '/content'\n", + "else:\n", + " # Local machine\n", + " weights_base_dir = '.'\n", + "path_to_model_weights = os.path.join(weights_base_dir, \"meta-llama/Llama-3.2-1B/original\")\n", + "model_weights = torch.load(os.path.join(path_to_model_weights, \"consolidated.00.pth\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3qBM83yqUaEM" + }, + "source": [ + "For example, here are the embeddings. You then need to extract every weight tensor and load them up in JAX like we did for the Hugging Face model." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CC5DiPvTOWU1", + "outputId": "3cfd96e5-786e-49c7-f082-e2fd2873a21f" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[ 0.0045, 0.0166, 0.0210, ..., -0.0054, -0.0422, -0.0315],\n", + " [ 0.0215, -0.0238, 0.0211, ..., -0.0107, -0.0011, -0.0374],\n", + " [ 0.0136, 0.0104, 0.0128, ..., 0.0081, -0.0122, 0.0051],\n", + " ...,\n", + " [ 0.0009, 0.0164, -0.0193, ..., -0.0003, -0.0030, 0.0066],\n", + " [ 0.0009, 0.0164, -0.0193, ..., -0.0003, -0.0030, 0.0066],\n", + " [ 0.0009, 0.0164, -0.0193, ..., -0.0003, -0.0030, 0.0066]],\n", + " device='cuda:0', dtype=torch.bfloat16)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_weights[\"tok_embeddings.weight\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "0faba2f4" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "jupytext": { + "formats": "ipynb,md:myst" + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "012bbe7b346b47eaa9227581c669975c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1ac1326418b44cef96160767e3831096", + "IPY_MODEL_10a92b00f7014a9e9aedb6574581705d", + "IPY_MODEL_726878209f214f25b7492f2f7a9b2ee6" + ], + "layout": "IPY_MODEL_ef73037c897e487d97e2ce89724b60bd" + } + }, + "0158f2d795a447cbaedc022a212f8105": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "01861f72c37c498899edf210a74b7e85": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "024be3b7d5214124b7d41d76b7a97182": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b43ce79062894691a1bf9886c2b8e6b8", + "placeholder": "​", + "style": "IPY_MODEL_f5437b12aae84e4d9658e6f6c3846a0f", + "value": "README.md: 100%" + } + }, + "025fbb3ad18a4dfeb6db1f394fae4736": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0301038b0e7446169e2556436e37a8ad": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "03142c82be754e08a24d4aa19575d4e5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b799afa71a054a50b72c6de0b54386b5", + "placeholder": "​", + "style": "IPY_MODEL_0a8f989898864470bd2916dfe3b60fd5", + "value": "consolidated.00.pth: 100%" + } + }, + "0456360e7c604781bc8fe20cd4865d28": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d13d2c418680468eb424ae66d97c3144", + "placeholder": "​", + "style": "IPY_MODEL_0301038b0e7446169e2556436e37a8ad", + "value": " 9.09M/9.09M [00:00<00:00, 20.7MB/s]" + } + }, + "04728a4d860f46b3a26403572dd9106b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "04bffebb0634453f8131067a166da151": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0524a8c9f6d4430dab46b41c963909e1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_280fe6e6deec40a6a3bb0351b13b3cc5", + "max": 9085657, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e94bbdd0b8a046a8aa933fd78d5f370b", + "value": 9085657 + } + }, + "06191421335c4de89310c24207b631a6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "065de156ffc04f6c90f6d0acab5cf79d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bd6e501bfc234d1d8a0aeeacb857d6b3", + "max": 13, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c5ffb6869bf242f6b5d62daa94e88700", + "value": 13 + } + }, + "071cada4af0440bf8116f2bc854ab8c0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0a6244614b194f9d9c424d308b65a8a0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7979764d457849bb94bbdc5505d55d3b", + "placeholder": "​", + "style": "IPY_MODEL_aa42716485a14d3683e16307eb6c6e0c", + "value": " 7.71k/7.71k [00:00<00:00, 88.0kB/s]" + } + }, + "0a8f989898864470bd2916dfe3b60fd5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0c35c1a8ac804b1faab2f18088b43c23": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0cbe17f150144c5aaaa0eba198b611c1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_03142c82be754e08a24d4aa19575d4e5", + "IPY_MODEL_644dcf0d2ff34ee195064d1f89ab057e", + "IPY_MODEL_3c742306b7984844b53084f86e1d010c" + ], + "layout": "IPY_MODEL_01861f72c37c498899edf210a74b7e85" + } + }, + "102504d1910b49f5aaefad9367eeb0a6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bab68630e8204fe5a00a1c53942499c3", + "placeholder": "​", + "style": "IPY_MODEL_c57de29a1b414584a242e4aed467f395", + "value": "tokenizer.json: 100%" + } + }, + "10a92b00f7014a9e9aedb6574581705d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b2dbeb90af1044808e8848eb030b8766", + "max": 2471645608, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3507db8a8fd34390aa9e15d9105f1d0a", + "value": 2471645608 + } + }, + "12dcaca581244bdd8da549e2f46e673a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d2a87f06b3ab451eb7a05091853a285f", + "placeholder": "​", + "style": "IPY_MODEL_6c5ff424c33a4d0fb4e652903e7dfae6", + "value": " 50.5k/50.5k [00:00<00:00, 3.94MB/s]" + } + }, + "176ce9bb62224fd9a329bf0c1d5309b3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_287728ac8e8144cd96e2c758fecbaf69", + "placeholder": "​", + "style": "IPY_MODEL_7c97faa07a61453ea7fdb2cad69e07b2", + "value": " 9.09M/9.09M [00:00<00:00, 11.2MB/s]" + } + }, + "1779c500960a43a5a7ee9bb58dad5207": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c94b67f0f2124b14bf49866c20b62b8c", + "placeholder": "​", + "style": "IPY_MODEL_5e83455db1d048d5ae686cdf729710ef", + "value": " 843/843 [00:00<00:00, 14.6kB/s]" + } + }, + "1ac1326418b44cef96160767e3831096": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_32b0fa4dfb5347ebb793431275c8d72d", + "placeholder": "​", + "style": "IPY_MODEL_3228aca1d0194c86bdb5f86c6058c72c", + "value": "model.safetensors: 100%" + } + }, + "1bb372afbb734e2483a58250257a5fd9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_276fdd8b53714675b36575cc71a3df02", + "placeholder": "​", + "style": "IPY_MODEL_8a40b083ab3b4d689294afef37f3d147", + "value": "LICENSE.txt: 100%" + } + }, + "1d230d9fd3d34f00be74e857f2beda39": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f4e6583d1f3148d3ba2613b696cd71c5", + "max": 50500, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a5d84bf775b549ceb4bf09f5f42a5b4c", + "value": 50500 + } + }, + "1ef70d5159ae49f5a80075beeae2fb17": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1fbbccba07b14f8e99e761b250d35964": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "216dbc57cb1d4d668468619ae28c1f1c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "217a6d792eb54aa78cc638759b00e1c1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "21a9438874234d018b77b3380329cd07": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "237d55df9c6c49b8bbb89bbf76eb1eb0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_72cd64d2d0c3464b80f19e669d021504", + "max": 1519, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3f48608bb20e44e59a87dc7249e8d147", + "value": 1519 + } + }, + "23d21e1a6acb4a718be7c18c5be2c93f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1ef70d5159ae49f5a80075beeae2fb17", + "placeholder": "​", + "style": "IPY_MODEL_c9a1b1a8afa346df8147a04452954835", + "value": "tokenizer.model: 100%" + } + }, + "276fdd8b53714675b36575cc71a3df02": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "280fe6e6deec40a6a3bb0351b13b3cc5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "287728ac8e8144cd96e2c758fecbaf69": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2abd9963b97449b2b0d8ef3e05ef1e3d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2af63ae9858e4a829c873e6e07ee16fa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_102504d1910b49f5aaefad9367eeb0a6", + "IPY_MODEL_0524a8c9f6d4430dab46b41c963909e1", + "IPY_MODEL_176ce9bb62224fd9a329bf0c1d5309b3" + ], + "layout": "IPY_MODEL_e9601f2f9fb849029cb6a6aeac381e70" + } + }, + "2b231602bb554268b099b2baa14511cf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_06191421335c4de89310c24207b631a6", + "placeholder": "​", + "style": "IPY_MODEL_2d0083b45f8247069bd72d9066e987a0", + "value": " 41.2k/41.2k [00:00<00:00, 505kB/s]" + } + }, + "2bc1f621cf504672a1bd36dea5e1a93e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2d0083b45f8247069bd72d9066e987a0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2d407f3736824068a1f069037b079bc9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3228aca1d0194c86bdb5f86c6058c72c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "32b0fa4dfb5347ebb793431275c8d72d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3349480e1c644cdf80b58163884ab2f7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4dcf5d9d66804b49aaee7fa30767f132", + "placeholder": "​", + "style": "IPY_MODEL_ab0a80d6acdf4aafb7e5a57457cbc9d0", + "value": " 220/220 [00:00<00:00, 8.85kB/s]" + } + }, + "341da67846ac4a3ba78072b554b4688d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3507db8a8fd34390aa9e15d9105f1d0a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "35683985e8d14dfaa4403a1acd7cdae1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "380c07798cb74ae6be9b2cf685147612": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a3ea606f028a468a90d344e5c7f37350", + "placeholder": "​", + "style": "IPY_MODEL_7777b8d4c67143dfbfc0cfaaef7e8590", + "value": "tokenizer_config.json: 100%" + } + }, + "382149dd5bcb4624895569c8ac170372": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_3c75a409325d43bea8f6d43279afd9d9", + "IPY_MODEL_3908b6b8d7134dd69473194179da8fea", + "IPY_MODEL_1779c500960a43a5a7ee9bb58dad5207" + ], + "layout": "IPY_MODEL_5ed2bd8b3a644fffaa302e77bada2e2e" + } + }, + "382a319b54f14e4ca09b4170598b75b7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3908b6b8d7134dd69473194179da8fea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_41f944e91b1740dd928a80e6d0590e3f", + "max": 843, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_21a9438874234d018b77b3380329cd07", + "value": 843 + } + }, + "394ca11fa4294e34837de20b1dd9cd9b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_47266581f7fb4189bb274c3e11af2a6c", + "placeholder": "​", + "style": "IPY_MODEL_216dbc57cb1d4d668468619ae28c1f1c", + "value": " 301/301 [00:00<00:00, 16.3kB/s]" + } + }, + "39fd896e2a264cd78379f08c9add13e9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_23d21e1a6acb4a718be7c18c5be2c93f", + "IPY_MODEL_715fdf4b1efc46f5907534f68d7fdd92", + "IPY_MODEL_e915104b595a4b74b00d2468be0a587c" + ], + "layout": "IPY_MODEL_4d6e4c16e3b14d538594874dea58da6d" + } + }, + "39fe533e3ae94b7ca0cdffd0200b6a92": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7aaa91cb372d4513b8de20281999e0a9", + "placeholder": "​", + "style": "IPY_MODEL_df7a459d5b2d456a814cacd85c07b8d2", + "value": " 50.5k/50.5k [00:00<00:00, 1.07MB/s]" + } + }, + "3a3f098bf41d45c39e85eadae66f807a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3a9bed3445d24beeb69ab9402dc34d13": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d5205f2eb06e45a894c3ca20f4261fab", + "placeholder": "​", + "style": "IPY_MODEL_520359af946a4032a9635194db487774", + "value": " 6.02k/6.02k [00:00<00:00, 51.6kB/s]" + } + }, + "3c742306b7984844b53084f86e1d010c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6ff5f4651a0245f6b17faccca91cb9c1", + "placeholder": "​", + "style": "IPY_MODEL_dc4b72a79c3245bb9c0b02afbae086dd", + "value": " 2.47G/2.47G [01:09<00:00, 14.1MB/s]" + } + }, + "3c75a409325d43bea8f6d43279afd9d9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_382a319b54f14e4ca09b4170598b75b7", + "placeholder": "​", + "style": "IPY_MODEL_da8122dc54ef4a1084ede9392a74db43", + "value": "config.json: 100%" + } + }, + "3d2fe7971efd4ee18ec33361ac5cc031": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3f48608bb20e44e59a87dc7249e8d147": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "41f944e91b1740dd928a80e6d0590e3f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "47266581f7fb4189bb274c3e11af2a6c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4a9c1bbdab4244339bf7d3a0b1786569": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4ac2e640b7964f47b6d017e4159eaf3a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4b021d221f65417b8628494ae789b701": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4d6e4c16e3b14d538594874dea58da6d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4dcf5d9d66804b49aaee7fa30767f132": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "520359af946a4032a9635194db487774": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "55359e5ff8f7468a88cc5241b233a5cf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "563979534a11436ebee23fe2bb6c8dca": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b14d4b1b435d409db1af150bbdf020c1", + "max": 220, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2abd9963b97449b2b0d8ef3e05ef1e3d", + "value": 220 + } + }, + "56d3affb3f564c9d8f5269311ad8c9a0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "56ec8c7bc5294637b5a1a11d3c3767e7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f62c9d394bb34fe2b9d127366e921f94", + "placeholder": "​", + "style": "IPY_MODEL_f0bf0884100a4ebcb1377fa459de2de3", + "value": " 185/185 [00:00<00:00, 6.78kB/s]" + } + }, + "5946811b94d3457dbe4dc2346cae03db": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5997c80b0e56441db8004eeb92fc6012": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a071743d438941d7ab0fb454097aeb45", + "max": 9085657, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a3564e4cab5f45c6b4060c07d6834afd", + "value": 9085657 + } + }, + "5c67cb28b3e749ea8e9aeffbbc165468": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5d4ab4e1171d4c8f823f8e194500d81c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5e83455db1d048d5ae686cdf729710ef": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5eb8545b4db54496add70dcf4357e0f3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5ed2bd8b3a644fffaa302e77bada2e2e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "644dcf0d2ff34ee195064d1f89ab057e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_35683985e8d14dfaa4403a1acd7cdae1", + "max": 2471677246, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a3dd2174043f4192bf2a2b3a6341b65d", + "value": 2471677246 + } + }, + "65bd947bb2e64a6783efd9b18a6f22d6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_025fbb3ad18a4dfeb6db1f394fae4736", + "placeholder": "​", + "style": "IPY_MODEL_911317598fa4427db665316e8db46b1f", + "value": " 1.52k/1.52k [00:00<00:00, 40.1kB/s]" + } + }, + "68685cb68293451b89d8d9f314d7e644": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6c5ff424c33a4d0fb4e652903e7dfae6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6ff5f4651a0245f6b17faccca91cb9c1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "700d269b34e64f85a7e111c61f0a3b7e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_74788132cad749719f76ab3972a899ed", + "IPY_MODEL_79549aac63d7460296593a3e3ce7f09b", + "IPY_MODEL_3a9bed3445d24beeb69ab9402dc34d13" + ], + "layout": "IPY_MODEL_85bed253cdd9456e83bb8b33e54aab9e" + } + }, + "702f71d9c479447b808416ae78cc6655": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_04bffebb0634453f8131067a166da151", + "max": 50500, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_862950930b404af2b04b99d767a3f720", + "value": 50500 + } + }, + "715fdf4b1efc46f5907534f68d7fdd92": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d46a3bffadf64e228ea0aaeff39fe6d1", + "max": 2183982, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7c47c3e59e9f4fae9a8d61588b9ebe3d", + "value": 2183982 + } + }, + "719fd442f6f14e58b73b7f8e0d39ae9d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e7aaad97570b4d99ac62b0a47e93ac34", + "IPY_MODEL_1d230d9fd3d34f00be74e857f2beda39", + "IPY_MODEL_39fe533e3ae94b7ca0cdffd0200b6a92" + ], + "layout": "IPY_MODEL_3d2fe7971efd4ee18ec33361ac5cc031" + } + }, + "722265be6b854f978734b3cbf87b18fb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1bb372afbb734e2483a58250257a5fd9", + "IPY_MODEL_b7020b71b9c24032b00fc1821bf82228", + "IPY_MODEL_0a6244614b194f9d9c424d308b65a8a0" + ], + "layout": "IPY_MODEL_071cada4af0440bf8116f2bc854ab8c0" + } + }, + "726878209f214f25b7492f2f7a9b2ee6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b937de3f7db84e74b80e28d6fea6bfc1", + "placeholder": "​", + "style": "IPY_MODEL_5c67cb28b3e749ea8e9aeffbbc165468", + "value": " 2.47G/2.47G [01:09<00:00, 10.4MB/s]" + } + }, + "72cd64d2d0c3464b80f19e669d021504": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "73ae1efa75824e1a989fac364a2b4e09": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f78f2721fbae44b997386f066db00b29", + "IPY_MODEL_563979534a11436ebee23fe2bb6c8dca", + "IPY_MODEL_3349480e1c644cdf80b58163884ab2f7" + ], + "layout": "IPY_MODEL_c858a04e271b412b8f8446e7eb68889b" + } + }, + "74788132cad749719f76ab3972a899ed": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_99d44ee67bad499b9bc2a00a28c34bc3", + "placeholder": "​", + "style": "IPY_MODEL_0c35c1a8ac804b1faab2f18088b43c23", + "value": "USE_POLICY.md: 100%" + } + }, + "764e9f8ad0004be8884893947ce8fdb0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_68685cb68293451b89d8d9f314d7e644", + "placeholder": "​", + "style": "IPY_MODEL_f05997ae6c414c13ad8d9b120f92174c", + "value": " 301/301 [00:00<00:00, 5.65kB/s]" + } + }, + "7777b8d4c67143dfbfc0cfaaef7e8590": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "79549aac63d7460296593a3e3ce7f09b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4ac2e640b7964f47b6d017e4159eaf3a", + "max": 6021, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c15cfdc0727d471b9a5a218f12c26d02", + "value": 6021 + } + }, + "7979764d457849bb94bbdc5505d55d3b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7982f63e70f341f3917f05d124ec06cf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7a1e5e604d3645b19d218d03f4cfab1a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_95fda494a07a4966bc3db9444fd39093", + "placeholder": "​", + "style": "IPY_MODEL_2d407f3736824068a1f069037b079bc9", + "value": "special_tokens_map.json: 100%" + } + }, + "7aaa91cb372d4513b8de20281999e0a9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7bff39f20c8d47d896e67d0c12d3876a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f941be815cd2460084bd06ed8512cdf3", + "placeholder": "​", + "style": "IPY_MODEL_5946811b94d3457dbe4dc2346cae03db", + "value": "Fetching 13 files: 100%" + } + }, + "7c47c3e59e9f4fae9a8d61588b9ebe3d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7c97faa07a61453ea7fdb2cad69e07b2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7dc2253fac944438817793c45a5bb9ab": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "801ced0f3a6c49adab0023d21ab0d4d7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8301b9cb00614b65a81017b21a6985c2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "85bed253cdd9456e83bb8b33e54aab9e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "862950930b404af2b04b99d767a3f720": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "887709ff4cb741f8b347810e21da6382": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ed6e5f48072f48709c47a6e8e10497ad", + "IPY_MODEL_5997c80b0e56441db8004eeb92fc6012", + "IPY_MODEL_0456360e7c604781bc8fe20cd4865d28" + ], + "layout": "IPY_MODEL_93ef5a0fee6f418d90c4dd660d2a0069" + } + }, + "8a40b083ab3b4d689294afef37f3d147": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8b9d3f9eef254d739a65e6fb087354ab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5d4ab4e1171d4c8f823f8e194500d81c", + "placeholder": "​", + "style": "IPY_MODEL_7982f63e70f341f3917f05d124ec06cf", + "value": "special_tokens_map.json: 100%" + } + }, + "8c7b08d959d2470f9e7a46d81eb0ebea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8e234d1b27e04131af7a2bc31921d8d7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "911317598fa4427db665316e8db46b1f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "93ef5a0fee6f418d90c4dd660d2a0069": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "95fda494a07a4966bc3db9444fd39093": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9665d42f9d5447b19335f7439fe9b2d5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "99d44ee67bad499b9bc2a00a28c34bc3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a071743d438941d7ab0fb454097aeb45": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a3564e4cab5f45c6b4060c07d6834afd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "a3a69a28441c468d84871dd17744e7c2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4b021d221f65417b8628494ae789b701", + "placeholder": "​", + "style": "IPY_MODEL_1fbbccba07b14f8e99e761b250d35964", + "value": "generation_config.json: 100%" + } + }, + "a3dd2174043f4192bf2a2b3a6341b65d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "a3ea606f028a468a90d344e5c7f37350": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a5d84bf775b549ceb4bf09f5f42a5b4c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "aa42716485a14d3683e16307eb6c6e0c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ab0a80d6acdf4aafb7e5a57457cbc9d0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ad80a83d5abb4b5f923281d3a7d63c24": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "adc9d4338d8143e79f122d2a5145354b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b14d4b1b435d409db1af150bbdf020c1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b1755ba29f8741088c20fb681b681c00": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b2a9193016534cada856067258345f56": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d7776768213d415daf2241f0ac1f2187", + "max": 185, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8301b9cb00614b65a81017b21a6985c2", + "value": 185 + } + }, + "b2dbeb90af1044808e8848eb030b8766": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b3680e93364d4dd7a95ce078c947bf5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b43ce79062894691a1bf9886c2b8e6b8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b7020b71b9c24032b00fc1821bf82228": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_217a6d792eb54aa78cc638759b00e1c1", + "max": 7712, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ad80a83d5abb4b5f923281d3a7d63c24", + "value": 7712 + } + }, + "b799afa71a054a50b72c6de0b54386b5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b8000a8b6aa54446af809ad5cc7f019d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_024be3b7d5214124b7d41d76b7a97182", + "IPY_MODEL_d99c871aadde47af8449f3431ba7a886", + "IPY_MODEL_2b231602bb554268b099b2baa14511cf" + ], + "layout": "IPY_MODEL_b1755ba29f8741088c20fb681b681c00" + } + }, + "b937de3f7db84e74b80e28d6fea6bfc1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bab68630e8204fe5a00a1c53942499c3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bb75a58ea37f470aadfd36471f6f2d54": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c79d201995224a359485b65fb2d4ac3d", + "IPY_MODEL_237d55df9c6c49b8bbb89bbf76eb1eb0", + "IPY_MODEL_65bd947bb2e64a6783efd9b18a6f22d6" + ], + "layout": "IPY_MODEL_56d3affb3f564c9d8f5269311ad8c9a0" + } + }, + "bd6e501bfc234d1d8a0aeeacb857d6b3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bfa096d185d0485ab0b8b6817e94f86f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c15cfdc0727d471b9a5a218f12c26d02": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c4a6eb5b48fc46b898e1ac513d3772c7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a3a69a28441c468d84871dd17744e7c2", + "IPY_MODEL_b2a9193016534cada856067258345f56", + "IPY_MODEL_56ec8c7bc5294637b5a1a11d3c3767e7" + ], + "layout": "IPY_MODEL_7dc2253fac944438817793c45a5bb9ab" + } + }, + "c57de29a1b414584a242e4aed467f395": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c5ffb6869bf242f6b5d62daa94e88700": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c79d201995224a359485b65fb2d4ac3d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_55359e5ff8f7468a88cc5241b233a5cf", + "placeholder": "​", + "style": "IPY_MODEL_d2d62d19e9ef459b8694fa8fc04f7670", + "value": ".gitattributes: 100%" + } + }, + "c858a04e271b412b8f8446e7eb68889b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c94b67f0f2124b14bf49866c20b62b8c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9a1b1a8afa346df8147a04452954835": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "caf5ea5ffc3d48dc98967ee2560fa6df": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d13d2c418680468eb424ae66d97c3144": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d2a87f06b3ab451eb7a05091853a285f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d2d62d19e9ef459b8694fa8fc04f7670": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d37fbf370c144435bc81fc67d1e9ae20": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d419362b5245474594099068513ef888": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_caf5ea5ffc3d48dc98967ee2560fa6df", + "max": 301, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_341da67846ac4a3ba78072b554b4688d", + "value": 301 + } + }, + "d46a3bffadf64e228ea0aaeff39fe6d1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d5205f2eb06e45a894c3ca20f4261fab": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d7776768213d415daf2241f0ac1f2187": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d8a684387f654b81bec5036fffd89494": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7a1e5e604d3645b19d218d03f4cfab1a", + "IPY_MODEL_d419362b5245474594099068513ef888", + "IPY_MODEL_394ca11fa4294e34837de20b1dd9cd9b" + ], + "layout": "IPY_MODEL_adc9d4338d8143e79f122d2a5145354b" + } + }, + "d9048c4f46094a2e885af9fb06470633": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8b9d3f9eef254d739a65e6fb087354ab", + "IPY_MODEL_d9912461020141f1af9cad9bfe744af8", + "IPY_MODEL_764e9f8ad0004be8884893947ce8fdb0" + ], + "layout": "IPY_MODEL_2bc1f621cf504672a1bd36dea5e1a93e" + } + }, + "d9846792be4946a1b6b0498b30fa6e34": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d9912461020141f1af9cad9bfe744af8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e5ce5b265b014766876319b383c788b9", + "max": 301, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8e234d1b27e04131af7a2bc31921d8d7", + "value": 301 + } + }, + "d99c871aadde47af8449f3431ba7a886": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5eb8545b4db54496add70dcf4357e0f3", + "max": 41239, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8c7b08d959d2470f9e7a46d81eb0ebea", + "value": 41239 + } + }, + "da8122dc54ef4a1084ede9392a74db43": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "db648ae2225e4b218939567f4a281f0f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_380c07798cb74ae6be9b2cf685147612", + "IPY_MODEL_702f71d9c479447b808416ae78cc6655", + "IPY_MODEL_12dcaca581244bdd8da549e2f46e673a" + ], + "layout": "IPY_MODEL_eee35be4166146fa8dce1e510981d548" + } + }, + "dc4b72a79c3245bb9c0b02afbae086dd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "df7a459d5b2d456a814cacd85c07b8d2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e368b2711e4f4eaa9208713d4505d4ca": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b3680e93364d4dd7a95ce078c947bf5d", + "placeholder": "​", + "style": "IPY_MODEL_d37fbf370c144435bc81fc67d1e9ae20", + "value": " 13/13 [01:09<00:00,  9.13s/it]" + } + }, + "e5ce5b265b014766876319b383c788b9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e7aaad97570b4d99ac62b0a47e93ac34": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bfa096d185d0485ab0b8b6817e94f86f", + "placeholder": "​", + "style": "IPY_MODEL_4a9c1bbdab4244339bf7d3a0b1786569", + "value": "tokenizer_config.json: 100%" + } + }, + "e915104b595a4b74b00d2468be0a587c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0158f2d795a447cbaedc022a212f8105", + "placeholder": "​", + "style": "IPY_MODEL_04728a4d860f46b3a26403572dd9106b", + "value": " 2.18M/2.18M [00:00<00:00, 9.81MB/s]" + } + }, + "e94bbdd0b8a046a8aa933fd78d5f370b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e9601f2f9fb849029cb6a6aeac381e70": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ed6e5f48072f48709c47a6e8e10497ad": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3a3f098bf41d45c39e85eadae66f807a", + "placeholder": "​", + "style": "IPY_MODEL_d9846792be4946a1b6b0498b30fa6e34", + "value": "tokenizer.json: 100%" + } + }, + "eee35be4166146fa8dce1e510981d548": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ef73037c897e487d97e2ce89724b60bd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f05997ae6c414c13ad8d9b120f92174c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f0bf0884100a4ebcb1377fa459de2de3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f4e6583d1f3148d3ba2613b696cd71c5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f5437b12aae84e4d9658e6f6c3846a0f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f62c9d394bb34fe2b9d127366e921f94": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f78f2721fbae44b997386f066db00b29": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_801ced0f3a6c49adab0023d21ab0d4d7", + "placeholder": "​", + "style": "IPY_MODEL_9665d42f9d5447b19335f7439fe9b2d5", + "value": "original/params.json: 100%" + } + }, + "f941be815cd2460084bd06ed8512cdf3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fa203d94c35b4d3f8d3eb116a27f09f7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fad155559da44fdb88eca53c7336b623": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7bff39f20c8d47d896e67d0c12d3876a", + "IPY_MODEL_065de156ffc04f6c90f6d0acab5cf79d", + "IPY_MODEL_e368b2711e4f4eaa9208713d4505d4ca" + ], + "layout": "IPY_MODEL_fa203d94c35b4d3f8d3eb116a27f09f7" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/source/JAX_porting_HF_model.md b/docs/source/JAX_porting_HF_model.md new file mode 100644 index 0000000..224aac1 --- /dev/null +++ b/docs/source/JAX_porting_HF_model.md @@ -0,0 +1,553 @@ +--- +jupytext: + formats: ipynb,md:myst + text_representation: + extension: .md + format_name: myst + format_version: 0.13 + jupytext_version: 1.16.7 +kernelspec: + display_name: Python 3 + name: python3 +--- + ++++ {"id": "wXMWNV2Rw-wE"} + +# Converting the LLama 3.2 1B model from Hugging Face to JAX + +[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/jax-ml/jax-ai-stack/blob/main/docs/JAX_porting_HF_model.ipynb) + +[![Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://github.com/jax-ml/jax-ai-stack/blob/main/docs/JAX_porting_HF_model.ipynb) + +This tutorial demonstrates to convert Meta's [Llama 3.2 1B model](https://huggingface.co/meta-llama/Llama-3.2-1B) from Hugging Face to a JAX model and run it on T4 GPU. + +You need some familiarity with [Flax](https://flax.readthedocs.io/en/latest/index.html), a library for building Neural Networks in JAX, to follow along. If you are getting started, check out the tutorials on [Getting started with JAX for AI](https://jax-ai-stack.readthedocs.io/en/latest/getting_started_with_jax_for_AI.html#example-a-simple-neural-network-with-flax) and [Flax's MNIST tutorial](https://flax.readthedocs.io/en/latest/mnist_tutorial.html). + ++++ {"id": "Iuq-_y1qyXLF"} + +## Setup + +Let's install the `jax-ai-stack`, we'll use the `jax` and `flax` libraries from the stack in this tutorial. We will also need `huggingface_hub` for downloading model weights and `transformers` for tokenization. + +```{code-cell} +--- +colab: + base_uri: https://localhost:8080/ +id: q5ueiKcIw8Sl +outputId: 79f0281a-3b98-462f-8cc4-9a4450e7124a +--- +!pip install -q jax-ai-stack +!pip install -Uq transformers huggingface_hub +!huggingface-cli login +``` + ++++ {"id": "dLCAc5Wbyl4N"} + +Take care of the imports. + +```{code-cell} +:id: VnGrbnX1yjsQ + +import jax +import jax.numpy as jnp +from flax import nnx +from safetensors import safe_open +from pathlib import Path +import os +from huggingface_hub import snapshot_download +from transformers import AutoTokenizer +from dataclasses import dataclass +``` + ++++ {"id": "7oUeDSNozsF0"} + +## Define the configuration + ++++ {"id": "ZlmwhxkcyD9V"} + +The Hugging Face Transformers library has [some tips for using the Llama3 model](https://huggingface.co/docs/transformers/main/en/model_doc/llama3). For further reference, the modeling code in the transformers library lives in the [`models/llama/modeling_llama.py` file](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llama/modeling_llama.py). + +Before we create the model in JAX, we need to define some parameters. You can refer to the [Llama2 documentation for the configuration options](https://huggingface.co/docs/transformers/main/en/model_doc/llama2#transformers.LlamaConfig). + +```{code-cell} +:id: 9WErwCTtzv7x + +@dataclass +class LlamaConfig: + def __init__(self): + self.dim = 2048 + self.n_layers = 16 + self.n_heads = 32 + self.n_kv_heads = 8 + self.head_dim = self.dim // self.n_heads + self.intermediate_size = 14336 + self.vocab_size = 128256 + self.multiple_of = 256 + self.norm_eps = 1e-05 + self.rope_theta = 500000.0 + +config = LlamaConfig() +``` + ++++ {"id": "mRNFx-eBywHO"} + +## Load the model weights + +We'll use the transformers library to download the model weights. + +Meta requires [acceptance of the license](https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct/discussions/130) before you can access the files. You will also need a Hugging Face access token, please refer to [Hugging Face documentation](https://huggingface.co/docs/hub/en/security-tokens) to set it up. + +```{code-cell} +--- +colab: + base_uri: https://localhost:8080/ + height: 483 + referenced_widgets: [fad155559da44fdb88eca53c7336b623, 7bff39f20c8d47d896e67d0c12d3876a, + 065de156ffc04f6c90f6d0acab5cf79d, e368b2711e4f4eaa9208713d4505d4ca, fa203d94c35b4d3f8d3eb116a27f09f7, + f941be815cd2460084bd06ed8512cdf3, 5946811b94d3457dbe4dc2346cae03db, bd6e501bfc234d1d8a0aeeacb857d6b3, + c5ffb6869bf242f6b5d62daa94e88700, b3680e93364d4dd7a95ce078c947bf5d, d37fbf370c144435bc81fc67d1e9ae20, + bb75a58ea37f470aadfd36471f6f2d54, c79d201995224a359485b65fb2d4ac3d, 237d55df9c6c49b8bbb89bbf76eb1eb0, + 65bd947bb2e64a6783efd9b18a6f22d6, 56d3affb3f564c9d8f5269311ad8c9a0, 55359e5ff8f7468a88cc5241b233a5cf, + d2d62d19e9ef459b8694fa8fc04f7670, 72cd64d2d0c3464b80f19e669d021504, 3f48608bb20e44e59a87dc7249e8d147, + 025fbb3ad18a4dfeb6db1f394fae4736, 911317598fa4427db665316e8db46b1f, b8000a8b6aa54446af809ad5cc7f019d, + 024be3b7d5214124b7d41d76b7a97182, d99c871aadde47af8449f3431ba7a886, 2b231602bb554268b099b2baa14511cf, + b1755ba29f8741088c20fb681b681c00, b43ce79062894691a1bf9886c2b8e6b8, f5437b12aae84e4d9658e6f6c3846a0f, + 5eb8545b4db54496add70dcf4357e0f3, 8c7b08d959d2470f9e7a46d81eb0ebea, 06191421335c4de89310c24207b631a6, + 2d0083b45f8247069bd72d9066e987a0, 700d269b34e64f85a7e111c61f0a3b7e, 74788132cad749719f76ab3972a899ed, + 79549aac63d7460296593a3e3ce7f09b, 3a9bed3445d24beeb69ab9402dc34d13, 85bed253cdd9456e83bb8b33e54aab9e, + 99d44ee67bad499b9bc2a00a28c34bc3, 0c35c1a8ac804b1faab2f18088b43c23, 4ac2e640b7964f47b6d017e4159eaf3a, + c15cfdc0727d471b9a5a218f12c26d02, d5205f2eb06e45a894c3ca20f4261fab, 520359af946a4032a9635194db487774, + 012bbe7b346b47eaa9227581c669975c, 1ac1326418b44cef96160767e3831096, 10a92b00f7014a9e9aedb6574581705d, + 726878209f214f25b7492f2f7a9b2ee6, ef73037c897e487d97e2ce89724b60bd, 32b0fa4dfb5347ebb793431275c8d72d, + 3228aca1d0194c86bdb5f86c6058c72c, b2dbeb90af1044808e8848eb030b8766, 3507db8a8fd34390aa9e15d9105f1d0a, + b937de3f7db84e74b80e28d6fea6bfc1, 5c67cb28b3e749ea8e9aeffbbc165468, c4a6eb5b48fc46b898e1ac513d3772c7, + a3a69a28441c468d84871dd17744e7c2, b2a9193016534cada856067258345f56, 56ec8c7bc5294637b5a1a11d3c3767e7, + 7dc2253fac944438817793c45a5bb9ab, 4b021d221f65417b8628494ae789b701, 1fbbccba07b14f8e99e761b250d35964, + d7776768213d415daf2241f0ac1f2187, 8301b9cb00614b65a81017b21a6985c2, f62c9d394bb34fe2b9d127366e921f94, + f0bf0884100a4ebcb1377fa459de2de3, 0cbe17f150144c5aaaa0eba198b611c1, 03142c82be754e08a24d4aa19575d4e5, + 644dcf0d2ff34ee195064d1f89ab057e, 3c742306b7984844b53084f86e1d010c, 01861f72c37c498899edf210a74b7e85, + b799afa71a054a50b72c6de0b54386b5, 0a8f989898864470bd2916dfe3b60fd5, 35683985e8d14dfaa4403a1acd7cdae1, + a3dd2174043f4192bf2a2b3a6341b65d, 6ff5f4651a0245f6b17faccca91cb9c1, dc4b72a79c3245bb9c0b02afbae086dd, + 722265be6b854f978734b3cbf87b18fb, 1bb372afbb734e2483a58250257a5fd9, b7020b71b9c24032b00fc1821bf82228, + 0a6244614b194f9d9c424d308b65a8a0, 071cada4af0440bf8116f2bc854ab8c0, 276fdd8b53714675b36575cc71a3df02, + 8a40b083ab3b4d689294afef37f3d147, 217a6d792eb54aa78cc638759b00e1c1, ad80a83d5abb4b5f923281d3a7d63c24, + 7979764d457849bb94bbdc5505d55d3b, aa42716485a14d3683e16307eb6c6e0c, 382149dd5bcb4624895569c8ac170372, + 3c75a409325d43bea8f6d43279afd9d9, 3908b6b8d7134dd69473194179da8fea, 1779c500960a43a5a7ee9bb58dad5207, + 5ed2bd8b3a644fffaa302e77bada2e2e, 382a319b54f14e4ca09b4170598b75b7, da8122dc54ef4a1084ede9392a74db43, + 41f944e91b1740dd928a80e6d0590e3f, 21a9438874234d018b77b3380329cd07, c94b67f0f2124b14bf49866c20b62b8c, + 5e83455db1d048d5ae686cdf729710ef, 73ae1efa75824e1a989fac364a2b4e09, f78f2721fbae44b997386f066db00b29, + 563979534a11436ebee23fe2bb6c8dca, 3349480e1c644cdf80b58163884ab2f7, c858a04e271b412b8f8446e7eb68889b, + 801ced0f3a6c49adab0023d21ab0d4d7, 9665d42f9d5447b19335f7439fe9b2d5, b14d4b1b435d409db1af150bbdf020c1, + 2abd9963b97449b2b0d8ef3e05ef1e3d, 4dcf5d9d66804b49aaee7fa30767f132, ab0a80d6acdf4aafb7e5a57457cbc9d0, + 39fd896e2a264cd78379f08c9add13e9, 23d21e1a6acb4a718be7c18c5be2c93f, 715fdf4b1efc46f5907534f68d7fdd92, + e915104b595a4b74b00d2468be0a587c, 4d6e4c16e3b14d538594874dea58da6d, 1ef70d5159ae49f5a80075beeae2fb17, + c9a1b1a8afa346df8147a04452954835, d46a3bffadf64e228ea0aaeff39fe6d1, 7c47c3e59e9f4fae9a8d61588b9ebe3d, + 0158f2d795a447cbaedc022a212f8105, 04728a4d860f46b3a26403572dd9106b, d9048c4f46094a2e885af9fb06470633, + 8b9d3f9eef254d739a65e6fb087354ab, d9912461020141f1af9cad9bfe744af8, 764e9f8ad0004be8884893947ce8fdb0, + 2bc1f621cf504672a1bd36dea5e1a93e, 5d4ab4e1171d4c8f823f8e194500d81c, 7982f63e70f341f3917f05d124ec06cf, + e5ce5b265b014766876319b383c788b9, 8e234d1b27e04131af7a2bc31921d8d7, 68685cb68293451b89d8d9f314d7e644, + f05997ae6c414c13ad8d9b120f92174c, 887709ff4cb741f8b347810e21da6382, ed6e5f48072f48709c47a6e8e10497ad, + 5997c80b0e56441db8004eeb92fc6012, 0456360e7c604781bc8fe20cd4865d28, 93ef5a0fee6f418d90c4dd660d2a0069, + 3a3f098bf41d45c39e85eadae66f807a, d9846792be4946a1b6b0498b30fa6e34, a071743d438941d7ab0fb454097aeb45, + a3564e4cab5f45c6b4060c07d6834afd, d13d2c418680468eb424ae66d97c3144, 0301038b0e7446169e2556436e37a8ad, + 719fd442f6f14e58b73b7f8e0d39ae9d, e7aaad97570b4d99ac62b0a47e93ac34, 1d230d9fd3d34f00be74e857f2beda39, + 39fe533e3ae94b7ca0cdffd0200b6a92, 3d2fe7971efd4ee18ec33361ac5cc031, bfa096d185d0485ab0b8b6817e94f86f, + 4a9c1bbdab4244339bf7d3a0b1786569, f4e6583d1f3148d3ba2613b696cd71c5, a5d84bf775b549ceb4bf09f5f42a5b4c, + 7aaa91cb372d4513b8de20281999e0a9, df7a459d5b2d456a814cacd85c07b8d2] +id: oVAJOEEOzEA9 +outputId: 652b44c5-c9e5-4c88-b5ea-cb703be948ed +--- +model_id = "meta-llama/Llama-3.2-1B" +if os.path.exists('/kaggle'): + weights_base_dir = '/kaggle/tmp' +elif os.path.exists('/content'): + # Colab + weights_base_dir = '/content' +else: + # Local machine + weights_base_dir = '.' + +path_to_model_weights = os.path.join(weights_base_dir, model_id) + +snapshot_download(repo_id=model_id, local_dir=path_to_model_weights) +``` + ++++ {"id": "4Xo6QyVR0UkF"} + +Then extract the model weights from the safetensors file and store them in the `weights` dict. These weights will be loaded into our JAX model soon. + +```{code-cell} +:id: pERpzsPS0fLj + +def load_safetensors(): + weights = {} + safetensors_files = Path(path_to_model_weights).glob('*.safetensors') + + for file in safetensors_files: + with safe_open(file, framework="jax", device="cpu") as f: + for key in f.keys(): + weights[key] = f.get_tensor(key) + return weights + +weights = load_safetensors() +``` + ++++ {"id": "6ToKOCWIPJl1"} + +Note that the weights are stored as `bfloat16`. + ++++ {"id": "vQ7Bmvj70jjA"} + +## Define the Flax model + ++++ {"id": "HdHQwfSO1xfY"} + +Now we can define the model in Flax. + +[This Transformer vs Llama diagram](https://docs.nvidia.com/deeplearning/transformer-engine/user-guide/_images/transformer_vs_llama.svg) from Nvidia visualizes the model architecture pretty nicely. We will define each layer using [Flax's NNX.Module](https://flax.readthedocs.io/en/latest/api_reference/flax.nnx/module.html#flax.nnx.Module). + +We will start by defining the RMS normalization layer. Note how we load the parameters from the `weights` dict. + +```{code-cell} +:id: 8Zi7p42-0qya + +class LlamaRMSNorm(nnx.Module): + + def __init__(self, name=None, layer_idx=None, rngs=None): + if name is None and layer_idx is None: + # Final normalization layer + self.norm_weights = nnx.Param(weights["model.norm.weight"], rngs=rngs) + else: + self.norm_weights = nnx.Param(weights[f"model.layers.{layer_idx}.{name}.weight"], rngs=rngs) + + def __call__(self, hidden_states): + input_dtype = hidden_states.dtype + hidden_states = hidden_states.astype(jnp.float32) + squared_mean = jnp.mean(jnp.square(hidden_states), axis=-1, keepdims=True) + hidden_states = hidden_states * jnp.reciprocal(jnp.sqrt(squared_mean + config.norm_eps)) + return self.norm_weights * hidden_states.astype(input_dtype) +``` + ++++ {"id": "8ZecTSm_2SVT"} + +Llama 3 uses [Rotary Position Embedding (RoPE)](https://arxiv.org/abs/2104.09864) to encode both token and positional embeddings. For a gentle introduction to RoPE, please refer to the [CMU lecture slides](https://www.cs.cmu.edu/~mgormley/courses/10423-s24//slides/lecture5-vit-ink.pdf) and this awesome [EleutherAI blog](https://blog.eleuther.ai/rotary-embeddings/). + +```{code-cell} +:id: ZgrersK60ycn + +class LlamaRotaryEmbedding(nnx.Module): + + def __init__(self, dim, base=10000, rngs=None): + self.dim = dim + self.base = base + + def __call__(self, position_ids): + inv_freq = 1.0 / (self.base ** (jnp.arange(0, self.dim, 2, dtype=jnp.float32) / self.dim)) + inv_freq_expanded = jnp.expand_dims(inv_freq, axis=(0, 1)) + position_ids_expanded = jnp.expand_dims(position_ids, axis=(0, 2)).astype(jnp.float32) + freqs = jnp.einsum('bij,bjk->bijk', position_ids_expanded, inv_freq_expanded) + emb = jnp.concatenate([freqs, freqs], axis=-1) + cos = jnp.cos(emb).squeeze(2).astype(jnp.bfloat16) + sin = jnp.sin(emb).squeeze(2).astype(jnp.bfloat16) + return cos, sin +``` + ++++ {"id": "8omcCyDO4OdS"} + +Now we create the attention layers. Note how we load the weights into the q, k and v projection layers. + +```{code-cell} +:id: vkPG8ILr0zwg + +class LlamaAttention(nnx.Module): + + def __init__(self, layer_idx, rngs=None): + self.q_proj = nnx.Linear(config.dim, config.n_heads * config.head_dim, use_bias=False, rngs=rngs) + self.q_proj.kernel.value = weights[f"model.layers.{layer_idx}.self_attn.q_proj.weight"].T + self.k_proj = nnx.Linear(config.dim, config.n_kv_heads * config.head_dim, use_bias=False, rngs=rngs) + self.k_proj.kernel.value = weights[f"model.layers.{layer_idx}.self_attn.k_proj.weight"].T + self.v_proj = nnx.Linear(config.dim, config.n_kv_heads * config.head_dim, use_bias=False, rngs=rngs) + self.v_proj.kernel.value = weights[f"model.layers.{layer_idx}.self_attn.v_proj.weight"].T + self.o_proj = nnx.Linear(config.n_heads * config.head_dim, config.dim, use_bias=False, rngs=rngs) + self.o_proj.kernel.value = weights[f"model.layers.{layer_idx}.self_attn.o_proj.weight"].T + self.rotary_emb = LlamaRotaryEmbedding(config.head_dim, base=config.rope_theta, rngs=rngs) + + # Alternative implementation: https://github.com/google/flax/blob/5d896bc1a2c68e2099d147cd2bc18ebb6a46a0bd/examples/gemma/positional_embeddings.py#L45 + def apply_rotary_pos_emb(self, q, k, cos, sin, unsqueeze_dim=1): + cos = jnp.expand_dims(cos, axis=unsqueeze_dim) + sin = jnp.expand_dims(sin, axis=unsqueeze_dim) + q_embed = (q * cos) + (self.rotate_half(q) * sin) + k_embed = (k * cos) + (self.rotate_half(k) * sin) + return q_embed, k_embed + + def rotate_half(self, x): + x1 = x[..., : x.shape[-1] // 2] + x2 = x[..., x.shape[-1] // 2 :] + return jnp.concatenate([-x2, x1], axis=-1) + + def repeat_kv(self, hidden_states, n_repeat): + batch, n_kv_heads, seq_len, head_dim = hidden_states.shape + if n_repeat == 1: + return hidden_states + hidden_states = hidden_states[:, :, None, :, :].repeat(n_repeat, axis=2) + return hidden_states.reshape(batch, n_kv_heads * n_repeat, seq_len, head_dim) + + def __call__(self, x, position_ids): + batch_size, seq_len, _ = x.shape + query = self.q_proj(x).reshape(batch_size, seq_len, config.n_heads, config.head_dim).transpose((0, 2, 1, 3)) + key = self.k_proj(x).reshape(batch_size, seq_len, config.n_kv_heads, config.head_dim).transpose((0, 2, 1, 3)) + value = self.v_proj(x).reshape(batch_size, seq_len, config.n_kv_heads, config.head_dim).transpose((0, 2, 1, 3)) + # Assuming batch_size=1 + cos, sin = self.rotary_emb(position_ids[0]) + query, key = self.apply_rotary_pos_emb(query, key, cos, sin) + + key = self.repeat_kv(key, config.n_heads // config.n_kv_heads) + value = self.repeat_kv(value, config.n_heads // config.n_kv_heads) + + attn_weights = jnp.matmul(query, jnp.transpose(key, (0, 1, 3, 2))) + attn_weights = (attn_weights.astype(jnp.float32) / jnp.sqrt(config.head_dim)).astype(jnp.bfloat16) + attn_weights = jax.nn.softmax(attn_weights.astype(jnp.float32), axis=-1).astype(jnp.bfloat16) + attn_output = jnp.matmul(attn_weights, value).transpose((0, 2, 1, 3)).reshape(batch_size, seq_len, -1) + output = self.o_proj(attn_output) + return output +``` + ++++ {"id": "J0hDkS4N3yor"} + +MLP layer follows the attention layer. Similarly we load the weights into the gate, up and down projection layers. + +```{code-cell} +:id: y5qP9b82047Y + +class LlamaMLP(nnx.Module): + + def __init__(self, layer_idx, rngs=None): + self.gate_proj = nnx.Linear(config.dim, config.intermediate_size, use_bias=False, rngs=rngs) + self.gate_proj.kernel.value = weights[f"model.layers.{layer_idx}.mlp.gate_proj.weight"].T + self.up_proj = nnx.Linear(config.dim, config.intermediate_size, use_bias=False, rngs=rngs) + self.up_proj.kernel.value = weights[f"model.layers.{layer_idx}.mlp.up_proj.weight"].T + self.down_proj = nnx.Linear(config.intermediate_size, config.dim, use_bias=False, rngs=rngs) + self.down_proj.kernel.value = weights[f"model.layers.{layer_idx}.mlp.down_proj.weight"].T + + def __call__(self, x): + return self.down_proj(jax.nn.silu(self.gate_proj(x)) * self.up_proj(x)) +``` + ++++ {"id": "keogeCxz30Tw"} + +We assemble the decoder block. + +```{code-cell} +:id: dW--6pPv1EQI + +class LlamaTransformerBlock(nnx.Module): + + def __init__(self, layer_idx, rngs=None): + self.input_layernorm = LlamaRMSNorm(name="input_layernorm", layer_idx=layer_idx, rngs=rngs) + self.attention = LlamaAttention(layer_idx=layer_idx, rngs=rngs) + self.post_attention_layernorm = LlamaRMSNorm(name="post_attention_layernorm", layer_idx=layer_idx, rngs=rngs) + self.mlp = LlamaMLP(layer_idx=layer_idx, rngs=rngs) + + def __call__(self, x, position_ids): + residual = x + x = self.input_layernorm(x) + x = self.attention(x, position_ids) + x = residual + x + + residual = x + x = self.post_attention_layernorm(x) + x = self.mlp(x) + x = residual + x + return x +``` + ++++ {"id": "5mvjJWU54Biz"} + +Finally we have the enire model. + +```{code-cell} +:id: W85ioRay1HYz + +class LlamaForCausalLM(nnx.Module): + + def __init__(self, rngs=None): + self.token_embed = nnx.Embed(num_embeddings=config.vocab_size, features=config.dim, dtype=jnp.bfloat16, rngs=rngs) + self.token_embed.embedding.value = weights["model.embed_tokens.weight"] + + self.layers = [LlamaTransformerBlock(layer_idx=idx, rngs=rngs) for idx in range(config.n_layers)] + self.lm_head = nnx.Linear(config.dim, config.vocab_size, use_bias=False, rngs=rngs) + self.lm_head.kernel.value = weights["model.embed_tokens.weight"].T + self.norm = LlamaRMSNorm(name=None, layer_idx=None, rngs=rngs) + + def __call__(self, input_ids, position_ids): + assert input_ids.shape[0] == 1, "Only batch size 1 is supported" + x = self.token_embed(input_ids) + for layer in self.layers: + x = layer(x, position_ids) + x = self.norm(x) + logits = self.lm_head(x) + return logits +``` + ++++ {"id": "gBfFRlNx1b8Z"} + +## Run the Flax model + ++++ {"id": "ZWcxgcsI4ESh"} + +Let's take it for a spin! We are still going to use the tokenizer from Hugging Face (since our primary focus is re-building the model instead of the tokenizer). + +```{code-cell} +--- +colab: + base_uri: https://localhost:8080/ + height: 391 + referenced_widgets: [db648ae2225e4b218939567f4a281f0f, 380c07798cb74ae6be9b2cf685147612, + 702f71d9c479447b808416ae78cc6655, 12dcaca581244bdd8da549e2f46e673a, eee35be4166146fa8dce1e510981d548, + a3ea606f028a468a90d344e5c7f37350, 7777b8d4c67143dfbfc0cfaaef7e8590, 04bffebb0634453f8131067a166da151, + 862950930b404af2b04b99d767a3f720, d2a87f06b3ab451eb7a05091853a285f, 6c5ff424c33a4d0fb4e652903e7dfae6, + 2af63ae9858e4a829c873e6e07ee16fa, 102504d1910b49f5aaefad9367eeb0a6, 0524a8c9f6d4430dab46b41c963909e1, + 176ce9bb62224fd9a329bf0c1d5309b3, e9601f2f9fb849029cb6a6aeac381e70, bab68630e8204fe5a00a1c53942499c3, + c57de29a1b414584a242e4aed467f395, 280fe6e6deec40a6a3bb0351b13b3cc5, e94bbdd0b8a046a8aa933fd78d5f370b, + 287728ac8e8144cd96e2c758fecbaf69, 7c97faa07a61453ea7fdb2cad69e07b2, d8a684387f654b81bec5036fffd89494, + 7a1e5e604d3645b19d218d03f4cfab1a, d419362b5245474594099068513ef888, 394ca11fa4294e34837de20b1dd9cd9b, + adc9d4338d8143e79f122d2a5145354b, 95fda494a07a4966bc3db9444fd39093, 2d407f3736824068a1f069037b079bc9, + caf5ea5ffc3d48dc98967ee2560fa6df, 341da67846ac4a3ba78072b554b4688d, 47266581f7fb4189bb274c3e11af2a6c, + 216dbc57cb1d4d668468619ae28c1f1c] +id: HsQAmr-h1ZYa +outputId: 1c4df76f-e505-4664-8976-27631a4731e4 +--- +model = LlamaForCausalLM(rngs=nnx.Rngs(0)) + +# We no longer need `weights` +del weights + +tokenizer = AutoTokenizer.from_pretrained(model_id) +input_text = "The capital of Japan is" + +input_ids = tokenizer(input_text, return_tensors="jax")["input_ids"] +position_ids = jnp.asarray([jnp.arange(input_ids.shape[1])]) + +for _ in range(15): + logits = model(input_ids, position_ids) + next_token = jnp.argmax(logits[:, -1, :], axis=-1) + input_ids = jnp.concatenate([input_ids, next_token[:, None]], axis=1) + position_ids = jnp.asarray([jnp.arange(input_ids.shape[1])]) + print(f"Generated token: {next_token[0]}") + +print(tokenizer.decode(input_ids[0])) +``` + ++++ {"id": "QLAM95pf5RMu"} + +There you have it. We have successfully converted the Hugging Face model weights from the safetensors file, loaded them up in our JAX model, and run the model. + +For simplicity, we have left out many optimizations (JIT, batch inference, KV cache, accelerators, SPMD and etc.) to speed things up. Feel free to implement them as an exercise. + +```{code-cell} +:id: 40d8e941 + +del model +del tokenizer +``` + ++++ {"id": "IJfrKpEa7DLb"} + +## Convert weights from other frameworks + +You can also convert weights from other frameworks. Afer all, weights are just numbers. But note that the tensor names and layouts could be different (this is expected since different frameworks may implement differently), so you may need to adjust your code accordingly. + +**Before proceeding, you may need to restart the runtime to release the GPU memory.** + ++++ {"id": "GrzUleJt78Lm"} + +### Keras Hub + ++++ {"id": "kRdNtJj_TlaF"} + +We will use Keras Hub to load the Llama 3.2 1B model and extract the weights. + +```{code-cell} +:id: AoMY1AbX69-Z + +!pip install -Uq keras-hub + +import keras_hub + +llama_lm = keras_hub.models.Llama3CausalLM.from_preset("hf://meta-llama/Llama-3.2-1B", dtype="bfloat16") + +weights_dict = {} +for layer in llama_lm.backbone.layers: + weights = layer.get_weights() + if weights: + weights_dict[layer.name] = weights +``` + ++++ {"id": "AD1cA9GcUjR4"} + +For example, here are the embeddings. You then need to extract every weight tensor and load them up in JAX like we did for the Hugging Face model. + +```{code-cell} +--- +colab: + base_uri: https://localhost:8080/ +id: jDt2YqTtSyiO +outputId: cbccfa16-10ad-42a3-b7fc-5f355b748530 +--- +weights_dict["token_embedding"] +``` + +```{code-cell} +:id: 039c5e4a + +del llama_lm +del weights_dict +``` + ++++ {"id": "KE-hPLhG8Hrs"} + +### PyTorch + +When you download the Hugging Face model, the original PyTorch model weights released by Meta are automatically downloaded as well. They are located in the `original` subfolder (another way to access them is to visit [Meta's Llama website](https://www.llama.com/llama-downloads/) and go from there). We can load the weights like this: + +```{code-cell} +--- +colab: + base_uri: https://localhost:8080/ +id: r5qUM0O-8J4C +outputId: 64d6745a-c885-4aff-925e-cb3312ad717c +--- +import torch +import os + +if os.path.exists('/kaggle'): + weights_base_dir = '/kaggle/tmp' +elif os.path.exists('/content'): + # Colab + weights_base_dir = '/content' +else: + # Local machine + weights_base_dir = '.' +path_to_model_weights = os.path.join(weights_base_dir, "meta-llama/Llama-3.2-1B/original") +model_weights = torch.load(os.path.join(path_to_model_weights, "consolidated.00.pth")) +``` + ++++ {"id": "3qBM83yqUaEM"} + +For example, here are the embeddings. You then need to extract every weight tensor and load them up in JAX like we did for the Hugging Face model. + +```{code-cell} +--- +colab: + base_uri: https://localhost:8080/ +id: CC5DiPvTOWU1 +outputId: 3cfd96e5-786e-49c7-f082-e2fd2873a21f +--- +model_weights["tok_embeddings.weight"] +``` + +```{code-cell} +:id: 0faba2f4 + + +``` diff --git a/docs/source/conf.py b/docs/source/conf.py index aad2b2f..9cf6f58 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -55,6 +55,7 @@ 'getting_started_with_jax_for_AI.md', 'JAX_for_PyTorch_users.md', 'JAX_porting_PyTorch_model.md', + 'JAX_porting_HF_model.md', 'digits_diffusion_model.md', 'JAX_for_LLM_pretraining.md', 'JAX_basic_text_classification.md', @@ -92,6 +93,7 @@ nb_execution_excludepatterns = [ 'JAX_for_PyTorch_users.ipynb', 'JAX_porting_PyTorch_model.ipynb', + 'JAX_porting_HF_model.ipynb', 'digits_diffusion_model.ipynb', 'JAX_for_LLM_pretraining.ipynb', 'JAX_basic_text_classification.ipynb', diff --git a/docs/source/pytorch_users.md b/docs/source/pytorch_users.md index edf469e..0b60c5c 100644 --- a/docs/source/pytorch_users.md +++ b/docs/source/pytorch_users.md @@ -7,4 +7,5 @@ The following tutorials provide an onboarding path to JAX, for users who are fam JAX_for_PyTorch_users JAX_porting_PyTorch_model +JAX_porting_HF_model ```