{
"cells": [
{
"cell_type": "markdown",
"id": "dc468afe",
"metadata": {
"papermill": {
"duration": 0.016531,
"end_time": "2022-04-18T00:24:52.503352",
"exception": false,
"start_time": "2022-04-18T00:24:52.486821",
"status": "completed"
},
"tags": []
},
"source": [
"# Hugging Face Sentiment Classification\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"This notebook's CI test result for us-west-2 is as follows. CI test results in other regions can be found at the end of the notebook. \n",
"\n",
"\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"id": "dc468afe",
"metadata": {
"papermill": {
"duration": 0.016531,
"end_time": "2022-04-18T00:24:52.503352",
"exception": false,
"start_time": "2022-04-18T00:24:52.486821",
"status": "completed"
},
"tags": []
},
"source": [
"__Binary Classification with Trainer and sst2 dataset__"
]
},
{
"cell_type": "markdown",
"id": "2452cc25",
"metadata": {
"papermill": {
"duration": 0.015983,
"end_time": "2022-04-18T00:24:52.535552",
"exception": false,
"start_time": "2022-04-18T00:24:52.519569",
"status": "completed"
},
"tags": []
},
"source": [
"## Runtime\n",
"\n",
"This notebook takes approximately 45 minutes to run.\n",
"\n",
"## Contents\n",
"\n",
"1. [Introduction](#Introduction) \n",
"2. [Development environment and permissions](#Development-environment-and-permissions)\n",
" 1. [Installation](#Installation) \n",
" 2. [Development environment](#Development-environment) \n",
" 3. [Permissions](#Permissions)\n",
"3. [Pre-processing](#Pre-processing) \n",
" 1. [Tokenize sentences](#Tokenize-sentences) \n",
" 2. [Upload data to sagemaker_session_bucket](#Upload-data-to-sagemaker_session_bucket) \n",
"4. [Fine-tune the model and start a SageMaker training job](#Fine-tune-the-model-and-start-a-SageMaker-training-job) \n",
" 1. [Create an Estimator and start a training job](#Create-an-Estimator-and-start-a-training-job) \n",
" 2. [Estimator Parameters](#Estimator-Parameters) \n",
" 3. [Attach a previous training job to an estimator](#Attach-a-previous-training-job-to-an-estimator) "
]
},
{
"cell_type": "markdown",
"id": "effb3477",
"metadata": {
"papermill": {
"duration": 0.016278,
"end_time": "2022-04-18T00:24:52.568387",
"exception": false,
"start_time": "2022-04-18T00:24:52.552109",
"status": "completed"
},
"tags": []
},
"source": [
"## Introduction\n",
"\n",
"Welcome to our end-to-end binary text classification example. This notebook uses Hugging Face's `transformers` library with a custom Amazon sagemaker-sdk extension to fine-tune a pre-trained transformer on binary text classification. The pre-trained model is fine-tuned using the `sst2` dataset. To get started, we need to set up the environment with a few prerequisite steps for permissions, configurations, and so on. \n",
"\n",
"This notebook is adapted from Hugging Face's notebook [Huggingface Sagemaker-sdk - Getting Started Demo](https://github.com/huggingface/notebooks/blob/master/sagemaker/01_getting_started_pytorch/sagemaker-notebook.ipynb) and provided here courtesy of Hugging Face.\n",
"\n",
"
\n",
"\n",
"## Runtime\n",
"\n",
"This notebook takes approximately 40 minutes to run.\n",
"\n",
"NOTE: You can run this notebook in SageMaker Studio, a SageMaker notebook instance, or your local machine. This notebook was tested in a notebook instance using the conda\\_pytorch\\_p36 kernel.\n"
]
},
{
"cell_type": "markdown",
"id": "7e8f5307",
"metadata": {
"papermill": {
"duration": 0.016313,
"end_time": "2022-04-18T00:24:52.601194",
"exception": false,
"start_time": "2022-04-18T00:24:52.584881",
"status": "completed"
},
"tags": []
},
"source": [
"## Development environment and permissions "
]
},
{
"cell_type": "markdown",
"id": "15b92a49",
"metadata": {
"papermill": {
"duration": 0.016043,
"end_time": "2022-04-18T00:24:52.633273",
"exception": false,
"start_time": "2022-04-18T00:24:52.617230",
"status": "completed"
},
"tags": []
},
"source": [
"### Installation\n",
"\n",
"_*Note:* We install the required libraries from Hugging Face and AWS. You also need PyTorch, if you haven't installed it already._"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "8533e87c",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:24:52.670786Z",
"iopub.status.busy": "2022-04-18T00:24:52.670186Z",
"iopub.status.idle": "2022-04-18T00:26:26.077525Z",
"shell.execute_reply": "2022-04-18T00:26:26.076694Z"
},
"papermill": {
"duration": 93.428366,
"end_time": "2022-04-18T00:26:26.077712",
"exception": false,
"start_time": "2022-04-18T00:24:52.649346",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: sagemaker in /opt/conda/lib/python3.6/site-packages (2.69.1.dev0)\n",
"Collecting sagemaker\n",
" Downloading sagemaker-2.86.2.tar.gz (521 kB)\n",
"\u001b[K |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 521 kB 6.6 MB/s eta 0:00:01\n",
"...\n",
"\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
"thinc 8.0.2 requires typing-extensions<4.0.0.0,>=3.7.4.1; python_version < \"3.8\", but you have typing-extensions 4.1.1 which is incompatible.\n",
"spacy 3.0.5 requires typing-extensions<4.0.0.0,>=3.7.4; python_version < \"3.8\", but you have typing-extensions 4.1.1 which is incompatible.\n",
"awscli 1.22.7 requires botocore==1.23.7, but you have botocore 1.23.24 which is incompatible.\u001b[0m\n",
"Successfully installed aiobotocore-2.1.2 aiohttp-3.8.1 aioitertools-0.10.0 aiosignal-1.2.0 async-timeout-4.0.2 asynctest-0.13.0 boto3-1.20.24 botocore-1.23.24 charset-normalizer-2.0.12 datasets-2.1.0 filelock-3.4.1 frozenlist-1.2.0 fsspec-2022.1.0 huggingface-hub-0.4.0 idna-ssl-1.1.0 importlib-resources-5.4.0 multidict-5.2.0 regex-2022.3.15 responses-0.17.0 s3fs-2022.1.0 sacremoses-0.0.49 sagemaker-2.86.2 tokenizers-0.12.1 tqdm-4.64.0 transformers-4.18.0 typing-extensions-4.1.1 wrapt-1.14.0 xxhash-3.0.0 yarl-1.7.2\n"
]
}
],
"source": [
"!pip install \"sagemaker\" \"transformers\" \"datasets[s3]\" \"s3fs\" --upgrade"
]
},
{
"cell_type": "markdown",
"id": "0ba2da73",
"metadata": {
"papermill": {
"duration": 0.52037,
"end_time": "2022-04-18T00:26:27.084219",
"exception": false,
"start_time": "2022-04-18T00:26:26.563849",
"status": "completed"
},
"tags": []
},
"source": [
"### Development environment "
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "0f92e4f1",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:26:28.268992Z",
"iopub.status.busy": "2022-04-18T00:26:28.266328Z",
"iopub.status.idle": "2022-04-18T00:26:33.266343Z",
"shell.execute_reply": "2022-04-18T00:26:33.265862Z"
},
"papermill": {
"duration": 5.594308,
"end_time": "2022-04-18T00:26:33.266483",
"exception": false,
"start_time": "2022-04-18T00:26:27.672175",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"import sagemaker.huggingface"
]
},
{
"cell_type": "markdown",
"id": "065e0cbe",
"metadata": {
"papermill": {
"duration": 0.208248,
"end_time": "2022-04-18T00:26:33.684347",
"exception": false,
"start_time": "2022-04-18T00:26:33.476099",
"status": "completed"
},
"tags": []
},
"source": [
"### Permissions"
]
},
{
"cell_type": "markdown",
"id": "52d6f89b",
"metadata": {
"papermill": {
"duration": 0.217336,
"end_time": "2022-04-18T00:26:34.182419",
"exception": false,
"start_time": "2022-04-18T00:26:33.965083",
"status": "completed"
},
"tags": []
},
"source": [
"_If you are going to use SageMaker in a local environment, you need access to an IAM Role with the required permissions for SageMaker. You can read more at [SageMaker Roles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html)._"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4c655deb",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:26:35.173041Z",
"iopub.status.busy": "2022-04-18T00:26:35.171952Z",
"iopub.status.idle": "2022-04-18T00:26:38.877002Z",
"shell.execute_reply": "2022-04-18T00:26:38.878030Z"
},
"papermill": {
"duration": 4.214375,
"end_time": "2022-04-18T00:26:38.878222",
"exception": false,
"start_time": "2022-04-18T00:26:34.663847",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Role arn: arn:aws:iam::000000000000:role/ProdBuildSystemStack-ReleaseBuildRoleFB326D49-QK8LUA2UI1IC\n",
"Bucket: sagemaker-us-west-2-521695447989\n",
"Region: us-west-2\n"
]
}
],
"source": [
"import sagemaker\n",
"\n",
"sess = sagemaker.Session()\n",
"# The SageMaker session bucket is used for uploading data, models and logs\n",
"# SageMaker will automatically create this bucket if it doesn't exist\n",
"sagemaker_session_bucket = None\n",
"if sagemaker_session_bucket is None and sess is not None:\n",
" # Set to default bucket if a bucket name is not given\n",
" sagemaker_session_bucket = sess.default_bucket()\n",
"\n",
"role = sagemaker.get_execution_role()\n",
"sess = sagemaker.Session(default_bucket=sagemaker_session_bucket)\n",
"\n",
"print(f\"Role arn: {role}\")\n",
"print(f\"Bucket: {sess.default_bucket()}\")\n",
"print(f\"Region: {sess.boto_region_name}\")"
]
},
{
"cell_type": "markdown",
"id": "09bc6925",
"metadata": {
"papermill": {
"duration": 0.590734,
"end_time": "2022-04-18T00:26:40.264636",
"exception": false,
"start_time": "2022-04-18T00:26:39.673902",
"status": "completed"
},
"tags": []
},
"source": [
"## Pre-processing\n",
"\n",
"We use the `datasets` library to pre-process the `sst2` dataset (Stanford Sentiment Treebank). After pre-processing, the dataset is uploaded to the `sagemaker_session_bucket` for use within the training job. The [sst2](https://nlp.stanford.edu/sentiment/index.html) dataset consists of 67349 training samples and _ testing samples of highly polar movie reviews."
]
},
{
"cell_type": "markdown",
"id": "99ebe331",
"metadata": {
"papermill": {
"duration": 0.600198,
"end_time": "2022-04-18T00:26:41.375789",
"exception": false,
"start_time": "2022-04-18T00:26:40.775591",
"status": "completed"
},
"tags": []
},
"source": [
"### Download the dataset"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "44647298",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:26:42.775808Z",
"iopub.status.busy": "2022-04-18T00:26:42.773005Z",
"iopub.status.idle": "2022-04-18T00:27:01.075738Z",
"shell.execute_reply": "2022-04-18T00:27:01.075012Z"
},
"papermill": {
"duration": 18.999606,
"end_time": "2022-04-18T00:27:01.075923",
"exception": false,
"start_time": "2022-04-18T00:26:42.076317",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" % Total % Received % Xferd Average Speed Time Time Time Current\n",
" Dload Upload Total Spent Left Speed\n",
"100 189k 100 189k 0 0 58903 0 0:00:03 0:00:03 --:--:-- 58917\n",
" % Total % Received % Xferd Average Speed Time Time Time Current\n",
" Dload Upload Total Spent Left Speed\n",
"100 3716k 100 3716k 0 0 2194k 0 0:00:01 0:00:01 --:--:-- 2195k\n",
" % Total % Received % Xferd Average Speed Time Time Time Current\n",
" Dload Upload Total Spent Left Speed\n",
"100 94916 100 94916 0 0 80806 0 0:00:01 0:00:01 --:--:-- 80848\n"
]
}
],
"source": [
"from datasets import Dataset\n",
"from transformers import AutoTokenizer\n",
"import pandas as pd\n",
"\n",
"# Tokenizer used in pre-processing\n",
"tokenizer_name = \"distilbert-base-uncased\"\n",
"\n",
"# S3 key prefix for the data\n",
"s3_prefix = \"DEMO-samples/datasets/sst\"\n",
"\n",
"# Download the SST2 data from s3\n",
"!curl https://sagemaker-sample-files.s3.amazonaws.com/datasets/text/SST2/sst2.test > ./sst2.test\n",
"!curl https://sagemaker-sample-files.s3.amazonaws.com/datasets/text/SST2/sst2.train > ./sst2.train\n",
"!curl https://sagemaker-sample-files.s3.amazonaws.com/datasets/text/SST2/sst2.val > ./sst2.val"
]
},
{
"cell_type": "markdown",
"id": "a7e3efe3",
"metadata": {
"papermill": {
"duration": 0.604992,
"end_time": "2022-04-18T00:27:02.280819",
"exception": false,
"start_time": "2022-04-18T00:27:01.675827",
"status": "completed"
},
"tags": []
},
"source": [
"### Tokenize sentences"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b69a3cd7",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:27:03.771246Z",
"iopub.status.busy": "2022-04-18T00:27:03.770331Z",
"iopub.status.idle": "2022-04-18T00:28:02.174716Z",
"shell.execute_reply": "2022-04-18T00:28:02.175115Z"
},
"papermill": {
"duration": 59.196383,
"end_time": "2022-04-18T00:28:02.175259",
"exception": false,
"start_time": "2022-04-18T00:27:02.978876",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6ae8c5fa54cd40c898bc809147f6d96e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Downloading: 0%| | 0.00/28.0 [00:00, ?B/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "29721ddd2b914cf39025b9c3513445e6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Downloading: 0%| | 0.00/483 [00:00, ?B/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1202b63879aa4f9693727b3a933033bd",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Downloading: 0%| | 0.00/226k [00:00, ?B/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0bb774d33beb4c678fe743cf5fe04fc5",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Downloading: 0%| | 0.00/455k [00:00, ?B/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "30fb9bcb9a2f49bf81307985bb3ca866",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/68 [00:00, ?ba/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1f4f657d2daf4f3494c3eab7921f0771",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/2 [00:00, ?ba/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Download tokenizer\n",
"tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)\n",
"\n",
"# Tokenizer helper function\n",
"def tokenize(batch):\n",
" return tokenizer(batch[\"text\"], padding=\"max_length\", truncation=True)\n",
"\n",
"\n",
"# Load dataset\n",
"test_df = pd.read_csv(\"sst2.test\", sep=\"delimiter\", header=None, engine=\"python\", names=[\"line\"])\n",
"train_df = pd.read_csv(\"sst2.train\", sep=\"delimiter\", header=None, engine=\"python\", names=[\"line\"])\n",
"\n",
"test_df[[\"label\", \"text\"]] = test_df[\"line\"].str.split(\" \", 1, expand=True)\n",
"train_df[[\"label\", \"text\"]] = train_df[\"line\"].str.split(\" \", 1, expand=True)\n",
"\n",
"test_df.drop(\"line\", axis=1, inplace=True)\n",
"train_df.drop(\"line\", axis=1, inplace=True)\n",
"\n",
"test_df[\"label\"] = pd.to_numeric(test_df[\"label\"], downcast=\"integer\")\n",
"train_df[\"label\"] = pd.to_numeric(train_df[\"label\"], downcast=\"integer\")\n",
"\n",
"train_dataset = Dataset.from_pandas(train_df)\n",
"test_dataset = Dataset.from_pandas(test_df)\n",
"\n",
"# Tokenize dataset\n",
"train_dataset = train_dataset.map(tokenize, batched=True)\n",
"test_dataset = test_dataset.map(tokenize, batched=True)\n",
"\n",
"# Set format for pytorch\n",
"train_dataset = train_dataset.rename_column(\"label\", \"labels\")\n",
"train_dataset.set_format(\"torch\", columns=[\"input_ids\", \"attention_mask\", \"labels\"])\n",
"\n",
"test_dataset = test_dataset.rename_column(\"label\", \"labels\")\n",
"test_dataset.set_format(\"torch\", columns=[\"input_ids\", \"attention_mask\", \"labels\"])"
]
},
{
"cell_type": "markdown",
"id": "b70101a6",
"metadata": {
"papermill": {
"duration": 0.290129,
"end_time": "2022-04-18T00:28:02.670975",
"exception": false,
"start_time": "2022-04-18T00:28:02.380846",
"status": "completed"
},
"tags": []
},
"source": [
"### Upload data to `sagemaker_session_bucket`\n",
"\n",
"After processing the `datasets`, we use the `FileSystem` [integration](https://huggingface.co/docs/datasets/filesystems.html) to upload the dataset to S3."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "38ca822d",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:28:03.096439Z",
"iopub.status.busy": "2022-04-18T00:28:03.095596Z",
"iopub.status.idle": "2022-04-18T00:28:09.364564Z",
"shell.execute_reply": "2022-04-18T00:28:09.365061Z"
},
"papermill": {
"duration": 6.487372,
"end_time": "2022-04-18T00:28:09.365200",
"exception": false,
"start_time": "2022-04-18T00:28:02.877828",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"import botocore\n",
"from datasets.filesystems import S3FileSystem\n",
"\n",
"s3 = S3FileSystem()\n",
"\n",
"# save train_dataset to s3\n",
"training_input_path = f\"s3://{sess.default_bucket()}/{s3_prefix}/train\"\n",
"train_dataset.save_to_disk(training_input_path, fs=s3)\n",
"\n",
"# save test_dataset to s3\n",
"test_input_path = f\"s3://{sess.default_bucket()}/{s3_prefix}/test\"\n",
"test_dataset.save_to_disk(test_input_path, fs=s3)"
]
},
{
"cell_type": "markdown",
"id": "699717f6",
"metadata": {
"papermill": {
"duration": 0.07092,
"end_time": "2022-04-18T00:28:09.507040",
"exception": false,
"start_time": "2022-04-18T00:28:09.436120",
"status": "completed"
},
"tags": []
},
"source": [
"## Fine-tune the model and start a SageMaker training job\n",
"\n",
"In order to create a SageMaker training job, we need a `HuggingFace` Estimator. The Estimator handles end-to-end Amazon SageMaker training and deployment tasks. In an Estimator, we define which fine-tuning script should be used as `entry_point`, which `instance_type` should be used, which `hyperparameters` are passed in, etc:\n",
"\n",
"\n",
"\n",
"```python\n",
"hf_estimator = HuggingFace(entry_point=\"train.py\",\n",
" source_dir=\"./scripts\",\n",
" base_job_name=\"huggingface-sdk-extension\",\n",
" instance_type=\"ml.p3.2xlarge\",\n",
" instance_count=1,\n",
" transformers_version=\"4.4\",\n",
" pytorch_version=\"1.6\",\n",
" py_version=\"py36\",\n",
" role=role,\n",
" hyperparameters = {\"epochs\": 1,\n",
" \"train_batch_size\": 32,\n",
" \"model_name\":\"distilbert-base-uncased\"\n",
" })\n",
"```\n",
"\n",
"When we create a SageMaker training job, SageMaker takes care of starting and managing all the required EC2 instances for us with the `huggingface` container, uploads the provided fine-tuning script `train.py`, and downloads the data from the `sagemaker_session_bucket` into the container at `/opt/ml/input/data`. Then, it starts the training job by running:\n",
"\n",
"```python\n",
"/opt/conda/bin/python train.py --epochs 1 --model_name distilbert-base-uncased --train_batch_size 32\n",
"```\n",
"\n",
"The `hyperparameters` defined in the `HuggingFace` estimator are passed in as named arguments. \n",
"\n",
"SageMaker provides useful properties about the training environment through various environment variables, including the following:\n",
"\n",
"* `SM_MODEL_DIR`: A string representing the path where the training job writes the model artifacts to. After training, artifacts in this directory are uploaded to S3 for model hosting.\n",
"\n",
"* `SM_NUM_GPUS`: An integer representing the number of GPUs available to the host.\n",
"\n",
"* `SM_CHANNEL_XXXX:` A string representing the path to the directory that contains the input data for the specified channel. For example, if you specify two input channels in the Hugging Face estimator's `fit()` call, named `train` and `test`, the environment variables `SM_CHANNEL_TRAIN` and `SM_CHANNEL_TEST` are set.\n",
"\n",
"\n",
"To run the training job locally, you can define `instance_type=\"local\"` or `instance_type=\"local_gpu\"` for GPU usage.\n",
"\n",
"_Note: local mode is not supported in SageMaker Studio._\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "fbe7e076",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:28:09.801394Z",
"iopub.status.busy": "2022-04-18T00:28:09.800895Z",
"iopub.status.idle": "2022-04-18T00:28:12.190559Z",
"shell.execute_reply": "2022-04-18T00:28:12.190108Z"
},
"papermill": {
"duration": 2.603402,
"end_time": "2022-04-18T00:28:12.190666",
"exception": false,
"start_time": "2022-04-18T00:28:09.587264",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[34mfrom\u001b[39;49;00m \u001b[04m\u001b[36mtransformers\u001b[39;49;00m \u001b[34mimport\u001b[39;49;00m AutoModelForSequenceClassification, Trainer, TrainingArguments, AutoTokenizer\n",
"\u001b[34mfrom\u001b[39;49;00m \u001b[04m\u001b[36msklearn\u001b[39;49;00m\u001b[04m\u001b[36m.\u001b[39;49;00m\u001b[04m\u001b[36mmetrics\u001b[39;49;00m \u001b[34mimport\u001b[39;49;00m accuracy_score, precision_recall_fscore_support\n",
"\u001b[34mfrom\u001b[39;49;00m \u001b[04m\u001b[36mdatasets\u001b[39;49;00m \u001b[34mimport\u001b[39;49;00m load_from_disk\n",
"\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mrandom\u001b[39;49;00m\n",
"\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mlogging\u001b[39;49;00m\n",
"\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36msys\u001b[39;49;00m\n",
"\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36margparse\u001b[39;49;00m\n",
"\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mos\u001b[39;49;00m\n",
"\u001b[34mimport\u001b[39;49;00m \u001b[04m\u001b[36mtorch\u001b[39;49;00m\n",
"\n",
"\u001b[34mif\u001b[39;49;00m \u001b[31m__name__\u001b[39;49;00m == \u001b[33m\"\u001b[39;49;00m\u001b[33m__main__\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m:\n",
"\n",
" parser = argparse.ArgumentParser()\n",
"\n",
" \u001b[37m# Hyperparameters sent by the client are passed as command-line arguments to the script\u001b[39;49;00m\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--epochs\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mint\u001b[39;49;00m, default=\u001b[34m3\u001b[39;49;00m)\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--train_batch_size\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mint\u001b[39;49;00m, default=\u001b[34m32\u001b[39;49;00m)\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--eval_batch_size\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mint\u001b[39;49;00m, default=\u001b[34m64\u001b[39;49;00m)\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--warmup_steps\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mint\u001b[39;49;00m, default=\u001b[34m500\u001b[39;49;00m)\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--model_name\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mstr\u001b[39;49;00m)\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--learning_rate\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mstr\u001b[39;49;00m, default=\u001b[34m5e-5\u001b[39;49;00m)\n",
"\n",
" \u001b[37m# Data, model, and output directories\u001b[39;49;00m\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--output_data_dir\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mstr\u001b[39;49;00m, default=os.environ[\u001b[33m\"\u001b[39;49;00m\u001b[33mSM_OUTPUT_DATA_DIR\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m])\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--model_dir\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mstr\u001b[39;49;00m, default=os.environ[\u001b[33m\"\u001b[39;49;00m\u001b[33mSM_MODEL_DIR\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m])\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--n_gpus\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mstr\u001b[39;49;00m, default=os.environ[\u001b[33m\"\u001b[39;49;00m\u001b[33mSM_NUM_GPUS\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m])\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--training_dir\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mstr\u001b[39;49;00m, default=os.environ[\u001b[33m\"\u001b[39;49;00m\u001b[33mSM_CHANNEL_TRAIN\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m])\n",
" parser.add_argument(\u001b[33m\"\u001b[39;49;00m\u001b[33m--test_dir\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m, \u001b[36mtype\u001b[39;49;00m=\u001b[36mstr\u001b[39;49;00m, default=os.environ[\u001b[33m\"\u001b[39;49;00m\u001b[33mSM_CHANNEL_TEST\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m])\n",
"\n",
" args, _ = parser.parse_known_args()\n",
"\n",
" \u001b[37m# Set up logging\u001b[39;49;00m\n",
" logger = logging.getLogger(\u001b[31m__name__\u001b[39;49;00m)\n",
"\n",
" logging.basicConfig(\n",
" level=logging.getLevelName(\u001b[33m\"\u001b[39;49;00m\u001b[33mINFO\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m),\n",
" handlers=[logging.StreamHandler(sys.stdout)],\n",
" \u001b[36mformat\u001b[39;49;00m=\u001b[33m\"\u001b[39;49;00m\u001b[33m%(asctime)s\u001b[39;49;00m\u001b[33m - \u001b[39;49;00m\u001b[33m%(name)s\u001b[39;49;00m\u001b[33m - \u001b[39;49;00m\u001b[33m%(levelname)s\u001b[39;49;00m\u001b[33m - \u001b[39;49;00m\u001b[33m%(message)s\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n",
" )\n",
"\n",
" \u001b[37m# Load datasets\u001b[39;49;00m\n",
" train_dataset = load_from_disk(args.training_dir)\n",
" test_dataset = load_from_disk(args.test_dir)\n",
"\n",
" logger.info(\u001b[33mf\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m\u001b[33mLoaded train_dataset length is: \u001b[39;49;00m\u001b[33m{\u001b[39;49;00m\u001b[36mlen\u001b[39;49;00m(train_dataset)\u001b[33m}\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m)\n",
" logger.info(\u001b[33mf\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m\u001b[33mLoaded test_dataset length is: \u001b[39;49;00m\u001b[33m{\u001b[39;49;00m\u001b[36mlen\u001b[39;49;00m(test_dataset)\u001b[33m}\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m)\n",
"\n",
" \u001b[37m# Compute metrics function for binary classification\u001b[39;49;00m\n",
" \u001b[34mdef\u001b[39;49;00m \u001b[32mcompute_metrics\u001b[39;49;00m(pred):\n",
" labels = pred.label_ids\n",
" preds = pred.predictions.argmax(-\u001b[34m1\u001b[39;49;00m)\n",
" precision, recall, f1, _ = precision_recall_fscore_support(labels, preds, average=\u001b[33m\"\u001b[39;49;00m\u001b[33mbinary\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m)\n",
" acc = accuracy_score(labels, preds)\n",
" \u001b[34mreturn\u001b[39;49;00m {\u001b[33m\"\u001b[39;49;00m\u001b[33maccuracy\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m: acc, \u001b[33m\"\u001b[39;49;00m\u001b[33mf1\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m: f1, \u001b[33m\"\u001b[39;49;00m\u001b[33mprecision\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m: precision, \u001b[33m\"\u001b[39;49;00m\u001b[33mrecall\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m: recall}\n",
"\n",
" \u001b[37m# Download model from model hub\u001b[39;49;00m\n",
" model = AutoModelForSequenceClassification.from_pretrained(args.model_name)\n",
" tokenizer = AutoTokenizer.from_pretrained(args.model_name)\n",
"\n",
" \u001b[37m# Define training args\u001b[39;49;00m\n",
" training_args = TrainingArguments(\n",
" output_dir=args.model_dir,\n",
" num_train_epochs=args.epochs,\n",
" per_device_train_batch_size=args.train_batch_size,\n",
" per_device_eval_batch_size=args.eval_batch_size,\n",
" warmup_steps=args.warmup_steps,\n",
" evaluation_strategy=\u001b[33m\"\u001b[39;49;00m\u001b[33mepoch\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n",
" logging_dir=\u001b[33mf\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m\u001b[33m{\u001b[39;49;00margs.output_data_dir\u001b[33m}\u001b[39;49;00m\u001b[33m/logs\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m,\n",
" learning_rate=\u001b[36mfloat\u001b[39;49;00m(args.learning_rate),\n",
" )\n",
"\n",
" \u001b[37m# Create Trainer instance\u001b[39;49;00m\n",
" trainer = Trainer(\n",
" model=model,\n",
" args=training_args,\n",
" compute_metrics=compute_metrics,\n",
" train_dataset=train_dataset,\n",
" eval_dataset=test_dataset,\n",
" tokenizer=tokenizer,\n",
" )\n",
"\n",
" \u001b[37m# Train model\u001b[39;49;00m\n",
" trainer.train()\n",
"\n",
" \u001b[37m# Evaluate model\u001b[39;49;00m\n",
" eval_result = trainer.evaluate(eval_dataset=test_dataset)\n",
"\n",
" \u001b[37m# Write eval result to file which can be accessed later in S3 ouput\u001b[39;49;00m\n",
" \u001b[34mwith\u001b[39;49;00m \u001b[36mopen\u001b[39;49;00m(os.path.join(args.output_data_dir, \u001b[33m\"\u001b[39;49;00m\u001b[33meval_results.txt\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m), \u001b[33m\"\u001b[39;49;00m\u001b[33mw\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m) \u001b[34mas\u001b[39;49;00m writer:\n",
" \u001b[36mprint\u001b[39;49;00m(\u001b[33mf\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m\u001b[33m***** Eval results *****\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m)\n",
" \u001b[34mfor\u001b[39;49;00m key, value \u001b[35min\u001b[39;49;00m \u001b[36msorted\u001b[39;49;00m(eval_result.items()):\n",
" writer.write(\u001b[33mf\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m\u001b[33m{\u001b[39;49;00mkey\u001b[33m}\u001b[39;49;00m\u001b[33m = \u001b[39;49;00m\u001b[33m{\u001b[39;49;00mvalue\u001b[33m}\u001b[39;49;00m\u001b[33m\\n\u001b[39;49;00m\u001b[33m\"\u001b[39;49;00m)\n",
"\n",
" \u001b[37m# Save the model to s3\u001b[39;49;00m\n",
" trainer.save_model(args.model_dir)\n"
]
}
],
"source": [
"!pygmentize ./scripts/train.py"
]
},
{
"cell_type": "markdown",
"id": "93076da5",
"metadata": {
"papermill": {
"duration": 0.196903,
"end_time": "2022-04-18T00:28:12.566594",
"exception": false,
"start_time": "2022-04-18T00:28:12.369691",
"status": "completed"
},
"tags": []
},
"source": [
"### Create an Estimator and start a training job"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "e3d2d7f6",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:28:12.978661Z",
"iopub.status.busy": "2022-04-18T00:28:12.977505Z",
"iopub.status.idle": "2022-04-18T00:28:12.979877Z",
"shell.execute_reply": "2022-04-18T00:28:12.980289Z"
},
"papermill": {
"duration": 0.204611,
"end_time": "2022-04-18T00:28:12.980420",
"exception": false,
"start_time": "2022-04-18T00:28:12.775809",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"from sagemaker.huggingface import HuggingFace\n",
"\n",
"# Hyperparameters which are passed into the training job\n",
"hyperparameters = {\"epochs\": 1, \"train_batch_size\": 32, \"model_name\": \"distilbert-base-uncased\"}"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "6b4cfda2",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:28:13.465242Z",
"iopub.status.busy": "2022-04-18T00:28:13.464305Z",
"iopub.status.idle": "2022-04-18T00:28:13.666450Z",
"shell.execute_reply": "2022-04-18T00:28:13.665333Z"
},
"papermill": {
"duration": 0.403179,
"end_time": "2022-04-18T00:28:13.666579",
"exception": false,
"start_time": "2022-04-18T00:28:13.263400",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"hf_estimator = HuggingFace(\n",
" entry_point=\"train.py\",\n",
" source_dir=\"./scripts\",\n",
" instance_type=\"ml.p3.2xlarge\",\n",
" instance_count=1,\n",
" role=role,\n",
" transformers_version=\"4.12\",\n",
" pytorch_version=\"1.9\",\n",
" py_version=\"py38\",\n",
" hyperparameters=hyperparameters,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "9f16af6d",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T00:28:14.070049Z",
"iopub.status.busy": "2022-04-18T00:28:14.068961Z",
"iopub.status.idle": "2022-04-18T01:00:11.823306Z",
"shell.execute_reply": "2022-04-18T01:00:11.823783Z"
},
"papermill": {
"duration": 1917.9609,
"end_time": "2022-04-18T01:00:11.823926",
"exception": false,
"start_time": "2022-04-18T00:28:13.863026",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-04-18 00:28:15 Starting - Starting the training job...ProfilerReport-1650241694: InProgress\n",
"...\n",
"2022-04-18 00:28:58 Starting - Preparing the instances for training......\n",
"2022-04-18 00:30:07 Downloading - Downloading input data\n",
"2022-04-18 00:30:07 Training - Downloading the training image................................\u001b[34mbash: cannot set terminal process group (-1): Inappropriate ioctl for device\u001b[0m\n",
"\u001b[34mbash: no job control in this shell\u001b[0m\n",
"\u001b[34m2022-04-18 00:35:22,153 sagemaker-training-toolkit INFO Imported framework sagemaker_pytorch_container.training\u001b[0m\n",
"\u001b[34m2022-04-18 00:35:22,181 sagemaker_pytorch_container.training INFO Block until all host DNS lookups succeed.\u001b[0m\n",
"\u001b[34m2022-04-18 00:35:22,187 sagemaker_pytorch_container.training INFO Invoking user training script.\u001b[0m\n",
"\u001b[34m2022-04-18 00:35:22,707 sagemaker-training-toolkit INFO Invoking user script\u001b[0m\n",
"...\n",
"\u001b[34m***** Running Evaluation *****\u001b[0m\n",
"\u001b[34m***** Running Evaluation *****\n",
" Num examples = 1821\u001b[0m\n",
"\u001b[34mNum examples = 1821\n",
" Batch size = 64\u001b[0m\n",
"\u001b[34mBatch size = 64\u001b[0m\n",
"\u001b[34m0%| | 0/29 [00:00, ?it/s]\u001b[0m\n",
"\u001b[34m7%|\u258b | 2/29 [00:00<00:04, 5.81it/s]\u001b[0m\n",
"\u001b[34m10%|\u2588 | 3/29 [00:00<00:06, 4.14it/s]\u001b[0m\n",
"\u001b[34m14%|\u2588\u258d | 4/29 [00:01<00:06, 3.60it/s]\u001b[0m\n",
"\u001b[34m17%|\u2588\u258b | 5/29 [00:01<00:07, 3.35it/s]\u001b[0m\n",
"\u001b[34m21%|\u2588\u2588 | 6/29 [00:01<00:07, 3.21it/s]\u001b[0m\n",
"\u001b[34m24%|\u2588\u2588\u258d | 7/29 [00:02<00:07, 3.13it/s]\u001b[0m\n",
"\u001b[34m28%|\u2588\u2588\u258a | 8/29 [00:02<00:06, 3.06it/s]\u001b[0m\n",
"\u001b[34m31%|\u2588\u2588\u2588 | 9/29 [00:02<00:06, 3.02it/s]\u001b[0m\n",
"\u001b[34m34%|\u2588\u2588\u2588\u258d | 10/29 [00:03<00:06, 3.00it/s]\u001b[0m\n",
"\u001b[34m38%|\u2588\u2588\u2588\u258a | 11/29 [00:03<00:06, 2.99it/s]\u001b[0m\n",
"\u001b[34m41%|\u2588\u2588\u2588\u2588\u258f | 12/29 [00:03<00:05, 2.98it/s]\u001b[0m\n",
"\u001b[34m45%|\u2588\u2588\u2588\u2588\u258d | 13/29 [00:04<00:05, 2.96it/s]\u001b[0m\n",
"\u001b[34m48%|\u2588\u2588\u2588\u2588\u258a | 14/29 [00:04<00:05, 2.96it/s]\u001b[0m\n",
"\u001b[34m52%|\u2588\u2588\u2588\u2588\u2588\u258f | 15/29 [00:04<00:04, 2.96it/s]\u001b[0m\n",
"\u001b[34m55%|\u2588\u2588\u2588\u2588\u2588\u258c | 16/29 [00:05<00:04, 2.96it/s]\u001b[0m\n",
"\u001b[34m59%|\u2588\u2588\u2588\u2588\u2588\u258a | 17/29 [00:05<00:04, 2.96it/s]\u001b[0m\n",
"\u001b[34m62%|\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 18/29 [00:05<00:03, 2.96it/s]\u001b[0m\n",
"\u001b[34m66%|\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 19/29 [00:06<00:03, 2.96it/s]\u001b[0m\n",
"\u001b[34m69%|\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 20/29 [00:06<00:03, 2.96it/s]\u001b[0m\n",
"\u001b[34m72%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 21/29 [00:06<00:02, 2.96it/s]\u001b[0m\n",
"\u001b[34m76%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 22/29 [00:07<00:02, 2.96it/s]\u001b[0m\n",
"\u001b[34m79%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 23/29 [00:07<00:02, 2.96it/s]\u001b[0m\n",
"\u001b[34m83%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e | 24/29 [00:07<00:01, 2.96it/s]\u001b[0m\n",
"\u001b[34m86%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 25/29 [00:08<00:01, 2.95it/s]\u001b[0m\n",
"\u001b[34m90%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 26/29 [00:08<00:01, 2.95it/s]\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[34m93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 27/29 [00:08<00:00, 2.93it/s]\u001b[0m\n",
"\u001b[34m97%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258b| 28/29 [00:09<00:00, 2.91it/s]\u001b[0m\n",
"\u001b[34m100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 29/29 [00:09<00:00, 3.46it/s]\u001b[0m\n",
"\u001b[34m100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 29/29 [00:09<00:00, 3.11it/s]\u001b[0m\n",
"\u001b[34m***** Eval results *****\u001b[0m\n",
"\u001b[34mSaving model checkpoint to /opt/ml/model\u001b[0m\n",
"\u001b[34mSaving model checkpoint to /opt/ml/model\u001b[0m\n",
"\u001b[34mConfiguration saved in /opt/ml/model/config.json\u001b[0m\n",
"\u001b[34mConfiguration saved in /opt/ml/model/config.json\u001b[0m\n",
"\u001b[34mModel weights saved in /opt/ml/model/pytorch_model.bin\u001b[0m\n",
"\u001b[34mModel weights saved in /opt/ml/model/pytorch_model.bin\u001b[0m\n",
"\u001b[34mtokenizer config file saved in /opt/ml/model/tokenizer_config.json\u001b[0m\n",
"\u001b[34mtokenizer config file saved in /opt/ml/model/tokenizer_config.json\u001b[0m\n",
"\u001b[34mSpecial tokens file saved in /opt/ml/model/special_tokens_map.json\u001b[0m\n",
"\u001b[34mSpecial tokens file saved in /opt/ml/model/special_tokens_map.json\u001b[0m\n",
"\u001b[34m2022-04-18 00:53:15,602 sagemaker-training-toolkit INFO Reporting training SUCCESS\u001b[0m\n",
"\u001b[34m2022-04-18 00:53:15,602 asyncio WARNING Loop <_UnixSelectorEventLoop running=False closed=True debug=False> that handles pid 24 is closed\u001b[0m\n",
"\n",
"2022-04-18 00:53:44 Uploading - Uploading generated training model\n",
"2022-04-18 00:59:55 Completed - Training job completed\n",
"Training seconds: 1803\n",
"Billable seconds: 1803\n"
]
}
],
"source": [
"# Start the training job with the uploaded dataset as input\n",
"hf_estimator.fit({\"train\": training_input_path, \"test\": test_input_path})"
]
},
{
"cell_type": "markdown",
"id": "460c2b73",
"metadata": {
"papermill": {
"duration": 0.136538,
"end_time": "2022-04-18T01:00:12.098781",
"exception": false,
"start_time": "2022-04-18T01:00:11.962243",
"status": "completed"
},
"tags": []
},
"source": [
"### Deploy the endpoint\n",
"\n",
"To deploy the endpoint, call `deploy()` on the HuggingFace estimator object, passing in the desired number of instances and instance type."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "d7427005",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T01:00:12.323891Z",
"iopub.status.busy": "2022-04-18T01:00:12.323314Z",
"iopub.status.idle": "2022-04-18T01:07:14.245384Z",
"shell.execute_reply": "2022-04-18T01:07:14.245772Z"
},
"papermill": {
"duration": 422.038097,
"end_time": "2022-04-18T01:07:14.245902",
"exception": false,
"start_time": "2022-04-18T01:00:12.207805",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"--------------!"
]
}
],
"source": [
"predictor = hf_estimator.deploy(1, \"ml.p3.2xlarge\")"
]
},
{
"cell_type": "markdown",
"id": "98e99279",
"metadata": {
"papermill": {
"duration": 0.146386,
"end_time": "2022-04-18T01:07:14.526862",
"exception": false,
"start_time": "2022-04-18T01:07:14.380476",
"status": "completed"
},
"tags": []
},
"source": [
"Then use the returned predictor object to perform inference."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "070e6933",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T01:07:14.838260Z",
"iopub.status.busy": "2022-04-18T01:07:14.837582Z",
"iopub.status.idle": "2022-04-18T01:07:15.483140Z",
"shell.execute_reply": "2022-04-18T01:07:15.483539Z"
},
"papermill": {
"duration": 0.805492,
"end_time": "2022-04-18T01:07:15.483665",
"exception": false,
"start_time": "2022-04-18T01:07:14.678173",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[{'label': 'LABEL_1', 'score': 0.9633631706237793}]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sentiment_input = {\"inputs\": \"I love using the new Inference DLC.\"}\n",
"\n",
"predictor.predict(sentiment_input)"
]
},
{
"cell_type": "markdown",
"id": "06d94c06",
"metadata": {
"papermill": {
"duration": 0.11885,
"end_time": "2022-04-18T01:07:15.716323",
"exception": false,
"start_time": "2022-04-18T01:07:15.597473",
"status": "completed"
},
"tags": []
},
"source": [
"We see that the fine-tuned model classifies the test sentence \"I love using the new Inference DLC.\" as having positive sentiment with 98% probability!"
]
},
{
"cell_type": "markdown",
"id": "205cdad6",
"metadata": {
"papermill": {
"duration": 0.113729,
"end_time": "2022-04-18T01:07:15.944088",
"exception": false,
"start_time": "2022-04-18T01:07:15.830359",
"status": "completed"
},
"tags": []
},
"source": [
"Finally, delete the endpoint."
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "413c2cfb",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T01:07:16.180176Z",
"iopub.status.busy": "2022-04-18T01:07:16.179596Z",
"iopub.status.idle": "2022-04-18T01:07:16.423694Z",
"shell.execute_reply": "2022-04-18T01:07:16.423217Z"
},
"papermill": {
"duration": 0.361879,
"end_time": "2022-04-18T01:07:16.423804",
"exception": false,
"start_time": "2022-04-18T01:07:16.061925",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"predictor.delete_endpoint()"
]
},
{
"cell_type": "markdown",
"id": "cd8b3616",
"metadata": {
"papermill": {
"duration": 0.113825,
"end_time": "2022-04-18T01:07:16.650693",
"exception": false,
"start_time": "2022-04-18T01:07:16.536868",
"status": "completed"
},
"tags": []
},
"source": [
"## Extras"
]
},
{
"cell_type": "markdown",
"id": "4375513f",
"metadata": {
"papermill": {
"duration": 0.113838,
"end_time": "2022-04-18T01:07:16.883137",
"exception": false,
"start_time": "2022-04-18T01:07:16.769299",
"status": "completed"
},
"tags": []
},
"source": [
"### Estimator Parameters"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "7143e6aa",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T01:07:17.115826Z",
"iopub.status.busy": "2022-04-18T01:07:17.115229Z",
"iopub.status.idle": "2022-04-18T01:07:17.142404Z",
"shell.execute_reply": "2022-04-18T01:07:17.141985Z"
},
"papermill": {
"duration": 0.146461,
"end_time": "2022-04-18T01:07:17.142524",
"exception": false,
"start_time": "2022-04-18T01:07:16.996063",
"status": "completed"
},
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Container image used for training job: \n",
"None\n",
"\n",
"S3 URI where the trained model is located: \n",
"s3://sagemaker-us-west-2-000000000000/huggingface-pytorch-training-2022-04-18-00-28-14-084/output/model.tar.gz\n",
"\n",
"Latest training job name for this estimator: \n",
"huggingface-pytorch-training-2022-04-18-00-28-14-084\n",
"\n"
]
}
],
"source": [
"print(f\"Container image used for training job: \\n{hf_estimator.image_uri}\\n\")\n",
"print(f\"S3 URI where the trained model is located: \\n{hf_estimator.model_data}\\n\")\n",
"print(f\"Latest training job name for this estimator: \\n{hf_estimator.latest_training_job.name}\\n\")"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "34a96aaa",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T01:07:17.383096Z",
"iopub.status.busy": "2022-04-18T01:07:17.382339Z",
"iopub.status.idle": "2022-04-18T01:07:17.875946Z",
"shell.execute_reply": "2022-04-18T01:07:17.875488Z"
},
"papermill": {
"duration": 0.614515,
"end_time": "2022-04-18T01:07:17.876056",
"exception": false,
"start_time": "2022-04-18T01:07:17.261541",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-04-18 01:00:05 Starting - Preparing the instances for training\n",
"2022-04-18 01:00:05 Downloading - Downloading input data\n",
"2022-04-18 01:00:05 Training - Training image download completed. Training in progress.\n",
"2022-04-18 01:00:05 Uploading - Uploading generated training model\n",
"2022-04-18 01:00:05 Completed - Training job completed\u001b[34mbash: cannot set terminal process group (-1): Inappropriate ioctl for device\u001b[0m\n",
"\u001b[34mbash: no job control in this shell\u001b[0m\n",
"\u001b[34m2022-04-18 00:35:22,153 sagemaker-training-toolkit INFO Imported framework sagemaker_pytorch_container.training\u001b[0m\n",
"\u001b[34m2022-04-18 00:35:22,181 sagemaker_pytorch_container.training INFO Block until all host DNS lookups succeed.\u001b[0m\n",
"\u001b[34m2022-04-18 00:35:22,187 sagemaker_pytorch_container.training INFO Invoking user training script.\u001b[0m\n",
"\u001b[34m2022-04-18 00:35:22,707 sagemaker-training-toolkit INFO Invoking user script\u001b[0m\n",
"...\n",
"\u001b[34m***** Running Evaluation *****\u001b[0m\n",
"\u001b[34m***** Running Evaluation *****\n",
" Num examples = 1821\u001b[0m\n",
"\u001b[34mNum examples = 1821\n",
" Batch size = 64\u001b[0m\n",
"\u001b[34mBatch size = 64\u001b[0m\n",
"\u001b[34m0%| | 0/29 [00:00, ?it/s]\u001b[0m\n",
"\u001b[34m7%|\u258b | 2/29 [00:00<00:04, 5.81it/s]\u001b[0m\n",
"\u001b[34m10%|\u2588 | 3/29 [00:00<00:06, 4.14it/s]\u001b[0m\n",
"\u001b[34m14%|\u2588\u258d | 4/29 [00:01<00:06, 3.60it/s]\u001b[0m\n",
"\u001b[34m17%|\u2588\u258b | 5/29 [00:01<00:07, 3.35it/s]\u001b[0m\n",
"\u001b[34m21%|\u2588\u2588 | 6/29 [00:01<00:07, 3.21it/s]\u001b[0m\n",
"\u001b[34m24%|\u2588\u2588\u258d | 7/29 [00:02<00:07, 3.13it/s]\u001b[0m\n",
"\u001b[34m28%|\u2588\u2588\u258a | 8/29 [00:02<00:06, 3.06it/s]\u001b[0m\n",
"\u001b[34m31%|\u2588\u2588\u2588 | 9/29 [00:02<00:06, 3.02it/s]\u001b[0m\n",
"\u001b[34m34%|\u2588\u2588\u2588\u258d | 10/29 [00:03<00:06, 3.00it/s]\u001b[0m\n",
"\u001b[34m38%|\u2588\u2588\u2588\u258a | 11/29 [00:03<00:06, 2.99it/s]\u001b[0m\n",
"\u001b[34m41%|\u2588\u2588\u2588\u2588\u258f | 12/29 [00:03<00:05, 2.98it/s]\u001b[0m\n",
"\u001b[34m45%|\u2588\u2588\u2588\u2588\u258d | 13/29 [00:04<00:05, 2.96it/s]\u001b[0m\n",
"\u001b[34m48%|\u2588\u2588\u2588\u2588\u258a | 14/29 [00:04<00:05, 2.96it/s]\u001b[0m\n",
"\u001b[34m52%|\u2588\u2588\u2588\u2588\u2588\u258f | 15/29 [00:04<00:04, 2.96it/s]\u001b[0m\n",
"\u001b[34m55%|\u2588\u2588\u2588\u2588\u2588\u258c | 16/29 [00:05<00:04, 2.96it/s]\u001b[0m\n",
"\u001b[34m59%|\u2588\u2588\u2588\u2588\u2588\u258a | 17/29 [00:05<00:04, 2.96it/s]\u001b[0m\n",
"\u001b[34m62%|\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 18/29 [00:05<00:03, 2.96it/s]\u001b[0m\n",
"\u001b[34m66%|\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 19/29 [00:06<00:03, 2.96it/s]\u001b[0m\n",
"\u001b[34m69%|\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 20/29 [00:06<00:03, 2.96it/s]\u001b[0m\n",
"\u001b[34m72%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 21/29 [00:06<00:02, 2.96it/s]\u001b[0m\n",
"\u001b[34m76%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 22/29 [00:07<00:02, 2.96it/s]\u001b[0m\n",
"\u001b[34m79%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 23/29 [00:07<00:02, 2.96it/s]\u001b[0m\n",
"\u001b[34m83%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e | 24/29 [00:07<00:01, 2.96it/s]\u001b[0m\n",
"\u001b[34m86%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 25/29 [00:08<00:01, 2.95it/s]\u001b[0m\n",
"\u001b[34m90%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 26/29 [00:08<00:01, 2.95it/s]\u001b[0m\n",
"\u001b[34m93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 27/29 [00:08<00:00, 2.93it/s]\u001b[0m\n",
"\u001b[34m97%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258b| 28/29 [00:09<00:00, 2.91it/s]\u001b[0m\n",
"\u001b[34m100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 29/29 [00:09<00:00, 3.46it/s]\u001b[0m\n",
"\u001b[34m100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 29/29 [00:09<00:00, 3.11it/s]\u001b[0m\n",
"\u001b[34m***** Eval results *****\u001b[0m\n",
"\u001b[34mSaving model checkpoint to /opt/ml/model\u001b[0m\n",
"\u001b[34mSaving model checkpoint to /opt/ml/model\u001b[0m\n",
"\u001b[34mConfiguration saved in /opt/ml/model/config.json\u001b[0m\n",
"\u001b[34mConfiguration saved in /opt/ml/model/config.json\u001b[0m\n",
"\u001b[34mModel weights saved in /opt/ml/model/pytorch_model.bin\u001b[0m\n",
"\u001b[34mModel weights saved in /opt/ml/model/pytorch_model.bin\u001b[0m\n",
"\u001b[34mtokenizer config file saved in /opt/ml/model/tokenizer_config.json\u001b[0m\n",
"\u001b[34mtokenizer config file saved in /opt/ml/model/tokenizer_config.json\u001b[0m\n",
"\u001b[34mSpecial tokens file saved in /opt/ml/model/special_tokens_map.json\u001b[0m\n",
"\u001b[34mSpecial tokens file saved in /opt/ml/model/special_tokens_map.json\u001b[0m\n",
"\u001b[34m2022-04-18 00:53:15,602 sagemaker-training-toolkit INFO Reporting training SUCCESS\u001b[0m\n",
"\u001b[34m2022-04-18 00:53:15,602 asyncio WARNING Loop <_UnixSelectorEventLoop running=False closed=True debug=False> that handles pid 24 is closed\u001b[0m\n"
]
}
],
"source": [
"hf_estimator.sagemaker_session.logs_for_job(hf_estimator.latest_training_job.name)"
]
},
{
"cell_type": "markdown",
"id": "a6f72e37",
"metadata": {
"papermill": {
"duration": 0.121572,
"end_time": "2022-04-18T01:07:18.118278",
"exception": false,
"start_time": "2022-04-18T01:07:17.996706",
"status": "completed"
},
"tags": []
},
"source": [
"### Attach a previous training job to an estimator\n",
"\n",
"In SageMaker, you can attach a previous training job to an estimator to continue training, get results, etc."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "32d33369",
"metadata": {
"execution": {
"iopub.execute_input": "2022-04-18T01:07:18.367415Z",
"iopub.status.busy": "2022-04-18T01:07:18.366646Z",
"iopub.status.idle": "2022-04-18T01:07:18.369108Z",
"shell.execute_reply": "2022-04-18T01:07:18.369526Z"
},
"papermill": {
"duration": 0.130183,
"end_time": "2022-04-18T01:07:18.369662",
"exception": false,
"start_time": "2022-04-18T01:07:18.239479",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"from sagemaker.estimator import Estimator\n",
"\n",
"# Uncomment the following lines and supply your training job name\n",
"\n",
"# old_training_job_name = \"\"\n",
"# hf_estimator_loaded = Estimator.attach(old_training_job_name)\n",
"# hf_estimator_loaded.model_data"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Notebook CI Test Results\n",
"\n",
"This notebook was tested in multiple regions. The test results are as follows, except for us-west-2 which is shown at the top of the notebook.\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
}
],
"metadata": {
"instance_type": "ml.t3.medium",
"interpreter": {
"hash": "c281c456f1b8161c8906f4af2c08ed2c40c50136979eaae69688b01f70e9f4a9"
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.9"
},
"papermill": {
"default_parameters": {},
"duration": 2547.846647,
"end_time": "2022-04-18T01:07:19.314482",
"environment_variables": {},
"exception": null,
"input_path": "huggingface_sentiment.ipynb",
"output_path": "/opt/ml/processing/output/huggingface_sentiment-2022-04-18-00-10-53.ipynb",
"parameters": {
"kms_key": "arn:aws:kms:us-west-2:000000000000:1234abcd-12ab-34cd-56ef-1234567890ab"
},
"start_time": "2022-04-18T00:24:51.467835",
"version": "2.3.4"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {
"0507bfb962bc4b23849e2c19317146c1": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_db5b02aa300144b0ad9616e49aa1fb75",
"max": 2,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_b770f73b777b4f80be89f8e697a8a348",
"value": 2
}
},
"05da371f3fd74ba3a653a1790619f376": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"064e6500143f4bfd97dbef2ed433dcd6": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"06644fc83a0b422d8f07f2766da1dbff": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_672e12d7bd36413588a1eb8c13e0b7d9",
"placeholder": "\u200b",
"style": "IPY_MODEL_e17a1562394c4edead14d9f6f478fdca",
"value": " 68/68 [00:49<00:00, 1.62ba/s]"
}
},
"0af757d4290148faaf2dc3ae6bb6877e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"0bb774d33beb4c678fe743cf5fe04fc5": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_f16f1e76370e47fc89566ab6ce5e9053",
"IPY_MODEL_9d672bc38fab428ab78888eaf5081698",
"IPY_MODEL_2075e61bf45945e7910a36bad38c685a"
],
"layout": "IPY_MODEL_35d3591f50d64dc8a60fd814776301b7"
}
},
"115a5fa35cc04b2e92c0c0cf59e996ab": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"1202b63879aa4f9693727b3a933033bd": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_43d2825e2d9a49afbf9e0767c8e04105",
"IPY_MODEL_d61649c2036740a89f5452bb78272724",
"IPY_MODEL_70d90fd8e85f4f3e93b7f2d4c64a743d"
],
"layout": "IPY_MODEL_67898538882c48329da078087550e7cc"
}
},
"13cd6370330940fb8dc68e38f99b4f74": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"15443cbd146b4b1482d5770ab3fef754": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_81fb70e1acee40a79857eff9f693ee98",
"max": 483,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_eb22277e1fba4591b7f61ebdf8abae4d",
"value": 483
}
},
"1918b226759348eb841252a66b60b4d5": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"1c070f061f5f4f4b8acc5df432ac40c2": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"1f4f657d2daf4f3494c3eab7921f0771": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_b7ad491ae618434fb777f39398fc59e5",
"IPY_MODEL_0507bfb962bc4b23849e2c19317146c1",
"IPY_MODEL_822fc69e0fc04e6aba0a5afdccdd122f"
],
"layout": "IPY_MODEL_d809bbd8d75544a198e67ec918ebda17"
}
},
"2075e61bf45945e7910a36bad38c685a": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_efad6d92118c40bc875ba44645d63c3b",
"placeholder": "\u200b",
"style": "IPY_MODEL_231be0b015e7467b9494eebfa401c8af",
"value": " 455k/455k [00:00<00:00, 870kB/s]"
}
},
"231be0b015e7467b9494eebfa401c8af": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"23398e0688734865bc8a716d449078b1": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"260e28487fcb48ed91f37deaac1747f7": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"29721ddd2b914cf39025b9c3513445e6": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_ee781dc232d64736b58b76411ae6d731",
"IPY_MODEL_15443cbd146b4b1482d5770ab3fef754",
"IPY_MODEL_2de62c4abed7413e9df1d2c68fd377c9"
],
"layout": "IPY_MODEL_05da371f3fd74ba3a653a1790619f376"
}
},
"2de62c4abed7413e9df1d2c68fd377c9": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c3c26d8425ba40b68b58549e14a9d56e",
"placeholder": "\u200b",
"style": "IPY_MODEL_1918b226759348eb841252a66b60b4d5",
"value": " 483/483 [00:00<00:00, 4.16kB/s]"
}
},
"2f67e432cef9402d802e92c1e522933f": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"30737d9949374f769b1a9ad254dbe3ea": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"30fb9bcb9a2f49bf81307985bb3ca866": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_cc8a5b3e1c6c4c16979b3bfafd6f48ef",
"IPY_MODEL_d6d658288f67497fa0208fff6c3b4ea9",
"IPY_MODEL_06644fc83a0b422d8f07f2766da1dbff"
],
"layout": "IPY_MODEL_7448ee8d97244e0aa36a5b81be92d6a6"
}
},
"35d3591f50d64dc8a60fd814776301b7": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"3e0a5e9781544e1f9353b64b4b013e47": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"402ef95700ab4b378fd6d750bec66919": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_ff100982f78e4fa89d285fd2d4a4f52c",
"max": 28,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_44cb50377069465fbf9aebaa83891d61",
"value": 28
}
},
"43d2825e2d9a49afbf9e0767c8e04105": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_6178ddc5dfdd4a60a04d99bd1411800e",
"placeholder": "\u200b",
"style": "IPY_MODEL_115a5fa35cc04b2e92c0c0cf59e996ab",
"value": "Downloading: 100%"
}
},
"44cb50377069465fbf9aebaa83891d61": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"48d2523b267d4ebbafc80cc8333badd0": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"5190a35e1c9a4a2a8f5d64f44e4536c9": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"5c8ef22b26a749ed8a1e751ed50f37c6": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_23398e0688734865bc8a716d449078b1",
"placeholder": "\u200b",
"style": "IPY_MODEL_600fff84bcc44f4fa39fc7b32fdbf21b",
"value": "Downloading: 100%"
}
},
"5cfa5f66420845b9bb5f07410b4f4df4": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"600fff84bcc44f4fa39fc7b32fdbf21b": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"6178ddc5dfdd4a60a04d99bd1411800e": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"672e12d7bd36413588a1eb8c13e0b7d9": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"67898538882c48329da078087550e7cc": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"6ae8c5fa54cd40c898bc809147f6d96e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_5c8ef22b26a749ed8a1e751ed50f37c6",
"IPY_MODEL_402ef95700ab4b378fd6d750bec66919",
"IPY_MODEL_dc009f715d964313bd7bd3ca7888e11e"
],
"layout": "IPY_MODEL_ce2fe5cd0f3d407ea92fd5c4ab198bb4"
}
},
"70d90fd8e85f4f3e93b7f2d4c64a743d": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_5cfa5f66420845b9bb5f07410b4f4df4",
"placeholder": "\u200b",
"style": "IPY_MODEL_8795bfa8df194300be7b404e0c642547",
"value": " 226k/226k [00:00<00:00, 436kB/s]"
}
},
"73e2719db653444fb2b0f91df9ab2556": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"7448ee8d97244e0aa36a5b81be92d6a6": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"74e5b8fd98b04042bccea102442b802e": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"81fb70e1acee40a79857eff9f693ee98": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"822fc69e0fc04e6aba0a5afdccdd122f": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_1c070f061f5f4f4b8acc5df432ac40c2",
"placeholder": "\u200b",
"style": "IPY_MODEL_0af757d4290148faaf2dc3ae6bb6877e",
"value": " 2/2 [00:01<00:00, 1.18ba/s]"
}
},
"8795bfa8df194300be7b404e0c642547": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"9a7efc003922466a93a311786e2c9d91": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"9d672bc38fab428ab78888eaf5081698": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_5190a35e1c9a4a2a8f5d64f44e4536c9",
"max": 466062,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_30737d9949374f769b1a9ad254dbe3ea",
"value": 466062
}
},
"b770f73b777b4f80be89f8e697a8a348": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"b7ad491ae618434fb777f39398fc59e5": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_ee932745e68147e69f4a48761930fab0",
"placeholder": "\u200b",
"style": "IPY_MODEL_73e2719db653444fb2b0f91df9ab2556",
"value": "100%"
}
},
"c3c26d8425ba40b68b58549e14a9d56e": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c53328791daa41ff9c6ed241ff33b362": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"c8a173f706a04992bee02c1c8a40acb4": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"cc8a5b3e1c6c4c16979b3bfafd6f48ef": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c8a173f706a04992bee02c1c8a40acb4",
"placeholder": "\u200b",
"style": "IPY_MODEL_9a7efc003922466a93a311786e2c9d91",
"value": "100%"
}
},
"ce2fe5cd0f3d407ea92fd5c4ab198bb4": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"d075ca8f6c914eb6bac8bc0ad8d2ca31": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"d61649c2036740a89f5452bb78272724": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_064e6500143f4bfd97dbef2ed433dcd6",
"max": 231508,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_3e0a5e9781544e1f9353b64b4b013e47",
"value": 231508
}
},
"d6d658288f67497fa0208fff6c3b4ea9": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_74e5b8fd98b04042bccea102442b802e",
"max": 68,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_d075ca8f6c914eb6bac8bc0ad8d2ca31",
"value": 68
}
},
"d809bbd8d75544a198e67ec918ebda17": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"d87fd41dbe924669acfa53a150715bd7": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"db5b02aa300144b0ad9616e49aa1fb75": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"dc009f715d964313bd7bd3ca7888e11e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_260e28487fcb48ed91f37deaac1747f7",
"placeholder": "\u200b",
"style": "IPY_MODEL_d87fd41dbe924669acfa53a150715bd7",
"value": " 28.0/28.0 [00:00<00:00, 141B/s]"
}
},
"e17a1562394c4edead14d9f6f478fdca": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"eb22277e1fba4591b7f61ebdf8abae4d": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"ee781dc232d64736b58b76411ae6d731": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_13cd6370330940fb8dc68e38f99b4f74",
"placeholder": "\u200b",
"style": "IPY_MODEL_48d2523b267d4ebbafc80cc8333badd0",
"value": "Downloading: 100%"
}
},
"ee932745e68147e69f4a48761930fab0": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"efad6d92118c40bc875ba44645d63c3b": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"f16f1e76370e47fc89566ab6ce5e9053": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_2f67e432cef9402d802e92c1e522933f",
"placeholder": "\u200b",
"style": "IPY_MODEL_c53328791daa41ff9c6ed241ff33b362",
"value": "Downloading: 100%"
}
},
"ff100982f78e4fa89d285fd2d4a4f52c": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
}
},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}