Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save codesue/b6a27bd97f8042a4ee9d001432be95c3 to your computer and use it in GitHub Desktop.
Save codesue/b6a27bd97f8042a4ee9d001432be95c3 to your computer and use it in GitHub Desktop.
standalone-model-card-toolkit-demo.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/codesue/b6a27bd97f8042a4ee9d001432be95c3/standalone-model-card-toolkit-demo.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Tce3stUlHN0L"
},
"source": [
"##### Copyright 2020 The TensorFlow Authors."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"id": "tuOe1ymfHZPu"
},
"outputs": [],
"source": [
"#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n",
"# you may not use this file except in compliance with the License.\n",
"# You may obtain a copy of the License at\n",
"#\n",
"# https://www.apache.org/licenses/LICENSE-2.0\n",
"#\n",
"# Unless required by applicable law or agreed to in writing, software\n",
"# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
"# See the License for the specific language governing permissions and\n",
"# limitations under the License."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "23R0Z9RojXYW"
},
"source": [
"# Standalone Model Card Toolkit Demo\n",
"\n",
"This \"standalone\" notebook demonstrates using the Model Card Toolkit without the TFX/MLMD context."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MfBg1C5NB3X0"
},
"source": [
"<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
" <td>\n",
" <a target=\"_blank\" href=\"https://www.tensorflow.org/responsible_ai/model_card_toolkit/examples/Standalone_Model_Card_Toolkit_Demo\"><img src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" />View on TensorFlow.org</a>\n",
" </td>\n",
" <td>\n",
" <a target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/model-card-toolkit/blob/main/model_card_toolkit/documentation/examples/Standalone_Model_Card_Toolkit_Demo.ipynb\"><img src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" />Run in Google Colab</a>\n",
" </td>\n",
" <td>\n",
" <a target=\"_blank\" href=\"https://github.com/tensorflow/model-card-toolkit/blob/main/model_card_toolkit/documentation/examples/Standalone_Model_Card_Toolkit_Demo.ipynb\"><img src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" />View on GitHub</a>\n",
" </td>\n",
" <td>\n",
" <a href=\"https://storage.googleapis.com/tensorflow_docs/model-card-toolkit/model_card_toolkit/documentation/examples/Standalone_Model_Card_Toolkit_Demo.ipynb\"><img src=\"https://www.tensorflow.org/images/download_logo_32px.png\" />Download notebook</a>\n",
" </td>\n",
"</table>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sfSQ-kX-MLEr"
},
"source": [
"## Objective\n",
"\n",
"This notebook demonstrates how to generate a Model Card using the Model Card Toolkit in a Jupyter/Colab environment. You can learn more about model cards at https://modelcards.withgoogle.com/about. \n",
"\n",
"We are using a Keras model in this demo. But the logic below also applies to other ML frameworks in general.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2GivNBNYjb3b"
},
"source": [
"## Setup\n",
"We first need to a) install and import the necessary packages, and b) download the data."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Fmgi8ZvQkScg"
},
"source": [
"### Upgrade Pip and install the Model Card Toolkit"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "as4OTe2ukSqm",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "9964376d-57db-40f7-c98b-c38569557680"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
"Requirement already satisfied: pip in /usr/local/lib/python3.9/dist-packages (22.0.4)\n",
"Collecting pip\n",
" Downloading pip-23.0.1-py3-none-any.whl (2.1 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.1/2.1 MB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hInstalling collected packages: pip\n",
" Attempting uninstall: pip\n",
" Found existing installation: pip 22.0.4\n",
" Uninstalling pip-22.0.4:\n",
" Successfully uninstalled pip-22.0.4\n",
"Successfully installed pip-23.0.1\n",
"Looking in indexes: https://test.pypi.org/simple/, https://us-python.pkg.dev/colab-wheels/public/simple/, https://pypi.org/simple\n",
"Collecting model-card-toolkit==2.0.0rc0\n",
" Downloading model_card_toolkit-2.0.0rc0-py3-none-any.whl (68 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.9/68.9 kB\u001b[0m \u001b[31m2.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting absl-py<1.1,>=0.9\n",
" Downloading absl_py-1.0.0-py3-none-any.whl (126 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m126.7/126.7 kB\u001b[0m \u001b[31m8.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting tensorflow-data-validation<2.0.0,>=1.5.0\n",
" Downloading tensorflow_data_validation-1.12.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (18.2 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m18.2/18.2 MB\u001b[0m \u001b[31m45.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting jsonschema<4,>=3.2.0\n",
" Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 kB\u001b[0m \u001b[31m3.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: tensorflow-metadata<2.0.0,>=1.5.0 in /usr/local/lib/python3.9/dist-packages (from model-card-toolkit==2.0.0rc0) (1.12.0)\n",
"Collecting ml-metadata<2.0.0,>=1.5.0\n",
" Downloading ml_metadata-1.12.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.7 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.7/6.7 MB\u001b[0m \u001b[31m56.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: jinja2<3.2,>=3.1 in /usr/local/lib/python3.9/dist-packages (from model-card-toolkit==2.0.0rc0) (3.1.2)\n",
"Requirement already satisfied: matplotlib<4,>=3.2.0 in /usr/local/lib/python3.9/dist-packages (from model-card-toolkit==2.0.0rc0) (3.7.1)\n",
"Collecting tensorflow-model-analysis<0.42.0,>=0.36.0\n",
" Downloading tensorflow_model_analysis-0.41.1-py3-none-any.whl (1.8 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m55.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: six in /usr/local/lib/python3.9/dist-packages (from absl-py<1.1,>=0.9->model-card-toolkit==2.0.0rc0) (1.16.0)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.9/dist-packages (from jinja2<3.2,>=3.1->model-card-toolkit==2.0.0rc0) (2.1.2)\n",
"Requirement already satisfied: setuptools in /usr/local/lib/python3.9/dist-packages (from jsonschema<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (67.6.1)\n",
"Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib/python3.9/dist-packages (from jsonschema<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (0.19.3)\n",
"Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.9/dist-packages (from jsonschema<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (22.2.0)\n",
"Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (8.4.0)\n",
"Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (4.39.3)\n",
"Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (1.0.7)\n",
"Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (0.11.0)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (1.4.4)\n",
"Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (2.8.2)\n",
"Requirement already satisfied: importlib-resources>=3.2.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (5.12.0)\n",
"Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (23.0)\n",
"Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (3.0.9)\n",
"Requirement already satisfied: numpy>=1.20 in /usr/local/lib/python3.9/dist-packages (from matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (1.22.4)\n",
"Requirement already satisfied: grpcio<2,>=1.8.6 in /usr/local/lib/python3.9/dist-packages (from ml-metadata<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.53.0)\n",
"Collecting attrs>=17.4.0\n",
" Downloading attrs-21.4.0-py2.py3-none-any.whl (60 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m60.6/60.6 kB\u001b[0m \u001b[31m5.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: protobuf<4,>=3.13 in /usr/local/lib/python3.9/dist-packages (from ml-metadata<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (3.20.3)\n",
"Collecting apache-beam[gcp]<3,>=2.40\n",
" Downloading apache_beam-2.46.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.5 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m14.5/14.5 MB\u001b[0m \u001b[31m47.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: pandas<2,>=1.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.4.4)\n",
"Collecting joblib>=1.2.0\n",
" Downloading joblib-1.2.0-py3-none-any.whl (297 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m298.0/298.0 kB\u001b[0m \u001b[31m20.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting pyarrow<7,>=6\n",
" Downloading pyarrow-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m25.6/25.6 MB\u001b[0m \u001b[31m40.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting pyfarmhash<0.4,>=0.2\n",
" Downloading pyfarmhash-0.3.2.tar.gz (99 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m99.9/99.9 kB\u001b[0m \u001b[31m9.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
"Requirement already satisfied: tensorflow<3,>=2.11 in /usr/local/lib/python3.9/dist-packages (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.12.0)\n",
"Collecting tfx-bsl<1.13,>=1.12.0\n",
" Downloading tfx_bsl-1.12.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (21.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.6/21.6 MB\u001b[0m \u001b[31m14.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow-metadata<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.59.0)\n",
"Collecting tensorflow-model-analysis<0.42.0,>=0.36.0\n",
" Downloading tensorflow_model_analysis-0.41.0-py3-none-any.whl (1.8 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m35.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h Downloading tensorflow_model_analysis-0.40.0-py3-none-any.whl (1.8 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m30.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h Downloading tensorflow_model_analysis-0.39.0-py3-none-any.whl (1.8 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m42.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h Downloading tensorflow_model_analysis-0.38.0-py3-none-any.whl (1.8 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m36.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h Downloading tensorflow_model_analysis-0.37.0-py3-none-any.whl (1.8 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m45.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h Downloading tensorflow_model_analysis-0.36.0-py3-none-any.whl (1.8 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m36.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting absl-py<1.1,>=0.9\n",
" Downloading absl_py-0.12.0-py3-none-any.whl (129 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m129.4/129.4 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hINFO: pip is looking at multiple versions of tensorflow-metadata to determine which version is compatible with other requirements. This could take a while.\n",
"Collecting tensorflow-metadata<2.0.0,>=1.5.0\n",
" Downloading tensorflow_metadata-1.12.0-py3-none-any.whl (52 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m52.3/52.3 kB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hINFO: pip is looking at multiple versions of tensorflow-data-validation to determine which version is compatible with other requirements. This could take a while.\n",
"Collecting tensorflow-data-validation<2.0.0,>=1.5.0\n",
" Downloading tensorflow_data_validation-1.11.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (18.2 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m18.2/18.2 MB\u001b[0m \u001b[31m28.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting tfx-bsl<1.12,>=1.11.0\n",
" Downloading tfx_bsl-1.11.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (21.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.6/21.6 MB\u001b[0m \u001b[31m31.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting tensorflow-metadata<2.0.0,>=1.5.0\n",
" Downloading tensorflow_metadata-1.11.0-py3-none-any.whl (52 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m52.3/52.3 kB\u001b[0m \u001b[31m4.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting tensorflow-data-validation<2.0.0,>=1.5.0\n",
" Downloading tensorflow_data_validation-1.10.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.5 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.5/1.5 MB\u001b[0m \u001b[31m46.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting tensorflow-metadata<2.0.0,>=1.5.0\n",
" Downloading tensorflow_metadata-1.10.0-py3-none-any.whl (50 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.8/50.8 kB\u001b[0m \u001b[31m3.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting joblib<0.15,>=0.12\n",
" Downloading joblib-0.14.1-py2.py3-none-any.whl (294 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m294.9/294.9 kB\u001b[0m \u001b[31m17.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting tfx-bsl<1.11,>=1.10.1\n",
" Downloading tfx_bsl-1.10.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (21.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.6/21.6 MB\u001b[0m \u001b[31m13.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: ipython<8,>=7 in /usr/local/lib/python3.9/dist-packages (from tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (7.34.0)\n",
"Requirement already satisfied: scipy<2,>=1.4.1 in /usr/local/lib/python3.9/dist-packages (from tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (1.10.1)\n",
"Requirement already satisfied: ipywidgets<8,>=7 in /usr/local/lib/python3.9/dist-packages (from tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (7.7.1)\n",
"Collecting google-api-python-client<2,>=1.7.11\n",
" Downloading google_api_python_client-1.12.11-py2.py3-none-any.whl (62 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.1/62.1 kB\u001b[0m \u001b[31m4.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting tensorflow-serving-api!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,<3,>=1.15\n",
" Downloading tensorflow_serving_api-2.11.1-py2.py3-none-any.whl (37 kB)\n",
"Requirement already satisfied: httplib2<0.22.0,>=0.8 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.21.0)\n",
"Requirement already satisfied: typing-extensions>=3.7.0 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (4.5.0)\n",
"Collecting fastavro<2,>=0.23.6\n",
" Downloading fastavro-1.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.7/2.7 MB\u001b[0m \u001b[31m84.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting crcmod<2.0,>=1.7\n",
" Downloading crcmod-1.7.tar.gz (89 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m89.7/89.7 kB\u001b[0m \u001b[31m11.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
"Collecting orjson<4.0\n",
" Downloading orjson-3.8.9-cp39-cp39-manylinux_2_28_x86_64.whl (144 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m144.1/144.1 kB\u001b[0m \u001b[31m16.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting fasteners<1.0,>=0.3\n",
" Downloading fasteners-0.18-py3-none-any.whl (18 kB)\n",
"Collecting objsize<0.7.0,>=0.6.1\n",
" Downloading objsize-0.6.1-py3-none-any.whl (9.3 kB)\n",
"Requirement already satisfied: requests<3.0.0,>=2.24.0 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.27.1)\n",
"Requirement already satisfied: pydot<2,>=1.2.0 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.4.2)\n",
"Requirement already satisfied: regex>=2020.6.8 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2022.10.31)\n",
"Requirement already satisfied: cloudpickle~=2.2.1 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.2.1)\n",
"Collecting zstandard<1,>=0.18.0\n",
" Downloading zstandard-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.6/2.6 MB\u001b[0m \u001b[31m60.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: pytz>=2018.3 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2022.7.1)\n",
"Collecting dill<0.3.2,>=0.3.1.1\n",
" Downloading dill-0.3.1.1.tar.gz (151 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m152.0/152.0 kB\u001b[0m \u001b[31m14.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
"Collecting pymongo<4.0.0,>=3.8.0\n",
" Downloading pymongo-3.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (515 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m515.5/515.5 kB\u001b[0m \u001b[31m41.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting hdfs<3.0.0,>=2.1.0\n",
" Downloading hdfs-2.7.0-py3-none-any.whl (34 kB)\n",
"Requirement already satisfied: proto-plus<2,>=1.7.1 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.22.2)\n",
"Collecting google-cloud-recommendations-ai<0.8.0,>=0.1.0\n",
" Downloading google_cloud_recommendations_ai-0.7.1-py2.py3-none-any.whl (148 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m148.2/148.2 kB\u001b[0m \u001b[31m15.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting google-cloud-bigtable<2,>=0.31.1\n",
" Downloading google_cloud_bigtable-1.7.3-py2.py3-none-any.whl (268 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m268.7/268.7 kB\u001b[0m \u001b[31m23.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: google-cloud-bigquery<4,>=1.6.0 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (3.4.2)\n",
"Collecting google-cloud-language<2,>=1.3.0\n",
" Downloading google_cloud_language-1.3.2-py2.py3-none-any.whl (83 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m83.6/83.6 kB\u001b[0m \u001b[31m10.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting google-apitools<0.5.32,>=0.5.31\n",
" Downloading google-apitools-0.5.31.tar.gz (173 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m173.5/173.5 kB\u001b[0m \u001b[31m17.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
"Requirement already satisfied: google-cloud-core<3,>=0.28.1 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.3.2)\n",
"Collecting google-cloud-vision<4,>=2\n",
" Downloading google_cloud_vision-3.4.1-py2.py3-none-any.whl (444 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m444.3/444.3 kB\u001b[0m \u001b[31m35.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting google-cloud-dlp<4,>=3.0.0\n",
" Downloading google_cloud_dlp-3.12.1-py2.py3-none-any.whl (143 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.4/143.4 kB\u001b[0m \u001b[31m16.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting google-cloud-spanner<4,>=3.0.0\n",
" Downloading google_cloud_spanner-3.29.0-py2.py3-none-any.whl (327 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m327.3/327.3 kB\u001b[0m \u001b[31m30.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting google-cloud-pubsub<3,>=2.1.0\n",
" Downloading google_cloud_pubsub-2.15.2-py2.py3-none-any.whl (243 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m243.1/243.1 kB\u001b[0m \u001b[31m22.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting google-cloud-datastore<2,>=1.8.0\n",
" Downloading google_cloud_datastore-1.15.5-py2.py3-none-any.whl (134 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.2/134.2 kB\u001b[0m \u001b[31m13.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hCollecting cachetools<5,>=3.1.0\n",
" Downloading cachetools-4.2.4-py3-none-any.whl (10 kB)\n",
"Collecting google-cloud-videointelligence<2,>=1.8.0\n",
" Downloading google_cloud_videointelligence-1.16.3-py2.py3-none-any.whl (183 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m21.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: google-auth-httplib2<0.2.0,>=0.1.0 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.1.0)\n",
"Collecting google-cloud-pubsublite<2,>=1.2.0\n",
" Downloading google_cloud_pubsublite-1.8.1-py2.py3-none-any.whl (288 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m288.1/288.1 kB\u001b[0m \u001b[31m31.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: google-auth<3,>=1.18.0 in /usr/local/lib/python3.9/dist-packages (from apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.17.0)\n",
"Collecting google-cloud-bigquery-storage<2.17,>=2.6.3\n",
" Downloading google_cloud_bigquery_storage-2.16.2-py2.py3-none-any.whl (185 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m185.4/185.4 kB\u001b[0m \u001b[31m14.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: zipp>=3.1.0 in /usr/local/lib/python3.9/dist-packages (from importlib-resources>=3.2.0->matplotlib<4,>=3.2.0->model-card-toolkit==2.0.0rc0) (3.15.0)\n",
"Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.9/dist-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (4.8.0)\n",
"Collecting jedi>=0.16\n",
" Downloading jedi-0.18.2-py2.py3-none-any.whl (1.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m74.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hRequirement already satisfied: decorator in /usr/local/lib/python3.9/dist-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (4.4.2)\n",
"Requirement already satisfied: backcall in /usr/local/lib/python3.9/dist-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.2.0)\n",
"Requirement already satisfied: pickleshare in /usr/local/lib/python3.9/dist-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.7.5)\n",
"Requirement already satisfied: traitlets>=4.2 in /usr/local/lib/python3.9/dist-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (5.7.1)\n",
"Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.9/dist-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.1.6)\n",
"Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.9/dist-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (3.0.38)\n",
"Requirement already satisfied: pygments in /usr/local/lib/python3.9/dist-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (2.14.0)\n",
"Requirement already satisfied: ipython-genutils~=0.2.0 in /usr/local/lib/python3.9/dist-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.2.0)\n",
"Requirement already satisfied: widgetsnbextension~=3.6.0 in /usr/local/lib/python3.9/dist-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (3.6.4)\n",
"Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /usr/local/lib/python3.9/dist-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (3.0.7)\n",
"Requirement already satisfied: ipykernel>=4.5.1 in /usr/local/lib/python3.9/dist-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (5.5.6)\n",
"Requirement already satisfied: tensorboard<2.13,>=2.12 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.12.0)\n",
"Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.2.0)\n",
"Requirement already satisfied: h5py>=2.9.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (3.8.0)\n",
"Requirement already satisfied: gast<=0.4.0,>=0.2.1 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.4.0)\n",
"Requirement already satisfied: jax>=0.3.15 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.4.7)\n",
"Requirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (16.0.0)\n",
"Requirement already satisfied: keras<2.13,>=2.12.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.12.0)\n",
"Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.32.0)\n",
"Requirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.6.3)\n",
"Requirement already satisfied: tensorflow-estimator<2.13,>=2.12.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.12.0)\n",
"Requirement already satisfied: wrapt<1.15,>=1.11.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.14.1)\n",
"Requirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.2.0)\n",
"Requirement already satisfied: flatbuffers>=2.0 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (23.3.3)\n",
"Requirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.9/dist-packages (from tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (3.3.0)\n",
"Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.9/dist-packages (from astunparse>=1.6.0->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.40.0)\n",
"Collecting uritemplate<4dev,>=3.0.0\n",
" Downloading uritemplate-3.0.1-py2.py3-none-any.whl (15 kB)\n",
"Requirement already satisfied: google-api-core<3dev,>=1.21.0 in /usr/local/lib/python3.9/dist-packages (from google-api-python-client<2,>=1.7.11->tfx-bsl<1.11,>=1.10.1->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.11.0)\n",
"Requirement already satisfied: oauth2client>=1.4.12 in /usr/local/lib/python3.9/dist-packages (from google-apitools<0.5.32,>=0.5.31->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (4.1.3)\n",
"Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.9/dist-packages (from google-auth<3,>=1.18.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.2.8)\n",
"Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.9/dist-packages (from google-auth<3,>=1.18.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (4.9)\n",
"Requirement already satisfied: google-resumable-media<3.0dev,>=0.6.0 in /usr/local/lib/python3.9/dist-packages (from google-cloud-bigquery<4,>=1.6.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.4.1)\n",
"Collecting grpc-google-iam-v1<0.13dev,>=0.12.3\n",
" Downloading grpc_google_iam_v1-0.12.6-py2.py3-none-any.whl (26 kB)\n",
"Requirement already satisfied: grpcio-status>=1.33.2 in /usr/local/lib/python3.9/dist-packages (from google-cloud-pubsub<3,>=2.1.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.48.2)\n",
"Collecting overrides<7.0.0,>=6.0.1\n",
" Downloading overrides-6.5.0-py3-none-any.whl (17 kB)\n",
"Requirement already satisfied: sqlparse>=0.3.0 in /usr/local/lib/python3.9/dist-packages (from google-cloud-spanner<4,>=3.0.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.4.3)\n",
"Collecting docopt\n",
" Downloading https://test-files.pythonhosted.org/packages/f9/d7/d8f8d3e2d51df48c181d8e3706396c6fc2759b120b6be06721f00d84fe94/docopt-0.6.2-py2.py3-none-any.whl (19 kB)\n",
"Requirement already satisfied: tornado>=4.2 in /usr/local/lib/python3.9/dist-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (6.2)\n",
"Requirement already satisfied: jupyter-client in /usr/local/lib/python3.9/dist-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (6.1.12)\n",
"Requirement already satisfied: ml-dtypes>=0.0.3 in /usr/local/lib/python3.9/dist-packages (from jax>=0.3.15->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.0.4)\n",
"Requirement already satisfied: parso<0.9.0,>=0.8.0 in /usr/local/lib/python3.9/dist-packages (from jedi>=0.16->ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.8.3)\n",
"Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.9/dist-packages (from pexpect>4.3->ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.7.0)\n",
"Requirement already satisfied: wcwidth in /usr/local/lib/python3.9/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.2.6)\n",
"Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (3.4)\n",
"Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.9/dist-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.0.12)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2022.12.7)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.26.15)\n",
"Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /usr/local/lib/python3.9/dist-packages (from tensorboard<2.13,>=2.12->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.4.6)\n",
"Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.9/dist-packages (from tensorboard<2.13,>=2.12->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.7.0)\n",
"Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.9/dist-packages (from tensorboard<2.13,>=2.12->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (3.4.3)\n",
"Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from tensorboard<2.13,>=2.12->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (2.2.3)\n",
"Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /usr/local/lib/python3.9/dist-packages (from tensorboard<2.13,>=2.12->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.8.1)\n",
"Collecting tensorflow-serving-api!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,<3,>=1.15\n",
" Downloading tensorflow_serving_api-2.11.0-py2.py3-none-any.whl (37 kB)\n",
" Downloading tensorflow_serving_api-2.10.1-py2.py3-none-any.whl (37 kB)\n",
"Requirement already satisfied: notebook>=4.4.1 in /usr/local/lib/python3.9/dist-packages (from widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (6.3.0)\n",
"Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.9/dist-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.13,>=2.12->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.3.1)\n",
"Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /usr/local/lib/python3.9/dist-packages (from google-resumable-media<3.0dev,>=0.6.0->google-cloud-bigquery<4,>=1.6.0->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (1.5.0)\n",
"Requirement already satisfied: importlib-metadata>=4.4 in /usr/local/lib/python3.9/dist-packages (from markdown>=2.6.8->tensorboard<2.13,>=2.12->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (6.1.0)\n",
"Requirement already satisfied: jupyter-core>=4.6.1 in /usr/local/lib/python3.9/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (5.3.0)\n",
"Requirement already satisfied: Send2Trash>=1.5.0 in /usr/local/lib/python3.9/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (1.8.0)\n",
"Requirement already satisfied: argon2-cffi in /usr/local/lib/python3.9/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (21.3.0)\n",
"Requirement already satisfied: pyzmq>=17 in /usr/local/lib/python3.9/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (23.2.1)\n",
"Requirement already satisfied: nbformat in /usr/local/lib/python3.9/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (5.8.0)\n",
"Requirement already satisfied: prometheus-client in /usr/local/lib/python3.9/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.16.0)\n",
"Requirement already satisfied: terminado>=0.8.3 in /usr/local/lib/python3.9/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.17.1)\n",
"Requirement already satisfied: nbconvert in /usr/local/lib/python3.9/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (6.5.4)\n",
"Requirement already satisfied: pyasn1>=0.1.7 in /usr/local/lib/python3.9/dist-packages (from oauth2client>=1.4.12->google-apitools<0.5.32,>=0.5.31->apache-beam[gcp]<3,>=2.40->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (0.4.8)\n",
"Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.9/dist-packages (from jupyter-core>=4.6.1->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (3.2.0)\n",
"Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.9/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.13,>=2.12->tensorflow<3,>=2.11->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit==2.0.0rc0) (3.2.2)\n",
"Requirement already satisfied: argon2-cffi-bindings in /usr/local/lib/python3.9/dist-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (21.2.0)\n",
"Requirement already satisfied: nbclient>=0.5.0 in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.7.2)\n",
"Requirement already satisfied: bleach in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (6.0.0)\n",
"Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (4.11.2)\n",
"Requirement already satisfied: defusedxml in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.7.1)\n",
"Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.8.4)\n",
"Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (1.5.0)\n",
"Requirement already satisfied: lxml in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (4.9.2)\n",
"Requirement already satisfied: jupyterlab-pygments in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.2.2)\n",
"Requirement already satisfied: tinycss2 in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (1.2.1)\n",
"Requirement already satisfied: entrypoints>=0.2.2 in /usr/local/lib/python3.9/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.4)\n",
"Requirement already satisfied: fastjsonschema in /usr/local/lib/python3.9/dist-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (2.16.3)\n",
"Requirement already satisfied: cffi>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (1.15.1)\n",
"Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.9/dist-packages (from beautifulsoup4->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (2.4)\n",
"Requirement already satisfied: webencodings in /usr/local/lib/python3.9/dist-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (0.5.1)\n",
"Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit==2.0.0rc0) (2.21)\n",
"Building wheels for collected packages: pyfarmhash, crcmod, dill, google-apitools\n",
" Building wheel for pyfarmhash (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for pyfarmhash: filename=pyfarmhash-0.3.2-cp39-cp39-linux_x86_64.whl size=101504 sha256=771a8345cd0b3a5a95df62dbb41a245c20257fc019adff6ac53500a9283316eb\n",
" Stored in directory: /root/.cache/pip/wheels/de/2b/b1/c541160670d70f4b08c4786f4e155337d4baeaa3e01d9d1400\n",
" Building wheel for crcmod (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for crcmod: filename=crcmod-1.7-cp39-cp39-linux_x86_64.whl size=36922 sha256=cd5136b2a6a173c4718fce07a0b67102673e7f878a91dbe34a4fc8f68a7dd1cf\n",
" Stored in directory: /root/.cache/pip/wheels/4a/6c/a6/ffdd136310039bf226f2707a9a8e6857be7d70a3fc061f6b36\n",
" Building wheel for dill (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for dill: filename=dill-0.3.1.1-py3-none-any.whl size=78545 sha256=95c4bb5973b847d550124773fdc90168e2e49394becfbd6d5c5daeae062dfdd8\n",
" Stored in directory: /root/.cache/pip/wheels/4f/0b/ce/75d96dd714b15e51cb66db631183ea3844e0c4a6d19741a149\n",
" Building wheel for google-apitools (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for google-apitools: filename=google_apitools-0.5.31-py3-none-any.whl size=131038 sha256=30cb4785933903e98ca245574a92bbe44f0c5091bee1cc9c063473df36a0a6ed\n",
" Stored in directory: /root/.cache/pip/wheels/6c/f8/60/b9e91899dbaf25b6314047d3daee379bdd8d61b1dc3fd5ec7f\n",
"Successfully built pyfarmhash crcmod dill google-apitools\n",
"Installing collected packages: pyfarmhash, joblib, docopt, crcmod, zstandard, uritemplate, pymongo, pyarrow, overrides, orjson, objsize, jedi, fasteners, fastavro, dill, cachetools, attrs, absl-py, tensorflow-metadata, ml-metadata, jsonschema, hdfs, grpc-google-iam-v1, google-apitools, apache-beam, google-api-python-client, google-cloud-vision, google-cloud-videointelligence, google-cloud-spanner, google-cloud-recommendations-ai, google-cloud-pubsub, google-cloud-language, google-cloud-dlp, google-cloud-datastore, google-cloud-bigtable, google-cloud-bigquery-storage, tensorflow-serving-api, google-cloud-pubsublite, tfx-bsl, tensorflow-model-analysis, tensorflow-data-validation, model-card-toolkit\n",
" Attempting uninstall: joblib\n",
" Found existing installation: joblib 1.1.1\n",
" Uninstalling joblib-1.1.1:\n",
" Successfully uninstalled joblib-1.1.1\n",
" Attempting uninstall: uritemplate\n",
" Found existing installation: uritemplate 4.1.1\n",
" Uninstalling uritemplate-4.1.1:\n",
" Successfully uninstalled uritemplate-4.1.1\n",
" Attempting uninstall: pyarrow\n",
" Found existing installation: pyarrow 9.0.0\n",
" Uninstalling pyarrow-9.0.0:\n",
" Successfully uninstalled pyarrow-9.0.0\n",
" Attempting uninstall: cachetools\n",
" Found existing installation: cachetools 5.3.0\n",
" Uninstalling cachetools-5.3.0:\n",
" Successfully uninstalled cachetools-5.3.0\n",
" Attempting uninstall: attrs\n",
" Found existing installation: attrs 22.2.0\n",
" Uninstalling attrs-22.2.0:\n",
" Successfully uninstalled attrs-22.2.0\n",
" Attempting uninstall: absl-py\n",
" Found existing installation: absl-py 1.4.0\n",
" Uninstalling absl-py-1.4.0:\n",
" Successfully uninstalled absl-py-1.4.0\n",
" Attempting uninstall: tensorflow-metadata\n",
" Found existing installation: tensorflow-metadata 1.12.0\n",
" Uninstalling tensorflow-metadata-1.12.0:\n",
" Successfully uninstalled tensorflow-metadata-1.12.0\n",
" Attempting uninstall: jsonschema\n",
" Found existing installation: jsonschema 4.3.3\n",
" Uninstalling jsonschema-4.3.3:\n",
" Successfully uninstalled jsonschema-4.3.3\n",
" Attempting uninstall: google-api-python-client\n",
" Found existing installation: google-api-python-client 2.70.0\n",
" Uninstalling google-api-python-client-2.70.0:\n",
" Successfully uninstalled google-api-python-client-2.70.0\n",
" Attempting uninstall: google-cloud-language\n",
" Found existing installation: google-cloud-language 2.6.1\n",
" Uninstalling google-cloud-language-2.6.1:\n",
" Successfully uninstalled google-cloud-language-2.6.1\n",
" Attempting uninstall: google-cloud-datastore\n",
" Found existing installation: google-cloud-datastore 2.11.1\n",
" Uninstalling google-cloud-datastore-2.11.1:\n",
" Successfully uninstalled google-cloud-datastore-2.11.1\n",
" Attempting uninstall: google-cloud-bigquery-storage\n",
" Found existing installation: google-cloud-bigquery-storage 2.19.1\n",
" Uninstalling google-cloud-bigquery-storage-2.19.1:\n",
" Successfully uninstalled google-cloud-bigquery-storage-2.19.1\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",
"scikit-learn 1.2.2 requires joblib>=1.1.1, but you have joblib 0.14.1 which is incompatible.\n",
"pandas-profiling 3.2.0 requires joblib~=1.1.0, but you have joblib 0.14.1 which is incompatible.\n",
"imbalanced-learn 0.10.1 requires joblib>=1.1.1, but you have joblib 0.14.1 which is incompatible.\u001b[0m\u001b[31m\n",
"\u001b[0mSuccessfully installed absl-py-1.0.0 apache-beam-2.46.0 attrs-21.4.0 cachetools-4.2.4 crcmod-1.7 dill-0.3.1.1 docopt-0.6.2 fastavro-1.7.3 fasteners-0.18 google-api-python-client-1.12.11 google-apitools-0.5.31 google-cloud-bigquery-storage-2.16.2 google-cloud-bigtable-1.7.3 google-cloud-datastore-1.15.5 google-cloud-dlp-3.12.1 google-cloud-language-1.3.2 google-cloud-pubsub-2.15.2 google-cloud-pubsublite-1.8.1 google-cloud-recommendations-ai-0.7.1 google-cloud-spanner-3.29.0 google-cloud-videointelligence-1.16.3 google-cloud-vision-3.4.1 grpc-google-iam-v1-0.12.6 hdfs-2.7.0 jedi-0.18.2 joblib-0.14.1 jsonschema-3.2.0 ml-metadata-1.12.0 model-card-toolkit-2.0.0rc0 objsize-0.6.1 orjson-3.8.9 overrides-6.5.0 pyarrow-6.0.1 pyfarmhash-0.3.2 pymongo-3.13.0 tensorflow-data-validation-1.10.0 tensorflow-metadata-1.10.0 tensorflow-model-analysis-0.41.1 tensorflow-serving-api-2.10.1 tfx-bsl-1.10.1 uritemplate-3.0.1 zstandard-0.20.0\n",
"\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
"\u001b[0m\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
"\u001b[0m"
]
}
],
"source": [
"!pip install --upgrade pip\n",
"!pip install -i https://test.pypi.org/simple/ model-card-toolkit==2.0.0rc0 --extra-index-url https://pypi.org/simple\n",
"!pip install tensorflow>=2.3.1\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EwT0nov5QO1M"
},
"source": [
"#### Did you restart the runtime?\n",
"\n",
"If you are using Google Colab, the first time that you run the cell above, you must restart the runtime (Runtime > Restart runtime ...). This is because of the way that Colab loads packages."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7-JNjw8eUdrL"
},
"source": [
"### Imports"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Nx4sE8cUUhF-"
},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import model_card_toolkit as mctlib\n",
"from model_card_toolkit.documentation.examples import cats_vs_dogs\n",
"from model_card_toolkit.utils.graphics import figure_to_base64str\n",
"import tempfile\n",
"import matplotlib.pyplot as plt\n",
"from IPython import display\n",
"import requests\n",
"import os\n",
"import zipfile"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "jzNHy94JjfEJ"
},
"source": [
"## Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "u7UTf5FqXeQd"
},
"source": [
"We will use a pretrained model with architecture based off [MobileNetV2](https://arxiv.org/abs/1801.04381), a popular 16-layer image classification model. Our model has been trained to distinguish between betweens cats and dogs using the [Cats vs Dogs](https://www.tensorflow.org/datasets/catalog/cats_vs_dogs) dataset. The model training was based on the [TensorFlow transfer learning tutorial](https://www.tensorflow.org/tutorials/images/transfer_learning). "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "TJzHu_ZQCJ_z",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "7a2330c2-4c55-4c6b-a463-7e54d6c37913"
},
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:tensorflow:SavedModel saved prior to TF 2.5 detected when loading Keras model. Please ensure that you are saving the model with model.save() or tf.keras.models.save_model(), *NOT* tf.saved_model.save(). To confirm, there should be a file named \"keras_metadata.pb\" in the SavedModel directory.\n"
]
}
],
"source": [
"URL = 'https://storage.googleapis.com/cats_vs_dogs_model/cats_vs_dogs_model.zip'\n",
"BASE_PATH = tempfile.mkdtemp()\n",
"ZIP_PATH = os.path.join(BASE_PATH, 'cats_vs_dogs_model.zip')\n",
"MODEL_PATH = os.path.join(BASE_PATH,'cats_vs_dogs_model')\n",
"\n",
"r = requests.get(URL, allow_redirects=True)\n",
"open(ZIP_PATH, 'wb').write(r.content)\n",
"\n",
"with zipfile.ZipFile(ZIP_PATH, 'r') as zip_ref:\n",
" zip_ref.extractall(BASE_PATH)\n",
"\n",
"model = tf.keras.models.load_model(MODEL_PATH)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7SUMYXTM3Cch"
},
"source": [
"## Dataset"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5ABTI039kuEn"
},
"source": [
"In the cats-vs-dogs dataset, label=0 corresponds to cats while label=1 corresponds to dogs."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "qxzLef3Z6c4c"
},
"outputs": [],
"source": [
"def compute_accuracy(data):\n",
" x = np.stack(data['examples'])\n",
" y = np.asarray(data['labels'])\n",
" _, metric = model.evaluate(x, y)\n",
" return metric"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "CZpI3nR-NRza",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 203,
"referenced_widgets": [
"38af41c94ed44c06be2f1eda71b7b9cb",
"f554310df57343938f1f9f8fdabb936f",
"98dc95f395d84585a82ff80955f4e95d",
"fee5282b8f1441c0bf8997a0dafc1cc5",
"5345924df638473e98ef7d08c5e97a2b",
"8308a4aca71e4297b67d60112dc6bb12",
"d0b665affdd0437d85ae99e0f9643c64",
"386bce0702434589a6d22fe8006131ed",
"37c3e352a07d4b0a8bc73b46b57961da",
"ca9cc10e5bf1477ebd19ce588d38865d",
"fe76d4e8af854ca7861d099a6f37d205",
"c2011774b094425db7febaf046075447",
"753a0128a4ec49c9938495f8eeb80956",
"557c9c2e957f45c082069b47563c05b0",
"38fdb6e82c164721806d6de1cba58328",
"f142d1d5fd66475d923f46a7dec361a6",
"dc72c382b19149fa8efc30b79b6c1536",
"7811ec5aa7c545748728b3d13a998679",
"2c1ae8c0ffeb42b59008ae38504638cf",
"697fc70a95374164a60a6cf2ff8690c2",
"d62d840a423c4bddb8e8ef35ebec0f27",
"d48f663bd41d4f6da7202e8e92812d11",
"7ebf65c9fd55435b8dc46a8850d33d15",
"d360e2dffeb84935975a8091b0f032d9",
"2d9292be887442aca775c1a013d59dfc",
"d1dba3c98a564e0cb374fda282e4f61f",
"d58dbca5767c47f882c7bac77540ccc5",
"1bc3bc5d13a04bf4a4e4740cf5edd738",
"27f6f702edf94919ba339f6eadddfe1e",
"21ade2036f6c4e52b3f987fabb389391",
"63f1815a91a04402b30c095adb943768",
"c6d4f95a816344b98f70248ba25b3309",
"be4e0a2a1b394c01b16c2078e9be471c",
"d0d683f8c7884db698d46c8491ad9ef9",
"5e50a1dfbdb74fddb359bd222c515650",
"3d499443b57b4c5ba36328e10c9e6409",
"edd295ba4fcb41aa899ba5465a56236f",
"d81ee1dbbbb54d3cb50b1c861360bf9d",
"4ca14ca4f3ad4813a3057dc52c18a5da",
"ffe915f5931c4f24ab571f014c85d3ce",
"7386551ebdc04e858b0b1946db06b4d5",
"d96f80f1e43d4fec8d9c5e47799f723a",
"e83458cb99cf4992add372f490059d9d",
"e328a4a6744249bd9175c8ecd9b36a00",
"6944526e91074d1a881ee80f9b85a1de",
"9badd2e83086483e9a3992e9cbd601b7",
"5024730c20174eb69f7be1c30127fe34",
"3c1df31f1c60497dac34c4ce02edc13e",
"6806e84d68194fc98e30ec080c8d57d9",
"11d7653b81aa4b09b6af8c57174faefc",
"6d0ee1f9bf64445db7e99ad716084b03",
"127413d81fcd4bce91e1dfb99f650d3e",
"525d655d21f24dd196fcb446cc8de7f8",
"9367ab6744ea4420bfa8b3798070dfeb",
"51c1aafaa5634f12a7d4e3099601d32d"
]
},
"outputId": "759e05ff-f1fb-4d64-d013-81434c7ea0ec"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Downloading and preparing dataset Unknown size (download: Unknown size, generated: Unknown size, total: Unknown size) to /root/tensorflow_datasets/cats_vs_dogs/4.0.0...\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Dl Completed...: 0 url [00:00, ? url/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "38af41c94ed44c06be2f1eda71b7b9cb"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Dl Size...: 0 MiB [00:00, ? MiB/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "c2011774b094425db7febaf046075447"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Generating splits...: 0%| | 0/1 [00:00<?, ? splits/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "7ebf65c9fd55435b8dc46a8850d33d15"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Generating train examples...: 0 examples [00:00, ? examples/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "d0d683f8c7884db698d46c8491ad9ef9"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:absl:1738 images were corrupted and were skipped\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Shuffling /root/tensorflow_datasets/cats_vs_dogs/4.0.0.incompleteFSCCGU/cats_vs_dogs-train.tfrecord*...: 0%|…"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "6944526e91074d1a881ee80f9b85a1de"
}
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Dataset cats_vs_dogs downloaded and prepared to /root/tensorflow_datasets/cats_vs_dogs/4.0.0. Subsequent calls will reuse this data.\n",
"num validation examples: 320\n",
"num cat examples: 149\n",
"num dog examples: 171\n"
]
}
],
"source": [
"examples = cats_vs_dogs.get_data()\n",
"print('num validation examples:', len(examples['combined']['examples']))\n",
"print('num cat examples:', len(examples['cat']['examples']))\n",
"print('num dog examples:', len(examples['dog']['examples']))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "1pra-P9ZkZ1N",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "a711ba76-0917-41d6-fea3-71d7e1114efc"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"10/10 [==============================] - 6s 458ms/step - loss: 0.0794 - binary_accuracy: 0.9812\n",
"5/5 [==============================] - 3s 404ms/step - loss: 0.0608 - binary_accuracy: 0.9933\n",
"6/6 [==============================] - 3s 476ms/step - loss: 0.0956 - binary_accuracy: 0.9708\n"
]
}
],
"source": [
"accuracy = compute_accuracy(examples['combined'])\n",
"cat_accuracy = compute_accuracy(examples['cat'])\n",
"dog_accuracy = compute_accuracy(examples['dog'])"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sYM7Tnrf7Ffr"
},
"source": [
"## Use the Model Card Toolkit"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nFZ4VJ2HR8BH"
},
"source": [
"### Initialize the Model Card Toolkit\n",
"\n",
"The first step is to initialize a `ModelCardToolkit` object, which maintains assets including a [model card JSON file](https://github.com/tensorflow/model-card-toolkit/tree/master/model_card_toolkit/schema/) and [model card document](https://github.com/tensorflow/model-card-toolkit/tree/master/model_card_toolkit/template). Call `ModelCardToolkit.scaffold_assets()` to generate these assets and return a `ModelCard` object."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Lw5Xcn4xnNQB"
},
"outputs": [],
"source": [
"# https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/model_card_toolkit.py\n",
"model_card_dir = tempfile.mkdtemp()\n",
"mct = mctlib.ModelCardToolkit(model_card_dir)\n",
"\n",
"# https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/model_card.py\n",
"model_card = mct.scaffold_assets()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "FrnPOUcAOStf"
},
"source": [
"### Annotate the Model Card\n",
"\n",
"The `ModelCard` object returned by `scaffold_assets()` has many fields that can be directly modified. These fields are rendered in the final generated Model Card document. For a comprehensive list, see [model_card.py](https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/model_card.py). See [the documentation](https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/documentation/guide/concepts.md) for more details.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "x5eg7xbISa4g"
},
"source": [
"#### Text Fields"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3cO1srgD2EHw"
},
"source": [
"##### Model Details\n",
"\n",
"`model_card.model_details` contains many basic metadata fields such as `name`, `owners`, and `version`. You can provide a description for your model in the `overview` field."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "RvFUltDAB3O5"
},
"outputs": [],
"source": [
"model_card.model_details.name = 'Fine-tuned MobileNetV2 Model for Cats vs. Dogs'\n",
"model_card.model_details.overview = (\n",
" 'This model distinguishes cat and dog images. It uses the MobileNetV2 '\n",
" 'architecture (https://arxiv.org/abs/1801.04381) and is trained on the '\n",
" 'Cats vs Dogs dataset '\n",
" '(https://www.tensorflow.org/datasets/catalog/cats_vs_dogs). This model '\n",
" 'performed with high accuracy on both Cat and Dog images.'\n",
")\n",
"model_card.model_details.owners = [\n",
" mctlib.Owner(name='Model Cards Team', contact='model-cards@google.com')\n",
"]\n",
"model_card.model_details.version = mctlib.Version(name='v1.0', date='08/28/2020')\n",
"model_card.model_details.references = [\n",
" mctlib.Reference(reference='https://www.tensorflow.org/guide/keras/transfer_learning'),\n",
" mctlib.Reference(reference='https://arxiv.org/abs/1801.04381'),\n",
"]\n",
"model_card.model_details.licenses = [mctlib.License(identifier='Apache-2.0')]\n",
"model_card.model_details.citations = [mctlib.Citation(citation='https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/documentation/examples/Standalone_Model_Card_Toolkit_Demo.ipynb')]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "yoxXI5-P7JQC"
},
"source": [
"##### Quantitative Analysis\n",
"\n",
"`model_card.quantitative_analysis` contains information about a model's performance metrics.\n",
"\n",
"Below, we create some synthetic performance metric values for a hypothetical model built on our dataset."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "rtd9Y7yN7ITg"
},
"outputs": [],
"source": [
"model_card.quantitative_analysis.performance_metrics = [\n",
" mctlib.PerformanceMetric(type='accuracy', value=str(accuracy)),\n",
" mctlib.PerformanceMetric(type='accuracy', value=str(cat_accuracy), slice='cat'),\n",
" mctlib.PerformanceMetric(type='accuracy', value=str(dog_accuracy), slice='Dog'),\n",
"]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zRhj7rQX3gS4"
},
"source": [
"##### Considerations\n",
"\n",
"`model_card.considerations` contains qualifying information about your model - what are the appropriate use cases, what are limitations that users should keep in mind, what are the ethical considerations of application, etc."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "-b12rEyq7QXG"
},
"outputs": [],
"source": [
"model_card.considerations.use_cases = [\n",
" mctlib.UseCase(description='This model classifies images of cats and dogs.')\n",
"]\n",
"model_card.considerations.limitations = [\n",
" mctlib.Limitation(description='This model is not able to classify images of other classes.')\n",
"]\n",
"model_card.considerations.ethical_considerations = [mctlib.Risk(\n",
" name=\n",
" 'While distinguishing between cats and dogs is generally agreed to be '\n",
" 'a benign application of machine learning, harmful results can occur '\n",
" 'when the model attempts to classify images that don’t contain cats or '\n",
" 'dogs.',\n",
" mitigation_strategy=\n",
" 'Avoid application on non-dog and non-cat images.'\n",
")]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Zo9xHyAcVl6h"
},
"source": [
"#### Graph Fields\n",
"\n",
"It's often best practice for a report to provide information on a model's training data, and its performance across evaluation data. Model Card Toolkit allows users to encode this information in visualizations, rendered in the Model Card.\n",
"\n",
"`model_card` has three sections for graphs -- `model_card.model_parameters.data.train.graphics` for training dataset statistics, `model_card.model_parameters.data.eval.graphics` for evaluation dataset statistics, and `model_card.quantitative_analysis.graphics` for quantitative analysis of model performance.\n",
"\n",
"Graphs are stored as [base64 strings](https://en.wikipedia.org/wiki/Base64). If you have a [matplotlib](https://pypi.org/project/matplotlib/) figure, you can convert it to a base64 string with `model_card_toolkit.utils.graphics.figure_to_base64str()`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "ZMis4kzXdeqy",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 472
},
"outputId": "a5868140-125b-405b-9ac6-dd312714689a"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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+/bthiTj008/zbf/9ddfNyQZqampRosWLYyZM2da+yZPnmy0a9fOuly3bl0jOjra5vkvvPCCERQUZBjG/4WduXPn3rSu3r17G08++aR1mbCD/OzYscOQZHzyySeFet6qVauMSpUqWZeXLVtmeHl52bk63EluFHYGDx5sNG7c2NiwYYPh6OhoJCUlWfv27dtnSDJ++OEHwzAMo127dkZkZKTN8zt27EjYsRNOY93hjALcQDs8PFzR0dHW8e+//77Cw8MlSZmZmUpISNCoUaPk7u5ufbz44otKSEiwWU/r1q1tlrOzs/XCCy8oMDBQPj4+cnd319dff62kpCQ77R3MqiCfW0natGmTunXrprvuukseHh565JFHdObMGV24cKGEKwT+/JxaLBYdOHBANWrUUI0aNax9TZo0kbe3tw4cOCBJOnTokNq2bWvz/L8uo+gIO3eoevXqWX8J83PgwAFVrFhRVapU0dChQ3Xo0CHt2rVL27ZtU3JysgYPHixJ1vkPS5YsUXx8vPWxd+9e67yJXG5ubjbLr732mubNm6dnnnlGmzdvVnx8vEJCQnT58uUS2GOYSf369WWxWHTw4MHrjklMTFSfPn3UvHlzrV69Wjt37tTChQslic8YbokDBw6odu3apV0GRNi5Y1WqVEk9evTQokWLdPHiRZu+lJQUrVy5UoMHD5bFYlH16tXVuXNnrVy5UitXrlSPHj3k6+srSfLz81O1atX066+/ql69ejaPm/2Sf//99+rfv78efvhhtWjRQnXq1NH//ve/EttnmIePj49CQkK0cOFCZWZm5ulPS0vTzp07lZOTo//85z9q3769GjRooOPHj9uMc3JyUnZ29q0qG3eQ2NhY7dmzR2FhYWrcuLGSk5OVnJxs7d+/f7/S0tLUpEkTSVLDhg31448/2qzjr8soOsLOHeyNN95QVlaWQkJC9M033yg5OVnr169Xjx49dNddd+mll16yjg0PD9cHH3ygVatWWU9h5ZoxY4Zmz56t+fPn63//+5/27NmjZcuW6fXXX7/h9uvXr6+NGzdq27ZtOnDggP7+97/nuToBuJ6FCxcqOztbbdu21erVq3X48GEdOHBA8+fPV1BQkOrVq6crV65owYIF+vXXX7VixQotXrzYZh21atXS+fPnFRMTo9OnT3N6C0WSlZWllJQU/f7779q1a5dmzZql/v37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\n"
},
"metadata": {}
}
],
"source": [
"# Validation Set Size Bar Chart\n",
"fig, ax = plt.subplots()\n",
"width = 0.75\n",
"rects0 = ax.bar(0, len(examples['combined']['examples']), width, label='Overall')\n",
"rects1 = ax.bar(1, len(examples['cat']['examples']), width, label='Cat')\n",
"rects2 = ax.bar(2, len(examples['dog']['examples']), width, label='Dog')\n",
"ax.set_xticks(np.arange(3))\n",
"ax.set_xticklabels(['Overall', 'Cat', 'Dog'])\n",
"ax.set_ylabel('Validation Set Size')\n",
"ax.set_xlabel('Slices')\n",
"ax.set_title('Validation Set Size for Slices')\n",
"validation_set_size_barchart = figure_to_base64str(fig)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "UPY-j2RG9Wtr",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 472
},
"outputId": "d4d483dc-3888-4771-ce9c-b4234d56d3db"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2PUlEQVR4nO3deVhWdf7/8dcNCigILggoIuCuE+KOlGZOEJlrqZnjDIhljbkVU5Na7iaNjUtuMWmmM6GSS47fySxDvawRdVxwySVFCVJB0RRFA4Xz+6Of98SAy23ADcfn47rOdXV/zudzzvvc122+/JzPuW+LYRiGAAAATMLB3gUAAACUJMINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINANhBQECABg8ebH29detWWSwWbd261W41AWZBuAEqkIULF8pisSgkJMTepeA2Dh48qH79+snf318uLi7y9fVVeHi45s2bZ+/SgAeGhd+WAiqORx55RGfOnFFqaqqOHz+uRo0a2bsk/ML27dvVtWtX1a9fX1FRUfLx8VF6erp27NihlJQUnThxwto3ICBAjz32mJYuXSpJKigoUF5enpycnOTgwL87gV+jkr0LAHBvTp06pe3bt2vt2rV66aWXFB8fr4kTJ9q7rGLl5OTI1dXV3mWUubffflseHh76z3/+o+rVqxfad+7cuTuOdXBwkIuLSylWBzw4+OcBUEHEx8erRo0a6t69u/r166f4+Phi+126dEmvvvqqAgIC5OzsrHr16ikyMlJZWVnWPj/99JMmTZqkJk2ayMXFRXXq1NEzzzyjlJQUSbdf/5GamiqLxWKdbZCkwYMHy83NTSkpKXrqqadUrVo1DRo0SJL09ddfq3///qpfv76cnZ3l5+enV199VdevXy9S99GjR/Xss8+qdu3aqlKlipo2bao333xTkrRlyxZZLBZ9+umnRcYtX75cFotFSUlJd3z/Tp48qf79+6tmzZqqWrWqOnbsqM8++6xQn1vX/cknn+jtt99WvXr15OLioscff7zQrMvtpKSk6De/+U2RYCNJXl5edxx7u/d8586deuqpp1SjRg25urqqZcuWeu+99wr1OXr0qPr166eaNWvKxcVF7dq10/r16wv1uXHjhiZPnqzGjRvLxcVFtWrVUqdOnbRp06a7XhdQ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AABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTsXu4WbBggQICAuTi4qKQkBDt2rXrjv3nzJmjpk2bqkqVKvLz89Orr76qn376qYyqBQAA5Z1dw01CQoJiYmI0ceJE7d27V8HBwYqIiNC5c+eK7b98+XKNGTNGEydO1JEjR/Thhx8qISFB48aNK+PKAQBAeWXXcDNr1iwNHTpU0dHRatGiheLi4lS1alUtWbKk2P7bt2/XI488ot/97ncKCAjQE088oYEDB951tgcAADw47BZu8vLytGfPHoWFhf23GAcHhYWFKSkpqdgxDz/8sPbs2WMNMydPntSGDRv01FNP3fY8ubm5ys7OLrQBAADzqmSvE2dlZSk/P1/e3t6F2r29vXX06NFix/zud79TVlaWOnXqJMMwdPPmTf3xj3+8422p2NhYTZ48uURrBwAA5ZfdFxTbYuvWrZo+fboWLlyovXv3au3atfrss880derU244ZO3asLl++bN3S09PLsGIAAFDW7DZz4+npKUdHR2VmZhZqz8zMlI+PT7Fjxo8frz/84Q964YUXJElBQUHKycnRiy++qDfffFMODkWzmrOzs5ydnUv+AgAAQLlkt5kbJycntW3bVomJida2goICJSYmKjQ0tNgx165dKxJgHB0dJUmGYZResQAAoMKw28yNJMXExCgqKkrt2rVThw4dNGfOHOXk5Cg6OlqSFBkZKV9fX8XGxkqSevbsqVmzZql169YKCQnRiRMnNH78ePXs2dMacgAAwIPNruFmwIABOn/+vCZMmKCMjAy1atVKGzdutC4yTktLKzRT89Zbb8liseitt97S6dOnVbt2bfXs2VNvv/22vS4BAACUMxbjAbufk52dLQ8PD12+fFnu7u4lfvyAMZ+V+DFRPqW+093eJdzdJA97V4CyMumyvSu4q6BlQfYuAWXkYNTBEj+mLX9/V6inpQAAAO6GcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMA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\n"
},
"metadata": {}
}
],
"source": [
"# Acuracy Bar Chart\n",
"fig, ax = plt.subplots()\n",
"width = 0.75\n",
"rects0 = ax.bar(0, accuracy, width, label='Overall')\n",
"rects1 = ax.bar(1, cat_accuracy, width, label='Cat')\n",
"rects2 = ax.bar(2, dog_accuracy, width, label='Dog')\n",
"ax.set_xticks(np.arange(3))\n",
"ax.set_xticklabels(['Overall', 'Cat', 'Dog'])\n",
"ax.set_ylabel('Accuracy')\n",
"ax.set_xlabel('Slices')\n",
"ax.set_title('Accuracy on Slices')\n",
"accuracy_barchart = figure_to_base64str(fig)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Z7NmkfuAsPV1"
},
"source": [
"Now we can add them to our `ModelCard`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "By8Qcr9usRZh"
},
"outputs": [],
"source": [
"model_card.model_parameters.data.append(mctlib.Dataset())\n",
"model_card.model_parameters.data[0].graphics.collection = [\n",
" mctlib.Graphic(name='Validation Set Size', image=validation_set_size_barchart),\n",
"]\n",
"model_card.quantitative_analysis.graphics.collection = [\n",
" mctlib.Graphic(name='Accuracy', image=accuracy_barchart),\n",
"]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "SOYofSZKOMZx"
},
"source": [
"### Generate the Model Card\n",
"Let's generate the Model Card document. Available formats are stored at [model_card_toolkit/template](https://github.com/tensorflow/model-card-toolkit/tree/master/model_card_toolkit/template). Here, we will demonstrate the HTML and Markdown formats.\n",
"\n",
"First, we need to update the `ModelCardToolkit` with the latest `ModelCard`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "X7V0pJLB8jqJ"
},
"outputs": [],
"source": [
"mct.update_model_card(model_card)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Fe4dya_26fJc"
},
"source": [
"Now, the `ModelCardToolkit` can generate a Model Card document with `ModelCardToolkit.export_format()`."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Sd68Ih928vr9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "0290c901-4b16-4b23-bcec-f6af0d17d151"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.HTML object>"
],
"text/html": [
"<!DOCTYPE html>\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"<html lang=\"en\">\n",
"<head>\n",
"<style>\n",
" h1 {text-align: center;}\n",
" .row {\n",
" display: flex;\n",
" }\n",
" .col {\n",
" flex: 1;\n",
" }\n",
" .card {\n",
" padding: 1em;\n",
" border: 1px solid #DADCE0;\n",
" margin: 10px;\n",
" }\n",
" .img-container {\n",
" display: flex;\n",
" flex-wrap: wrap;\n",
" justify-content: space-around;\n",
" text-align: center;\n",
" }\n",
" .img-item {\n",
" flex: 1;\n",
" }\n",
" .center {\n",
" margin-left: auto;\n",
" margin-right: auto;\n",
" }\n",
" table {\n",
" margin-bottom: 10px;\n",
" }\n",
" table th {\n",
" background: #eee;\n",
" }\n",
" table, th, td {\n",
" border: 1px solid black;\n",
" border-collapse: collapse;\n",
" }\n",
" th, td {\n",
" border: 1px solid #ccc;\n",
" height: 30px;\n",
" text-align: left;\n",
" padding: 5px 10px\n",
" }\n",
" caption { font-weight: bold; }\n",
"</style>\n",
"<title>\n",
" Model Card for Fine-tuned MobileNetV2 Model for Cats vs. Dogs\n",
"</title>\n",
"</head>\n",
"<body>\n",
" <h1>\n",
" Model Card for Fine-tuned MobileNetV2 Model for Cats vs. Dogs\n",
" </h1>\n",
" <div class=\"row\">\n",
" \n",
" <div class=\"col card\">\n",
" <h2>Model Details</h2>\n",
" <h3>Overview</h3>\n",
" This model distinguishes cat and dog images. It uses the MobileNetV2 architecture (https://arxiv.org/abs/1801.04381) and is trained on the Cats vs Dogs dataset (https://www.tensorflow.org/datasets/catalog/cats_vs_dogs). This model performed with high accuracy on both Cat and Dog images.\n",
" <h3>Version</h3>\n",
" \n",
" \n",
" <div>name: v1.0</div>\n",
"\n",
" \n",
" \n",
" <div>date: 08/28/2020</div>\n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" <h3>Owners</h3>\n",
" \n",
" Model Cards Team, model-cards@google.com\n",
" \n",
" \n",
" \n",
" <h3>Licenses</h3>\n",
" <ul>\n",
"\n",
" <li>Apache-2.0</li>\n",
"\n",
" </ul>\n",
" \n",
" <h3>References</h3>\n",
" <ul>\n",
" \n",
" <li><a href=\"https://www.tensorflow.org/guide/keras/transfer_learning\">https://www.tensorflow.org/guide/keras/transfer_learning</a></li>\n",
" \n",
" <li><a href=\"https://arxiv.org/abs/1801.04381\">https://arxiv.org/abs/1801.04381</a></li>\n",
" \n",
" </ul>\n",
" \n",
" <h3>Citations</h3>\n",
" <ul>\n",
" \n",
" <li>https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/documentation/examples/Standalone_Model_Card_Toolkit_Demo.ipynb</li>\n",
" \n",
" </ul>\n",
" </div>\n",
" \n",
" \n",
" \n",
" <div class=\"col card\">\n",
" <h2>Considerations</h2>\n",
" \n",
" \n",
" <h3>Use Cases</h3>\n",
" \n",
" \n",
" <ul>\n",
" \n",
" <li>This model classifies images of cats and dogs.</li>\n",
" \n",
" </ul>\n",
"\n",
" \n",
" \n",
" <h3>Limitations</h3>\n",
" \n",
" \n",
" <ul>\n",
" \n",
" <li>This model is not able to classify images of other classes.</li>\n",
" \n",
" </ul>\n",
"\n",
" \n",
" \n",
" \n",
" <h3>Ethical Considerations</h3>\n",
" <ul>\n",
" <li>\n",
" <div>Risk: While distinguishing between cats and dogs is generally agreed to be a benign application of machine learning, harmful results can occur when the model attempts to classify images that don’t contain cats or dogs.</div>\n",
" <div>Mitigation Strategy: Avoid application on non-dog and non-cat images.</div>\n",
" </li> </ul>\n",
" </div>\n",
" \n",
" </div>\n",
" \n",
" \n",
" <div class=\"col card\">\n",
" <h2>Datasets</h2>\n",
" \n",
" <div class=\"row\">\n",
" <div class=\"col card\">\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" <div class=\"img-container\">\n",
" \n",
" \n",
" <div class=\"img-item\">\n",
" <img src='data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEs0lEQVR4nO3deVwVZf//8fcBZZFVVEBTcd9RyxU1NDckt27JLUpc0vsu3LK6y25zq7TlvnNLs7xT0qTFrMxKU0FtEa00cvdWksAU3AIUFRXm90c/ztcTqCwHwfH1fDzOI+a6rjPzmXMO8XbmmjkWwzAMAQAAmJRDaRcAAABQkgg7AADA1Ag7AADA1Ag7AADA1Ag7AADA1Ag7AADA1Ag7AADA1Ag7AADA1Ag7AADA1Ag7QAlLTEyUxWJRVFSUtW369OmyWCwFer7FYtH06dPtWlOXLl3UpUsXu67TbLZs2SKLxaItW7bc0u3++OOP6tChg9zc3GSxWBQfH39Lt389f/3M5Pe5Bsoqwg5wjX79+qlChQo6d+7cdceEh4fLyclJZ86cuYWVFd7+/fs1ffp0JSYmlnYpNhITEzVixAjVrVtXLi4u8vf3V3BwsKZNm1ak9X311VeFCoM5OTlavny52rVrJx8fH3l4eKhBgwYaNmyYtm/fXqQa7OXKlSsaOHCgzp49qzlz5mjFihUKCAgo0W3a+/0AyqJypV0AUJaEh4dr7dq1+vTTTzVs2LA8/RcuXNCaNWvUq1cvVapUqcjbmTJlip599tnilHpT+/fv14wZM9SlSxfVqlXLpm/Dhg0luu3rOXLkiNq0aSNXV1eNHDlStWrV0okTJ7Rr1y698sormjFjRqHX+dVXX2nhwoUFDjzjx4/XwoUL1b9/f4WHh6tcuXI6dOiQ1q1bpzp16qh9+/aSpODgYF28eFFOTk6FrqmoEhIS9Ntvv2nJkiV69NFHS3x7xXk/AgICdPHiRZUvX77E6wSKi7ADXKNfv37y8PBQdHR0vmFnzZo1yszMVHh4eLG2U65cOZUrV3q/frfyD/i15syZo/Pnzys+Pj7PEYuTJ0+W+PZTU1O1aNEijR49Wm+//bZN39y5c3Xq1CnrsoODg1xcXEq8pmvlvgbe3t52W2dmZqbc3Nzy7SvO+2GxWG756wMUFaexgGu4urpqwIABiomJyfd/9tHR0fLw8FC/fv109uxZPfXUUwoMDJS7u7s8PT0VGhqqX3755abbyW/OTlZWlp544glVqVLFuo1jx47lee5vv/2mxx9/XA0bNpSrq6sqVaqkgQMH2pyuioqK0sCBAyVJ9913nywWi838k/zm7Jw8eVKjRo2Sn5+fXFxc1KJFC7377rs2Y3Lnafz73//W22+/rbp168rZ2Vlt2rTRjz/+eNP9TkhIUPXq1fM9NePr65unbd26dbr33nvl5uYmDw8P9e7dW/v27bP2Dx8+XAsXLpQk6z7eaC7U0aNHZRiGOnbsmKfPYrHY1PDXOTtRUVE227j28dfX8r333lOrVq3k6uoqHx8fDRkyRMnJyTd8bYYPH67OnTtLkgYOHJhnvbGxsdbXwtvbW/3799eBAwds1pH7udq/f78eeughVaxYUZ06dbruNgv7flzrenN2Dh48qEGDBqlKlSpydXVVw4YN9a9//ctmzO+//66RI0fKz89Pzs7Oatq0qZYuXZpnGwsWLFDTpk1VoUIFVaxYUa1bt1Z0dPQN6wLyw5Ed4C/Cw8P17rvv6qOPPtLYsWOt7WfPntXXX3+toUOHytXVVfv27dNnn32mgQMHqnbt2kpNTdVbb72lzp07a//+/apWrVqhtvvoo4/qvffe00MPPaQOHTooNjZWvXv3zjPuxx9/1LZt2zRkyBBVr15diYmJevPNN9WlSxft379fFSpUUHBwsMaPH6/58+frueeeU+PGjSXJ+t+/unjxorp06aIjR45o7Nixql27tlatWqXhw4crLS1NEyZMsBkfHR2tc+fO6e9//7ssFoteffVVDRgwQL/++usNT2sEBARo06ZNio2NVdeuXW/4eqxYsUIREREKCQnRK6+8ogsXLujNN99Up06d9PPPP6tWrVr6+9//ruPHj2vjxo1asWLFzV5i6x/1VatWaeDAgapQocJNn5MrODg4zzZ+++03TZkyxSYYvPTSS3r++ec1aNAgPfroozp16pQWLFig4OBg/fzzz9c9avP3v/9dd911l2bNmqXx48erTZs28vPzkyRt2rRJoaGhqlOnjqZPn66LFy9qwYIF6tixo3bt2pXnNOXAgQNVv359zZo1S4Zh3PD1KOj7URC7d+/Wvffeq/Lly2vMmDGqVauWEhIStHbtWr300kuS/jy61r59e1ksFo0dO1ZVqlTRunXrNGrUKGVkZGjixImSpCVLlmj8+PF68MEHNWHCBF26dEm7d+/Wjh079NBDDxW7VtxhDAA2rl69alStWtUICgqyaV+8eLEhyfj6668NwzCMS5cuGdnZ2TZjjh49ajg7OxszZ860aZNkLFu2zNo2bdo049pfv/j4eEOS8fjjj9us76GHHjIkGdOmTbO2XbhwIU/NcXFxhiRj+fLl1rZVq1YZkozNmzfnGd+5c2ejc+fO1uW5c+cakoz33nvP2nb58mUjKCjIcHd3NzIyMmz2pVKlSsbZs2etY9esWWNIMtauXZtnW9fau3ev4erqakgyWrZsaUyYMMH47LPPjMzMTJtx586dM7y9vY3Ro0fbtKekpBheXl427ZGRkUZh/lc2bNgwQ5JRsWJF429/+5vx73//2zhw4ECecZs3b77u62cYhnHx4kWjVatWRrVq1YwTJ04YhmEYiYmJhqOjo/HSSy/ZjN2zZ49Rrly5PO3X2+aqVats2lu2bGn4+voaZ86csbb98ssvhoODgzFs2DBrW+7naujQoTfcTq6Cvh+Gkfczk9/nOjg42PDw8DB+++03m+fm5ORYfx41apRRtWpV4/Tp0zZjhgwZYnh5eVk/3/379zeaNm1aoP0AbobTWMBfODo6asiQIYqLi7M5NRQdHS0/Pz9169ZNkuTs7CwHhz9/hbKzs3XmzBm5u7urYcOG2rVrV6G2+dVXX0n6c/LstXL/lXstV1dX689XrlzRmTNnVK9ePXl7exd6u9du39/fX0OHDrW2lS9fXuPHj9f58+e1detWm/GDBw9WxYoVrcv33nuvJOnXX3+94XaaNm2q+Ph4Pfzww0pMTNS8efP0wAMPyM/PT0uWLLGO27hxo9LS0jR06FCdPn3a+nB0dFS7du20efPmIu2nJC1btkxvvPGGateurU8//VRPPfWUGjdurG7duun3338v8Hoef/xx7dmzR6tXr5a/v78k6ZNPPlFOTo4GDRpkU7e/v7/q169fpLpPnDih+Ph4DR8+XD4+Ptb25s2bq0ePHtbPzrX+8Y9/FGjdBX0/CuLUqVP65ptvNHLkSNWsWdOmL/fUomEYWr16tfr27SvDMGxeo5CQEKWnp1s/w97e3jp27FiBTo8CN0PYAfKROwE5d37AsWPH9O2332rIkCFydHSU9OclzHPmzFH9+vXl7OysypUrq0qVKtq9e7fS09MLtb3ffvtNDg4Oqlu3rk17w4YN84y9ePGipk6dqho1athsNy0trdDbvXb79evXt4a3XLmnvX777Teb9r/+McsNPn/88cdNt9WgQQOtWLFCp0+f1u7duzVr1iyVK1dOY8aM0aZNmyRJhw8fliR17dpVVapUsXls2LChWJOZHRwcFBkZqZ07d+r06dNas2aNQkNDFRsbqyFDhhRoHW+99ZaWLVumBQsWWK/eyq3bMAzVr18/T90HDhwoUt25r31+n4XGjRvr9OnTyszMtGmvXbt2gddfkPejIHKDbrNmza475tSpU0pLS9Pbb7+d5/UZMWKEpP+bGP3MM8/I3d1dbdu2Vf369RUZGanvv/++wPUA12LODpCPVq1aqVGjRnr//ff13HPP6f3335dhGDZXYc2aNUvPP/+8Ro4cqRdeeEE+Pj5ycHDQxIkTlZOTU2K1jRs3TsuWLdPEiRMVFBQkLy8vWSwWDRkypES3e63cwPdXxg3mh+S3jsDAQAUGBiooKEj33XefVq5cqe7du1v3Y8WKFdajJtey15VslSpVUr9+/dSvXz916dJFW7du1W+//XbDe9v88MMPmjBhgh599FGNGTPGpi8nJ0cWi0Xr1q3L9zVyd3e3S903c+3Rv4K60fthL7nv68MPP6yIiIh8xzRv3lzSn0Hu0KFD+uKLL7R+/XqtXr1aixYt0tSpU4t0iwLc2Qg7wHWEh4fr+eef1+7duxUdHa369eurTZs21v6PP/5Y9913n9555x2b56Wlpaly5cqF2lZAQIBycnKUkJBg8y/4Q4cO5Rn78ccfKyIiQv/5z3+sbZcuXVJaWprNuILeoTl3+7t371ZOTo7N0Z2DBw9a+0tS69atJf15ykaS9QiXr6/vTf/YFmY/b1bD1q1bdeLEievu76lTp/Tggw+qZcuW1qvArlW3bl0ZhqHatWurQYMGdqkrt5b8PgsHDx5U5cqVr3tpeVH99f0oiDp16kiS9u7de90xuVcaZmdnFyhEubm5afDgwRo8eLAuX76sAQMG6KWXXtLkyZO57B2Fwmks4Dpyj+JMnTpV8fHxee6t4+jomOdIxqpVqwo17yNXaGioJGn+/Pk27XPnzs0zNr/tLliwQNnZ2TZtuX8A/xqC8nP//fcrJSVFH374obXt6tWrWrBggdzd3a2XRBfXt99+qytXruRpz513khv0QkJC5OnpqVmzZuU7/tr74RRmP1NSUrR///487ZcvX1ZMTIwcHBxUr169fJ+bnZ2tIUOG6PLly1q9enW+9yoaMGCAHB0dNWPGjDzvkWEYRbrrdtWqVdWyZUu9++67Nvu4d+9ebdiwQffff3+h15mroO9HQVSpUkXBwcFaunSpkpKSbPpyXwtHR0eFhYVp9erV+Yaia9/Xv75WTk5OatKkiQzDyLdm4EY4sgNcR+3atdWhQwetWbNGkvKEnT59+mjmzJkaMWKEOnTooD179mjlypXWf+EWRsuWLTV06FAtWrRI6enp6tChg2JiYnTkyJE8Y/v06aMVK1bIy8tLTZo0UVxcnDZt2pTnjs4tW7aUo6OjXnnlFaWnp8vZ2Vldu3bN9/4pY8aM0VtvvaXhw4dr586dqlWrlj7++GN9//33mjt3rjw8PAq9T/l55ZVXtHPnTg0YMMB6umLXrl1avny5fHx8rBOyPT099eabb+qRRx7RPffcoyFDhqhKlSpKSkrSl19+qY4dO+qNN96Q9OcpR+nPyd0hISHWCeb5OXbsmNq2bauuXbuqW7du8vf318mTJ/X+++/rl19+0cSJE697VG7x4sWKjY3VP/7xjzwTjf38/NSjRw/VrVtXL774oiZPnqzExEQ98MAD8vDw0NGjR/Xpp59qzJgxeuqppwr9ur322msKDQ1VUFCQRo0aZb303MvLq1jfm1bQ96Og5s+fr06dOumee+7RmDFjVLt2bSUmJurLL7+0fsfXyy+/rM2bN6tdu3YaPXq0mjRporNnz2rXrl3atGmTzp49K0nq2bOn/P391bFjR/n5+enAgQN644031Lt3b7t9HnEHKZ2LwIDbw8KFCw1JRtu2bfP0Xbp0yXjyySeNqlWrGq6urkbHjh2NuLi4Al2i+9dLzw3jz0uZx48fb1SqVMlwc3Mz+vbtayQnJ+e59PyPP/4wRowYYVSuXNlwd3c3QkJCjIMHDxoBAQFGRESEzTqXLFli1KlTx3B0dLS5jPqvNRqGYaSmplrX6+TkZAQGBtrUfO2+vPbaa3lej7/WmZ/vv//eiIyMNJo1a2Z4eXkZ5cuXN2rWrGkMHz7cSEhIyDN+8+bNRkhIiOHl5WW4uLgYdevWNYYPH2789NNP1jFXr141xo0bZ1SpUsWwWCw3vAw9IyPDmDdvnhESEmJUr17dKF++vOHh4WEEBQUZS5YssblE+q+Xnue+Z/k9/vparl692ujUqZPh5uZmuLm5GY0aNTIiIyONQ4cO3fD1ud6l54ZhGJs2bTI6duxouLq6Gp6enkbfvn2N/fv324zJrfHUqVM33E6uwrwfBflcG8afl7P/7W9/M7y9vQ0XFxejYcOGxvPPP28zJjU11YiMjDRq1KhhlC9f3vD39ze6detmvP3229Yxb731lhEcHGxUqlTJcHZ2NurWrWs8/fTTRnp6eoH2DbiWxTAKMaMQAADgNsOcHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGrcVFB/fl/L8ePH5eHhYbdbzwMAgJJlGIbOnTunatWq5fki42sRdiQdP35cNWrUKO0yAABAESQnJ6t69erX7SfsSNZbjycnJ8vT07OUqwEAAAWRkZGhGjVq3PQrRAg7+r9vTfb09CTsAABwm7nZFBQmKAMAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMrV9oFmF2tZ78s7RJwiyS+3Lu0SwAA5IMjOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNRKNey8+eabat68uTw9PeXp6amgoCCtW7fO2n/p0iVFRkaqUqVKcnd3V1hYmFJTU23WkZSUpN69e6tChQry9fXV008/ratXr97qXQEAAGVUqYad6tWr6+WXX9bOnTv1008/qWvXrurfv7/27dsnSXriiSe0du1arVq1Slu3btXx48c1YMAA6/Ozs7PVu3dvXb58Wdu2bdO7776rqKgoTZ06tbR2CQAAlDEWwzCM0i7iWj4+Pnrttdf04IMPqkqVKoqOjtaDDz4oSTp48KAaN26suLg4tW/fXuvWrVOfPn10/Phx+fn5SZIWL16sZ555RqdOnZKTk1OBtpmRkSEvLy+lp6fL09PTrvtT69kv7bo+lF2JL/cu7RIA4I5S0L/fZWbOTnZ2tj744ANlZmYqKChIO3fu1JUrV9S9e3frmEaNGqlmzZqKi4uTJMXFxSkwMNAadCQpJCREGRkZ1qNDAADgzlautAvYs2ePgoKCdOnSJbm7u+vTTz9VkyZNFB8fLycnJ3l7e9uM9/PzU0pKiiQpJSXFJujk9uf2XU9WVpaysrKsyxkZGXbaGwAAUNaU+pGdhg0bKj4+Xjt27NBjjz2miIgI7d+/v0S3OXv2bHl5eVkfNWrUKNHtAQCA0lPqYcfJyUn16tVTq1atNHv2bLVo0ULz5s2Tv7+/Ll++rLS0NJvxqamp8vf3lyT5+/vnuTordzl3TH4mT56s9PR06yM5Odm+OwUAAMqMUg87f5WTk6OsrCy1atVK5cuXV0xMjLXv0KFDSkpKUlBQkCQpKChIe/bs0cmTJ61jNm7cKE9PTzVp0uS623B2drZe7p77AAAA5lSqc3YmT56s0NBQ1axZU+fOnVN0dLS2bNmir7/+Wl5eXho1apQmTZokHx8feXp6aty4cQoKClL79u0lST179lSTJk30yCOP6NVXX1VKSoqmTJmiyMhIOTs7l+auAQCAMqJUw87Jkyc1bNgwnThxQl5eXmrevLm+/vpr9ejRQ5I0Z84cOTg4KCwsTFlZWQoJCdGiRYusz3d0dNQXX3yhxx57TEFBQXJzc1NERIRmzpxZWrsEAADKmDJ3n53SwH12YA/cZwcAbq3b7j47AAAAJYGwAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATI2wAwAATK1Uw87s2bPVpk0beXh4yNfXVw888IAOHTpkM6ZLly6yWCw2j3/84x82Y5KSktS7d29VqFBBvr6+evrpp3X16tVbuSsAAKCMKleaG9+6dasiIyPVpk0bXb16Vc8995x69uyp/fv3y83NzTpu9OjRmjlzpnW5QoUK1p+zs7PVu3dv+fv7a9u2bTpx4oSGDRum8uXLa9asWbd0fwAAQNlTqmFn/fr1NstRUVHy9fXVzp07FRwcbG2vUKGC/P39813Hhg0btH//fm3atEl+fn5q2bKlXnjhBT3zzDOaPn26nJycSnQfAABA2Vam5uykp6dLknx8fGzaV65cqcqVK6tZs2aaPHmyLly4YO2Li4tTYGCg/Pz8rG0hISHKyMjQvn37bk3hAACgzCrVIzvXysnJ0cSJE9WxY0c1a9bM2v7QQw8pICBA1apV0+7du/XMM8/o0KFD+uSTTyRJKSkpNkFHknU5JSUl321lZWUpKyvLupyRkWHv3QEAAGVEmQk7kZGR2rt3r7777jub9jFjxlh/DgwMVNWqVdWtWzclJCSobt26RdrW7NmzNWPGjGLVCwAAbg9l4jTW2LFj9cUXX2jz5s2qXr36Dce2a9dOknTkyBFJkr+/v1JTU23G5C5fb57P5MmTlZ6ebn0kJycXdxcAAEAZVaphxzAMjR07Vp9++qliY2NVu3btmz4nPj5eklS1alVJUlBQkPbs2aOTJ09ax2zcuFGenp5q0qRJvutwdnaWp6enzQMAAJhTqZ7GioyMVHR0tNasWSMPDw/rHBsvLy+5uroqISFB0dHRuv/++1WpUiXt3r1bTzzxhIKDg9W8eXNJUs+ePdWkSRM98sgjevXVV5WSkqIpU6YoMjJSzs7Opbl7AACgDCjVIztvvvmm0tPT1aVLF1WtWtX6+PDDDyVJTk5O2rRpk3r27KlGjRrpySefVFhYmNauXWtdh6Ojo7744gs5OjoqKChIDz/8sIYNG2ZzXx4AAHDnKtUjO4Zh3LC/Ro0a2rp1603XExAQoK+++speZQEAABMpExOUAQAASgphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmFqRw87ly5d16NAhXb161Z71AAAA2FWhw86FCxc0atQoVahQQU2bNlVSUpIkady4cXr55ZftXiAAAEBxFDrsTJ48Wb/88ou2bNkiFxcXa3v37t314Ycf2rU4AACA4ipX2Cd89tln+vDDD9W+fXtZLBZre9OmTZWQkGDX4gAAAIqr0Ed2Tp06JV9f3zztmZmZNuEHAACgLCh02GndurW+/PJL63JuwPnvf/+roKAg+1UGAABgB4U+jTVr1iyFhoZq//79unr1qubNm6f9+/dr27Zt2rp1a0nUCAAAUGSFPrLTqVMnxcfH6+rVqwoMDNSGDRvk6+uruLg4tWrVqiRqBAAAKLJCH9mRpLp162rJkiX2rgUAAMDuCn1kp2vXrpoxY0ae9j/++ENdu3a1S1EAAAD2UugjO1u2bNGePXv0888/a+XKlXJzc5P05x2VmbMDAADKmiJ9XcSmTZuUkpKi9u3bKzEx0c4lAQAA2E+Rwk7VqlW1detWBQYGqk2bNtqyZYudywIAALCPQoed3PvqODs7Kzo6WhMmTFCvXr20aNEiuxcHAABQXIWes2MYhs3ylClT1LhxY0VERNitKAAAAHspdNg5evSoKleubNMWFhamhg0baufOnXYrDAAAwB4KHXYCAgLybW/WrJmaNWtW7IIAAADsqUBhZ8CAAYqKipKnp6cGDBhww7GffPKJXQoDAACwhwKFHS8vL+vEZC8vrxItCAAAwJ4KFHaWLVuW788AAABlXZG+G+taW7duVWZmpoKCglSxYkV71AQAAGA3BQ47r7zyis6fP68XXnhB0p+XoIeGhmrDhg2SJF9fX8XExKhp06YlUykAAEARFPimgh9++KHN1VYff/yxvvnmG3377bc6ffq0Wrdune8XhAIAAJSmAoedo0ePqnnz5tblr776Sg8++KA6duwoHx8fTZkyRXFxcYXa+OzZs9WmTRt5eHjI19dXDzzwgA4dOmQz5tKlS4qMjFSlSpXk7u6usLAwpaam2oxJSkpS7969VaFCBfn6+urpp5/W1atXC1ULAAAwpwKHnatXr8rZ2dm6HBcXpw4dOliXq1WrptOnTxdq41u3blVkZKS2b9+ujRs36sqVK+rZs6cyMzOtY5544gmtXbtWq1at0tatW3X8+HGby9+zs7PVu3dvXb58Wdu2bdO7776rqKgoTZ06tVC1AAAAcyrwnJ26devqm2++UZ06dZSUlKT//e9/Cg4OtvYfO3ZMlSpVKtTG169fb7McFRUlX19f7dy5U8HBwUpPT9c777yj6Ohode3aVdKfV4M1btxY27dvV/v27bVhwwbt379fmzZtkp+fn1q2bKkXXnhBzzzzjKZPny4nJ6dC1QQAAMylwEd2IiMjNXbsWI0aNUqhoaEKCgpSkyZNrP2xsbG6++67i1VMenq6JMnHx0eStHPnTl25ckXdu3e3jmnUqJFq1qxpPWUWFxenwMBA+fn5WceEhIQoIyND+/btK1Y9AADg9lfgIzujR4+Wo6Oj1q5dq+DgYE2bNs2m//jx4xo5cmSRC8nJydHEiRPVsWNH60TolJQUOTk5ydvb22asn5+fUlJSrGOuDTq5/bl9+cnKylJWVpZ1OSMjo8h1AwCAsq1Q99kZOXLkdQPNokWLilVIZGSk9u7dq++++65Y6ymI2bNnc+UYAAB3iAKfxipJY8eO1RdffKHNmzerevXq1nZ/f39dvnxZaWlpNuNTU1Pl7+9vHfPXq7Nyl3PH/NXkyZOVnp5ufSQnJ9txbwAAQFlSqmHHMAyNHTtWn376qWJjY1W7dm2b/latWql8+fKKiYmxth06dEhJSUkKCgqSJAUFBWnPnj06efKkdczGjRvl6elpM6foWs7OzvL09LR5AAAAcyr210UUR2RkpKKjo7VmzRp5eHhY59h4eXnJ1dVVXl5eGjVqlCZNmiQfHx95enpq3LhxCgoKUvv27SVJPXv2VJMmTfTII4/o1VdfVUpKiqZMmaLIyEibS+UBAMCdqVTDzptvvilJ6tKli037smXLNHz4cEnSnDlz5ODgoLCwMGVlZSkkJMRmfpCjo6O++OILPfbYYwoKCpKbm5siIiI0c+bMW7UbAACgDLMYhmEU5gkjR47UvHnz5OHhYdOemZmpcePGaenSpXYt8FbIyMiQl5eX0tPT7X5Kq9azX9p1fSi7El/uXdolAMAdpaB/vws9Z+fdd9/VxYsX87RfvHhRy5cvL+zqAAAASlSBT2NlZGTIMAwZhqFz587JxcXF2pedna2vvvpKvr6+JVIkAABAURU47Hh7e8tischisahBgwZ5+i0WC/euAQAAZU6Bw87mzZtlGIa6du2q1atXW7/SQZKcnJwUEBCgatWqlUiRAAAARVXgsNO5c2dJ0tGjR1WzZk1ZLJYSKwoAAMBeCj1BOSAgQN99950efvhhdejQQb///rskacWKFbfkqx4AAAAKo9BhZ/Xq1QoJCZGrq6t27dpl/ULN9PR0zZo1y+4FAgAAFEehw86LL76oxYsXa8mSJSpfvry1vWPHjtq1a5ddiwMAACiuQoedQ4cOKTg4OE+7l5dXni/sBAAAKG2FDjv+/v46cuRInvbvvvtOderUsUtRAAAA9lLosDN69GhNmDBBO3bskMVi0fHjx7Vy5Uo99dRTeuyxx0qiRgAAgCIr9BeBPvvss8rJyVG3bt104cIFBQcHy9nZWU899ZTGjRtXEjUCAAAUWaHDjsVi0b/+9S89/fTTOnLkiM6fP68mTZrI3d29JOoDAAAolkKfxsrl5OSkJk2ayM/PT0lJScrJybFnXQAAAHZR4LCzdOlSvf766zZtY8aMUZ06dRQYGKhmzZopOTnZ7gUCAAAUR4HDzttvv62KFStal9evX69ly5Zp+fLl+vHHH+Xt7c0XgQIAgDKnwHN2Dh8+rNatW1uX16xZo/79+ys8PFySNGvWLI0YMcL+FQIAABRDgY/sXLx4UZ6entblbdu22dxcsE6dOkpJSbFvdQAAAMVU4LATEBCgnTt3SpJOnz6tffv2qWPHjtb+lJQUeXl52b9CAACAYijwaayIiAhFRkZq3759io2NVaNGjdSqVStr/7Zt29SsWbMSKRIAAKCoChx2/vnPf+rChQv65JNP5O/vr1WrVtn0f//99xo6dKjdCwQAACgOi2EYRmkXUdoyMjLk5eWl9PR0m3lJ9lDr2S/tuj6UXYkv9y7tEgDgjlLQv99FvqkgAADA7YCwAwAATI2wAwAATI2wAwAATK3Q33oOAIA9BL4bWNol4BbZE7GnVLdf6LCTnZ2tqKgoxcTE6OTJk3m+7Tw2NtZuxQEAABRXocPOhAkTFBUVpd69e6tZs2ayWCwlURcAAIBdFDrsfPDBB/roo490//33l0Q9AAAAdlXoCcpOTk6qV69eSdQCAABgd4UOO08++aTmzZsnbrwMAABuB4U+jfXdd99p8+bNWrdunZo2bary5cvb9H/yySd2Kw4AAKC4Ch12vL299be//a0kagEAALC7QoedZcuWlUQdAAAAJaLINxU8deqUDh06JElq2LChqlSpYreiAAAA7KXQE5QzMzM1cuRIVa1aVcHBwQoODla1atU0atQoXbhwoSRqBAAAKLJCh51JkyZp69atWrt2rdLS0pSWlqY1a9Zo69atevLJJ0uiRgAAgCIr9Gms1atX6+OPP1aXLl2sbffff79cXV01aNAgvfnmm/asDwAAoFgKfWTnwoUL8vPzy9Pu6+vLaSwAAFDmFDrsBAUFadq0abp06ZK17eLFi5oxY4aCgoLsWhwAAEBxFfo01rx58xQSEqLq1aurRYsWkqRffvlFLi4u+vrrr+1eIAAAQHEUOuw0a9ZMhw8f1sqVK3Xw4EFJ0tChQxUeHi5XV1e7FwgAAFAcRbrPToUKFTR69Gh71wIAAGB3BZqz8/nnn+vKlSvWn2/0KIxvvvlGffv2VbVq1WSxWPTZZ5/Z9A8fPlwWi8Xm0atXL5sxZ8+eVXh4uDw9PeXt7a1Ro0bp/PnzhaoDAACYV4GO7DzwwANKSUmRr6+vHnjggeuOs1gsys7OLvDGMzMz1aJFC40cOVIDBgzId0yvXr1svqLC2dnZpj88PFwnTpzQxo0bdeXKFY0YMUJjxoxRdHR0gesAAADmVaCwk5OTk+/PxRUaGqrQ0NAbjnF2dpa/v3++fQcOHND69ev1448/qnXr1pKkBQsW6P7779e///1vVatWzW61AgCA21OhLz1fvny5srKy8rRfvnxZy5cvt0tR19qyZYt8fX3VsGFDPfbYYzpz5oy1Ly4uTt7e3tagI0ndu3eXg4ODduzYYfdaAADA7afQYWfEiBFKT0/P037u3DmNGDHCLkXl6tWrl5YvX66YmBi98sor2rp1q0JDQ62nynJPrV2rXLly8vHxUUpKynXXm5WVpYyMDJsHAAAwp0JfjWUYhiwWS572Y8eOycvLyy5F5RoyZIj158DAQDVv3lx169bVli1b1K1btyKvd/bs2ZoxY4Y9SgQAAGVcgcPO3Xffbb0iqlu3bipX7v+emp2draNHj+a5Usre6tSpo8qVK+vIkSPq1q2b/P39dfLkSZsxV69e1dmzZ687z0eSJk+erEmTJlmXMzIyVKNGjRKrGygzptv3HyQow6bnPQIP3KkKHHZyr8KKj49XSEiI3N3drX1OTk6qVauWwsLC7F7gtY4dO6YzZ86oatWqkv786oq0tDTt3LlTrVq1kiTFxsYqJydH7dq1u+56nJ2d81zVBQAAzKnAYWfatGmSpFq1amnw4MFycXEp9sbPnz+vI0eOWJePHj2q+Ph4+fj4yMfHRzNmzFBYWJj8/f2VkJCgf/7zn6pXr55CQkIkSY0bN1avXr00evRoLV68WFeuXNHYsWM1ZMgQrsQCAACSijBBOSIiwi5BR5J++ukn3X333br77rslSZMmTdLdd9+tqVOnytHRUbt371a/fv3UoEEDjRo1Sq1atdK3335rc1Rm5cqVatSokbp166b7779fnTp10ttvv22X+gAAwO2v0BOUs7OzNWfOHH300UdKSkrS5cuXbfrPnj1b4HV16dJFhmFct78gXyzq4+PDDQQBAMB1FfrIzowZM/T6669r8ODBSk9P16RJkzRgwAA5ODho+vTpJVAiAABA0RU67KxcuVJLlizRk08+qXLlymno0KH673//q6lTp2r79u0lUSMAAECRFTrspKSkKDAwUJLk7u5uvcFgnz599OWXX9q3OgAAgGIqdNipXr26Tpw4IUmqW7euNmzYIEn68ccfuZwbAACUOYUOO3/7298UExMjSRo3bpyef/551a9fX8OGDdPIkSPtXiAAAEBxFPpqrJdfftn68+DBg1WzZk3FxcWpfv366tu3r12LAwAAKK5Ch52/CgoKUlBQkD1qAQAAsLsChZ3PP/+8wCvs169fkYsBAACwtwKFndzvxcplsVjy3Aww95vQs7Oz7VMZAACAHRRognJOTo71sWHDBrVs2VLr1q1TWlqa0tLStG7dOt1zzz1av359SdcLAABQKIWeszNx4kQtXrxYnTp1sraFhISoQoUKGjNmjA4cOGDXAgEAAIqj0JeeJyQkyNvbO0+7l5eXEhMT7VASAACA/RQ67LRp00aTJk1SamqqtS01NVVPP/202rZta9fiAAAAiqvQYWfp0qU6ceKEatasqXr16qlevXqqWbOmfv/9d73zzjslUSMAAECRFXrOTr169bR7925t3LhRBw8elCQ1btxY3bt3t16RBQAAUFYU6aaCFotFPXv2VM+ePe1dDwAAgF0VKOzMnz9fY8aMkYuLi+bPn3/DsePHj7dLYQAAAPZQoLAzZ84chYeHy8XFRXPmzLnuOIvFQtgBAABlSoHCztGjR/P9GQAAoKwr9NVYAAAAt5MCHdmZNGlSgVf4+uuvF7kYAAAAeytQ2Pn5558LtDIuPQcAAGVNgcLO5s2bS7oOAACAEsGcHQAAYGpFuqngTz/9pI8++khJSUm6fPmyTd8nn3xil8IAAADsodBHdj744AN16NBBBw4c0KeffqorV65o3759io2NlZeXV0nUCAAAUGSFDjuzZs3SnDlztHbtWjk5OWnevHk6ePCgBg0apJo1a5ZEjQAAAEVW6LCTkJCg3r17S5KcnJyUmZkpi8WiJ554Qm+//bbdCwQAACiOQoedihUr6ty5c5Kku+66S3v37pUkpaWl6cKFC/atDgAAoJgKPUE5ODhYGzduVGBgoAYOHKgJEyYoNjZWGzduVLdu3UqiRgAAgCIrcNjZu3evmjVrpjfeeEOXLl2SJP3rX/9S+fLltW3bNoWFhWnKlCklVigAAEBRFDjsNG/eXG3atNGjjz6qIUOGSJIcHBz07LPPllhxAAAAxVXgOTtbt25V06ZN9eSTT6pq1aqKiIjQt99+W5K1AQAAFFuBw869996rpUuX6sSJE1qwYIESExPVuXNnNWjQQK+88opSUlJKsk4AAIAiKfTVWG5ubhoxYoS2bt2q//3vfxo4cKAWLlyomjVrql+/fiVRIwAAQJEV67ux6tWrp+eee05TpkyRh4eHvvzyS3vVBQAAYBdF+m4sSfrmm2+0dOlSrV69Wg4ODho0aJBGjRplz9oAAACKrVBh5/jx44qKilJUVJSOHDmiDh06aP78+Ro0aJDc3NxKqkYAAIAiK3DYCQ0N1aZNm1S5cmUNGzZMI0eOVMOGDUuyNgAAgGIrcNgpX768Pv74Y/Xp00eOjo4lWRMAAIDdFDjsfP755yVZBwAAQIko1tVYAAAAZR1hBwAAmBphBwAAmFqphp1vvvlGffv2VbVq1WSxWPTZZ5/Z9BuGoalTp6pq1apydXVV9+7ddfjwYZsxZ8+eVXh4uDw9PeXt7a1Ro0bp/Pnzt3AvAABAWVaqYSczM1MtWrTQwoUL8+1/9dVXNX/+fC1evFg7duyQm5ubQkJCdOnSJeuY8PBw7du3Txs3btQXX3yhb775RmPGjLlVuwAAAMq4It9B2R5CQ0MVGhqab59hGJo7d66mTJmi/v37S5KWL18uPz8/ffbZZxoyZIgOHDig9evX68cff1Tr1q0lSQsWLND999+vf//736pWrdot2xcAAFA2ldk5O0ePHlVKSoq6d+9ubfPy8lK7du0UFxcnSYqLi5O3t7c16EhS9+7d5eDgoB07dtzymgEAQNlTqkd2biQlJUWS5OfnZ9Pu5+dn7UtJSZGvr69Nf7ly5eTj42Mdk5+srCxlZWVZlzMyMuxVNgAAKGPK7JGdkjR79mx5eXlZHzVq1CjtkgAAQAkps2HH399fkpSammrTnpqaau3z9/fXyZMnbfqvXr2qs2fPWsfkZ/LkyUpPT7c+kpOT7Vw9AAAoK8ps2Kldu7b8/f0VExNjbcvIyNCOHTsUFBQkSQoKClJaWpp27txpHRMbG6ucnBy1a9fuuut2dnaWp6enzQMAAJhTqc7ZOX/+vI4cOWJdPnr0qOLj4+Xj46OaNWtq4sSJevHFF1W/fn3Vrl1bzz//vKpVq6YHHnhAktS4cWP16tVLo0eP1uLFi3XlyhWNHTtWQ4YM4UosAAAgqZTDzk8//aT77rvPujxp0iRJUkREhKKiovTPf/5TmZmZGjNmjNLS0tSpUyetX79eLi4u1uesXLlSY8eOVbdu3eTg4KCwsDDNnz//lu8LAAAom0o17HTp0kWGYVy332KxaObMmZo5c+Z1x/j4+Cg6OrokygMAACZQZufsAAAA2ANhBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmFqZDjvTp0+XxWKxeTRq1Mjaf+nSJUVGRqpSpUpyd3dXWFiYUlNTS7FiAABQ1pTpsCNJTZs21YkTJ6yP7777ztr3xBNPaO3atVq1apW2bt2q48ePa8CAAaVYLQAAKGvKlXYBN1OuXDn5+/vnaU9PT9c777yj6Ohode3aVZK0bNkyNW7cWNu3b1f79u1vdakAAKAMKvNHdg4fPqxq1aqpTp06Cg8PV1JSkiRp586dunLlirp3724d26hRI9WsWVNxcXGlVS4AAChjyvSRnXbt2ikqKkoNGzbUiRMnNGPGDN17773au3evUlJS5OTkJG9vb5vn+Pn5KSUl5YbrzcrKUlZWlnU5IyOjJMoHAABlQJkOO6Ghodafmzdvrnbt2ikgIEAfffSRXF1di7ze2bNna8aMGfYoEQAAlHFl/jTWtby9vdWgQQMdOXJE/v7+unz5stLS0mzGpKam5jvH51qTJ09Wenq69ZGcnFyCVQMAgNJ0W4Wd8+fPKyEhQVWrVlWrVq1Uvnx5xcTEWPsPHTqkpKQkBQUF3XA9zs7O8vT0tHkAAABzKtOnsZ566in17dtXAQEBOn78uKZNmyZHR0cNHTpUXl5eGjVqlCZNmiQfHx95enpq3LhxCgoK4kosAABgVabDzrFjxzR06FCdOXNGVapUUadOnbR9+3ZVqVJFkjRnzhw5ODgoLCxMWVlZCgkJ0aJFi0q5agAAUJaU6bDzwQcf3LDfxcVFCxcu1MKFC29RRQAA4HZzW83ZAQAAKCzCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXThJ2FCxeqVq1acnFxUbt27fTDDz+UdkkAAKAMMEXY+fDDDzVp0iRNmzZNu3btUosWLRQSEqKTJ0+WdmkAAKCUmSLsvP766xo9erRGjBihJk2aaPHixapQoYKWLl1a2qUBAIBSdtuHncuXL2vnzp3q3r27tc3BwUHdu3dXXFxcKVYGAADKgnKlXUBxnT59WtnZ2fLz87Np9/Pz08GDB/N9TlZWlrKysqzL6enpkqSMjAy715eTdcHu60TZVBKfH7vLMkq7Atwqt8HnMftidmmXgFukpP7/mLtew7jx/9tu+7BTFLNnz9aMGTPytNeoUaMUqoFZeM0t7QqAa7zsVdoVAFZej5Xs5/HcuXPy8rr+Nm77sFO5cmU5OjoqNTXVpj01NVX+/v75Pmfy5MmaNGmSdTknJ0dnz55VpUqVZLFYSrTeO0FGRoZq1Kih5ORkeXp6lnY5uMPxeURZwufRvgzD0Llz51StWrUbjrvtw46Tk5NatWqlmJgYPfDAA5L+DC8xMTEaO3Zsvs9xdnaWs7OzTZu3t3cJV3rn8fT05JcZZQafR5QlfB7t50ZHdHLd9mFHkiZNmqSIiAi1bt1abdu21dy5c5WZmakRI0aUdmkAAKCUmSLsDB48WKdOndLUqVOVkpKili1bav369XkmLQMAgDuPKcKOJI0dO/a6p61wazk7O2vatGl5ThUCpYHPI8oSPo+lw2Lc7HotAACA29htf1NBAACAGyHsAAAAUyPsAAAAUyPsoEzr0qWLJk6caF2uVauW5s6dW2r1AABuP4SdO1xycrJGjhypatWqycnJSQEBAZowYYLOnDlT2qUBN5WSkqJx48apTp06cnZ2Vo0aNdS3b1/FxMQU6PlRUVHcUBTFMnz4cFksFlksFpUvX15+fn7q0aOHli5dqpycnNIuD/8fYecO9uuvv6p169Y6fPiw3n//fR05ckSLFy9WTEyMgoKCdPbs2RLb9pUrV0ps3bgzJCYmqlWrVoqNjdVrr72mPXv2aP369brvvvsUGRlZ2uXhDtKrVy+dOHFCiYmJWrdune677z5NmDBBffr00dWrV0u7PIiwc0eLjIyUk5OTNmzYoM6dO6tmzZoKDQ3Vpk2b9Pvvv+tf//qXnnvuObVr1y7Pc1u0aKGZM2dal//73/+qcePGcnFxUaNGjbRo0SJrX2JioiwWiz788EN17txZLi4uWrlypc6cOaOhQ4fqrrvuUoUKFRQYGKj333//luw7bn+PP/64LBaLfvjhB4WFhalBgwZq2rSpJk2apO3bt0uSXn/9dQUGBsrNzU01atTQ448/rvPnz0uStmzZohEjRig9Pd36L/Pp06eX4h7hduXs7Cx/f3/ddddduueee/Tcc89pzZo1WrdunaKioiRJSUlJ6t+/v9zd3eXp6alBgwbl+U7HF198Ub6+vvLw8NCjjz6qZ599Vi1btrz1O2RGBu5IZ86cMSwWizFr1qx8+0ePHm1UrFjR2Lt3ryHJOHLkiLUvt+3w4cOGYRjGe++9Z1StWtVYvXq18euvvxqrV682fHx8jKioKMMwDOPo0aOGJKNWrVrWMcePHzeOHTtmvPbaa8bPP/9sJCQkGPPnzzccHR2NHTt2WLfVuXNnY8KECdblgIAAY86cOfZ/QXBbudnnN9ecOXOM2NhY4+jRo0ZMTIzRsGFD47HHHjMMwzCysrKMuXPnGp6ensaJEyeMEydOGOfOnbsV5cNEIiIijP79++fb16JFCyM0NNTIzs42WrZsaXTq1Mn46aefjO3btxutWrUyOnfubB373nvvGS4uLsbSpUuNQ4cOGTNmzDA8PT2NFi1a3JL9MDvCzh1q+/bthiTj008/zbf/9ddfNyQZqampRosWLYyZM2da+yZPnmy0a9fOuly3bl0jOjra5vkvvPCCERQUZBjG/4WduXPn3rSu3r17G08++aR1mbCD/OzYscOQZHzyySeFet6qVauMSpUqWZeXLVtmeHl52bk63EluFHYGDx5sNG7c2NiwYYPh6OhoJCUlWfv27dtnSDJ++OEHwzAMo127dkZkZKTN8zt27EjYsRNOY93hjALcQDs8PFzR0dHW8e+//77Cw8MlSZmZmUpISNCoUaPk7u5ufbz44otKSEiwWU/r1q1tlrOzs/XCCy8oMDBQPj4+cnd319dff62kpCQ77R3MqiCfW0natGmTunXrprvuukseHh565JFHdObMGV24cKGEKwT+/JxaLBYdOHBANWrUUI0aNax9TZo0kbe3tw4cOCBJOnTokNq2bWvz/L8uo+gIO3eoevXqWX8J83PgwAFVrFhRVapU0dChQ3Xo0CHt2rVL27ZtU3JysgYPHixJ1vkPS5YsUXx8vPWxd+9e67yJXG5ubjbLr732mubNm6dnnnlGmzdvVnx8vEJCQnT58uUS2GOYSf369WWxWHTw4MHrjklMTFSfPn3UvHlzrV69Wjt37tTChQslic8YbokDBw6odu3apV0GRNi5Y1WqVEk9evTQokWLdPHiRZu+lJQUrVy5UoMHD5bFYlH16tXVuXNnrVy5UitXrlSPHj3k6+srSfLz81O1atX066+/ql69ejaPm/2Sf//99+rfv78efvhhtWjRQnXq1NH//ve/EttnmIePj49CQkK0cOFCZWZm5ulPS0vTzp07lZOTo//85z9q3769GjRooOPHj9uMc3JyUnZ29q0qG3eQ2NhY7dmzR2FhYWrcuLGSk5OVnJxs7d+/f7/S0tLUpEkTSVLDhg31448/2qzjr8soOsLOHeyNN95QVlaWQkJC9M033yg5OVnr169Xjx49dNddd+mll16yjg0PD9cHH3ygVatWWU9h5ZoxY4Zmz56t+fPn63//+5/27NmjZcuW6fXXX7/h9uvXr6+NGzdq27ZtOnDggP7+97/nuToBuJ6FCxcqOztbbdu21erVq3X48GEdOHBA8+fPV1BQkOrVq6crV65owYIF+vXXX7VixQotXrzYZh21atXS+fPnFRMTo9OnT3N6C0WSlZWllJQU/f7779q1a5dmzZql/v37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' alt='Validation Set Size' />\n",
" </div>\n",
" \n",
" </div>\n",
"\n",
" \n",
" </div>\n",
" </div>\n",
" \n",
" </div>\n",
"\n",
" \n",
" \n",
" \n",
"<div class=\"col card\">\n",
" <h2>Quantitative Analysis</h2>\n",
" \n",
" \n",
"<table class=\"center\">\n",
" <caption>Performance Metrics</caption>\n",
" <tr><th>Name</th><th>Value</th></tr>\n",
"\n",
" <tr><td>\n",
"accuracy\n",
"</td><td>\n",
"0.981249988079071\n",
"</td></tr>\n",
"\n",
" <tr><td>\n",
"accuracy, cat\n",
"</td><td>\n",
"0.9932885766029358\n",
"</td></tr>\n",
"\n",
" <tr><td>\n",
"accuracy, Dog\n",
"</td><td>\n",
"0.9707602262496948\n",
"</td></tr>\n",
"\n",
"</table>\n",
"\n",
" \n",
" \n",
" \n",
" <div class=\"row\">\n",
" <div class=\"col\">\n",
" \n",
" \n",
" <div class=\"img-container\">\n",
" \n",
" \n",
" <div class=\"img-item\">\n",
" <img src='data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2PUlEQVR4nO3deVhWdf7/8dcNCigILggoIuCuE+KOlGZOEJlrqZnjDIhljbkVU5Na7iaNjUtuMWmmM6GSS47fySxDvawRdVxwySVFCVJB0RRFA4Xz+6Of98SAy23ADcfn47rOdXV/zudzzvvc122+/JzPuW+LYRiGAAAATMLB3gUAAACUJMINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINANhBQECABg8ebH29detWWSwWbd261W41AWZBuAEqkIULF8pisSgkJMTepeA2Dh48qH79+snf318uLi7y9fVVeHi45s2bZ+/SgAeGhd+WAiqORx55RGfOnFFqaqqOHz+uRo0a2bsk/ML27dvVtWtX1a9fX1FRUfLx8VF6erp27NihlJQUnThxwto3ICBAjz32mJYuXSpJKigoUF5enpycnOTgwL87gV+jkr0LAHBvTp06pe3bt2vt2rV66aWXFB8fr4kTJ9q7rGLl5OTI1dXV3mWUubffflseHh76z3/+o+rVqxfad+7cuTuOdXBwkIuLSylWBzw4+OcBUEHEx8erRo0a6t69u/r166f4+Phi+126dEmvvvqqAgIC5OzsrHr16ikyMlJZWVnWPj/99JMmTZqkJk2ayMXFRXXq1NEzzzyjlJQUSbdf/5GamiqLxWKdbZCkwYMHy83NTSkpKXrqqadUrVo1DRo0SJL09ddfq3///qpfv76cnZ3l5+enV199VdevXy9S99GjR/Xss8+qdu3aqlKlipo2bao333xTkrRlyxZZLBZ9+umnRcYtX75cFotFSUlJd3z/Tp48qf79+6tmzZqqWrWqOnbsqM8++6xQn1vX/cknn+jtt99WvXr15OLioscff7zQrMvtpKSk6De/+U2RYCNJXl5edxx7u/d8586deuqpp1SjRg25urqqZcuWeu+99wr1OXr0qPr166eaNWvKxcVF7dq10/r16wv1uXHjhiZPnqzGjRvLxcVFtWrVUqdOnbRp06a7XhdQ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AABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTsXu4WbBggQICAuTi4qKQkBDt2rXrjv3nzJmjpk2bqkqVKvLz89Orr76qn376qYyqBQAA5Z1dw01CQoJiYmI0ceJE7d27V8HBwYqIiNC5c+eK7b98+XKNGTNGEydO1JEjR/Thhx8qISFB48aNK+PKAQBAeWXXcDNr1iwNHTpU0dHRatGiheLi4lS1alUtWbKk2P7bt2/XI488ot/97ncKCAjQE088oYEDB951tgcAADw47BZu8vLytGfPHoWFhf23GAcHhYWFKSkpqdgxDz/8sPbs2WMNMydPntSGDRv01FNP3fY8ubm5ys7OLrQBAADzqmSvE2dlZSk/P1/e3t6F2r29vXX06NFix/zud79TVlaWOnXqJMMwdPPmTf3xj3+8422p2NhYTZ48uURrBwAA5ZfdFxTbYuvWrZo+fboWLlyovXv3au3atfrss880derU244ZO3asLl++bN3S09PLsGIAAFDW7DZz4+npKUdHR2VmZhZqz8zMlI+PT7Fjxo8frz/84Q964YUXJElBQUHKycnRiy++qDfffFMODkWzmrOzs5ydnUv+AgAAQLlkt5kbJycntW3bVomJida2goICJSYmKjQ0tNgx165dKxJgHB0dJUmGYZResQAAoMKw28yNJMXExCgqKkrt2rVThw4dNGfOHOXk5Cg6OlqSFBkZKV9fX8XGxkqSevbsqVmzZql169YKCQnRiRMnNH78ePXs2dMacgAAwIPNruFmwIABOn/+vCZMmKCMjAy1atVKGzdutC4yTktLKzRT89Zbb8liseitt97S6dOnVbt2bfXs2VNvv/22vS4BAACUMxbjAbufk52dLQ8PD12+fFnu7u4lfvyAMZ+V+DFRPqW+093eJdzdJA97V4CyMumyvSu4q6BlQfYuAWXkYNTBEj+mLX9/V6inpQAAAO6GcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMA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' alt='Accuracy' />\n",
" </div>\n",
" \n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n",
"\n",
" \n",
"</div>\n",
"\n",
" \n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
],
"source": [
"# Generate a model card document in HTML (default)\n",
"html_doc = mct.export_format()\n",
"\n",
"# Display the model card document in HTML\n",
"display.display(display.HTML(html_doc))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Vtl8lZG3Amr5"
},
"source": [
"You can also output a Model Card in other formats, like Markdown."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "uncQA2NfAnIS",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "634aae11-982e-4c80-d26c-6d17a956e636"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<IPython.core.display.Markdown object>"
],
"text/markdown": "\n\n\n\n\n\n# Model Card for Fine-tuned MobileNetV2 Model for Cats vs. Dogs\n\n## Model Details\n\n### Overview\nThis model distinguishes cat and dog images. It uses the MobileNetV2 architecture (https://arxiv.org/abs/1801.04381) and is trained on the Cats vs Dogs dataset (https://www.tensorflow.org/datasets/catalog/cats_vs_dogs). This model performed with high accuracy on both Cat and Dog images. \n\n### Version\n\nname: v1.0 \n\ndate: 08/28/2020 \n\n### Owners\n\n* Model Cards Team, model-cards@google.com\n\n\n### Licenses\n\n* Apache-2.0\n\n### References\n\n* [https://www.tensorflow.org/guide/keras/transfer_learning](https://www.tensorflow.org/guide/keras/transfer_learning)\n* [https://arxiv.org/abs/1801.04381](https://arxiv.org/abs/1801.04381)\n\n\n### Citations\n\n* https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/documentation/examples/Standalone_Model_Card_Toolkit_Demo.ipynb\n\n\n\n## Considerations\n\n### Use Cases\n\n* This model classifies images of cats and dogs.\n\n\n### Limitations\n\n* This model is not able to classify images of other classes.\n\n\n### Ethical Considerations\n\n* Risk: While distinguishing between cats and dogs is generally agreed to be a benign application of machine learning, harmful results can occur when the model attempts to classify images that don’t contain cats or dogs.\n * Mitigation Strategy: Avoid application on non-dog and non-cat images.\n\n## Graphics\n \n### Validation Set Size\n<img src=\"data:image/jpeg;base64,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+/bthiTj008/zbf/9ddfNyQZqampRosWLYyZM2da+yZPnmy0a9fOuly3bl0jOjra5vkvvPCCERQUZBjG/4WduXPn3rSu3r17G08++aR1mbCD/OzYscOQZHzyySeFet6qVauMSpUqWZeXLVtmeHl52bk63EluFHYGDx5sNG7c2NiwYYPh6OhoJCUlWfv27dtnSDJ++OEHwzAMo127dkZkZKTN8zt27EjYsRNOY93hjALcQDs8PFzR0dHW8e+//77Cw8MlSZmZmUpISNCoUaPk7u5ufbz44otKSEiwWU/r1q1tlrOzs/XCCy8oMDBQPj4+cnd319dff62kpCQ77R3MqiCfW0natGmTunXrprvuukseHh565JFHdObMGV24cKGEKwT+/JxaLBYdOHBANWrUUI0aNax9TZo0kbe3tw4cOCBJOnTokNq2bWvz/L8uo+gIO3eoevXqWX8J83PgwAFVrFhRVapU0dChQ3Xo0CHt2rVL27ZtU3JysgYPHixJ1vkPS5YsUXx8vPWxd+9e67yJXG5ubjbLr732mubNm6dnnnlGmzdvVnx8vEJCQnT58uUS2GOYSf369WWxWHTw4MHrjklMTFSfPn3UvHlzrV69Wjt37tTChQslic8YbokDBw6odu3apV0GRNi5Y1WqVEk9evTQokWLdPHiRZu+lJQUrVy5UoMHD5bFYlH16tXVuXNnrVy5UitXrlSPHj3k6+srSfLz81O1atX066+/ql69ejaPm/2Sf//99+rfv78efvhhtWjRQnXq1NH//ve/EttnmIePj49CQkK0cOFCZWZm5ulPS0vTzp07lZOTo//85z9q3769GjRooOPHj9uMc3JyUnZ29q0qG3eQ2NhY7dmzR2FhYWrcuLGSk5OVnJxs7d+/f7/S0tLUpEkTSVLDhg31448/2qzjr8soOsLOHeyNN95QVlaWQkJC9M033yg5OVnr169Xjx49dNddd+mll16yjg0PD9cHH3ygVatWWU9h5ZoxY4Zmz56t+fPn63//+5/27NmjZcuW6fXXX7/h9uvXr6+NGzdq27ZtOnDggP7+97/nuToBuJ6FCxcqOztbbdu21erVq3X48GEdOHBA8+fPV1BQkOrVq6crV65owYIF+vXXX7VixQotXrzYZh21atXS+fPnFRMTo9OnT3N6C0WSlZWllJQU/f7779q1a5dmzZql/v37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\">\n\n\n \n### Accuracy\n<img src=\"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2PUlEQVR4nO3deVhWdf7/8dcNCigILggoIuCuE+KOlGZOEJlrqZnjDIhljbkVU5Na7iaNjUtuMWmmM6GSS47fySxDvawRdVxwySVFCVJB0RRFA4Xz+6Of98SAy23ADcfn47rOdXV/zudzzvvc122+/JzPuW+LYRiGAAAATMLB3gUAAACUJMINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINAAAwFcINANhBQECABg8ebH29detWWSwWbd261W41AWZBuAEqkIULF8pisSgkJMTepeA2Dh48qH79+snf318uLi7y9fVVeHi45s2bZ+/SgAeGhd+WAiqORx55RGfOnFFqaqqOHz+uRo0a2bsk/ML27dvVtWtX1a9fX1FRUfLx8VF6erp27NihlJQUnThxwto3ICBAjz32mJYuXSpJKigoUF5enpycnOTgwL87gV+jkr0LAHBvTp06pe3bt2vt2rV66aWXFB8fr4kTJ9q7rGLl5OTI1dXV3mWUubffflseHh76z3/+o+rVqxfad+7cuTuOdXBwkIuLSylWBzw4+OcBUEHEx8erRo0a6t69u/r166f4+Phi+126dEmvvvqqAgIC5OzsrHr16ikyMlJZWVnWPj/99JMmTZqkJk2ayMXFRXXq1NEzzzyjlJQUSbdf/5GamiqLxWKdbZCkwYMHy83NTSkpKXrqqadUrVo1DRo0SJL09ddfq3///qpfv76cnZ3l5+enV199VdevXy9S99GjR/Xss8+qdu3aqlKlipo2bao333xTkrRlyxZZLBZ9+umnRcYtX75cFotFSUlJd3z/Tp48qf79+6tmzZqqWrWqOnbsqM8++6xQn1vX/cknn+jtt99WvXr15OLioscff7zQrMvtpKSk6De/+U2RYCNJXl5edxx7u/d8586deuqpp1SjRg25urqqZcuWeu+99wr1OXr0qPr166eaNWvKxcVF7dq10/r16wv1uXHjhiZPnqzGjRvLxcVFtWrVUqdOnbRp06a7XhdQ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AABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTsXu4WbBggQICAuTi4qKQkBDt2rXrjv3nzJmjpk2bqkqVKvLz89Orr76qn376qYyqBQAA5Z1dw01CQoJiYmI0ceJE7d27V8HBwYqIiNC5c+eK7b98+XKNGTNGEydO1JEjR/Thhx8qISFB48aNK+PKAQBAeWXXcDNr1iwNHTpU0dHRatGiheLi4lS1alUtWbKk2P7bt2/XI488ot/97ncKCAjQE088oYEDB951tgcAADw47BZu8vLytGfPHoWFhf23GAcHhYWFKSkpqdgxDz/8sPbs2WMNMydPntSGDRv01FNP3fY8ubm5ys7OLrQBAADzqmSvE2dlZSk/P1/e3t6F2r29vXX06NFix/zud79TVlaWOnXqJMMwdPPmTf3xj3+8422p2NhYTZ48uURrBwAA5ZfdFxTbYuvWrZo+fboWLlyovXv3au3atfrss880derU244ZO3asLl++bN3S09PLsGIAAFDW7DZz4+npKUdHR2VmZhZqz8zMlI+PT7Fjxo8frz/84Q964YUXJElBQUHKycnRiy++qDfffFMODkWzmrOzs5ydnUv+AgAAQLlkt5kbJycntW3bVomJida2goICJSYmKjQ0tNgx165dKxJgHB0dJUmGYZResQAAoMKw28yNJMXExCgqKkrt2rVThw4dNGfOHOXk5Cg6OlqSFBkZKV9fX8XGxkqSevbsqVmzZql169YKCQnRiRMnNH78ePXs2dMacgAAwIPNruFmwIABOn/+vCZMmKCMjAy1atVKGzdutC4yTktLKzRT89Zbb8liseitt97S6dOnVbt2bfXs2VNvv/22vS4BAACUMxbjAbufk52dLQ8PD12+fFnu7u4lfvyAMZ+V+DFRPqW+093eJdzdJA97V4CyMumyvSu4q6BlQfYuAWXkYNTBEj+mLX9/V6inpQAAAO6GcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMAAEyFcAMA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\">\n\n\n## Metrics\n\n|Name|Value|\n-----|------\n|accuracy|0.981249988079071|\n|accuracy, cat|0.9932885766029358|\n|accuracy, Dog|0.9707602262496948|\n\n"
},
"metadata": {}
}
],
"source": [
"# Generate a model card document in Markdown\n",
"md_path = os.path.join(model_card_dir, 'template/md/default_template.md.jinja')\n",
"md_doc = mct.export_format(template_path=md_path, output_file='model_card.md')\n",
"\n",
"# Display the model card document in Markdown\n",
"display.display(display.Markdown(md_doc))"
]
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "_WdxOfHJO2TO"
},
"execution_count": null,
"outputs": []
}
],
"metadata": {
"colab": {
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"gpuClass": "standard",
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"38af41c94ed44c06be2f1eda71b7b9cb": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_f554310df57343938f1f9f8fdabb936f",
"IPY_MODEL_98dc95f395d84585a82ff80955f4e95d",
"IPY_MODEL_fee5282b8f1441c0bf8997a0dafc1cc5"
],
"layout": "IPY_MODEL_5345924df638473e98ef7d08c5e97a2b"
}
},
"f554310df57343938f1f9f8fdabb936f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_8308a4aca71e4297b67d60112dc6bb12",
"placeholder": "​",
"style": "IPY_MODEL_d0b665affdd0437d85ae99e0f9643c64",
"value": "Dl Completed...: 100%"
}
},
"98dc95f395d84585a82ff80955f4e95d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_386bce0702434589a6d22fe8006131ed",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_37c3e352a07d4b0a8bc73b46b57961da",
"value": 1
}
},
"fee5282b8f1441c0bf8997a0dafc1cc5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_ca9cc10e5bf1477ebd19ce588d38865d",
"placeholder": "​",
"style": "IPY_MODEL_fe76d4e8af854ca7861d099a6f37d205",
"value": " 1/1 [00:13&lt;00:00, 13.17s/ url]"
}
},
"5345924df638473e98ef7d08c5e97a2b": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8308a4aca71e4297b67d60112dc6bb12": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"d0b665affdd0437d85ae99e0f9643c64": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"386bce0702434589a6d22fe8006131ed": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "20px"
}
},
"37c3e352a07d4b0a8bc73b46b57961da": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"ca9cc10e5bf1477ebd19ce588d38865d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"fe76d4e8af854ca7861d099a6f37d205": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"c2011774b094425db7febaf046075447": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_753a0128a4ec49c9938495f8eeb80956",
"IPY_MODEL_557c9c2e957f45c082069b47563c05b0",
"IPY_MODEL_38fdb6e82c164721806d6de1cba58328"
],
"layout": "IPY_MODEL_f142d1d5fd66475d923f46a7dec361a6"
}
},
"753a0128a4ec49c9938495f8eeb80956": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_dc72c382b19149fa8efc30b79b6c1536",
"placeholder": "​",
"style": "IPY_MODEL_7811ec5aa7c545748728b3d13a998679",
"value": "Dl Size...: 100%"
}
},
"557c9c2e957f45c082069b47563c05b0": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_2c1ae8c0ffeb42b59008ae38504638cf",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_697fc70a95374164a60a6cf2ff8690c2",
"value": 1
}
},
"38fdb6e82c164721806d6de1cba58328": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_d62d840a423c4bddb8e8ef35ebec0f27",
"placeholder": "​",
"style": "IPY_MODEL_d48f663bd41d4f6da7202e8e92812d11",
"value": " 786/786 [00:13&lt;00:00, 48.15 MiB/s]"
}
},
"f142d1d5fd66475d923f46a7dec361a6": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"dc72c382b19149fa8efc30b79b6c1536": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"7811ec5aa7c545748728b3d13a998679": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"2c1ae8c0ffeb42b59008ae38504638cf": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "20px"
}
},
"697fc70a95374164a60a6cf2ff8690c2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"d62d840a423c4bddb8e8ef35ebec0f27": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"d48f663bd41d4f6da7202e8e92812d11": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"7ebf65c9fd55435b8dc46a8850d33d15": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_d360e2dffeb84935975a8091b0f032d9",
"IPY_MODEL_2d9292be887442aca775c1a013d59dfc",
"IPY_MODEL_d1dba3c98a564e0cb374fda282e4f61f"
],
"layout": "IPY_MODEL_d58dbca5767c47f882c7bac77540ccc5"
}
},
"d360e2dffeb84935975a8091b0f032d9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_1bc3bc5d13a04bf4a4e4740cf5edd738",
"placeholder": "​",
"style": "IPY_MODEL_27f6f702edf94919ba339f6eadddfe1e",
"value": "Generating splits...: 100%"
}
},
"2d9292be887442aca775c1a013d59dfc": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_21ade2036f6c4e52b3f987fabb389391",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_63f1815a91a04402b30c095adb943768",
"value": 1
}
},
"d1dba3c98a564e0cb374fda282e4f61f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c6d4f95a816344b98f70248ba25b3309",
"placeholder": "​",
"style": "IPY_MODEL_be4e0a2a1b394c01b16c2078e9be471c",
"value": " 1/1 [00:19&lt;00:00, 19.41s/ splits]"
}
},
"d58dbca5767c47f882c7bac77540ccc5": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": "hidden",
"width": null
}
},
"1bc3bc5d13a04bf4a4e4740cf5edd738": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"27f6f702edf94919ba339f6eadddfe1e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"21ade2036f6c4e52b3f987fabb389391": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"63f1815a91a04402b30c095adb943768": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"c6d4f95a816344b98f70248ba25b3309": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"be4e0a2a1b394c01b16c2078e9be471c": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"d0d683f8c7884db698d46c8491ad9ef9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_5e50a1dfbdb74fddb359bd222c515650",
"IPY_MODEL_3d499443b57b4c5ba36328e10c9e6409",
"IPY_MODEL_edd295ba4fcb41aa899ba5465a56236f"
],
"layout": "IPY_MODEL_d81ee1dbbbb54d3cb50b1c861360bf9d"
}
},
"5e50a1dfbdb74fddb359bd222c515650": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_4ca14ca4f3ad4813a3057dc52c18a5da",
"placeholder": "​",
"style": "IPY_MODEL_ffe915f5931c4f24ab571f014c85d3ce",
"value": "Generating train examples...: "
}
},
"3d499443b57b4c5ba36328e10c9e6409": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "info",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_7386551ebdc04e858b0b1946db06b4d5",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_d96f80f1e43d4fec8d9c5e47799f723a",
"value": 1
}
},
"edd295ba4fcb41aa899ba5465a56236f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_e83458cb99cf4992add372f490059d9d",
"placeholder": "​",
"style": "IPY_MODEL_e328a4a6744249bd9175c8ecd9b36a00",
"value": " 23183/? [00:16&lt;00:00, 1090.45 examples/s]"
}
},
"d81ee1dbbbb54d3cb50b1c861360bf9d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": "hidden",
"width": null
}
},
"4ca14ca4f3ad4813a3057dc52c18a5da": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ffe915f5931c4f24ab571f014c85d3ce": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"7386551ebdc04e858b0b1946db06b4d5": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "20px"
}
},
"d96f80f1e43d4fec8d9c5e47799f723a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"e83458cb99cf4992add372f490059d9d": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"e328a4a6744249bd9175c8ecd9b36a00": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"6944526e91074d1a881ee80f9b85a1de": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_9badd2e83086483e9a3992e9cbd601b7",
"IPY_MODEL_5024730c20174eb69f7be1c30127fe34",
"IPY_MODEL_3c1df31f1c60497dac34c4ce02edc13e"
],
"layout": "IPY_MODEL_6806e84d68194fc98e30ec080c8d57d9"
}
},
"9badd2e83086483e9a3992e9cbd601b7": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_11d7653b81aa4b09b6af8c57174faefc",
"placeholder": "​",
"style": "IPY_MODEL_6d0ee1f9bf64445db7e99ad716084b03",
"value": "Shuffling /root/tensorflow_datasets/cats_vs_dogs/4.0.0.incompleteFSCCGU/cats_vs_dogs-train.tfrecord*...: 100%"
}
},
"5024730c20174eb69f7be1c30127fe34": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_127413d81fcd4bce91e1dfb99f650d3e",
"max": 23262,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_525d655d21f24dd196fcb446cc8de7f8",
"value": 23262
}
},
"3c1df31f1c60497dac34c4ce02edc13e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_9367ab6744ea4420bfa8b3798070dfeb",
"placeholder": "​",
"style": "IPY_MODEL_51c1aafaa5634f12a7d4e3099601d32d",
"value": " 23257/23262 [00:02&lt;00:00, 7590.22 examples/s]"
}
},
"6806e84d68194fc98e30ec080c8d57d9": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": "hidden",
"width": null
}
},
"11d7653b81aa4b09b6af8c57174faefc": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"6d0ee1f9bf64445db7e99ad716084b03": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"127413d81fcd4bce91e1dfb99f650d3e": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"525d655d21f24dd196fcb446cc8de7f8": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"9367ab6744ea4420bfa8b3798070dfeb": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"51c1aafaa5634f12a7d4e3099601d32d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
}
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment