Skip to content

Instantly share code, notes, and snippets.

@keyboardAnt
Last active November 3, 2023 03:30
Show Gist options
  • Save keyboardAnt/db185be307620658fe48b5df6705bdcf to your computer and use it in GitHub Desktop.
Save keyboardAnt/db185be307620658fe48b5df6705bdcf to your computer and use it in GitHub Desktop.
copy-of-colab_vllm_integration.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/keyboardAnt/db185be307620658fe48b5df6705bdcf/copy-of-colab_vllm_integration.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nfEnFHnnXmlW"
},
"source": [
"# LM Format Enforcer Integration with vLLM\n",
"\n",
"<a target=\"_blank\" href=\"https://colab.research.google.com/github/noamgat/lm-format-enforcer/blob/main/samples/colab_vllm_integration.ipynb\">\n",
" <img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/>\n",
"</a>\n",
"\n",
"This notebook shows how you can integrate with the vLLM library. vLLM does not currently have an API for token filtering, so we have to do some monkey patching to expose the functionality.\n",
"\n",
"## Setting up the COLAB runtime (user action required)\n",
"\n",
"This colab-friendly notebook is targeted at demoing the enforcer on LLAMA2. It can run on a free GPU on Google Colab.\n",
"Make sure that your runtime is set to GPU:\n",
"\n",
"Menu Bar -> Runtime -> Change runtime type -> T4 GPU (at the time of writing this notebook). [Guide here](https://www.codesansar.com/deep-learning/using-free-gpu-tpu-google-colab.htm)."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Vsl3sRf7XmlY"
},
"source": [
"## Gathering huggingface credentials (user action required)\n",
"\n",
"We begin by installing the dependencies. This demo uses llama2, so you will have to create a free huggingface account, request access to the llama2 model, create an access token, and insert it when executing the next cell will request it.\n",
"\n",
"Links:\n",
"\n",
"- [Request access to llama model](https://huggingface.co/meta-llama/Llama-2-7b-chat-hf). See the \"Access Llama 2 on Hugging Face\" section.\n",
"- [Create huggingface access token](https://huggingface.co/settings/tokens)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "D2wwWCwCXmlY",
"outputId": "596e1406-7777-444d-8d48-2ff2366d0499"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Collecting vllm==v0.2.1.post1\n",
" Downloading vllm-0.2.1.post1-cp310-cp310-manylinux1_x86_64.whl (28.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m28.6/28.6 MB\u001b[0m \u001b[31m45.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting lm-format-enforcer==0.4.2\n",
" Downloading lm_format_enforcer-0.4.2-py3-none-any.whl (26 kB)\n",
"Collecting ninja (from vllm==v0.2.1.post1)\n",
" Downloading ninja-1.11.1.1-py2.py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl (307 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m307.2/307.2 kB\u001b[0m \u001b[31m30.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from vllm==v0.2.1.post1) (5.9.5)\n",
"Collecting ray>=2.5.1 (from vllm==v0.2.1.post1)\n",
" Downloading ray-2.8.0-cp310-cp310-manylinux2014_x86_64.whl (62.5 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.5/62.5 MB\u001b[0m \u001b[31m13.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from vllm==v0.2.1.post1) (1.5.3)\n",
"Requirement already satisfied: pyarrow in /usr/local/lib/python3.10/dist-packages (from vllm==v0.2.1.post1) (9.0.0)\n",
"Collecting sentencepiece (from vllm==v0.2.1.post1)\n",
" Downloading sentencepiece-0.1.99-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m75.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from vllm==v0.2.1.post1) (1.23.5)\n",
"\u001b[31mERROR: Operation cancelled by user\u001b[0m\u001b[31m\n",
"\u001b[0m"
]
}
],
"source": [
"!pip install vllm==v0.2.1.post1 lm-format-enforcer==0.4.2\n",
"# !huggingface-cli login\n",
"\n",
"# When running from source / developing the library, use this instead\n",
"# %load_ext autoreload\n",
"# %autoreload 2\n",
"# import sys\n",
"# import os\n",
"# sys.path.append(os.path.abspath('..'))\n",
"## os.environ['CUDA_LAUNCH_BLOCKING'] = '1'"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8Y6OaEuoXmlZ"
},
"source": [
"## Creating a custom sampler that filters tokens\n",
"\n",
"We introduce a subclass of vLLM's ```SamplingParams``` that also accepts a token filtering function, with the same API as Huggingface Transformers\n",
"\n",
"```prefix_allowed_tokens_fn: Callable[[int, torch.Tensor], List[int]]```\n",
"\n",
"We then introduce the function ```_apply_allowed_token_filters()``` that applies the filter functions to the logits (sets them to negative infinity if not allowed) to requests that contain a filter function.\n",
"\n",
"We hope that in future releases of vLLM, this (or similar) will be part of vLLM's ```Sampler``` class."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "6wzg2B-6XmlZ"
},
"outputs": [],
"source": [
"import vllm\n",
"import torch\n",
"from typing import List, Callable, Optional\n",
"from vllm.sampling_params import SamplingParams\n",
"from vllm.model_executor.input_metadata import InputMetadata\n",
"\n",
"class SamplingParamsWithFilterFunction(SamplingParams):\n",
" logits_allowed_tokens_filter_function: Optional[Callable[[int, torch.Tensor], List[int]]]\n",
"\n",
"def _apply_allowed_token_filters(logits: torch.Tensor,\n",
" input_metadata: InputMetadata) -> torch.Tensor:\n",
" num_seqs, vocab_size = logits.shape\n",
" logits_row_idx = 0\n",
" for seq_ids, sampling_params in input_metadata.seq_groups:\n",
" if isinstance(sampling_params, SamplingParamsWithFilterFunction):\n",
" filter_function = sampling_params.logits_allowed_tokens_filter_function\n",
" else:\n",
" filter_function = None\n",
" for seq_id in seq_ids:\n",
" if filter_function is not None:\n",
" output_token_ids = input_metadata.seq_data[seq_id].output_token_ids\n",
" output_token_tensor = torch.tensor(output_token_ids, dtype=torch.long)\n",
" allowed_tokens = filter_function(logits_row_idx, output_token_tensor)\n",
" logits_add_factor = torch.zeros(vocab_size, dtype=logits.dtype, device=logits.device)\n",
" logits_add_factor[:] = float('-inf')\n",
" logits_add_factor[allowed_tokens] = 0\n",
" logits[logits_row_idx] += logits_add_factor\n",
" logits_row_idx += 1\n",
" assert logits_row_idx == num_seqs\n",
" return logits\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7ZrbPjbbXmla"
},
"source": [
"In order to integrate this function with the ```Sampler``` class, we have to change its ```forward()``` function to call it. Since we are not modifying vLLM itself, we will do this with monkey patching.\n",
"\n",
"Other than the line\n",
"```\n",
"logits = _apply_allowed_token_filters(logits, input_metadata)\n",
"```\n",
"this is a 100% copy of the original ```Sampler.forward()``` function."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "tlsGS7YTXmla"
},
"outputs": [],
"source": [
"from vllm.model_executor.layers.sampler import SamplerOutput, _prune_hidden_states, _get_logits, _get_output_tokens, _get_penalties, _apply_penalties, _get_temperatures, _get_top_p_top_k, _apply_top_p_top_k, _sample, _get_logprobs, _build_sampler_output, _SAMPLING_EPS\n",
"\n",
"from typing import Optional\n",
"\n",
"def patched_forward(\n",
" self,\n",
" embedding: torch.Tensor,\n",
" hidden_states: torch.Tensor,\n",
" input_metadata: InputMetadata,\n",
" embedding_bias: Optional[torch.Tensor] = None,\n",
" ) -> SamplerOutput:\n",
" # Get the hidden states that we use for sampling.\n",
" hidden_states = _prune_hidden_states(hidden_states, input_metadata)\n",
"\n",
" # Get the logits for the next tokens.\n",
" logits = _get_logits(hidden_states, embedding, embedding_bias,\n",
" self.vocab_size)\n",
"\n",
" # Apply presence and frequency penalties.\n",
" output_tokens = _get_output_tokens(input_metadata)\n",
" assert len(output_tokens) == logits.shape[0]\n",
" presence_penalties, frequency_penalties = _get_penalties(\n",
" input_metadata)\n",
" assert len(presence_penalties) == logits.shape[0]\n",
" assert len(frequency_penalties) == logits.shape[0]\n",
" logits = _apply_penalties(logits, output_tokens, presence_penalties,\n",
" frequency_penalties)\n",
"\n",
" ### LM FORMAT ENFORCER MONKEY PATCH START\n",
" logits = _apply_allowed_token_filters(logits, input_metadata)\n",
" ### LM FORMAT ENFORCER MONKEY PATCH END\n",
"\n",
" # Apply temperature scaling.\n",
" temperatures = _get_temperatures(input_metadata)\n",
" assert len(temperatures) == logits.shape[0]\n",
" if any(t != 1.0 for t in temperatures):\n",
" t = torch.tensor(temperatures,\n",
" dtype=logits.dtype,\n",
" device=logits.device)\n",
" # Use in-place division to avoid creating a new tensor.\n",
" logits.div_(t.unsqueeze(dim=1))\n",
"\n",
" # Apply top-p and top-k truncation.\n",
" top_ps, top_ks = _get_top_p_top_k(input_metadata, self.vocab_size)\n",
" assert len(top_ps) == len(top_ks) == logits.shape[0]\n",
" do_top_p = any(p < 1.0 - _SAMPLING_EPS for p in top_ps)\n",
" do_top_k = any(k != self.vocab_size for k in top_ks)\n",
" if do_top_p or do_top_k:\n",
" logits = _apply_top_p_top_k(logits, top_ps, top_ks)\n",
"\n",
" # We use float32 for probabilities and log probabilities.\n",
" # Compute the probabilities.\n",
" probs = torch.softmax(logits, dim=-1, dtype=torch.float)\n",
" # Compute the log probabilities.\n",
" # Use log_softmax to ensure numerical stability.\n",
" logprobs = torch.log_softmax(logits, dim=-1, dtype=torch.float)\n",
"\n",
" # Sample the next tokens.\n",
" sample_results = _sample(probs, logprobs, input_metadata)\n",
" # Get the logprobs query results.\n",
" prompt_logprobs, sample_logprobs = _get_logprobs(\n",
" logprobs, input_metadata, sample_results)\n",
" return _build_sampler_output(sample_results, input_metadata,\n",
" prompt_logprobs, sample_logprobs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "dQklz6jsXmla"
},
"source": [
"We load the model, as is normally done with vLLM"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "8lExReL8Xmla",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 347,
"referenced_widgets": [
"ee61442c77904cdc806550315a0efc93",
"00b8144197084dd0872353a16b003403",
"018a7104c68b4360bf91bdb4ed05b6ba",
"e1320ecc9ad64c5baf00dcee4c1e2364",
"4d11410931d04667a4defddbc348c3a1",
"97d20667bda24f039e4c89e80fde9756",
"8008b4a9fad44db4af22e753af51e49d",
"3e824d299c244e18a77f9fd8fcf00977",
"6d704d094bba435b8032ac0e9a043c9a",
"c6e3fc80828e4091a4b3af45cd8fbed9",
"a2d311e6c46d4c74bcd11998de4ecde6",
"49fd25dc70cc406584286ad86714df93",
"1bcbb5c3e0ef4a93bf2b0443f041528a",
"86e9212e5182417094ca58ff3058a896",
"12e1290ca209455593708613125af67d",
"61c694b994274a0fb7858a3274eb6d7f",
"f61ae3b66f7d413192a3ef99ebbc2533",
"dc40fa9cb1984cf694eb74962bf49880",
"7901b54889ca41568867b14b6de442ba",
"09ddd2c4447e476f8185a464087621e2",
"4d5b5ce8998447d5946b2b330f18f016",
"8fca6cce88d140809de4f993740e4a35",
"0eb2310065a94a77a0a31fc6165253a3",
"ff79a8e382e44ba7942d1c37d1d2247c",
"e16d1cf194444bc5b954cd11ae346519",
"14e0ae56f59e4fff9c20fa694fdfecd5",
"4933ad52a43b45e9ade7bbffb0aec27a",
"0e1f14d6b0b84cfba08841eae4d0a2d5",
"b69ba44da2644ea8ab13094c36042aa8",
"36c3f29085304ea89ae4cc5c6bc4900f",
"c6d4d9a7edc243858bc241fb08c65b39",
"8be66e12a2e54764b4edfef6fa6c7078",
"a488d36fcdd1471e882a44b0f13937df",
"cb543df1c5924706966ef76c5cf776f3",
"9a3ae9288df34d2086d8c3175a92f76d",
"8183b77b1a704d19bbe6706a5ba8e3df",
"2b956edf72de449aa2a44a4266cd1aff",
"909eea01d77e4e438478579fdb347136",
"26c9c91cadd64e0a927806bea2a273fd",
"783ef5209b954d78af4837de8ea73cc6",
"2b243001b7b14297a7f83f3844616cfb",
"ce2cf47b9ca445ab9e5cf4fa11836492",
"3b4db3c063ca43e1912a55d9a829c652",
"a152486c9f7e44d08d8b2de2a95a0b97",
"9ec3ea8c80c64787a9337f054a6c6bc9",
"62ad152ecf2847f3b3136224edaeacce",
"772af30aff2c48d0bd516b8f1f86ce61",
"26b71a6774a74184aec5a477f9ef4843",
"60126e805e8d4d04854abd10b635dfa3",
"a834952684d3498e9f0ff757737ad74b",
"e3b2f8d52f98478ca896798f1d9d06ee",
"dc9174272a1a402dbaaa63e0f4ccbc41",
"26c7c416ef50440b8746f656304657d2",
"20947f8d1ccb4910b5efaf899be7417d",
"b7f52ec7a1a947c3a47a37607e900d61",
"9fc757caf6a04a39b3fccf498c2d3998",
"16a1c0f07f694bafad9fbef9a86f0566",
"e0f05c47864a492f8a1aeee57ea4f624",
"c06c83b3ec5e473087c897a47c834a1b",
"6586ffb2f1e54104b118c04b56bff738",
"9e061f0e0e92448f860d3bdd040e9036",
"900dc4b26d6b4bfdb61acda1f3a218f9",
"96a7f9b3eaa14d0f88a4afe425a6cef3",
"30090358a72c4d0f8447cb6eb4cef440",
"a0f6a1fcf19c415d9c8221ed8c0cfe98",
"920f27dd1a5e45ebbb0dfbb1f9e4d260",
"2275dbb9308d407897a62ef1960182e2",
"4cfa9a249c5047ab8866d92475f43fd5",
"e0061cd271024bcb9b4f2b02007a920c",
"3796c65cdf404f99b62adc7c389024f6",
"5bd4106abc474d379f35effb1fe42500",
"8dc5efc8fd444a2f96fca8a4a311b97c",
"08799d68f1904edf9277d4df6a4a9372",
"430f690d989b46bdbd2db551bc89add6",
"db2bdec29b9b4caea3659990ba44ac57",
"321c3ccae00e4e8fb4301ff1b974a507",
"0a02fc071253436db577d7ea52e8afcf",
"f7e5a4db06f64724a2deb3edd0c671eb",
"465a0001e6354fb2a58558efe204272d",
"cf42d30dff96489c922a8052167361cb",
"fdd371306400436d9c44b242c2d00660",
"5cc7302941954c7598c6b51c89c6d39c",
"49c2eaa479c541f5b87e06f982ff954d",
"bace96a8dcaa4c5fb489987a96fd616a",
"9a84a43bee7142e78268ecb2c6d137fe",
"74fa2deff5f046c7bd9b8d1ef2d61d8d",
"c48c53dda469407cbcd8db1513422a2b",
"c5afaa64cec34e3ab203ebf253e667f7"
]
},
"outputId": "d97c59f7-916e-44fd-88de-7e2ce1883951"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)lve/main/config.json: 0%| | 0.00/583 [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "ee61442c77904cdc806550315a0efc93"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"INFO 11-01 19:57:02 llm_engine.py:72] Initializing an LLM engine with config: model='NousResearch/Llama-2-7b-chat-hf', tokenizer='NousResearch/Llama-2-7b-chat-hf', tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=False, dtype=torch.float16, max_seq_len=4096, download_dir=None, load_format=auto, tensor_parallel_size=1, quantization=None, seed=0)\n",
"INFO 11-01 19:57:02 tokenizer.py:31] For some LLaMA V1 models, initializing the fast tokenizer may take a long time. To reduce the initialization time, consider using 'hf-internal-testing/llama-tokenizer' instead of the original tokenizer.\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)okenizer_config.json: 0%| | 0.00/746 [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "49fd25dc70cc406584286ad86714df93"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading tokenizer.model: 0%| | 0.00/500k [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "0eb2310065a94a77a0a31fc6165253a3"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)/main/tokenizer.json: 0%| | 0.00/1.84M [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "cb543df1c5924706966ef76c5cf776f3"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)in/added_tokens.json: 0%| | 0.00/21.0 [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "9ec3ea8c80c64787a9337f054a6c6bc9"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)cial_tokens_map.json: 0%| | 0.00/435 [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "9fc757caf6a04a39b3fccf498c2d3998"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)of-00002.safetensors: 0%| | 0.00/9.98G [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "2275dbb9308d407897a62ef1960182e2"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)of-00002.safetensors: 0%| | 0.00/3.50G [00:00<?, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "f7e5a4db06f64724a2deb3edd0c671eb"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"INFO 11-01 19:59:44 llm_engine.py:207] # GPU blocks: 26, # CPU blocks: 512\n"
]
}
],
"source": [
"# model_id = 'meta-llama/Llama-2-7b-chat-hf'\n",
"model_id = \"NousResearch/Llama-2-7b-chat-hf\"\n",
"llm = vllm.LLM(model=model_id)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tTjrC3yNXmlb"
},
"source": [
"If the previous cell executed successfully, you have propertly set up your Colab runtime and huggingface account!"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KuC3Y797Xmlb"
},
"source": [
"A few helper functions to make display nicer."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "G7Pml4CpXmlb"
},
"outputs": [],
"source": [
"from IPython.display import display, Markdown\n",
"\n",
"def display_header(text):\n",
" display(Markdown(f'**{text}**'))\n",
"\n",
"def display_content(text):\n",
" display(Markdown(f'```\\n{text}\\n```'))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZFx_l0GPXmlb"
},
"source": [
"## Setting up the prompt for the specific language model\n",
"\n",
"We set up the prompting style according to the [Llama2 demo](https://huggingface.co/spaces/huggingface-projects/llama-2-13b-chat/blob/main/app.py). We simplify the implementation a bit as we don't need chat history for this demo."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "vGUdPNyqXmlb"
},
"outputs": [],
"source": [
"DEFAULT_SYSTEM_PROMPT = \"\"\"\\\n",
"You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.\\n\\nIf a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.\\\n",
"\"\"\"\n",
"\n",
"def get_prompt(message: str, system_prompt: str = DEFAULT_SYSTEM_PROMPT) -> str:\n",
" return f'<s>[INST] <<SYS>>\\n{system_prompt}\\n<</SYS>>\\n\\n{message} [/INST]'"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "r0RyxBSFXmlb"
},
"source": [
"## Activating the monkey patch and creating the generation function\n",
"\n",
"We monkey-patch the ```Sampler``` class with our custom ```forward()``` method, using ```unittest.mock```.\n",
"\n",
"We use our sampling params in order to sent the specific filter function with the request. Different requests can have different format enforcers.\n",
"\n",
"There is an advanced loop for batch mode, it is done because for some reason we get better performance with it."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "O5kUMHdKXmlb"
},
"outputs": [],
"source": [
"from lmformatenforcer import CharacterLevelParser\n",
"from lmformatenforcer.integrations.transformers import build_transformers_prefix_allowed_tokens_fn\n",
"from unittest import mock\n",
"from typing import Union, List\n",
"from vllm import RequestOutput\n",
"\n",
"DEFAULT_MAX_NEW_TOKENS = 100\n",
"\n",
"ListOrStrList = Union[str, List[str]]\n",
"\n",
"def vllm_with_character_level_parser(llm: vllm.LLM, prompt: ListOrStrList, parser: Optional[CharacterLevelParser] = None) -> ListOrStrList:\n",
" with mock.patch.object(vllm.model_executor.layers.sampler.Sampler, 'forward', patched_forward):\n",
" prefix_function = build_transformers_prefix_allowed_tokens_fn(llm.get_tokenizer(), parser) if parser else None\n",
" sampling_params = SamplingParamsWithFilterFunction()\n",
" sampling_params.max_tokens = DEFAULT_MAX_NEW_TOKENS\n",
" sampling_params.logits_allowed_tokens_filter_function = prefix_function\n",
" if isinstance(prompt, str):\n",
" result = llm.generate(prompt, sampling_params=sampling_params)\n",
" return result[0].outputs[0].text\n",
" else:\n",
" # This code works, but for some reason it gives slower generation time.\n",
" # results = llm.generate(prompt, sampling_params=sampling_params)\n",
" # return [result.outputs[0].text for result in results]\n",
"\n",
" # Batch mode, taking inspiration from https://github.com/vllm-project/vllm/blob/main/examples/llm_engine_example.py\n",
" # I don't know why this is faster than simply calling llm.generate() with a list of prompts, but it is from my tests.\n",
" prompts: List[str] = prompt\n",
"\n",
" engine = llm.llm_engine\n",
" request_id = 0\n",
" results = []\n",
" while prompts or engine.has_unfinished_requests():\n",
" if prompts:\n",
" prompt = prompts.pop(0)\n",
" engine.add_request(str(request_id), prompt, sampling_params)\n",
" request_id += 1\n",
"\n",
" request_outputs: List[RequestOutput] = engine.step()\n",
"\n",
" for request_output in request_outputs:\n",
" if request_output.finished:\n",
" results.append(request_output.outputs[0].text)\n",
"\n",
" return results\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5EhlYKwBXmlb"
},
"source": [
"## vLLM + JSON Use case\n",
"\n",
"Now we demonstrate using ```JsonSchemaParser```. We create a pydantic model, generate the schema from it, and use that to enforce the format.\n",
"The output will always be in a format that can be parsed by the parser."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "3IpjWZmaXmlb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 543
},
"outputId": "b7266645-7fa7-4dba-9bec-95854e415c4c"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.Markdown object>"
],
"text/markdown": "**Prompt:**"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.Markdown object>"
],
"text/markdown": "```\n<s>[INST] <<SYS>>\nYou are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.\n\nIf a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.\n<</SYS>>\n\nPlease give me information about Michael Jordan. You MUST answer using the following json schema: {\"title\": \"AnswerFormat\", \"type\": \"object\", \"properties\": {\"first_name\": {\"title\": \"First Name\", \"type\": \"string\"}, \"last_name\": {\"title\": \"Last Name\", \"type\": \"string\"}, \"year_of_birth\": {\"title\": \"Year Of Birth\", \"type\": \"integer\"}, \"num_seasons_in_nba\": {\"title\": \"Num Seasons In Nba\", \"type\": \"integer\"}}, \"required\": [\"first_name\", \"last_name\", \"year_of_birth\", \"num_seasons_in_nba\"]} [/INST]\n```"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.Markdown object>"
],
"text/markdown": "**Answer, With json schema enforcing:**"
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"Processed prompts: 100%|██████████| 1/1 [00:05<00:00, 5.75s/it]\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.Markdown object>"
],
"text/markdown": "```\n { \"first_name\": \"Michael\", \"last_name\": \"Jordan\", \"year_of_birth\": 1963, \"num_seasons_in_nba\": 15 }\n\n\n```"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.Markdown object>"
],
"text/markdown": "**Answer, Without json schema enforcing:**"
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"Processed prompts: 100%|██████████| 1/1 [00:06<00:00, 6.22s/it]\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.Markdown object>"
],
"text/markdown": "```\n Of course! I'd be happy to help you with your query about Michael Jordan. Here's the information you requested, formatted according to the JSON schema you provided:\n\n{\n\"title\": \"AnswerFormat\",\n\"type\": \"object\",\n\"properties\": {\n\"first_name\": {\n\"title\": \"First Name\",\n\"type\": \"string\",\n\"example\": \"Michael\"\n},\n\"last_name\": {\n\"title\n```"
},
"metadata": {}
}
],
"source": [
"from lmformatenforcer import JsonSchemaParser\n",
"from pydantic import BaseModel\n",
"\n",
"from typing import List\n",
"\n",
"class AnswerFormat(BaseModel):\n",
" first_name: str\n",
" last_name: str\n",
" year_of_birth: int\n",
" num_seasons_in_nba: int\n",
"\n",
"question = 'Please give me information about Michael Jordan. You MUST answer using the following json schema: '\n",
"question_with_schema = f'{question}{AnswerFormat.schema_json()}'\n",
"prompt = get_prompt(question_with_schema)\n",
"\n",
"display_header(\"Prompt:\")\n",
"display_content(prompt)\n",
"\n",
"display_header(\"Answer, With json schema enforcing:\")\n",
"\n",
"result = vllm_with_character_level_parser(llm, prompt, JsonSchemaParser(AnswerFormat.schema()))\n",
"display_content(result)\n",
"\n",
"display_header(\"Answer, Without json schema enforcing:\")\n",
"result = vllm_with_character_level_parser(llm, prompt, None)\n",
"display_content(result)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fAR85TyLXmlb"
},
"source": [
"As you can see, the enforced output matches the required schema, while the unenforced does not. We have successfully integrated with vLLM!"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fqNubKWCXmlb"
},
"source": [
"## Batching example\n",
"\n",
"Now we demonstrate that the model can be used to generate text in batches. This is useful for generating text in parallel, which is much faster than generating text sequentially."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "b4npLwddXmlb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"outputId": "ec7faa4f-8f24-4a95-9fea-7e664caf80a5"
},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"Processed prompts: 100%|██████████| 1/1 [00:03<00:00, 3.57s/it]"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time taken for 1 player: 5.43624472618103s\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.Markdown object>"
],
"text/markdown": "```\n { \"first_name\": \"Michael\", \"last_name\": \"Jordan\", \"year_of_birth\": 1963, \"num_seasons_in_nba\": 15 }\n\n\n```"
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Time taken for 19 players: 74.25083017349243. Time per player: 3.9079384301838123\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.Markdown object>"
],
"text/markdown": "```\n[' { \"first_name\": \"Timothy\", \"last_name\": \"Duncan\", \"year_of_birth\": 1976, \"num_seasons_in_nba\": 19 }\\n\\n\\n\\n', ' { \"first_name\": \"Larry\", \"last_name\": \"Bird\", \"year_of_birth\": 1956, \"num_seasons_in_nba\": 13 }\\n\\n\\n\\n', ' { \"first_name\": \"Magic\", \"last_name\": \"Johnson\", \"year_of_birth\": 1959, \"num_seasons_in_nba\": 13 }\\n\\n\\n\\n\\n', ' { \"first_name\": \"Patrick\", \"last_name\": \"Ewing\", \"year_of_birth\": 1962, \"num_seasons_in_nba\": 17 }\\n\\n\\n\\n', ' { \"first_name\": \"Hakeem\", \"last_name\": \"Olajuwon\", \"year_of_birth\": 1963, \"num_seasons_in_nba\": 12 }\\n\\n\\n\\n\\n', ' { \"first_name\": \"Nate\", \"last_name\": \"Archibald\", \"year_of_birth\": 1980, \"num_seasons_in_nba\": 10 }\\n\\n\\n\\n\\n', ' { \"first_name\": \"Charles\", \"last_name\": \"Barkley\", \"year_of_birth\": 1963, \"num_seasons_in_nba\": 16 }\\n\\n\\n\\n\\n', ' { \"first_name\": \"Bob\", \"last_name\": \"Cousy\", \"year_of_birth\": 1928, \"num_seasons_in_nba\": 13 }\\n\\n', ' { \"first_name\": \"Clyde\", \"last_name\": \"Drexler\", \"year_of_birth\": 1962, \"num_seasons_in_nba\": 10 }\\n\\n\\n\\n', ' { \"first_name\": \"Julius\", \"last_name\": \"Erving\", \"year_of_birth\": 1952, \"num_seasons_in_nba\": 16 }\\n\\n\\n', ' { \"first_name\": \"John\", \"last_name\": \"Havlicek\", \"year_of_birth\": 1940, \"num_seasons_in_nba\": 16 }\\n\\n\\n\\n\\n', ' { \"first_name\": \"Elvin\", \"last_name\": \"Hayes\", \"year_of_birth\": 1945, \"num_seasons_in_nba\": 11 }\\n\\n\\n\\n\\n', ' {\"first_name\": \"Jerry\", \"last_name\": \"Lucas\", \"year_of_birth\": 1944, \"num_seasons_in_nba\": 10}\\n\\n \\n\\n\\n\\n', ' { \"first_name\": \"Moses\", \"last_name\": \"Malone\", \"year_of_birth\": 1963, \"num_seasons_in_nba\": 21 }\\n\\n\\n\\n\\n', ' { \"first_name\": \"George\", \"last_name\": \"Mikan\", \"year_of_birth\": 1924, \"num_seasons_in_nba\": 9 }\\n\\n \\n\\n', ' { \"first_name\": \"Robert\", \"last_name\": \"Pettit\", \"year_of_birth\": 1922, \"num_seasons_in_nba\": 11 }\\n\\n\\n\\n\\n', ' { \"first_name\": \"Oscar\", \"last_name\": \"Robertson\", \"year_of_birth\": 1960, \"num_seasons_in_nba\": 13 }\\n\\n\\n\\n', ' { \"first_name\": \"William,\" , \"last_name\": \"Russell,\" , \"year_of_birth\": 1934, \"num_seasons_in_nba\": 13 }\\n\\n\\n\\n', ' { \"first_name\": \"Dolph\", \"last_name\": \"Schayes\", \"year_of_birth\": 1921, \"num_seasons_in_nba\": 15 }\\n\\n\\n\\n\\n']\n```"
},
"metadata": {}
}
],
"source": [
"from time import time\n",
"\n",
"players = ['Michael Jordan', 'Tim Duncan', 'Larry Bird', 'Magic Johnson', 'Patrick Ewing',\n",
" 'Hakeem Olajuwan', 'Nate Archibald', 'Charles Barkley', 'Bob Cousy', 'Clyde Drexler',\n",
" 'Julius Erving', 'John Havlicek', 'Elvin Hayes', 'Jerry Lucas', 'Moses Malone',\n",
" 'George Mikan', 'Bob Pettit', 'Oscar Robertson', 'Bill Russell', 'Dolph Schayes']\n",
"prompts = []\n",
"for player in players:\n",
" question = f'Please give me information about {player}. You MUST answer using the following json schema: '\n",
" question_with_schema = f'{question}{AnswerFormat.schema_json()}'\n",
" prompt = get_prompt(question_with_schema)\n",
" prompts.append(prompt)\n",
"\n",
"start = time()\n",
"one_player_result = vllm_with_character_level_parser(llm, prompts[0], JsonSchemaParser(AnswerFormat.schema()))\n",
"end = time()\n",
"print(f'Time taken for 1 player: {end - start}s')\n",
"display_content(one_player_result)\n",
"\n",
"start = time()\n",
"all_results = vllm_with_character_level_parser(llm, prompts[1:], JsonSchemaParser(AnswerFormat.schema()))\n",
"end = time()\n",
"print(f'Time taken for {len(prompts)-1} players: {end - start}. Time per player: {(end - start)/(len(prompts)-1)}')\n",
"display_content(all_results)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lA5ziEH-XXCT"
},
"source": [
"Without parsing the results with Pydantic:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "6LrUs5KSXWS_"
},
"outputs": [],
"source": [
"def get_prompts(names, AnswerFormat):\n",
" return [f\"Please give me information about {name}. You MUST answer using the following json schema:\\n{AnswerFormat.schema_json()}\" for name in names]\n",
"\n",
"\n",
"names = \\\n",
" ['Michael Jordan',\n",
" 'Babe Ruth',\n",
" 'Muhammad Ali',\n",
" 'Jim Brown',\n",
" 'Wayne Gretzky',\n",
" 'Jesse Owens',\n",
" 'Jim Thorpe',\n",
" 'Willie Mays',\n",
" 'Jack Nicklaus',\n",
" 'Babe Didrikson',\n",
" 'Joe Louis',\n",
" 'Carl Lewis',\n",
" 'Wilt Chamberlain',\n",
" 'Hank Aaron',\n",
" 'Jackie Robinson',\n",
" 'Ted Williams',\n",
" 'Magic Johnson',\n",
" 'Bill Russell',\n",
" 'Martina Navratilova',\n",
" 'Ty Cobb',\n",
" 'Gordie Howe',\n",
" 'Joe DiMaggio',\n",
" 'Jackie Joyner-Kersee',\n",
" 'Sugar Ray Robinson',\n",
" 'Joe Montana',\n",
" 'Kareem Abdul-Jabbar',\n",
" 'Jerry Rice',\n",
" 'Red Grange',\n",
" 'Arnold Palmer',\n",
" 'Larry Bird',\n",
" 'Bobby Orr',\n",
" 'Johnny Unitas',\n",
" 'Mark Spitz',\n",
" 'Lou Gehrig',\n",
" 'Secretariat',\n",
" 'Oscar Robertson',\n",
" 'Mickey Mantle',\n",
" 'Ben Hogan',\n",
" 'Walter Payton',\n",
" 'Lawrence Taylor',\n",
" 'Wilma Rudolph',\n",
" 'Sandy Koufax',\n",
" 'Julius Erving',\n",
" 'Bobby Jones',\n",
" 'Bill Tilden',\n",
" 'Eric Heiden',\n",
" 'Edwin Moses',\n",
" 'Pete Sampras',\n",
" 'O.J. Simpson',\n",
" 'Chris Evert',\n",
" 'Rocky Marciano',\n",
" 'Jack Dempsey',\n",
" 'Rafer Johnson',\n",
" 'Greg Louganis',\n",
" 'Mario Lemieux',\n",
" 'Pete Rose',\n",
" 'Willie Shoemaker',\n",
" 'Elgin Baylor',\n",
" 'Billie Jean King',\n",
" 'Walter Johnson',\n",
" 'Stan Musial',\n",
" 'Jerry West',\n",
" 'Satchel Paige',\n",
" 'Sammy Baugh',\n",
" 'Althea Gibson',\n",
" 'Eddie Arcaro',\n",
" 'Bob Gibson',\n",
" 'Al Oerter',\n",
" 'Bonnie Blair',\n",
" 'Dick Butkus',\n",
" 'Roberto Clemente',\n",
" 'Bo Jackson',\n",
" 'Josh Gibson',\n",
" 'Deion Sanders',\n",
" 'Dan Marino',\n",
" 'Barry Sanders',\n",
" 'Cy Young',\n",
" 'Bob Mathias',\n",
" 'Gale Sayers',\n",
" 'A.J. Foyt',\n",
" 'Jimmy Connors',\n",
" 'Bobby Hull',\n",
" 'Honus Wagner',\n",
" \"Man o' War\",\n",
" 'Maurice Richard',\n",
" 'Otto Graham',\n",
" 'Henry Armstrong',\n",
" 'Joe Namath',\n",
" 'Rogers Hornsby',\n",
" 'Richard Petty',\n",
" 'Bob Beamon',\n",
" 'Mario Andretti',\n",
" 'Don Hutson',\n",
" 'Bob Cousy',\n",
" 'George Blanda',\n",
" 'Michael Johnson',\n",
" 'Citation',\n",
" 'Don Budge',\n",
" 'Sam Snead',\n",
" 'Jack Johnson']\n",
"\n",
"\n",
"def get_players(num_of_players: int) -> list[AnswerFormat | ValueError]:\n",
" prompts = get_prompts(names[:num_of_players], AnswerFormat)\n",
" players_raw = vllm_with_character_level_parser(llm, prompts, JsonSchemaParser(AnswerFormat.schema()))\n",
" # Sequentially parse each output with Pydantic\n",
" # players = []\n",
" # for p in players_raw:\n",
" # try:\n",
" # players.append(AnswerFormat.parse_raw(p))\n",
" # except ValueError as e:\n",
" # players.append(e)\n",
" # print()\n",
" # print(\"The number of parsed players: \", sum([isinstance(p, AnswerFormat) for p in players]))\n",
" # return players"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "JrpjlCsKX64u",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "3b8d89c1-c9a5-48b7-ad57-7a5acc912174"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"5.12 s ± 516 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%%timeit\n",
"\n",
"get_players(1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "mJ78pImrYGcX",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "ea080c85-dbfb-403d-b52f-954e7d31730b"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"33.1 s ± 1.53 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%%timeit\n",
"\n",
"get_players(10)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "cEXhfQ_CYHB_",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "0cb48098-ef85-4dc6-b463-d0e9614bf08d"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1min ± 1.95 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%%timeit\n",
"\n",
"get_players(20)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "PM5zqE8hYJqE",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "7d214491-0940-411d-af95-8734c4df6b6c"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1min 35s ± 1.89 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%%timeit\n",
"\n",
"get_players(32)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Sy_UWiPpYLNL",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d2c3e19d-079a-4eab-f09e-197c5b317c9a"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"3min 10s ± 5.87 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%%timeit\n",
"\n",
"get_players(64)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "jj6DBY4nYMlh",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "ca16646f-fd26-46ec-d926-f9c61c332f01"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"4min 47s ± 3.03 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%%timeit\n",
"\n",
"get_players(100)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "lc_fW3RMYPOg",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 430
},
"outputId": "894a4251-f86e-4bbf-c5bd-a2f1b3e3eabc"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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ycmhYcOG/PDDD7Rv317r0oQQwroc/xZ2jFDXA3PwglYLwLts/K68p/jk7u5OgwYNOHr0KB06dCAvL48rV64UuouSnJxsGYjp7e193fiEq7N8/rv417Xs7e2xt7e/l1JFOeLo6FhooLYQQohrFGTCzlFwfJ7a9moLrRaC482/a63NPS3UlpGRwbFjx/Dx8SEkJARbW9tCU04PHTrE6dOniYiIANTFwfbu3Vtoka7169fj5uaGv7//vZQihBBCCIAr+2BdmBpOdHpo+g48+FuZCidQxDsoL730Et26daNmzZokJCQwceJEDAYDffr0wWg0MmTIEMaOHYuHhwdubm4899xzRERE0LJlSwAeeugh/P396d+/Px988AFJSUm88cYbjBw5Uu6QCCGEEPdCUeD4N+r6JqZscPSBVovBq43Wld2VIgWUs2fP0qdPHy5evEjVqlVp3bo127dvtzyn5dNPP0Wv19OjRw9yc3Pp2LFjoamsBoOB1atXM2LECCIiInB2dmbgwIG88847xfuphBBCiIokP10da3Jyodr26ag+S8fB89bnWbEiTTO2FreapiTTK4WQfwdCVCiXd8OWXpB+GHQGCPwf+L+idu9YmRKbZiyEEEIIK6EocHQmxI4Bcy441YDIJVA18vbnlgESUIQQQoiyJi8VYobB6eVqu9rDEDEP7CtrWlZxsr77P6LUzZs377oF9q41aNAgunfvXir1CCGEuIWLO2FdsBpOdDbQ/GNos7JchROQgGJVBg0aVOhJ0ZUrV6ZTp078/fffd/wab731FkFBQcVe29SpU5k3b16xv64QQog7pChwcCqsbwUZx8G5FnTYCo3Hgk6ndXXFTgKKlenUqROJiYkkJiayYcMGbGxsePjhh7UuC6PReNu7LEIIIUpI7iX46zH1eTrmfPB9HDrvgiottK6sxEhAsTL29vaWJ0UHBQXx6quvcubMGc6fPw/AuHHjaNCgAU5OTtSpU4cJEyaQn58PqF01b7/9Nnv27LHchbl61+PKlSs888wzeHl54eDgQEBAAKtXry703r/++iuNGzfGxcXFEpSuuraL54EHHuD555/nlVdewcPDA29vb956661Cr3fw4EFat26Ng4MD/v7+/P777+h0On766adiv25CCFFuXdgOa5vD2Z9Bbwchn0Pr78HOXevKSlSFGCSrKApZ+Vml/r5Otk7o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\n"
},
"metadata": {}
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"\n",
"x = [1, 10, 20, 32, 64, 100]\n",
"y = [5.12, 33.1, 60, 95, 190, 287]\n",
"yerr = [.516, 1.53, 1.95, 1.89, 5.87, 3.03]\n",
"\n",
"# \"No batching\" is the linear line we get if the latency of generating each\n",
"# output was `latency_of_generating_one_output * batch_size`\n",
"plt.plot([x[0], x[-1]], [y[0], y[0] * (x[-1] / x[0])], label=\"No batching\", color=\"orange\")\n",
"\n",
"# Batching\n",
"plt.plot(x, y, label=\"Batching\", color=\"green\")\n",
"plt.errorbar(x=x, y=y, yerr=yerr, fmt ='o')\n",
"\n",
"# Fit a linear line to the \"batching\" data\n",
"slope, intercept = np.polyfit(x, y, 1)\n",
"fit_y = [slope * xi + intercept for xi in x]\n",
"fit_equation = f\"y = {slope:.2f}x + {intercept:.2f}\"\n",
"plt.plot(x, fit_y, label=f\"Fit: {fit_equation}\", color=\"blue\", linestyle=\"--\", alpha=.5)\n",
"\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"source": [
"# Minimal example: get_current_weather"
],
"metadata": {
"id": "lp5QNzi6OuyJ"
}
},
{
"cell_type": "code",
"source": [
"from pydantic import BaseModel, Field\n",
"from typing import Literal\n",
"\n",
"\n",
"class get_current_weather(BaseModel):\n",
" \"\"\"Get the current weather\"\"\"\n",
" location: str = Field(..., description=\"The city and state, e.g. San Francisco, CA\")\n",
" format: Literal[\"celsius\", \"fahrenheit\"] = Field(..., description=\"The temperature unit to use. Infer this from the users location.\")\n",
"\n",
"# Testing the schema generation\n",
"print(get_current_weather.schema_json(indent=2))"
],
"metadata": {
"id": "dsaC_AQBOrQG",
"outputId": "38586e41-cbc2-4f9d-e47d-42a32923d1ad",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"{\n",
" \"title\": \"get_current_weather\",\n",
" \"description\": \"Get the current weather\",\n",
" \"type\": \"object\",\n",
" \"properties\": {\n",
" \"location\": {\n",
" \"title\": \"Location\",\n",
" \"description\": \"The city and state, e.g. San Francisco, CA\",\n",
" \"type\": \"string\"\n",
" },\n",
" \"format\": {\n",
" \"title\": \"Format\",\n",
" \"description\": \"The temperature unit to use. Infer this from the users location.\",\n",
" \"enum\": [\n",
" \"celsius\",\n",
" \"fahrenheit\"\n",
" ],\n",
" \"type\": \"string\"\n",
" }\n",
" },\n",
" \"required\": [\n",
" \"location\",\n",
" \"format\"\n",
" ]\n",
"}\n"
]
}
]
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "cMdPixa8O1Sm"
},
"execution_count": null,
"outputs": []
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.13"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"ee61442c77904cdc806550315a0efc93": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_00b8144197084dd0872353a16b003403",
"IPY_MODEL_018a7104c68b4360bf91bdb4ed05b6ba",
"IPY_MODEL_e1320ecc9ad64c5baf00dcee4c1e2364"
],
"layout": "IPY_MODEL_4d11410931d04667a4defddbc348c3a1"
}
},
"00b8144197084dd0872353a16b003403": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_97d20667bda24f039e4c89e80fde9756",
"placeholder": "​",
"style": "IPY_MODEL_8008b4a9fad44db4af22e753af51e49d",
"value": "Downloading (…)lve/main/config.json: 100%"
}
},
"018a7104c68b4360bf91bdb4ed05b6ba": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_3e824d299c244e18a77f9fd8fcf00977",
"max": 583,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_6d704d094bba435b8032ac0e9a043c9a",
"value": 583
}
},
"e1320ecc9ad64c5baf00dcee4c1e2364": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c6e3fc80828e4091a4b3af45cd8fbed9",
"placeholder": "​",
"style": "IPY_MODEL_a2d311e6c46d4c74bcd11998de4ecde6",
"value": " 583/583 [00:00&lt;00:00, 10.6kB/s]"
}
},
"4d11410931d04667a4defddbc348c3a1": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"97d20667bda24f039e4c89e80fde9756": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8008b4a9fad44db4af22e753af51e49d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"3e824d299c244e18a77f9fd8fcf00977": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"6d704d094bba435b8032ac0e9a043c9a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"c6e3fc80828e4091a4b3af45cd8fbed9": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"a2d311e6c46d4c74bcd11998de4ecde6": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"49fd25dc70cc406584286ad86714df93": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_1bcbb5c3e0ef4a93bf2b0443f041528a",
"IPY_MODEL_86e9212e5182417094ca58ff3058a896",
"IPY_MODEL_12e1290ca209455593708613125af67d"
],
"layout": "IPY_MODEL_61c694b994274a0fb7858a3274eb6d7f"
}
},
"1bcbb5c3e0ef4a93bf2b0443f041528a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_f61ae3b66f7d413192a3ef99ebbc2533",
"placeholder": "​",
"style": "IPY_MODEL_dc40fa9cb1984cf694eb74962bf49880",
"value": "Downloading (…)okenizer_config.json: 100%"
}
},
"86e9212e5182417094ca58ff3058a896": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_7901b54889ca41568867b14b6de442ba",
"max": 746,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_09ddd2c4447e476f8185a464087621e2",
"value": 746
}
},
"12e1290ca209455593708613125af67d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_4d5b5ce8998447d5946b2b330f18f016",
"placeholder": "​",
"style": "IPY_MODEL_8fca6cce88d140809de4f993740e4a35",
"value": " 746/746 [00:00&lt;00:00, 39.8kB/s]"
}
},
"61c694b994274a0fb7858a3274eb6d7f": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"f61ae3b66f7d413192a3ef99ebbc2533": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"dc40fa9cb1984cf694eb74962bf49880": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"7901b54889ca41568867b14b6de442ba": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"09ddd2c4447e476f8185a464087621e2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"4d5b5ce8998447d5946b2b330f18f016": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8fca6cce88d140809de4f993740e4a35": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"0eb2310065a94a77a0a31fc6165253a3": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_ff79a8e382e44ba7942d1c37d1d2247c",
"IPY_MODEL_e16d1cf194444bc5b954cd11ae346519",
"IPY_MODEL_14e0ae56f59e4fff9c20fa694fdfecd5"
],
"layout": "IPY_MODEL_4933ad52a43b45e9ade7bbffb0aec27a"
}
},
"ff79a8e382e44ba7942d1c37d1d2247c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_0e1f14d6b0b84cfba08841eae4d0a2d5",
"placeholder": "​",
"style": "IPY_MODEL_b69ba44da2644ea8ab13094c36042aa8",
"value": "Downloading tokenizer.model: 100%"
}
},
"e16d1cf194444bc5b954cd11ae346519": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_36c3f29085304ea89ae4cc5c6bc4900f",
"max": 499723,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_c6d4d9a7edc243858bc241fb08c65b39",
"value": 499723
}
},
"14e0ae56f59e4fff9c20fa694fdfecd5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_8be66e12a2e54764b4edfef6fa6c7078",
"placeholder": "​",
"style": "IPY_MODEL_a488d36fcdd1471e882a44b0f13937df",
"value": " 500k/500k [00:00&lt;00:00, 16.8MB/s]"
}
},
"4933ad52a43b45e9ade7bbffb0aec27a": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"0e1f14d6b0b84cfba08841eae4d0a2d5": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"b69ba44da2644ea8ab13094c36042aa8": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"36c3f29085304ea89ae4cc5c6bc4900f": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c6d4d9a7edc243858bc241fb08c65b39": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"8be66e12a2e54764b4edfef6fa6c7078": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"a488d36fcdd1471e882a44b0f13937df": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"cb543df1c5924706966ef76c5cf776f3": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_9a3ae9288df34d2086d8c3175a92f76d",
"IPY_MODEL_8183b77b1a704d19bbe6706a5ba8e3df",
"IPY_MODEL_2b956edf72de449aa2a44a4266cd1aff"
],
"layout": "IPY_MODEL_909eea01d77e4e438478579fdb347136"
}
},
"9a3ae9288df34d2086d8c3175a92f76d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_26c9c91cadd64e0a927806bea2a273fd",
"placeholder": "​",
"style": "IPY_MODEL_783ef5209b954d78af4837de8ea73cc6",
"value": "Downloading (…)/main/tokenizer.json: 100%"
}
},
"8183b77b1a704d19bbe6706a5ba8e3df": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_2b243001b7b14297a7f83f3844616cfb",
"max": 1842764,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_ce2cf47b9ca445ab9e5cf4fa11836492",
"value": 1842764
}
},
"2b956edf72de449aa2a44a4266cd1aff": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_3b4db3c063ca43e1912a55d9a829c652",
"placeholder": "​",
"style": "IPY_MODEL_a152486c9f7e44d08d8b2de2a95a0b97",
"value": " 1.84M/1.84M [00:00&lt;00:00, 4.46MB/s]"
}
},
"909eea01d77e4e438478579fdb347136": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"26c9c91cadd64e0a927806bea2a273fd": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"783ef5209b954d78af4837de8ea73cc6": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"2b243001b7b14297a7f83f3844616cfb": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ce2cf47b9ca445ab9e5cf4fa11836492": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"3b4db3c063ca43e1912a55d9a829c652": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"a152486c9f7e44d08d8b2de2a95a0b97": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"9ec3ea8c80c64787a9337f054a6c6bc9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_62ad152ecf2847f3b3136224edaeacce",
"IPY_MODEL_772af30aff2c48d0bd516b8f1f86ce61",
"IPY_MODEL_26b71a6774a74184aec5a477f9ef4843"
],
"layout": "IPY_MODEL_60126e805e8d4d04854abd10b635dfa3"
}
},
"62ad152ecf2847f3b3136224edaeacce": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_a834952684d3498e9f0ff757737ad74b",
"placeholder": "​",
"style": "IPY_MODEL_e3b2f8d52f98478ca896798f1d9d06ee",
"value": "Downloading (…)in/added_tokens.json: 100%"
}
},
"772af30aff2c48d0bd516b8f1f86ce61": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_dc9174272a1a402dbaaa63e0f4ccbc41",
"max": 21,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_26c7c416ef50440b8746f656304657d2",
"value": 21
}
},
"26b71a6774a74184aec5a477f9ef4843": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_20947f8d1ccb4910b5efaf899be7417d",
"placeholder": "​",
"style": "IPY_MODEL_b7f52ec7a1a947c3a47a37607e900d61",
"value": " 21.0/21.0 [00:00&lt;00:00, 1.45kB/s]"
}
},
"60126e805e8d4d04854abd10b635dfa3": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"a834952684d3498e9f0ff757737ad74b": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"e3b2f8d52f98478ca896798f1d9d06ee": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"dc9174272a1a402dbaaa63e0f4ccbc41": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"26c7c416ef50440b8746f656304657d2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"20947f8d1ccb4910b5efaf899be7417d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"b7f52ec7a1a947c3a47a37607e900d61": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"9fc757caf6a04a39b3fccf498c2d3998": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_16a1c0f07f694bafad9fbef9a86f0566",
"IPY_MODEL_e0f05c47864a492f8a1aeee57ea4f624",
"IPY_MODEL_c06c83b3ec5e473087c897a47c834a1b"
],
"layout": "IPY_MODEL_6586ffb2f1e54104b118c04b56bff738"
}
},
"16a1c0f07f694bafad9fbef9a86f0566": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_9e061f0e0e92448f860d3bdd040e9036",
"placeholder": "​",
"style": "IPY_MODEL_900dc4b26d6b4bfdb61acda1f3a218f9",
"value": "Downloading (…)cial_tokens_map.json: 100%"
}
},
"e0f05c47864a492f8a1aeee57ea4f624": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_96a7f9b3eaa14d0f88a4afe425a6cef3",
"max": 435,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_30090358a72c4d0f8447cb6eb4cef440",
"value": 435
}
},
"c06c83b3ec5e473087c897a47c834a1b": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_a0f6a1fcf19c415d9c8221ed8c0cfe98",
"placeholder": "​",
"style": "IPY_MODEL_920f27dd1a5e45ebbb0dfbb1f9e4d260",
"value": " 435/435 [00:00&lt;00:00, 33.7kB/s]"
}
},
"6586ffb2f1e54104b118c04b56bff738": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"9e061f0e0e92448f860d3bdd040e9036": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"900dc4b26d6b4bfdb61acda1f3a218f9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"96a7f9b3eaa14d0f88a4afe425a6cef3": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"30090358a72c4d0f8447cb6eb4cef440": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"a0f6a1fcf19c415d9c8221ed8c0cfe98": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"920f27dd1a5e45ebbb0dfbb1f9e4d260": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"2275dbb9308d407897a62ef1960182e2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_4cfa9a249c5047ab8866d92475f43fd5",
"IPY_MODEL_e0061cd271024bcb9b4f2b02007a920c",
"IPY_MODEL_3796c65cdf404f99b62adc7c389024f6"
],
"layout": "IPY_MODEL_5bd4106abc474d379f35effb1fe42500"
}
},
"4cfa9a249c5047ab8866d92475f43fd5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_8dc5efc8fd444a2f96fca8a4a311b97c",
"placeholder": "​",
"style": "IPY_MODEL_08799d68f1904edf9277d4df6a4a9372",
"value": "Downloading (…)of-00002.safetensors: 100%"
}
},
"e0061cd271024bcb9b4f2b02007a920c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_430f690d989b46bdbd2db551bc89add6",
"max": 9976576152,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_db2bdec29b9b4caea3659990ba44ac57",
"value": 9976576152
}
},
"3796c65cdf404f99b62adc7c389024f6": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_321c3ccae00e4e8fb4301ff1b974a507",
"placeholder": "​",
"style": "IPY_MODEL_0a02fc071253436db577d7ea52e8afcf",
"value": " 9.98G/9.98G [01:27&lt;00:00, 186MB/s]"
}
},
"5bd4106abc474d379f35effb1fe42500": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8dc5efc8fd444a2f96fca8a4a311b97c": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"08799d68f1904edf9277d4df6a4a9372": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"430f690d989b46bdbd2db551bc89add6": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"db2bdec29b9b4caea3659990ba44ac57": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"321c3ccae00e4e8fb4301ff1b974a507": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"0a02fc071253436db577d7ea52e8afcf": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"f7e5a4db06f64724a2deb3edd0c671eb": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_465a0001e6354fb2a58558efe204272d",
"IPY_MODEL_cf42d30dff96489c922a8052167361cb",
"IPY_MODEL_fdd371306400436d9c44b242c2d00660"
],
"layout": "IPY_MODEL_5cc7302941954c7598c6b51c89c6d39c"
}
},
"465a0001e6354fb2a58558efe204272d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_49c2eaa479c541f5b87e06f982ff954d",
"placeholder": "​",
"style": "IPY_MODEL_bace96a8dcaa4c5fb489987a96fd616a",
"value": "Downloading (…)of-00002.safetensors: 100%"
}
},
"cf42d30dff96489c922a8052167361cb": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_9a84a43bee7142e78268ecb2c6d137fe",
"max": 3500296424,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_74fa2deff5f046c7bd9b8d1ef2d61d8d",
"value": 3500296424
}
},
"fdd371306400436d9c44b242c2d00660": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c48c53dda469407cbcd8db1513422a2b",
"placeholder": "​",
"style": "IPY_MODEL_c5afaa64cec34e3ab203ebf253e667f7",
"value": " 3.50G/3.50G [00:48&lt;00:00, 122MB/s]"
}
},
"5cc7302941954c7598c6b51c89c6d39c": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"49c2eaa479c541f5b87e06f982ff954d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"bace96a8dcaa4c5fb489987a96fd616a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"9a84a43bee7142e78268ecb2c6d137fe": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"74fa2deff5f046c7bd9b8d1ef2d61d8d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"c48c53dda469407cbcd8db1513422a2b": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c5afaa64cec34e3ab203ebf253e667f7": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
}
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment