{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "cUsmLBhM8m-Y"
},
"source": [
"# Get Started with MLflow + Tensorflow\n",
"\n",
"In this guide, we will show how to train your model with Tensorflow and log your training using MLflow.\n",
"\n",
"We will use [Databricks Community Edition](https://community.cloud.databricks.com/) as our tracking server, which has built-in support for MLflow. Databricks CE is the free version of Databricks platform, if you haven't, please register an account via [link](https://www.databricks.com/try-databricks).\n",
"\n",
"You can run code in this guide from cloud-based notebooks like Databricks notebook or Google Colab, or run it on your local machine."
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Download this Notebook
"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9btw8G129PH9"
},
"source": [
"## Install dependencies\n",
"\n",
"Let's install the `mlflow` package.\n",
"\n",
"```\n",
"%pip install -q mlflow\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VrVhET8SqbbC"
},
"source": [
"Then let's import the packages."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "oHqHIk47LR2K"
},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import tensorflow_datasets as tfds\n",
"from tensorflow import keras"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "-BMTIjPv9gFa"
},
"source": [
"## Load the dataset\n",
"\n",
"We will do a simple image classification on handwritten digits with [mnist dataset](https://en.wikipedia.org/wiki/MNIST_database).\n",
"\n",
"Let's load the dataset using `tensorflow_datasets` (`tfds`), which returns datasets in the format of `tf.data.Dataset`."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 84,
"referenced_widgets": [
"566a69125ddd427d8457d7e2611f0580",
"18bd22efdd364dcb98394201aeb061fa",
"2da8b710da0c436797d9af1e060ce291",
"96e228eded5e425eae99a3d457148b41",
"add54517e4e041f1a97e8ea453c06a89",
"eb79549bc61f4a898dfa5994da8cfe7c",
"510c6bf3cf7849179e8df0b7f2f7c43f",
"29649fb2acda40a38917809dbb40c88a",
"bdadadc379e74bdebd5d1816a5a2222f",
"ceb2c2d45b2e41e1ada0e82d6b8846a5",
"ce853fbfbdef4189921c206e313fd9ab"
]
},
"id": "n5yeMBEwLSUA",
"outputId": "4eb600fe-965c-442b-837f-393691bf7a79"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading and preparing dataset 11.06 MiB (download: 11.06 MiB, generated: 21.00 MiB, total: 32.06 MiB) to /root/tensorflow_datasets/mnist/3.0.1...\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "566a69125ddd427d8457d7e2611f0580",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Dl Completed...: 0%| | 0/5 [00:00, ? file/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataset mnist downloaded and prepared to /root/tensorflow_datasets/mnist/3.0.1. Subsequent calls will reuse this data.\n"
]
}
],
"source": [
"# Load the mnist dataset.\n",
"train_ds, test_ds = tfds.load(\n",
" \"mnist\",\n",
" split=[\"train\", \"test\"],\n",
" shuffle_files=True,\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "s3Uv9goa-Stw"
},
"source": [
"Let's preprocess our data with the following steps:\n",
"- Scale each pixel's value to `[0, 1)`.\n",
"- Batch the dataset.\n",
"- Use `prefetch` to speed up the training."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "7iaIqGWPRoZK"
},
"outputs": [],
"source": [
"def preprocess_fn(data):\n",
" image = tf.cast(data[\"image\"], tf.float32) / 255\n",
" label = data[\"label\"]\n",
" return (image, label)\n",
"\n",
"\n",
"train_ds = train_ds.map(preprocess_fn).batch(128).prefetch(tf.data.AUTOTUNE)\n",
"test_ds = test_ds.map(preprocess_fn).batch(128).prefetch(tf.data.AUTOTUNE)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aO7CTCmO-7Ee"
},
"source": [
"## Define the Model\n",
"\n",
"Let's define a convolutional neural network as our classifier. We can use `keras.Sequential` to stack up the layers."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"id": "-la8_gKPM3LQ"
},
"outputs": [],
"source": [
"input_shape = (28, 28, 1)\n",
"num_classes = 10\n",
"\n",
"model = keras.Sequential(\n",
" [\n",
" keras.Input(shape=input_shape),\n",
" keras.layers.Conv2D(32, kernel_size=(3, 3), activation=\"relu\"),\n",
" keras.layers.MaxPooling2D(pool_size=(2, 2)),\n",
" keras.layers.Conv2D(64, kernel_size=(3, 3), activation=\"relu\"),\n",
" keras.layers.MaxPooling2D(pool_size=(2, 2)),\n",
" keras.layers.Flatten(),\n",
" keras.layers.Dropout(0.5),\n",
" keras.layers.Dense(num_classes, activation=\"softmax\"),\n",
" ]\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WsByR1pF_GoQ"
},
"source": [
"Set training-related configs, optimizers, loss function, metrics."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"id": "4IEPlHw6PvEm"
},
"outputs": [],
"source": [
"model.compile(\n",
" loss=keras.losses.SparseCategoricalCrossentropy(),\n",
" optimizer=keras.optimizers.Adam(0.001),\n",
" metrics=[keras.metrics.SparseCategoricalAccuracy()],\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MS53qvIy_R8g"
},
"source": [
"## Set up tracking/visualization tool\n",
"\n",
"In this tutorial, we will use Databricks CE as MLflow tracking server. For other options such as using your local MLflow server, please read the [Tracking Server Overview](https://mlflow.org/docs/latest/getting-started/tracking-server-overview/index.html).\n",
"\n",
"If you have not, please register an account of [Databricks community edition](https://www.databricks.com/try-databricks#account). It should take no longer than 1min to register. Databricks CE (community edition) is a free platform for users to try out Databricks features. For this guide, we need the ML experiment dashboard for us to track our training progress.\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FRrSfJz8_Uj6"
},
"source": [
"After successfully registering an account on Databricks CE, let's connnect MLflow to Databricks CE. You will need to enter following information:\n",
"- **Databricks Host**: https://community.cloud.databricks.com/\n",
"- **Username**: your signed up email\n",
"- **Password**: your password"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "TJX1dnW5aUJR",
"outputId": "9e97d75e-c6ca-42f8-f1b5-1db4a28a3db9"
},
"outputs": [],
"source": [
"import mlflow\n",
"\n",
"mlflow.login()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "I7PCn16y_bbH"
},
"source": [
"Now this colab is connected to the hosted tracking server. Let's configure MLflow metadata. Two things to set up:\n",
"- `mlflow.set_tracking_uri`: always use \"databricks\".\n",
"- `mlflow.set_experiment`: pick up a name you like, start with `/`."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "j_QbNd9v_eyz"
},
"source": [
"## Logging with MLflow\n",
"\n",
"There are two ways you can log to MLflow from your Tensorflow pipeline:\n",
"- MLflow auto logging.\n",
"- Use a callback.\n",
"\n",
"Auto logging is simple to configure, but gives you less control. Using a callback is more flexible. Let's see how each way is done."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2Jy-qVMNF24h"
},
"source": [
"### MLflow Auto Logging\n",
"\n",
"All you need to do is to call `mlflow.tensorflow.autolog()` before kicking off the training, then the backend will automatically log the metrics into the server you configured earlier. In our case, Databricks CE."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 327,
"referenced_widgets": [
"de4eb6d3e7e144e1bc11b1aacccbba71",
"a99f655a1ebf42bfbb90b05f48ad24e9",
"448b25199b1a4ec9b8f2cdc25b2f1039",
"da11f979f4dc469e9f8cb0deeb92e6b7",
"d0cefb88ddfd43cead84f492d599518e",
"f402b9176d654dac81dd02fbea505ac9",
"adab65f6d498413093146387f307a68f",
"6f294b6b688d4f6d9afc88dc1910b43a",
"fc6a2d3d9e134a419705c36dc2445a3d",
"bd50c6218a6a4157b22783034e6d2a16",
"db1cd6966f7e4b08b20292560f73f8ce",
"a6f8902f7a7f443a817cd109eab67918",
"319e7f629d814f40a0f1c4ba8eecb2fa",
"af6093ca6ce642cba9552c40ce0b5261",
"11fb28cc13f344c2b625aec5e42cfd38",
"d077d4265c5f4d53bebf2b6d5bf35202",
"385d99e2967c4c65a1914819ead631fe",
"09b353a593074b29a02c9a1312969526",
"af0297e530934bfba081ceb0b1f80ee8",
"6802b9e5c7b84de3afc1834de2cafcb5",
"50e497581aa24af0a63f240a04deedae",
"f45b994ed77d461cbfcebc4aa67e61a7"
]
},
"id": "tY-xWJOIQArU",
"outputId": "a8a0ae06-1e2a-4265-bfa2-eb9c12a8c868"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023/11/15 01:53:35 INFO mlflow.utils.autologging_utils: Created MLflow autologging run with ID '7c1db53e417b43f0a1d9e095c9943acb', which will track hyperparameters, performance metrics, model artifacts, and lineage information for the current tensorflow workflow\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/3\n",
"469/469 [==============================] - 13s 7ms/step - loss: 0.3610 - sparse_categorical_accuracy: 0.8890\n",
"Epoch 2/3\n",
"469/469 [==============================] - 3s 6ms/step - loss: 0.1035 - sparse_categorical_accuracy: 0.9681\n",
"Epoch 3/3\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.0798 - sparse_categorical_accuracy: 0.9760\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023/11/15 01:54:05 WARNING mlflow.tensorflow: Failed to infer model signature: could not sample data to infer model signature: tuple index out of range\n",
"2023/11/15 01:54:05 WARNING mlflow.models.model: Model logged without a signature. Signatures will be required for upcoming model registry features as they validate model inputs and denote the expected schema of model outputs. Please visit https://www.mlflow.org/docs/2.8.1/models.html#set-signature-on-logged-model for instructions on setting a model signature on your logged model.\n",
"2023/11/15 01:54:05 WARNING mlflow.tensorflow: You are saving a TensorFlow Core model or Keras model without a signature. Inference with mlflow.pyfunc.spark_udf() will not work unless the model's pyfunc representation accepts pandas DataFrames as inference inputs.\n",
"2023/11/15 01:54:13 WARNING mlflow.utils.autologging_utils: MLflow autologging encountered a warning: \"/usr/local/lib/python3.10/dist-packages/_distutils_hack/__init__.py:33: UserWarning: Setuptools is replacing distutils.\"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "de4eb6d3e7e144e1bc11b1aacccbba71",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Uploading artifacts: 0%| | 0/11 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023/11/15 01:54:13 INFO mlflow.store.artifact.cloud_artifact_repo: The progress bar can be disabled by setting the environment variable MLFLOW_ENABLE_ARTIFACTS_PROGRESS_BAR to false\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a6f8902f7a7f443a817cd109eab67918",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Uploading artifacts: 0%| | 0/1 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Choose any name that you like.\n",
"mlflow.set_experiment(\"/mlflow-tf-keras-mnist\")\n",
"\n",
"mlflow.tensorflow.autolog()\n",
"\n",
"model.fit(x=train_ds, epochs=3)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AIVCW6gP3d4d"
},
"source": [
"While your training is ongoing, you can find this training in your dashboard. Log in to your [Databricks CE](https://community.cloud.databricks.com/) account, and click on top left to select machine learning in the drop down list. Then click on the experiment icon. See the screenshot below:\n",
"![landing page](https://i.imgur.com/eQgnAcI.png)\n",
"\n",
"After clicking the `Experiment` button, it will bring you to the experiment page, where you can find your runs. Clicking on the most recent experiment and run, you can find your metrics there, similar to:\n",
"![experiment page](https://i.imgur.com/uuHLttD.png)\n",
"\n",
"\n",
"You can click on metrics to see the chart."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "X95jT-XWGO7v"
},
"source": [
"Let's evaluate the training result."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "m2mXAq34SbLv",
"outputId": "6879d2d1-f49a-4037-f179-c3d10e27c4a1"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"79/79 [==============================] - 1s 12ms/step - loss: 0.0484 - sparse_categorical_accuracy: 0.9838\n",
"Test loss: 0.05\n",
"Test accuracy: 0.98\n"
]
}
],
"source": [
"score = model.evaluate(test_ds)\n",
"\n",
"print(f\"Test loss: {score[0]:.4f}\")\n",
"print(f\"Test accuracy: {score[1]: .2f}\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1g30CHoDGcry"
},
"source": [
"### Log with MLflow Callback\n",
"\n",
"Auto logging is powerful and convenient, but if you are looking for a more native way as Tensorflow pipelines, you can use `mlflow.tensorflow.MllflowCallback` inside `model.fit()`, it will log:\n",
"- Your model configuration, layers, hyperparameters and so on.\n",
"- The training stats, including losses and metrics configured with `model.compile()`."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fbZ0S53GzkJI",
"outputId": "726f4b18-8bca-4869-b89f-044cdc2647ec"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/2\n",
"469/469 [==============================] - 5s 10ms/step - loss: 0.0473 - sparse_categorical_accuracy: 0.9851\n",
"Epoch 2/2\n",
"469/469 [==============================] - 4s 8ms/step - loss: 0.0432 - sparse_categorical_accuracy: 0.9866\n"
]
}
],
"source": [
"from mlflow.tensorflow import MlflowCallback\n",
"\n",
"# Turn off autologging.\n",
"mlflow.tensorflow.autolog(disable=True)\n",
"\n",
"with mlflow.start_run() as run:\n",
" model.fit(\n",
" x=train_ds,\n",
" epochs=2,\n",
" callbacks=[MlflowCallback(run)],\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WaU6fUiE5nJT"
},
"source": [
"Going to the Databricks CE experiment view, you will see a similar dashboard as before."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NIMvwl_o1oYk"
},
"source": [
"### Customize the MLflow Callback\n",
"\n",
"If you want to add extra logging logic, you can customize the MLflow callback. You can either subclass from `keras.callbacks.Callback` and write everything from scratch or subclass from `mlflow.tensorflow.MllflowCallback` to add you custom logging logic.\n",
"\n",
"Let's look at an example that we want to replace the loss with its log value to log to MLflow."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"id": "ugjFO4gZZLmW"
},
"outputs": [],
"source": [
"import math\n",
"\n",
"\n",
"# Create our own callback by subclassing `MlflowCallback`.\n",
"class MlflowCustomCallback(MlflowCallback):\n",
" def on_epoch_end(self, epoch, logs=None):\n",
" if not self.log_every_epoch:\n",
" return\n",
" loss = logs[\"loss\"]\n",
" logs[\"log_loss\"] = math.log(loss)\n",
" del logs[\"loss\"]\n",
" self.metrics_logger.record_metrics(logs, epoch)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pT63tsyb3FVm"
},
"source": [
"Train the model with the new callback."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "43EbF19S70Nl",
"outputId": "2921634d-310d-40f0-ee46-0c494851f385"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/2\n",
"469/469 [==============================] - 5s 10ms/step - loss: 0.0537 - sparse_categorical_accuracy: 0.9834 - log_loss: -2.9237\n",
"Epoch 2/2\n",
"469/469 [==============================] - 4s 9ms/step - loss: 0.0497 - sparse_categorical_accuracy: 0.9846 - log_loss: -3.0022\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023/11/15 01:57:50 WARNING mlflow.utils.autologging_utils: Encountered unexpected error during tensorflow autologging: MLflow autologging must be turned off if an `MllflowCallback` is explicitly added to the callback list. You are creating an `MllflowCallback` while having autologging enabled. Please either call `mlflow.tensorflow.autolog(disable=True)` to disable autologging or remove `MllflowCallback` from the callback list. \n"
]
}
],
"source": [
"with mlflow.start_run() as run:\n",
" run_id = run.info.run_id\n",
" model.fit(\n",
" x=train_ds,\n",
" epochs=2,\n",
" callbacks=[MlflowCustomCallback(run)],\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7PVnD52Z4d-f"
},
"source": [
"Going to your Databricks CE page, you should find the `log_loss` is replacing the `loss` metric, similar to what is shown in the screenshot below.\n",
"\n",
"![log loss screenshot](https://i.imgur.com/dncAwaP.png)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "IVvs6k34tSkX"
},
"source": [
"## Wrap up\n",
"\n",
"Now you have learned the basic integration between MLflow and Tensorflow. There are a few things not covered by this quickstart, e.g., saving TF model to MLflow and loading it back. For a detailed guide, please refer to our main guide for integration between MLflow and Tensorflow."
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"gpuType": "T4",
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"09b353a593074b29a02c9a1312969526": {
"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": ""
}
},
"11fb28cc13f344c2b625aec5e42cfd38": {
"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_50e497581aa24af0a63f240a04deedae",
"placeholder": "",
"style": "IPY_MODEL_f45b994ed77d461cbfcebc4aa67e61a7",
"value": " 1/1 [00:00<00:00, 3.52it/s]"
}
},
"18bd22efdd364dcb98394201aeb061fa": {
"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_eb79549bc61f4a898dfa5994da8cfe7c",
"placeholder": "",
"style": "IPY_MODEL_510c6bf3cf7849179e8df0b7f2f7c43f",
"value": "Dl Completed...: 100%"
}
},
"29649fb2acda40a38917809dbb40c88a": {
"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
}
},
"2da8b710da0c436797d9af1e060ce291": {
"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_29649fb2acda40a38917809dbb40c88a",
"max": 5,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_bdadadc379e74bdebd5d1816a5a2222f",
"value": 5
}
},
"319e7f629d814f40a0f1c4ba8eecb2fa": {
"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_385d99e2967c4c65a1914819ead631fe",
"placeholder": "",
"style": "IPY_MODEL_09b353a593074b29a02c9a1312969526",
"value": "Uploading artifacts: 100%"
}
},
"385d99e2967c4c65a1914819ead631fe": {
"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
}
},
"448b25199b1a4ec9b8f2cdc25b2f1039": {
"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_6f294b6b688d4f6d9afc88dc1910b43a",
"max": 11,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_fc6a2d3d9e134a419705c36dc2445a3d",
"value": 11
}
},
"50e497581aa24af0a63f240a04deedae": {
"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
}
},
"510c6bf3cf7849179e8df0b7f2f7c43f": {
"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": ""
}
},
"566a69125ddd427d8457d7e2611f0580": {
"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_18bd22efdd364dcb98394201aeb061fa",
"IPY_MODEL_2da8b710da0c436797d9af1e060ce291",
"IPY_MODEL_96e228eded5e425eae99a3d457148b41"
],
"layout": "IPY_MODEL_add54517e4e041f1a97e8ea453c06a89"
}
},
"6802b9e5c7b84de3afc1834de2cafcb5": {
"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": ""
}
},
"6f294b6b688d4f6d9afc88dc1910b43a": {
"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
}
},
"96e228eded5e425eae99a3d457148b41": {
"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_ceb2c2d45b2e41e1ada0e82d6b8846a5",
"placeholder": "",
"style": "IPY_MODEL_ce853fbfbdef4189921c206e313fd9ab",
"value": " 5/5 [00:00<00:00, 9.68 file/s]"
}
},
"a6f8902f7a7f443a817cd109eab67918": {
"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_319e7f629d814f40a0f1c4ba8eecb2fa",
"IPY_MODEL_af6093ca6ce642cba9552c40ce0b5261",
"IPY_MODEL_11fb28cc13f344c2b625aec5e42cfd38"
],
"layout": "IPY_MODEL_d077d4265c5f4d53bebf2b6d5bf35202"
}
},
"a99f655a1ebf42bfbb90b05f48ad24e9": {
"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_f402b9176d654dac81dd02fbea505ac9",
"placeholder": "",
"style": "IPY_MODEL_adab65f6d498413093146387f307a68f",
"value": "Uploading artifacts: 100%"
}
},
"adab65f6d498413093146387f307a68f": {
"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": ""
}
},
"add54517e4e041f1a97e8ea453c06a89": {
"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
}
},
"af0297e530934bfba081ceb0b1f80ee8": {
"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
}
},
"af6093ca6ce642cba9552c40ce0b5261": {
"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_af0297e530934bfba081ceb0b1f80ee8",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_6802b9e5c7b84de3afc1834de2cafcb5",
"value": 1
}
},
"bd50c6218a6a4157b22783034e6d2a16": {
"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
}
},
"bdadadc379e74bdebd5d1816a5a2222f": {
"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": ""
}
},
"ce853fbfbdef4189921c206e313fd9ab": {
"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": ""
}
},
"ceb2c2d45b2e41e1ada0e82d6b8846a5": {
"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
}
},
"d077d4265c5f4d53bebf2b6d5bf35202": {
"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
}
},
"d0cefb88ddfd43cead84f492d599518e": {
"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
}
},
"da11f979f4dc469e9f8cb0deeb92e6b7": {
"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_bd50c6218a6a4157b22783034e6d2a16",
"placeholder": "",
"style": "IPY_MODEL_db1cd6966f7e4b08b20292560f73f8ce",
"value": " 11/11 [00:01<00:00, 8.67it/s]"
}
},
"db1cd6966f7e4b08b20292560f73f8ce": {
"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": ""
}
},
"de4eb6d3e7e144e1bc11b1aacccbba71": {
"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_a99f655a1ebf42bfbb90b05f48ad24e9",
"IPY_MODEL_448b25199b1a4ec9b8f2cdc25b2f1039",
"IPY_MODEL_da11f979f4dc469e9f8cb0deeb92e6b7"
],
"layout": "IPY_MODEL_d0cefb88ddfd43cead84f492d599518e"
}
},
"eb79549bc61f4a898dfa5994da8cfe7c": {
"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
}
},
"f402b9176d654dac81dd02fbea505ac9": {
"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
}
},
"f45b994ed77d461cbfcebc4aa67e61a7": {
"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": ""
}
},
"fc6a2d3d9e134a419705c36dc2445a3d": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
}
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}