{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "Tce3stUlHN0L"
},
"source": [
"##### Copyright 2020 The TensorFlow Authors."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"cellView": "form",
"execution": {
"iopub.execute_input": "2023-10-03T09:11:19.205455Z",
"iopub.status.busy": "2023-10-03T09:11:19.204898Z",
"iopub.status.idle": "2023-10-03T09:11:19.208953Z",
"shell.execute_reply": "2023-10-03T09:11:19.208374Z"
},
"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": [
"
"
]
},
{
"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": 2,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:11:19.212557Z",
"iopub.status.busy": "2023-10-03T09:11:19.212133Z",
"iopub.status.idle": "2023-10-03T09:12:15.219097Z",
"shell.execute_reply": "2023-10-03T09:12:15.218004Z"
},
"id": "as4OTe2ukSqm"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: pip in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (23.2.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting model-card-toolkit>=1.0.0\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading model_card_toolkit-2.0.0-py3-none-any.whl (68 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting absl-py<1.1,>=0.9 (from model-card-toolkit>=1.0.0)\r\n",
" Downloading absl_py-1.0.0-py3-none-any.whl (126 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: jinja2<3.2,>=3.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from model-card-toolkit>=1.0.0) (3.1.2)\r\n",
"Requirement already satisfied: matplotlib<4,>=3.2.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from model-card-toolkit>=1.0.0) (3.7.3)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting jsonschema<4,>=3.2.0 (from model-card-toolkit>=1.0.0)\r\n",
" Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow-data-validation<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for tensorflow-data-validation<2.0.0,>=1.5.0 from https://files.pythonhosted.org/packages/d6/a6/0ee70ba25674199dc20226f64719bf84b9ce3b3aff2c05e7a765bcdc273c/tensorflow_data_validation-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata\r\n",
" Downloading tensorflow_data_validation-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (18 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow-model-analysis<0.42.0,>=0.36.0 (from model-card-toolkit>=1.0.0)\r\n",
" Downloading tensorflow_model_analysis-0.41.1-py3-none-any.whl (1.8 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: tensorflow-metadata<2.0.0,>=1.5.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from model-card-toolkit>=1.0.0) (1.14.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting ml-metadata<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for ml-metadata<2.0.0,>=1.5.0 from https://files.pythonhosted.org/packages/e1/59/5b44a61cfdd52f52a0ac9402b3fbd08fe23cfb8d7a4c84a44dd7002edc3a/ml_metadata-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading ml_metadata-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB)\r\n",
"Requirement already satisfied: six in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from absl-py<1.1,>=0.9->model-card-toolkit>=1.0.0) (1.16.0)\r\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jinja2<3.2,>=3.1->model-card-toolkit>=1.0.0) (2.1.3)\r\n",
"Requirement already satisfied: attrs>=17.4.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jsonschema<4,>=3.2.0->model-card-toolkit>=1.0.0) (23.1.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting pyrsistent>=0.14.0 (from jsonschema<4,>=3.2.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading pyrsistent-0.19.3-py3-none-any.whl (57 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: setuptools in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jsonschema<4,>=3.2.0->model-card-toolkit>=1.0.0) (68.2.2)\r\n",
"Requirement already satisfied: contourpy>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (1.1.1)\r\n",
"Requirement already satisfied: cycler>=0.10 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (0.12.0)\r\n",
"Requirement already satisfied: fonttools>=4.22.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (4.43.0)\r\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (1.4.5)\r\n",
"Requirement already satisfied: numpy<2,>=1.20 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (1.24.3)\r\n",
"Requirement already satisfied: packaging>=20.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (23.2)\r\n",
"Requirement already satisfied: pillow>=6.2.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (10.0.1)\r\n",
"Requirement already satisfied: pyparsing>=2.3.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (3.1.1)\r\n",
"Requirement already satisfied: python-dateutil>=2.7 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (2.8.2)\r\n",
"Requirement already satisfied: importlib-resources>=3.2.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (6.1.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting attrs>=17.4.0 (from jsonschema<4,>=3.2.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading attrs-21.4.0-py2.py3-none-any.whl (60 kB)\r\n",
"Requirement already satisfied: grpcio<2,>=1.8.6 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ml-metadata<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (1.59.0)\r\n",
"Requirement already satisfied: protobuf<4,>=3.13 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ml-metadata<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (3.20.3)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting apache-beam[gcp]<3,>=2.47 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for apache-beam[gcp]<3,>=2.47 from https://files.pythonhosted.org/packages/47/9c/ec3d6609d396ffd1b6f415e6bedb78874b837e3c47ab1d4472d2b0c5d899/apache_beam-2.50.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading apache_beam-2.50.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.0 kB)\r\n",
"Requirement already satisfied: joblib>=1.2.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (1.3.2)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting pandas<2,>=1.0 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting pyarrow<11,>=10 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading pyarrow-10.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.0 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting pyfarmhash<0.4,>=0.2.2 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading pyfarmhash-0.3.2.tar.gz (99 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Preparing metadata (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n",
"\u001b[?25hRequirement already satisfied: tensorflow<3,>=2.13 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2.13.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tfx-bsl<1.15,>=1.14.0 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for tfx-bsl<1.15,>=1.14.0 from https://files.pythonhosted.org/packages/37/8c/3534124ad7cacc7cd128708fc629f52cd6e58e581f81c15bff13f6e916cb/tfx_bsl-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tfx_bsl-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (10 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-metadata<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (1.60.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting ipython<8,>=7 (from tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading ipython-7.34.0-py3-none-any.whl (793 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting ipywidgets<8,>=7 (from tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for ipywidgets<8,>=7 from https://files.pythonhosted.org/packages/14/3f/fa7fcf85061819f5a10ed09eaef38fe97d0f3f91d14674bbb26c3fc2a622/ipywidgets-7.8.1-py2.py3-none-any.whl.metadata\r\n",
" Downloading ipywidgets-7.8.1-py2.py3-none-any.whl.metadata (1.9 kB)\r\n",
"INFO: pip is looking at multiple versions of tensorflow-model-analysis to determine which version is compatible with other requirements. This could take a while.\r\n",
"Collecting tensorflow-model-analysis<0.42.0,>=0.36.0 (from model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tensorflow_model_analysis-0.41.0-py3-none-any.whl (1.8 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tensorflow_model_analysis-0.40.0-py3-none-any.whl (1.8 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tensorflow_model_analysis-0.39.0-py3-none-any.whl (1.8 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tensorflow_model_analysis-0.38.0-py3-none-any.whl (1.8 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tensorflow_model_analysis-0.37.0-py3-none-any.whl (1.8 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tensorflow_model_analysis-0.36.0-py3-none-any.whl (1.8 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting absl-py<1.1,>=0.9 (from model-card-toolkit>=1.0.0)\r\n",
" Downloading absl_py-0.12.0-py3-none-any.whl (129 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow-data-validation<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tensorflow_data_validation-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.2 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting numpy<2,>=1.20 (from matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.9 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting pyarrow<7,>=6 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading pyarrow-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.6 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow-metadata<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n",
" Downloading tensorflow_metadata-1.13.1-py3-none-any.whl (28 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tfx-bsl<1.14,>=1.13.0 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading tfx_bsl-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.5 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: scipy<2,>=1.4.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.10.1)\r\n",
"INFO: pip is still looking at multiple versions of tensorflow-model-analysis to determine which version is compatible with other requirements. This could take a while.\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.\r\n",
"Collecting tensorflow-data-validation<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tensorflow_data_validation-1.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (18.2 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow-metadata<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n",
" Downloading tensorflow_metadata-1.12.0-py3-none-any.whl (52 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tfx-bsl<1.13,>=1.12.0 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading tfx_bsl-1.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (21.6 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow-data-validation<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tensorflow_data_validation-1.11.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (18.2 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow-metadata<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n",
" Downloading tensorflow_metadata-1.11.0-py3-none-any.whl (52 kB)\r\n",
"Collecting tfx-bsl<1.12,>=1.11.0 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading tfx_bsl-1.11.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (21.6 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow-data-validation<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n",
" Downloading tensorflow_data_validation-1.10.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.5 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting joblib<0.15,>=0.12 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading joblib-0.14.1-py2.py3-none-any.whl (294 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting tensorflow-metadata<2.0.0,>=1.5.0 (from model-card-toolkit>=1.0.0)\r\n",
" Downloading tensorflow_metadata-1.10.0-py3-none-any.whl (50 kB)\r\n",
"Collecting tfx-bsl<1.11,>=1.10.1 (from tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading tfx_bsl-1.10.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (21.6 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting crcmod<2.0,>=1.7 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading crcmod-1.7.tar.gz (89 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Preparing metadata (setup.py) ... \u001b[?25ldone\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[?25hCollecting orjson<4.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for orjson<4.0 from https://files.pythonhosted.org/packages/cc/b4/324754a9e255295c0b5966f78999822e180a0fa2c22fd96edefac9dd8313/orjson-3.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata\r\n",
" Downloading orjson-3.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (49 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting dill<0.3.2,>=0.3.1.1 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading dill-0.3.1.1.tar.gz (151 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Preparing metadata (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[?25hCollecting cloudpickle~=2.2.1 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading cloudpickle-2.2.1-py3-none-any.whl (25 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting fastavro<2,>=0.23.6 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for fastavro<2,>=0.23.6 from https://files.pythonhosted.org/packages/a9/2a/af06dcb43345f87b7265211ab95f694a37015c4ae13464778dca5fd017af/fastavro-1.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading fastavro-1.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.5 kB)\r\n",
"Collecting fasteners<1.0,>=0.3 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for fasteners<1.0,>=0.3 from https://files.pythonhosted.org/packages/61/bf/fd60001b3abc5222d8eaa4a204cd8c0ae78e75adc688f33ce4bf25b7fafa/fasteners-0.19-py3-none-any.whl.metadata\r\n",
" Downloading fasteners-0.19-py3-none-any.whl.metadata (4.9 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting hdfs<3.0.0,>=2.1.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading hdfs-2.7.2.tar.gz (43 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Preparing metadata (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[?25hCollecting httplib2<0.23.0,>=0.8 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading httplib2-0.22.0-py3-none-any.whl (96 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting objsize<0.7.0,>=0.6.1 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading objsize-0.6.1-py3-none-any.whl (9.3 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting pymongo<5.0.0,>=3.8.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for pymongo<5.0.0,>=3.8.0 from https://files.pythonhosted.org/packages/bf/b7/63cebc24f4690b85d0c91fe11a32ad14e791ff499f4054cde8f1a4ea08dc/pymongo-4.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata\r\n",
" Downloading pymongo-4.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (22 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting proto-plus<2,>=1.7.1 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for proto-plus<2,>=1.7.1 from https://files.pythonhosted.org/packages/36/5b/e02636d221917d6fa2a61289b3f16002eb4c93d51c0191ac8e896d527182/proto_plus-1.22.3-py3-none-any.whl.metadata\r\n",
" Downloading proto_plus-1.22.3-py3-none-any.whl.metadata (2.2 kB)\r\n",
"Requirement already satisfied: pydot<2,>=1.2.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (1.4.2)\r\n",
"Requirement already satisfied: pytz>=2018.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2023.3.post1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting regex>=2020.6.8 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for regex>=2020.6.8 from https://files.pythonhosted.org/packages/1f/5c/374ac3fa3c7ed9a967ad273a5e841897ef6b10aa6aad938ff10717a3e2a3/regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata\r\n",
" Downloading regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (40 kB)\r\n",
"Requirement already satisfied: requests<3.0.0,>=2.24.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2.31.0)\r\n",
"Requirement already satisfied: typing-extensions>=3.7.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (4.5.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting zstandard<1,>=0.18.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading zstandard-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: cachetools<6,>=3.1.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (5.3.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-api-core<3,>=2.0.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-api-core<3,>=2.0.0 from https://files.pythonhosted.org/packages/4d/ce/4fd62ea66b3508debc795e475336ce915929765870f0ad52328426ba016e/google_api_core-2.12.0-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google_api_core-2.12.0-py3-none-any.whl.metadata (2.7 kB)\r\n",
"Collecting google-apitools<0.5.32,>=0.5.31 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google-apitools-0.5.31.tar.gz (173 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Preparing metadata (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n",
"\u001b[?25hRequirement already satisfied: google-auth<3,>=1.18.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2.23.2)\r\n",
"Collecting google-auth-httplib2<0.2.0,>=0.1.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-auth-httplib2<0.2.0,>=0.1.0 from https://files.pythonhosted.org/packages/d3/3d/e4991229886c0d522d9552151a43ff7adcc61e026e60ce8bd508387f84cf/google_auth_httplib2-0.1.1-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_auth_httplib2-0.1.1-py2.py3-none-any.whl.metadata (2.1 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-datastore<3,>=2.0.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-datastore<3,>=2.0.0 from https://files.pythonhosted.org/packages/e6/e3/9e19e26b4fc61aa64a73d097c9e5ce3b4cbb62d7d0ea2c0554b2105b54d6/google_cloud_datastore-2.18.0-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_cloud_datastore-2.18.0-py2.py3-none-any.whl.metadata (5.5 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-pubsub<3,>=2.1.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-pubsub<3,>=2.1.0 from https://files.pythonhosted.org/packages/d2/58/fbdedd07206514f09f029458d95d391829b09399c1459d8892e6e20022d1/google_cloud_pubsub-2.18.4-py2.py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google_cloud_pubsub-2.18.4-py2.py3-none-any.whl.metadata (9.2 kB)\r\n",
"Collecting google-cloud-pubsublite<2,>=1.2.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-pubsublite<2,>=1.2.0 from https://files.pythonhosted.org/packages/2d/d6/91f605fc67e9d0b4e419c4f291adff15c2f241bf3d70abe8068688599d60/google_cloud_pubsublite-1.8.3-py2.py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google_cloud_pubsublite-1.8.3-py2.py3-none-any.whl.metadata (5.5 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-bigquery<4,>=2.0.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-bigquery<4,>=2.0.0 from https://files.pythonhosted.org/packages/cc/6a/d0ef792288f2fa2cfea80899a82de302b3332dfda41984fe114e2cfbf700/google_cloud_bigquery-3.11.4-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_cloud_bigquery-3.11.4-py2.py3-none-any.whl.metadata (8.5 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-bigquery-storage<3,>=2.6.3 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-bigquery-storage<3,>=2.6.3 from https://files.pythonhosted.org/packages/83/eb/e5016412a9c6ac26b46480f83d58112b99b48c0e38ae040b46f8795dea6f/google_cloud_bigquery_storage-2.22.0-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_cloud_bigquery_storage-2.22.0-py2.py3-none-any.whl.metadata (5.4 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-core<3,>=2.0.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-core<3,>=2.0.0 from https://files.pythonhosted.org/packages/a2/40/02045f776fdb6e44194f34b6375a26ce8a61bd9bd03cd8930ed91cf51a62/google_cloud_core-2.3.3-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_cloud_core-2.3.3-py2.py3-none-any.whl.metadata (2.5 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-bigtable<3,>=2.19.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-bigtable<3,>=2.19.0 from https://files.pythonhosted.org/packages/f1/2e/fcdd3aed46825c04bc93c0223fff674059e6a789cfda5374948bea1a3f6e/google_cloud_bigtable-2.21.0-py2.py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google_cloud_bigtable-2.21.0-py2.py3-none-any.whl.metadata (5.1 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-spanner<4,>=3.0.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-spanner<4,>=3.0.0 from https://files.pythonhosted.org/packages/fd/77/527bbb6c103ef5e8e0d49d8000e337d3ce4ed66a373af915b0170012de30/google_cloud_spanner-3.40.1-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_cloud_spanner-3.40.1-py2.py3-none-any.whl.metadata (10 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-dlp<4,>=3.0.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-dlp<4,>=3.0.0 from https://files.pythonhosted.org/packages/9a/2c/5a62598d1696246c056e512ac69983e0d736cd2cd2ac1107075743a4ec48/google_cloud_dlp-3.12.3-py2.py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google_cloud_dlp-3.12.3-py2.py3-none-any.whl.metadata (5.2 kB)\r\n",
"Collecting google-cloud-language<3,>=2.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-language<3,>=2.0 from https://files.pythonhosted.org/packages/19/4c/8a42006ec29f26d1d0f47f5fdebe7138a700eda8e3668d53ffcb55c9a774/google_cloud_language-2.11.1-py2.py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google_cloud_language-2.11.1-py2.py3-none-any.whl.metadata (5.3 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-videointelligence<3,>=2.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-videointelligence<3,>=2.0 from https://files.pythonhosted.org/packages/ca/0e/ce99f6c36d5e7ccbc5827d714a947da5b864a30e060f2e5dddad4166f663/google_cloud_videointelligence-2.11.4-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_cloud_videointelligence-2.11.4-py2.py3-none-any.whl.metadata (5.6 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-vision<4,>=2 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-vision<4,>=2 from https://files.pythonhosted.org/packages/14/16/e3ea36b6989e0cff58c2cc38261b9b5133a58d1fb08d64fb85fc552f3466/google_cloud_vision-3.4.4-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_cloud_vision-3.4.4-py2.py3-none-any.whl.metadata (6.2 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-recommendations-ai<0.11.0,>=0.1.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-recommendations-ai<0.11.0,>=0.1.0 from https://files.pythonhosted.org/packages/f9/7f/c6554fcbc09a861e11214df359c1d048791c8a2d6b8909be023ba5fe0997/google_cloud_recommendations_ai-0.10.5-py2.py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google_cloud_recommendations_ai-0.10.5-py2.py3-none-any.whl.metadata (5.2 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-aiplatform<2.0,>=1.26.0 (from apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-aiplatform<2.0,>=1.26.0 from https://files.pythonhosted.org/packages/20/ee/af1e3c9cb2bed3aa91297f8362da3879a793d2555c2e587a9c3d2f1ed900/google_cloud_aiplatform-1.34.0-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_cloud_aiplatform-1.34.0-py2.py3-none-any.whl.metadata (28 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: zipp>=3.1.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from importlib-resources>=3.2.0->matplotlib<4,>=3.2.0->model-card-toolkit>=1.0.0) (3.17.0)\r\n",
"Requirement already satisfied: jedi>=0.16 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.19.1)\r\n",
"Requirement already satisfied: decorator in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (5.1.1)\r\n",
"Requirement already satisfied: pickleshare in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.7.5)\r\n",
"Requirement already satisfied: traitlets>=4.2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (5.10.1)\r\n",
"Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (3.0.39)\r\n",
"Requirement already satisfied: pygments in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.16.1)\r\n",
"Requirement already satisfied: backcall in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.2.0)\r\n",
"Requirement already satisfied: matplotlib-inline in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.1.6)\r\n",
"Requirement already satisfied: pexpect>4.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (4.8.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: comm>=0.1.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.1.4)\r\n",
"Requirement already satisfied: ipython-genutils~=0.2.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.2.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting widgetsnbextension~=3.6.6 (from ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for widgetsnbextension~=3.6.6 from https://files.pythonhosted.org/packages/9c/a0/ba2634cd75b7d7f8f9aeb38edf854cd6c9877ec064013a62630b4541b88f/widgetsnbextension-3.6.6-py2.py3-none-any.whl.metadata\r\n",
" Downloading widgetsnbextension-3.6.6-py2.py3-none-any.whl.metadata (1.3 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting jupyterlab-widgets<3,>=1.0.0 (from ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for jupyterlab-widgets<3,>=1.0.0 from https://files.pythonhosted.org/packages/06/c9/50a16b6e7410d661ea16160f8c650c444ab83740b437b3c202ca7d8e2b73/jupyterlab_widgets-1.1.7-py3-none-any.whl.metadata\r\n",
" Downloading jupyterlab_widgets-1.1.7-py3-none-any.whl.metadata (3.7 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: astunparse>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (1.6.3)\r\n",
"Requirement already satisfied: flatbuffers>=23.1.21 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (23.5.26)\r\n",
"Requirement already satisfied: gast<=0.4.0,>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (0.4.0)\r\n",
"Requirement already satisfied: google-pasta>=0.1.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (0.2.0)\r\n",
"Requirement already satisfied: h5py>=2.9.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (3.9.0)\r\n",
"Requirement already satisfied: keras<2.14,>=2.13.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2.13.1)\r\n",
"Requirement already satisfied: libclang>=13.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (16.0.6)\r\n",
"Requirement already satisfied: opt-einsum>=2.3.2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (3.3.0)\r\n",
"Requirement already satisfied: tensorboard<2.14,>=2.13 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2.13.0)\r\n",
"Requirement already satisfied: tensorflow-estimator<2.14,>=2.13.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2.13.0)\r\n",
"Requirement already satisfied: termcolor>=1.1.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2.3.0)\r\n",
"Requirement already satisfied: wrapt>=1.11.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (1.15.0)\r\n",
"Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (0.34.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-api-python-client<2,>=1.7.11 (from tfx-bsl<1.11,>=1.10.1->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google_api_python_client-1.12.11-py2.py3-none-any.whl (62 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"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 (from tfx-bsl<1.11,>=1.10.1->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for tensorflow-serving-api!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,<3,>=1.15 from https://files.pythonhosted.org/packages/14/d7/11e3d0a3f6c50a38e05550be85e35ca1f1bfd85219977b18694367c5688f/tensorflow_serving_api-2.13.1-py2.py3-none-any.whl.metadata\r\n",
" Downloading tensorflow_serving_api-2.13.1-py2.py3-none-any.whl.metadata (1.8 kB)\r\n",
"Requirement already satisfied: wheel<1.0,>=0.23.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from astunparse>=1.6.0->tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (0.41.2)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting uritemplate<4dev,>=3.0.0 (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>=1.0.0)\r\n",
" Downloading uritemplate-3.0.1-py2.py3-none-any.whl (15 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting oauth2client>=1.4.12 (from google-apitools<0.5.32,>=0.5.31->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading oauth2client-4.1.3-py2.py3-none-any.whl (98 kB)\r\n",
"Requirement already satisfied: pyasn1-modules>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from google-auth<3,>=1.18.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (0.3.0)\r\n",
"Requirement already satisfied: rsa<5,>=3.1.4 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from google-auth<3,>=1.18.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (4.9)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-storage<3.0.0dev,>=1.32.0 (from google-cloud-aiplatform<2.0,>=1.26.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-storage<3.0.0dev,>=1.32.0 from https://files.pythonhosted.org/packages/3a/9f/7923b9e460023470826d124156503359bf77ee130adb0872570599e8cd98/google_cloud_storage-2.11.0-py2.py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading google_cloud_storage-2.11.0-py2.py3-none-any.whl.metadata (6.0 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-cloud-resource-manager<3.0.0dev,>=1.3.3 (from google-cloud-aiplatform<2.0,>=1.26.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-cloud-resource-manager<3.0.0dev,>=1.3.3 from https://files.pythonhosted.org/packages/8b/9c/6807473e69fddc9bf33413b7db966fbcfeb0deade2f5ed324cef2b98ec16/google_cloud_resource_manager-1.10.4-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_cloud_resource_manager-1.10.4-py2.py3-none-any.whl.metadata (5.2 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting shapely<2.0.0 (from google-cloud-aiplatform<2.0,>=1.26.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading Shapely-1.8.5.post1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.1 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-resumable-media<3.0dev,>=0.6.0 (from google-cloud-bigquery<4,>=2.0.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for google-resumable-media<3.0dev,>=0.6.0 from https://files.pythonhosted.org/packages/c7/4f/b8e5e22406e5aeafa46df8799939d5eeee52f18eeed339675167fac6603a/google_resumable_media-2.6.0-py2.py3-none-any.whl.metadata\r\n",
" Downloading google_resumable_media-2.6.0-py2.py3-none-any.whl.metadata (2.1 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting grpc-google-iam-v1<1.0.0dev,>=0.12.4 (from google-cloud-bigtable<3,>=2.19.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading grpc_google_iam_v1-0.12.6-py2.py3-none-any.whl (26 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting grpcio-status>=1.33.2 (from google-cloud-pubsub<3,>=2.1.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/55/ce/e6d0382610240439ced22fe2183bcc387946bf80e5e0f17f5b5250978ff3/grpcio_status-1.59.0-py3-none-any.whl.metadata\r\n",
" Downloading grpcio_status-1.59.0-py3-none-any.whl.metadata (1.3 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting overrides<7.0.0,>=6.0.1 (from google-cloud-pubsublite<2,>=1.2.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading overrides-6.5.0-py3-none-any.whl (17 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting sqlparse>=0.4.4 (from google-cloud-spanner<4,>=3.0.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading sqlparse-0.4.4-py3-none-any.whl (41 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting docopt (from hdfs<3.0.0,>=2.1.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading docopt-0.6.2.tar.gz (25 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Preparing metadata (setup.py) ... \u001b[?25l-\b \bdone\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[?25hRequirement already satisfied: parso<0.9.0,>=0.8.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jedi>=0.16->ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.8.3)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: ptyprocess>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from pexpect>4.3->ipython<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.7.0)\r\n",
"Requirement already satisfied: wcwidth in /tmpfs/src/tf_docs_env/lib/python3.8/site-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>=1.0.0) (0.2.8)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting dnspython<3.0.0,>=1.16.0 (from pymongo<5.0.0,>=3.8.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for dnspython<3.0.0,>=1.16.0 from https://files.pythonhosted.org/packages/f6/b4/0a9bee52c50f226a3cbfb54263d02bb421c7f2adc136520729c2c689c1e5/dnspython-2.4.2-py3-none-any.whl.metadata\r\n",
" Downloading dnspython-2.4.2-py3-none-any.whl.metadata (4.9 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: charset-normalizer<4,>=2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (3.3.0)\r\n",
"Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (3.4)\r\n",
"Requirement already satisfied: urllib3<3,>=1.21.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2.0.6)\r\n",
"Requirement already satisfied: certifi>=2017.4.17 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests<3.0.0,>=2.24.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (2023.7.22)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: google-auth-oauthlib<1.1,>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (1.0.0)\r\n",
"Requirement already satisfied: markdown>=2.6.8 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (3.4.4)\r\n",
"Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (0.7.1)\r\n",
"Requirement already satisfied: werkzeug>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (3.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: notebook>=4.4.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (7.0.4)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: requests-oauthlib>=0.7.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from google-auth-oauthlib<1.1,>=0.5->tensorboard<2.14,>=2.13->tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (1.3.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting google-crc32c<2.0dev,>=1.0 (from google-resumable-media<3.0dev,>=0.6.0->google-cloud-bigquery<4,>=2.0.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading google_crc32c-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO: pip is looking at multiple versions of grpcio-status to determine which version is compatible with other requirements. This could take a while.\r\n",
"Collecting grpcio-status>=1.33.2 (from google-cloud-pubsub<3,>=2.1.0->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/f6/48/2bcf11bc2df159564eac099ea38d80663d291a56fa2f2f561d08bf083dfa/grpcio_status-1.58.0-py3-none-any.whl.metadata\r\n",
" Downloading grpcio_status-1.58.0-py3-none-any.whl.metadata (1.3 kB)\r\n",
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/d0/3f/347d93056572fdbd64d4f0fc58a18d420763a7118f8b177437d9dab0ae6f/grpcio_status-1.57.0-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading grpcio_status-1.57.0-py3-none-any.whl.metadata (1.2 kB)\r\n",
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/ef/16/3018689d96918e9c4c7407adf96b721df4d6748ba65db82c5eaa63564335/grpcio_status-1.56.2-py3-none-any.whl.metadata\r\n",
" Downloading grpcio_status-1.56.2-py3-none-any.whl.metadata (1.3 kB)\r\n",
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/2b/21/aaff30111c5941fd9adb5abbf06e04a0e491a685f48ffb291f72ad595ec7/grpcio_status-1.56.0-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading grpcio_status-1.56.0-py3-none-any.whl.metadata (1.3 kB)\r\n",
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/b6/c8/0efd0cf1ff62b3acc28619b9ba80a6ead4eb0ee42bb1c3b3841610af98a7/grpcio_status-1.55.3-py3-none-any.whl.metadata\r\n",
" Downloading grpcio_status-1.55.3-py3-none-any.whl.metadata (1.3 kB)\r\n",
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/b9/ad/51cf59eb26ffa5360ba9dc318580b777e5dda1aa344ad34475103d97e5ac/grpcio_status-1.54.3-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading grpcio_status-1.54.3-py3-none-any.whl.metadata (1.3 kB)\r\n",
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/5f/06/19520e0c6ab22fe09a0c8cfeabdf63b1ce6ea5d6ac88a65a2fa57b080976/grpcio_status-1.54.2-py3-none-any.whl.metadata\r\n",
" Downloading grpcio_status-1.54.2-py3-none-any.whl.metadata (1.3 kB)\r\n",
"INFO: pip is still looking at multiple versions of grpcio-status to determine which version is compatible with other requirements. This could take a while.\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading grpcio_status-1.54.0-py3-none-any.whl (5.1 kB)\r\n",
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/fb/c0/8ee53675cb1aecaa7fcbc9bea6575cb8c19a21dd0ce80fe6e5edb04426f4/grpcio_status-1.53.2-py3-none-any.whl.metadata\r\n",
" Downloading grpcio_status-1.53.2-py3-none-any.whl.metadata (1.3 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Obtaining dependency information for grpcio-status>=1.33.2 from https://files.pythonhosted.org/packages/61/14/6a4476403abaf954c0b5715de9cfdb7528143c5ac372316fa95704ae8551/grpcio_status-1.53.1-py3-none-any.whl.metadata\r\n",
" Downloading grpcio_status-1.53.1-py3-none-any.whl.metadata (1.3 kB)\r\n",
" Downloading grpcio_status-1.53.0-py3-none-any.whl (5.1 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading grpcio_status-1.51.3-py3-none-any.whl (5.1 kB)\r\n",
"INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.\r\n",
" Downloading grpcio_status-1.51.1-py3-none-any.whl (5.1 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading grpcio_status-1.50.0-py3-none-any.whl (14 kB)\r\n",
" Downloading grpcio_status-1.49.1-py3-none-any.whl (14 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading grpcio_status-1.48.2-py3-none-any.whl (14 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: importlib-metadata>=4.4 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from markdown>=2.6.8->tensorboard<2.14,>=2.13->tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (6.8.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: jupyter-server<3,>=2.4.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.7.3)\r\n",
"Requirement already satisfied: jupyterlab-server<3,>=2.22.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.25.0)\r\n",
"Requirement already satisfied: jupyterlab<5,>=4.0.2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (4.0.6)\r\n",
"Requirement already satisfied: notebook-shim<0.3,>=0.2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.2.3)\r\n",
"Requirement already satisfied: tornado>=6.2.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (6.3.3)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: pyasn1>=0.1.7 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from oauth2client>=1.4.12->google-apitools<0.5.32,>=0.5.31->apache-beam[gcp]<3,>=2.47->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (0.5.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: anyio>=3.1.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (4.0.0)\r\n",
"Requirement already satisfied: argon2-cffi in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (23.1.0)\r\n",
"Requirement already satisfied: jupyter-client>=7.4.4 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (8.3.1)\r\n",
"Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (5.3.2)\r\n",
"Requirement already satisfied: jupyter-events>=0.6.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.7.0)\r\n",
"Requirement already satisfied: jupyter-server-terminals in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.4.4)\r\n",
"Requirement already satisfied: nbconvert>=6.4.4 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (7.8.0)\r\n",
"Requirement already satisfied: nbformat>=5.3.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (5.9.2)\r\n",
"Requirement already satisfied: prometheus-client in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.17.1)\r\n",
"Requirement already satisfied: pyzmq>=24 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (25.1.1)\r\n",
"Requirement already satisfied: send2trash>=1.8.2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.8.2)\r\n",
"Requirement already satisfied: terminado>=0.8.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.17.1)\r\n",
"Requirement already satisfied: websocket-client in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.6.3)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: async-lru>=1.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyterlab<5,>=4.0.2->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.0.4)\r\n",
"Requirement already satisfied: ipykernel in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyterlab<5,>=4.0.2->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (6.25.2)\r\n",
"Requirement already satisfied: jupyter-lsp>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyterlab<5,>=4.0.2->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.2.0)\r\n",
"Requirement already satisfied: tomli in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyterlab<5,>=4.0.2->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.0.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: babel>=2.10 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyterlab-server<3,>=2.22.1->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.13.0)\r\n",
"Requirement already satisfied: json5>=0.9.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyterlab-server<3,>=2.22.1->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.9.14)\r\n",
"INFO: pip is looking at multiple versions of jupyterlab-server to determine which version is compatible with other requirements. This could take a while.\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting jupyterlab-server<3,>=2.22.1 (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for jupyterlab-server<3,>=2.22.1 from https://files.pythonhosted.org/packages/a7/0d/6d4eab0391bd4df1c43f308368d5e177b0fa8ac632267222a23b71317091/jupyterlab_server-2.24.0-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jupyterlab_server-2.24.0-py3-none-any.whl.metadata (5.8 kB)\r\n",
" Obtaining dependency information for jupyterlab-server<3,>=2.22.1 from https://files.pythonhosted.org/packages/cb/14/8f1c4b9b80db855d48a762e248efd41649d102841b6bfadbd26b8c25e054/jupyterlab_server-2.23.0-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jupyterlab_server-2.23.0-py3-none-any.whl.metadata (5.8 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jupyterlab_server-2.22.1-py3-none-any.whl (57 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting jupyterlab<5,>=4.0.2 (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for jupyterlab<5,>=4.0.2 from https://files.pythonhosted.org/packages/3b/43/2368d8ffee6e33f282f548d42fa222bd385cc9f66545b260e7d08e90046b/jupyterlab-4.0.6-py3-none-any.whl.metadata\r\n",
" Using cached jupyterlab-4.0.6-py3-none-any.whl.metadata (15 kB)\r\n",
"INFO: pip is still looking at multiple versions of jupyterlab-server to determine which version is compatible with other requirements. This could take a while.\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting notebook>=4.4.1 (from widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for notebook>=4.4.1 from https://files.pythonhosted.org/packages/29/e0/50b48473fcb99651dd21302da50ae2c49113ccf3dfb901fc6aaa3117e7ed/notebook-7.0.4-py3-none-any.whl.metadata\r\n",
" Using cached notebook-7.0.4-py3-none-any.whl.metadata (10 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Obtaining dependency information for notebook>=4.4.1 from https://files.pythonhosted.org/packages/79/97/b803f9686fe25b40c8eca2d1ba440b2f878f23b87765d18fe93dd323f0b7/notebook-7.0.3-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading notebook-7.0.3-py3-none-any.whl.metadata (10 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.\r\n",
" Obtaining dependency information for notebook>=4.4.1 from https://files.pythonhosted.org/packages/85/76/51777158391e1784cc5a892ff355fd0a0b0b5189aeffce9baf51f514b9a2/notebook-7.0.2-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading notebook-7.0.2-py3-none-any.whl.metadata (10 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Obtaining dependency information for notebook>=4.4.1 from https://files.pythonhosted.org/packages/c6/3a/171eaf5808d22b97fc98c61f2dd484302d1f38dbe0952e536dbaa88c2320/notebook-7.0.1-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading notebook-7.0.1-py3-none-any.whl.metadata (10 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Obtaining dependency information for notebook>=4.4.1 from https://files.pythonhosted.org/packages/b6/7a/9a32d2c8a2652614f66ee889f67c352fa11e1042e668de3224c4da2370db/notebook-7.0.0-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading notebook-7.0.0-py3-none-any.whl.metadata (10 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Obtaining dependency information for notebook>=4.4.1 from https://files.pythonhosted.org/packages/f2/b0/24277b431a62f50e85ae5f7cad478419ed9645f4ba1dd035f2ce11326777/notebook-6.5.6-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading notebook-6.5.6-py3-none-any.whl.metadata (2.5 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting pyzmq<25,>=17 (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading pyzmq-24.0.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.1 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting jupyter-client<8,>=5.3.4 (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading jupyter_client-7.4.9-py3-none-any.whl (133 kB)\r\n",
"Requirement already satisfied: nest-asyncio>=1.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.5.8)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting nbclassic>=0.4.7 (from notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading nbclassic-1.0.0-py3-none-any.whl (10.0 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting entrypoints (from jupyter-client<8,>=5.3.4->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading entrypoints-0.4-py3-none-any.whl (5.3 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: platformdirs>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-core!=5.0.*,>=4.12->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (3.11.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: beautifulsoup4 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (4.12.2)\r\n",
"Requirement already satisfied: bleach!=5.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (6.0.0)\r\n",
"Requirement already satisfied: defusedxml in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.7.1)\r\n",
"Requirement already satisfied: jupyterlab-pygments in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.2.2)\r\n",
"Requirement already satisfied: mistune<4,>=2.0.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (3.0.2)\r\n",
"Requirement already satisfied: nbclient>=0.5.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.8.0)\r\n",
"Requirement already satisfied: pandocfilters>=1.4.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.5.0)\r\n",
"Requirement already satisfied: tinycss2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.2.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: fastjsonschema in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from nbformat>=5.3.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.18.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: oauthlib>=3.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<1.1,>=0.5->tensorboard<2.14,>=2.13->tensorflow<3,>=2.13->tensorflow-data-validation<2.0.0,>=1.5.0->model-card-toolkit>=1.0.0) (3.2.2)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: argon2-cffi-bindings in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from argon2-cffi->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (21.2.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: debugpy>=1.6.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipykernel->jupyterlab<5,>=4.0.2->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.8.0)\r\n",
"Requirement already satisfied: psutil in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from ipykernel->jupyterlab<5,>=4.0.2->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (5.9.5)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: webencodings in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from bleach!=5.0.0->nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.5.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: cffi>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from argon2-cffi-bindings->argon2-cffi->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.16.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: soupsieve>1.2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from beautifulsoup4->nbconvert>=6.4.4->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.5)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: sniffio>=1.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from anyio>=3.1.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.3.0)\r\n",
"Requirement already satisfied: exceptiongroup>=1.0.2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from anyio>=3.1.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (1.1.3)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: pycparser in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.21)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: jsonschema[format-nongpl]>=4.18.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-events>=0.6.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (4.19.1)\r\n",
"Requirement already satisfied: python-json-logger>=2.0.4 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-events>=0.6.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (2.0.7)\r\n",
"Requirement already satisfied: pyyaml>=5.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-events>=0.6.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (6.0.1)\r\n",
"Requirement already satisfied: referencing in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-events>=0.6.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.30.2)\r\n",
"Requirement already satisfied: rfc3339-validator in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-events>=0.6.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.1.4)\r\n",
"Requirement already satisfied: rfc3986-validator>=0.1.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from jupyter-events>=0.6.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0) (0.1.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO: pip is looking at multiple versions of jsonschema[format-nongpl] to determine which version is compatible with other requirements. This could take a while.\r\n",
"Collecting jsonschema[format-nongpl]>=4.18.0 (from jupyter-events>=0.6.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for jsonschema[format-nongpl]>=4.18.0 from https://files.pythonhosted.org/packages/2b/ff/af59fd34bc4d7ac3e6e0cd1f3c10317d329b6c1aee179e8b24ad9a79fbac/jsonschema-4.19.0-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.19.0-py3-none-any.whl.metadata (8.2 kB)\r\n",
" Obtaining dependency information for jsonschema[format-nongpl]>=4.18.0 from https://files.pythonhosted.org/packages/b5/5c/ae834dd4160bbe9a4feb6e1f3e6189ab7772408823e294bd12eb6b4b4f44/jsonschema-4.18.6-py3-none-any.whl.metadata\r\n",
" Downloading jsonschema-4.18.6-py3-none-any.whl.metadata (7.8 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Obtaining dependency information for jsonschema[format-nongpl]>=4.18.0 from https://files.pythonhosted.org/packages/d3/a4/54273ac37a667c3fcf93916fda59b36f0ad79950e4e56ad839ef2e3e1159/jsonschema-4.18.5-py3-none-any.whl.metadata\r\n",
" Downloading jsonschema-4.18.5-py3-none-any.whl.metadata (7.7 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Obtaining dependency information for jsonschema[format-nongpl]>=4.18.0 from https://files.pythonhosted.org/packages/a1/ba/28ce987450c6afa8336373761193ddaadc1ba2004fbf23a6407db036f558/jsonschema-4.18.4-py3-none-any.whl.metadata\r\n",
" Downloading jsonschema-4.18.4-py3-none-any.whl.metadata (7.8 kB)\r\n",
" Obtaining dependency information for jsonschema[format-nongpl]>=4.18.0 from https://files.pythonhosted.org/packages/3a/34/ea34f7979d4f9ed1fa3b5c66000bc4e445c570f642ad478796f5ebaae45a/jsonschema-4.18.3-py3-none-any.whl.metadata\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.18.3-py3-none-any.whl.metadata (7.9 kB)\r\n",
" Obtaining dependency information for jsonschema[format-nongpl]>=4.18.0 from https://files.pythonhosted.org/packages/03/83/9a89e40dba1498ce9777865fa0bec0bfc3c1831679cdee814ec8dd223904/jsonschema-4.18.2-py3-none-any.whl.metadata\r\n",
" Downloading jsonschema-4.18.2-py3-none-any.whl.metadata (7.8 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Obtaining dependency information for jsonschema[format-nongpl]>=4.18.0 from https://files.pythonhosted.org/packages/1d/85/984ef667a097ce4e671c6a5d8251a2b4a80845922a3937c6e77c8e6954f7/jsonschema-4.18.1-py3-none-any.whl.metadata\r\n",
" Downloading jsonschema-4.18.1-py3-none-any.whl.metadata (7.8 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO: pip is still looking at multiple versions of jsonschema[format-nongpl] to determine which version is compatible with other requirements. This could take a while.\r\n",
" Obtaining dependency information for jsonschema[format-nongpl]>=4.18.0 from https://files.pythonhosted.org/packages/8a/38/2c55180702a637be0fbb8aa95358213a750d25cad3e59869726a54309996/jsonschema-4.18.0-py3-none-any.whl.metadata\r\n",
" Downloading jsonschema-4.18.0-py3-none-any.whl.metadata (10 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting jupyter-events>=0.6.0 (from jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Obtaining dependency information for jupyter-events>=0.6.0 from https://files.pythonhosted.org/packages/15/0d/3c67f6c432d8085a3cee250e1e235f27b764be90cc2d16fdcc0b1cee9572/jupyter_events-0.7.0-py3-none-any.whl.metadata\r\n",
" Using cached jupyter_events-0.7.0-py3-none-any.whl.metadata (5.5 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jupyter_events-0.6.3-py3-none-any.whl (18 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting jsonschema[format-nongpl]>=3.2.0 (from jupyter-events>=0.6.0->jupyter-server<3,>=2.4.0->notebook>=4.4.1->widgetsnbextension~=3.6.6->ipywidgets<8,>=7->tensorflow-model-analysis<0.42.0,>=0.36.0->model-card-toolkit>=1.0.0)\r\n",
" Downloading jsonschema-4.17.3-py3-none-any.whl (90 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.17.1-py3-none-any.whl (90 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.17.0-py3-none-any.whl (83 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.16.0-py3-none-any.whl (83 kB)\r\n",
" Downloading jsonschema-4.15.0-py3-none-any.whl (82 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.14.0-py3-none-any.whl (82 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.13.0-py3-none-any.whl (81 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.12.1-py3-none-any.whl (81 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.12.0-py3-none-any.whl (81 kB)\r\n",
" Downloading jsonschema-4.11.0-py3-none-any.whl (80 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.10.3-py3-none-any.whl (81 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.10.2-py3-none-any.whl (81 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.10.1-py3-none-any.whl (81 kB)\r\n",
" Downloading jsonschema-4.10.0-py3-none-any.whl (80 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.9.1-py3-none-any.whl (79 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.9.0-py3-none-any.whl (79 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.8.0-py3-none-any.whl (81 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.7.2-py3-none-any.whl (81 kB)\r\n",
" Downloading jsonschema-4.7.1-py3-none-any.whl (80 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.7.0-py3-none-any.whl (80 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.6.2-py3-none-any.whl (80 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.6.1-py3-none-any.whl (80 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.6.0-py3-none-any.whl (80 kB)\r\n",
" Downloading jsonschema-4.5.1-py3-none-any.whl (72 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mWARNING: jsonschema 4.5.1 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m Downloading jsonschema-4.5.0-py3-none-any.whl (73 kB)\r\n",
"\u001b[33mWARNING: jsonschema 4.5.0 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.4.0-py3-none-any.whl (72 kB)\r\n",
"\u001b[33mWARNING: jsonschema 4.4.0 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.3.3-py3-none-any.whl (71 kB)\r\n",
"\u001b[33mWARNING: jsonschema 4.3.3 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m Downloading jsonschema-4.3.2-py3-none-any.whl (71 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mWARNING: jsonschema 4.3.2 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m Downloading jsonschema-4.3.1-py3-none-any.whl (71 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mWARNING: jsonschema 4.3.1 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m Downloading jsonschema-4.3.0-py3-none-any.whl (71 kB)\r\n",
"\u001b[33mWARNING: jsonschema 4.3.0 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.2.1-py3-none-any.whl (69 kB)\r\n",
"\u001b[33mWARNING: jsonschema 4.2.1 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m Downloading jsonschema-4.2.0-py3-none-any.whl (69 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mWARNING: jsonschema 4.2.0 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m Downloading jsonschema-4.1.2-py3-none-any.whl (69 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mWARNING: jsonschema 4.1.2 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m Downloading jsonschema-4.1.1-py3-none-any.whl (69 kB)\r\n",
"\u001b[33mWARNING: jsonschema 4.1.1 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Downloading jsonschema-4.1.0-py3-none-any.whl (69 kB)\r\n",
"\u001b[33mWARNING: jsonschema 4.1.0 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m Downloading jsonschema-4.0.1-py3-none-any.whl (69 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mWARNING: jsonschema 4.0.1 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m\u001b[33mWARNING: jsonschema 3.2.0 does not provide the extra 'format-nongpl'\u001b[0m\u001b[33m\r\n",
"\u001b[0m"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading ml_metadata-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.5 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading ipywidgets-7.8.1-py2.py3-none-any.whl (124 kB)\r\n",
"Downloading fastavro-1.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading fasteners-0.19-py3-none-any.whl (18 kB)\r\n",
"Downloading google_api_core-2.12.0-py3-none-any.whl (121 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading google_auth_httplib2-0.1.1-py2.py3-none-any.whl (9.3 kB)\r\n",
"Downloading google_cloud_aiplatform-1.34.0-py2.py3-none-any.whl (3.1 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading google_cloud_bigquery-3.11.4-py2.py3-none-any.whl (219 kB)\r\n",
"Downloading google_cloud_bigquery_storage-2.22.0-py2.py3-none-any.whl (190 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading google_cloud_bigtable-2.21.0-py2.py3-none-any.whl (293 kB)\r\n",
"Downloading google_cloud_core-2.3.3-py2.py3-none-any.whl (29 kB)\r\n",
"Downloading google_cloud_datastore-2.18.0-py2.py3-none-any.whl (177 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading google_cloud_dlp-3.12.3-py2.py3-none-any.whl (143 kB)\r\n",
"Downloading google_cloud_language-2.11.1-py2.py3-none-any.whl (138 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading google_cloud_pubsub-2.18.4-py2.py3-none-any.whl (265 kB)\r\n",
"Downloading google_cloud_pubsublite-1.8.3-py2.py3-none-any.whl (288 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading google_cloud_recommendations_ai-0.10.5-py2.py3-none-any.whl (173 kB)\r\n",
"Downloading google_cloud_spanner-3.40.1-py2.py3-none-any.whl (332 kB)\r\n",
"Downloading google_cloud_videointelligence-2.11.4-py2.py3-none-any.whl (229 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading google_cloud_vision-3.4.4-py2.py3-none-any.whl (444 kB)\r\n",
"Downloading jupyterlab_widgets-1.1.7-py3-none-any.whl (295 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading orjson-3.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138 kB)\r\n",
"Downloading proto_plus-1.22.3-py3-none-any.whl (48 kB)\r\n",
"Downloading pymongo-4.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (687 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (774 kB)\r\n",
"Downloading tensorflow_serving_api-2.13.1-py2.py3-none-any.whl (26 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading widgetsnbextension-3.6.6-py2.py3-none-any.whl (1.6 MB)\r\n",
"Downloading apache_beam-2.50.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.3 MB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading dnspython-2.4.2-py3-none-any.whl (300 kB)\r\n",
"Downloading google_cloud_resource_manager-1.10.4-py2.py3-none-any.whl (320 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading google_cloud_storage-2.11.0-py2.py3-none-any.whl (118 kB)\r\n",
"Downloading google_resumable_media-2.6.0-py2.py3-none-any.whl (80 kB)\r\n",
"Downloading notebook-6.5.6-py3-none-any.whl (529 kB)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Building wheels for collected packages: pyfarmhash, crcmod, dill, google-apitools, hdfs, docopt\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Building wheel for pyfarmhash (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \b\\"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \b|"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \b/"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n",
"\u001b[?25h Created wheel for pyfarmhash: filename=pyfarmhash-0.3.2-cp38-cp38-linux_x86_64.whl size=101844 sha256=ff0d70168c57815247b08721525a2951e399d7b2ee719ecf8cfcca3f4e02431f\r\n",
" Stored in directory: /home/kbuilder/.cache/pip/wheels/ef/32/a2/5f89be144e6e691c3566245279d78d89253e2d3414a842cd35\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Building wheel for crcmod (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n",
"\u001b[?25h Created wheel for crcmod: filename=crcmod-1.7-cp38-cp38-linux_x86_64.whl size=36037 sha256=b11270fe580b1a3cff710b5669ca0c9d024c528cd33eb698c318f0f5aead1f39\r\n",
" Stored in directory: /home/kbuilder/.cache/pip/wheels/ca/5a/02/f3acf982a026f3319fb3e798a8dca2d48fafee7761788562e9\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Building wheel for dill (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \b\\"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n",
"\u001b[?25h Created wheel for dill: filename=dill-0.3.1.1-py3-none-any.whl size=78542 sha256=8378c44c130aefd1789f7696034788fa3d056678bea63dbebf701f86a7291c0a\r\n",
" Stored in directory: /home/kbuilder/.cache/pip/wheels/07/35/78/e9004fa30578734db7f10e7a211605f3f0778d2bdde38a239d\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Building wheel for google-apitools (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \b\\"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n",
"\u001b[?25h Created wheel for google-apitools: filename=google_apitools-0.5.31-py3-none-any.whl size=131015 sha256=4c927502a9b8919b17b0891189af320f5fa25df0d131a239c6cc0e3192a4e757\r\n",
" Stored in directory: /home/kbuilder/.cache/pip/wheels/d7/54/79/85de1824f2f4175fb4960c72afb10045d86700c3941dc73685\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Building wheel for hdfs (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \b\\"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n",
"\u001b[?25h Created wheel for hdfs: filename=hdfs-2.7.2-py3-none-any.whl size=34168 sha256=330479073278bc08d4cbf651d4449f590d7c1d3cfc2c208f101a899c571b53d7\r\n",
" Stored in directory: /home/kbuilder/.cache/pip/wheels/fc/d2/5e/77127327c6af94d8057fd8c4e896fbec0bb2b752bdc954bc5e\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Building wheel for docopt (setup.py) ... \u001b[?25l-"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b \bdone\r\n",
"\u001b[?25h Created wheel for docopt: filename=docopt-0.6.2-py2.py3-none-any.whl size=13705 sha256=9237eb50c835be13abdb3400f2e3f1411fe2b35270e54da460c3f3e2079569e2\r\n",
" Stored in directory: /home/kbuilder/.cache/pip/wheels/56/ea/58/ead137b087d9e326852a851351d1debf4ada529b6ac0ec4e8c\r\n",
"Successfully built pyfarmhash crcmod dill google-apitools hdfs docopt\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Installing collected packages: pyfarmhash, joblib, docopt, crcmod, zstandard, uritemplate, sqlparse, shapely, regex, pyzmq, pyrsistent, pyarrow, proto-plus, overrides, orjson, objsize, jupyterlab-widgets, httplib2, google-crc32c, fasteners, fastavro, entrypoints, dnspython, dill, cloudpickle, attrs, absl-py, tensorflow-metadata, pymongo, pandas, oauth2client, ml-metadata, jupyter-client, jsonschema, ipython, hdfs, grpcio-status, google-resumable-media, grpc-google-iam-v1, google-auth-httplib2, google-apitools, google-api-core, apache-beam, jupyter-events, google-cloud-core, google-api-python-client, google-cloud-vision, google-cloud-videointelligence, google-cloud-storage, google-cloud-spanner, google-cloud-resource-manager, google-cloud-recommendations-ai, google-cloud-pubsub, google-cloud-language, google-cloud-dlp, google-cloud-datastore, google-cloud-bigtable, google-cloud-bigquery-storage, google-cloud-bigquery, tensorflow-serving-api, google-cloud-pubsublite, google-cloud-aiplatform, tfx-bsl, nbclassic, tensorflow-data-validation, notebook, widgetsnbextension, ipywidgets, tensorflow-model-analysis, model-card-toolkit\r\n",
" Attempting uninstall: joblib\r\n",
" Found existing installation: joblib 1.3.2\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Uninstalling joblib-1.3.2:\r\n",
" Successfully uninstalled joblib-1.3.2\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: pyzmq\r\n",
" Found existing installation: pyzmq 25.1.1\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Uninstalling pyzmq-25.1.1:\r\n",
" Successfully uninstalled pyzmq-25.1.1\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: overrides\r\n",
" Found existing installation: overrides 7.4.0\r\n",
" Uninstalling overrides-7.4.0:\r\n",
" Successfully uninstalled overrides-7.4.0\r\n",
" Attempting uninstall: jupyterlab-widgets\r\n",
" Found existing installation: jupyterlab-widgets 3.0.9\r\n",
" Uninstalling jupyterlab-widgets-3.0.9:\r\n",
" Successfully uninstalled jupyterlab-widgets-3.0.9\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: attrs\r\n",
" Found existing installation: attrs 23.1.0\r\n",
" Uninstalling attrs-23.1.0:\r\n",
" Successfully uninstalled attrs-23.1.0\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: absl-py\r\n",
" Found existing installation: absl-py 1.4.0\r\n",
" Uninstalling absl-py-1.4.0:\r\n",
" Successfully uninstalled absl-py-1.4.0\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: tensorflow-metadata\r\n",
" Found existing installation: tensorflow-metadata 1.14.0\r\n",
" Uninstalling tensorflow-metadata-1.14.0:\r\n",
" Successfully uninstalled tensorflow-metadata-1.14.0\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: pandas\r\n",
" Found existing installation: pandas 2.0.3\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Uninstalling pandas-2.0.3:\r\n",
" Successfully uninstalled pandas-2.0.3\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: jupyter-client\r\n",
" Found existing installation: jupyter_client 8.3.1\r\n",
" Uninstalling jupyter_client-8.3.1:\r\n",
" Successfully uninstalled jupyter_client-8.3.1\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: jsonschema\r\n",
" Found existing installation: jsonschema 4.19.1\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Uninstalling jsonschema-4.19.1:\r\n",
" Successfully uninstalled jsonschema-4.19.1\r\n",
" Attempting uninstall: ipython\r\n",
" Found existing installation: ipython 8.12.3\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Uninstalling ipython-8.12.3:\r\n",
" Successfully uninstalled ipython-8.12.3\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: jupyter-events\r\n",
" Found existing installation: jupyter-events 0.7.0\r\n",
" Uninstalling jupyter-events-0.7.0:\r\n",
" Successfully uninstalled jupyter-events-0.7.0\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: notebook\r\n",
" Found existing installation: notebook 7.0.4\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Uninstalling notebook-7.0.4:\r\n",
" Successfully uninstalled notebook-7.0.4\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: widgetsnbextension\r\n",
" Found existing installation: widgetsnbextension 4.0.9\r\n",
" Uninstalling widgetsnbextension-4.0.9:\r\n",
" Successfully uninstalled widgetsnbextension-4.0.9\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Attempting uninstall: ipywidgets\r\n",
" Found existing installation: ipywidgets 8.1.1\r\n",
" Uninstalling ipywidgets-8.1.1:\r\n",
" Successfully uninstalled ipywidgets-8.1.1\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\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.\r\n",
"jupyterlab-server 2.25.0 requires jsonschema>=4.18.0, but you have jsonschema 3.2.0 which is incompatible.\r\n",
"referencing 0.30.2 requires attrs>=22.2.0, but you have attrs 21.4.0 which is incompatible.\r\n",
"scikit-learn 1.3.1 requires joblib>=1.1.1, but you have joblib 0.14.1 which is incompatible.\u001b[0m\u001b[31m\r\n",
"\u001b[0mSuccessfully installed absl-py-1.0.0 apache-beam-2.50.0 attrs-21.4.0 cloudpickle-2.2.1 crcmod-1.7 dill-0.3.1.1 dnspython-2.4.2 docopt-0.6.2 entrypoints-0.4 fastavro-1.8.3 fasteners-0.19 google-api-core-2.12.0 google-api-python-client-1.12.11 google-apitools-0.5.31 google-auth-httplib2-0.1.1 google-cloud-aiplatform-1.34.0 google-cloud-bigquery-3.11.4 google-cloud-bigquery-storage-2.22.0 google-cloud-bigtable-2.21.0 google-cloud-core-2.3.3 google-cloud-datastore-2.18.0 google-cloud-dlp-3.12.3 google-cloud-language-2.11.1 google-cloud-pubsub-2.18.4 google-cloud-pubsublite-1.8.3 google-cloud-recommendations-ai-0.10.5 google-cloud-resource-manager-1.10.4 google-cloud-spanner-3.40.1 google-cloud-storage-2.11.0 google-cloud-videointelligence-2.11.4 google-cloud-vision-3.4.4 google-crc32c-1.5.0 google-resumable-media-2.6.0 grpc-google-iam-v1-0.12.6 grpcio-status-1.48.2 hdfs-2.7.2 httplib2-0.22.0 ipython-7.34.0 ipywidgets-7.8.1 joblib-0.14.1 jsonschema-3.2.0 jupyter-client-7.4.9 jupyter-events-0.6.3 jupyterlab-widgets-1.1.7 ml-metadata-1.14.0 model-card-toolkit-2.0.0 nbclassic-1.0.0 notebook-6.5.6 oauth2client-4.1.3 objsize-0.6.1 orjson-3.9.7 overrides-6.5.0 pandas-1.5.3 proto-plus-1.22.3 pyarrow-6.0.1 pyfarmhash-0.3.2 pymongo-4.5.0 pyrsistent-0.19.3 pyzmq-24.0.1 regex-2023.8.8 shapely-1.8.5.post1 sqlparse-0.4.4 tensorflow-data-validation-1.10.0 tensorflow-metadata-1.10.0 tensorflow-model-analysis-0.41.1 tensorflow-serving-api-2.13.1 tfx-bsl-1.10.1 uritemplate-3.0.1 widgetsnbextension-3.6.6 zstandard-0.21.0\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: tensorflow>=2.3.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (2.13.1)\r\n",
"Requirement already satisfied: absl-py>=1.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (1.0.0)\r\n",
"Requirement already satisfied: astunparse>=1.6.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (1.6.3)\r\n",
"Requirement already satisfied: flatbuffers>=23.1.21 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (23.5.26)\r\n",
"Requirement already satisfied: gast<=0.4.0,>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (0.4.0)\r\n",
"Requirement already satisfied: google-pasta>=0.1.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (0.2.0)\r\n",
"Requirement already satisfied: grpcio<2.0,>=1.24.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (1.59.0)\r\n",
"Requirement already satisfied: h5py>=2.9.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (3.9.0)\r\n",
"Requirement already satisfied: keras<2.14,>=2.13.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (2.13.1)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: libclang>=13.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (16.0.6)\r\n",
"Requirement already satisfied: numpy<=1.24.3,>=1.22 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (1.24.3)\r\n",
"Requirement already satisfied: opt-einsum>=2.3.2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (3.3.0)\r\n",
"Requirement already satisfied: packaging in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (23.2)\r\n",
"Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (3.20.3)\r\n",
"Requirement already satisfied: setuptools in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (68.2.2)\r\n",
"Requirement already satisfied: six>=1.12.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (1.16.0)\r\n",
"Requirement already satisfied: tensorboard<2.14,>=2.13 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (2.13.0)\r\n",
"Requirement already satisfied: tensorflow-estimator<2.14,>=2.13.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (2.13.0)\r\n",
"Requirement already satisfied: termcolor>=1.1.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (2.3.0)\r\n",
"Requirement already satisfied: typing-extensions<4.6.0,>=3.6.6 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (4.5.0)\r\n",
"Requirement already satisfied: wrapt>=1.11.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (1.15.0)\r\n",
"Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow>=2.3.1) (0.34.0)\r\n",
"Requirement already satisfied: wheel<1.0,>=0.23.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from astunparse>=1.6.0->tensorflow>=2.3.1) (0.41.2)\r\n",
"Requirement already satisfied: google-auth<3,>=1.6.3 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (2.23.2)\r\n",
"Requirement already satisfied: google-auth-oauthlib<1.1,>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (1.0.0)\r\n",
"Requirement already satisfied: markdown>=2.6.8 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (3.4.4)\r\n",
"Requirement already satisfied: requests<3,>=2.21.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (2.31.0)\r\n",
"Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (0.7.1)\r\n",
"Requirement already satisfied: werkzeug>=1.0.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (3.0.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: cachetools<6.0,>=2.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (5.3.1)\r\n",
"Requirement already satisfied: pyasn1-modules>=0.2.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (0.3.0)\r\n",
"Requirement already satisfied: rsa<5,>=3.1.4 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (4.9)\r\n",
"Requirement already satisfied: requests-oauthlib>=0.7.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from google-auth-oauthlib<1.1,>=0.5->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (1.3.1)\r\n",
"Requirement already satisfied: importlib-metadata>=4.4 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from markdown>=2.6.8->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (6.8.0)\r\n",
"Requirement already satisfied: charset-normalizer<4,>=2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (3.3.0)\r\n",
"Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (3.4)\r\n",
"Requirement already satisfied: urllib3<3,>=1.21.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (2.0.6)\r\n",
"Requirement already satisfied: certifi>=2017.4.17 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (2023.7.22)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: MarkupSafe>=2.1.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from werkzeug>=1.0.1->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (2.1.3)\r\n",
"Requirement already satisfied: zipp>=0.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (3.17.0)\r\n",
"Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (0.5.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: oauthlib>=3.0.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<1.1,>=0.5->tensorboard<2.14,>=2.13->tensorflow>=2.3.1) (3.2.2)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: tensorflow-datasets>=4.8.2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (4.9.2)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: absl-py in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (1.0.0)\r\n",
"Requirement already satisfied: array-record in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (0.4.0)\r\n",
"Requirement already satisfied: click in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (8.1.7)\r\n",
"Requirement already satisfied: dm-tree in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (0.1.8)\r\n",
"Requirement already satisfied: etils[enp,epath]>=0.9.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (1.3.0)\r\n",
"Requirement already satisfied: numpy in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (1.24.3)\r\n",
"Requirement already satisfied: promise in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (2.3)\r\n",
"Requirement already satisfied: protobuf>=3.20 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (3.20.3)\r\n",
"Requirement already satisfied: psutil in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (5.9.5)\r\n",
"Requirement already satisfied: requests>=2.19.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (2.31.0)\r\n",
"Requirement already satisfied: tensorflow-metadata in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (1.10.0)\r\n",
"Requirement already satisfied: termcolor in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (2.3.0)\r\n",
"Requirement already satisfied: toml in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (0.10.2)\r\n",
"Requirement already satisfied: tqdm in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (4.66.1)\r\n",
"Requirement already satisfied: wrapt in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (1.15.0)\r\n",
"Requirement already satisfied: importlib-resources in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-datasets>=4.8.2) (6.1.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: typing_extensions in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from etils[enp,epath]>=0.9.0->tensorflow-datasets>=4.8.2) (4.5.0)\r\n",
"Requirement already satisfied: zipp in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from etils[enp,epath]>=0.9.0->tensorflow-datasets>=4.8.2) (3.17.0)\r\n",
"Requirement already satisfied: charset-normalizer<4,>=2 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests>=2.19.0->tensorflow-datasets>=4.8.2) (3.3.0)\r\n",
"Requirement already satisfied: idna<4,>=2.5 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests>=2.19.0->tensorflow-datasets>=4.8.2) (3.4)\r\n",
"Requirement already satisfied: urllib3<3,>=1.21.1 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests>=2.19.0->tensorflow-datasets>=4.8.2) (2.0.6)\r\n",
"Requirement already satisfied: certifi>=2017.4.17 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from requests>=2.19.0->tensorflow-datasets>=4.8.2) (2023.7.22)\r\n",
"Requirement already satisfied: six in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from absl-py->tensorflow-datasets>=4.8.2) (1.16.0)\r\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: googleapis-common-protos<2,>=1.52.0 in /tmpfs/src/tf_docs_env/lib/python3.8/site-packages (from tensorflow-metadata->tensorflow-datasets>=4.8.2) (1.60.0)\r\n"
]
}
],
"source": [
"!pip install --upgrade pip\n",
"!pip install 'model-card-toolkit>=1.0.0'\n",
"!pip install 'tensorflow>=2.3.1'\n",
"!pip install 'tensorflow-datasets>=4.8.2'\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": 3,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:15.224374Z",
"iopub.status.busy": "2023-10-03T09:12:15.223732Z",
"iopub.status.idle": "2023-10-03T09:12:19.825859Z",
"shell.execute_reply": "2023-10-03T09:12:19.824957Z"
},
"id": "Nx4sE8cUUhF-"
},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import model_card_toolkit as mct\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": 4,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:19.830212Z",
"iopub.status.busy": "2023-10-03T09:12:19.829783Z",
"iopub.status.idle": "2023-10-03T09:12:27.841220Z",
"shell.execute_reply": "2023-10-03T09:12:27.840503Z"
},
"id": "TJzHu_ZQCJ_z"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
},
{
"name": "stderr",
"output_type": "stream",
"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"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-10-03 09:12:20.736066: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1960] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.\n",
"Skipping registering GPU devices...\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": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:27.848312Z",
"iopub.status.busy": "2023-10-03T09:12:27.847992Z",
"iopub.status.idle": "2023-10-03T09:12:27.852035Z",
"shell.execute_reply": "2023-10-03T09:12:27.851444Z"
},
"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": 6,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:27.855068Z",
"iopub.status.busy": "2023-10-03T09:12:27.854838Z",
"iopub.status.idle": "2023-10-03T09:12:30.094400Z",
"shell.execute_reply": "2023-10-03T09:12:30.093666Z"
},
"id": "CZpI3nR-NRza"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"num validation examples: 320\n",
"num cat examples: 149\n",
"num dog examples: 171\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-10-03 09:12:30.081069: W tensorflow/core/kernels/data/cache_dataset_ops.cc:854] The calling iterator did not fully read the dataset being cached. In order to avoid unexpected truncation of the dataset, the partially cached contents of the dataset will be discarded. This can happen if you have an input pipeline similar to `dataset.cache().take(k).repeat()`. You should use `dataset.take(k).cache().repeat()` instead.\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": 7,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:30.098332Z",
"iopub.status.busy": "2023-10-03T09:12:30.098072Z",
"iopub.status.idle": "2023-10-03T09:12:33.624181Z",
"shell.execute_reply": "2023-10-03T09:12:33.623483Z"
},
"id": "1pra-P9ZkZ1N"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
" 1/10 [==>...........................] - ETA: 7s - loss: 0.0225 - binary_accuracy: 1.0000"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 2/10 [=====>........................] - ETA: 0s - loss: 0.0216 - binary_accuracy: 1.0000"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 3/10 [========>.....................] - ETA: 0s - loss: 0.0276 - binary_accuracy: 0.9896"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 4/10 [===========>..................] - ETA: 0s - loss: 0.0739 - binary_accuracy: 0.9844"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 5/10 [==============>...............] - ETA: 0s - loss: 0.0724 - binary_accuracy: 0.9812"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 6/10 [=================>............] - ETA: 0s - loss: 0.0658 - binary_accuracy: 0.9844"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 7/10 [====================>.........] - ETA: 0s - loss: 0.0616 - binary_accuracy: 0.9866"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 8/10 [=======================>......] - ETA: 0s - loss: 0.0834 - binary_accuracy: 0.9805"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
" 9/10 [==========================>...] - ETA: 0s - loss: 0.0858 - binary_accuracy: 0.9792"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"10/10 [==============================] - ETA: 0s - loss: 0.0794 - binary_accuracy: 0.9812"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"10/10 [==============================] - 2s 77ms/step - loss: 0.0794 - binary_accuracy: 0.9812\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"1/5 [=====>........................] - ETA: 3s - loss: 0.0283 - binary_accuracy: 1.0000"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"2/5 [===========>..................] - ETA: 0s - loss: 0.1055 - binary_accuracy: 0.9844"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"3/5 [=================>............] - ETA: 0s - loss: 0.0742 - binary_accuracy: 0.9896"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"4/5 [=======================>......] - ETA: 0s - loss: 0.0657 - binary_accuracy: 0.9922"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"5/5 [==============================] - ETA: 0s - loss: 0.0608 - binary_accuracy: 0.9933"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"5/5 [==============================] - 1s 74ms/step - loss: 0.0608 - binary_accuracy: 0.9933\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"1/6 [====>.........................] - ETA: 0s - loss: 0.0144 - binary_accuracy: 1.0000"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"2/6 [=========>....................] - ETA: 0s - loss: 0.0429 - binary_accuracy: 0.9844"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"3/6 [==============>...............] - ETA: 0s - loss: 0.0575 - binary_accuracy: 0.9792"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"4/6 [===================>..........] - ETA: 0s - loss: 0.0777 - binary_accuracy: 0.9766"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"5/6 [========================>.....] - ETA: 0s - loss: 0.0998 - binary_accuracy: 0.9688"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r",
"6/6 [==============================] - 0s 65ms/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": 8,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:33.628041Z",
"iopub.status.busy": "2023-10-03T09:12:33.627784Z",
"iopub.status.idle": "2023-10-03T09:12:33.632557Z",
"shell.execute_reply": "2023-10-03T09:12:33.631866Z"
},
"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",
"toolkit = mct.ModelCardToolkit(model_card_dir)\n",
"\n",
"# https://github.com/tensorflow/model-card-toolkit/blob/master/model_card_toolkit/model_card.py\n",
"model_card = toolkit.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": 9,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:33.635853Z",
"iopub.status.busy": "2023-10-03T09:12:33.635623Z",
"iopub.status.idle": "2023-10-03T09:12:33.641015Z",
"shell.execute_reply": "2023-10-03T09:12:33.640314Z"
},
"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",
" mct.Owner(name='Model Cards Team', contact='model-cards@google.com')\n",
"]\n",
"model_card.model_details.version = mct.Version(name='v1.0', date='08/28/2020')\n",
"model_card.model_details.references = [\n",
" mct.Reference(reference='https://www.tensorflow.org/guide/keras/transfer_learning'),\n",
" mct.Reference(reference='https://arxiv.org/abs/1801.04381'),\n",
"]\n",
"model_card.model_details.licenses = [mct.License(identifier='Apache-2.0')]\n",
"model_card.model_details.citations = [mct.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": 10,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:33.643839Z",
"iopub.status.busy": "2023-10-03T09:12:33.643616Z",
"iopub.status.idle": "2023-10-03T09:12:33.647561Z",
"shell.execute_reply": "2023-10-03T09:12:33.646901Z"
},
"id": "rtd9Y7yN7ITg"
},
"outputs": [],
"source": [
"model_card.quantitative_analysis.performance_metrics = [\n",
" mct.PerformanceMetric(type='accuracy', value=str(accuracy)),\n",
" mct.PerformanceMetric(type='accuracy', value=str(cat_accuracy), slice='cat'),\n",
" mct.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": 11,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:33.650621Z",
"iopub.status.busy": "2023-10-03T09:12:33.650366Z",
"iopub.status.idle": "2023-10-03T09:12:33.654652Z",
"shell.execute_reply": "2023-10-03T09:12:33.653966Z"
},
"id": "-b12rEyq7QXG"
},
"outputs": [],
"source": [
"model_card.considerations.use_cases = [\n",
" mct.UseCase(description='This model classifies images of cats and dogs.')\n",
"]\n",
"model_card.considerations.limitations = [\n",
" mct.Limitation(description='This model is not able to classify images of other classes.')\n",
"]\n",
"model_card.considerations.ethical_considerations = [mct.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": 12,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:33.658288Z",
"iopub.status.busy": "2023-10-03T09:12:33.657705Z",
"iopub.status.idle": "2023-10-03T09:12:33.995046Z",
"shell.execute_reply": "2023-10-03T09:12:33.994435Z"
},
"id": "ZMis4kzXdeqy"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEs0lEQVR4nO3deVwVZf//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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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"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": 13,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:33.998670Z",
"iopub.status.busy": "2023-10-03T09:12:33.998409Z",
"iopub.status.idle": "2023-10-03T09:12:34.231552Z",
"shell.execute_reply": "2023-10-03T09:12:34.230654Z"
},
"id": "UPY-j2RG9Wtr"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2PUlEQVR4nO3deVhWdf7/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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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"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": 14,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:34.235359Z",
"iopub.status.busy": "2023-10-03T09:12:34.234701Z",
"iopub.status.idle": "2023-10-03T09:12:34.239111Z",
"shell.execute_reply": "2023-10-03T09:12:34.238486Z"
},
"id": "By8Qcr9usRZh"
},
"outputs": [],
"source": [
"model_card.model_parameters.data.append(mct.Dataset())\n",
"model_card.model_parameters.data[0].graphics.collection = [\n",
" mct.Graphic(name='Validation Set Size', image=validation_set_size_barchart),\n",
"]\n",
"model_card.quantitative_analysis.graphics.collection = [\n",
" mct.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": 15,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:34.242612Z",
"iopub.status.busy": "2023-10-03T09:12:34.242165Z",
"iopub.status.idle": "2023-10-03T09:12:34.246528Z",
"shell.execute_reply": "2023-10-03T09:12:34.245851Z"
},
"id": "X7V0pJLB8jqJ"
},
"outputs": [],
"source": [
"toolkit.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": 16,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:34.249784Z",
"iopub.status.busy": "2023-10-03T09:12:34.249312Z",
"iopub.status.idle": "2023-10-03T09:12:34.291595Z",
"shell.execute_reply": "2023-10-03T09:12:34.290972Z"
},
"id": "Sd68Ih928vr9"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" Model Card for Fine-tuned MobileNetV2 Model for Cats vs. Dogs\n",
" \n",
"\n",
"\n",
" \n",
" Model Card for Fine-tuned MobileNetV2 Model for Cats vs. Dogs\n",
" \n",
" \n",
" \n",
"
\n",
"
Model Details \n",
"
Overview \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",
"
Version \n",
" \n",
" \n",
"
name: v1.0
\n",
"\n",
" \n",
" \n",
"
date: 08/28/2020
\n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
"
Owners \n",
" \n",
" Model Cards Team, model-cards@google.com\n",
" \n",
" \n",
" \n",
"
Licenses \n",
"
\n",
"\n",
" Apache-2.0 \n",
"\n",
" \n",
" \n",
"
References \n",
"
\n",
" \n",
"
Citations \n",
"
\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",
" \n",
" \n",
" \n",
"
\n",
"
Considerations \n",
" \n",
" \n",
"
Use Cases \n",
" \n",
" \n",
"
\n",
" \n",
" This model classifies images of cats and dogs. \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"
Limitations \n",
" \n",
" \n",
"
\n",
" \n",
" This model is not able to classify images of other classes. \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"
Ethical Considerations \n",
"
\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",
"
\n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"
Datasets \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
" \n",
"
\n",
"\n",
" \n",
"
\n",
"
\n",
" \n",
"
\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"
Quantitative Analysis \n",
" \n",
" \n",
"
\n",
" Performance Metrics \n",
" Name Value \n",
"\n",
" \n",
"accuracy\n",
" \n",
"0.981249988079071\n",
" \n",
"\n",
" \n",
"accuracy, cat\n",
" \n",
"0.9932885766029358\n",
" \n",
"\n",
" \n",
"accuracy, Dog\n",
" \n",
"0.9707602262496948\n",
" \n",
"\n",
"
\n",
"\n",
" \n",
" \n",
" \n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
" \n",
" \n",
"
\n",
"
\n",
"
\n",
" \n",
"
\n",
"\n",
"
\n",
"
\n",
"\n",
" \n",
"
\n",
"\n",
" \n",
"\n",
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Generate a model card document in HTML (default)\n",
"html_doc = toolkit.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": 17,
"metadata": {
"execution": {
"iopub.execute_input": "2023-10-03T09:12:34.295467Z",
"iopub.status.busy": "2023-10-03T09:12:34.294819Z",
"iopub.status.idle": "2023-10-03T09:12:34.326450Z",
"shell.execute_reply": "2023-10-03T09:12:34.325796Z"
},
"id": "uncQA2NfAnIS"
},
"outputs": [
{
"data": {
"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\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",
"\n",
"### Version\n",
"\n",
"name: v1.0 \n",
"\n",
"date: 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",
" \n",
"\n",
"\n",
" \n",
"### Accuracy\n",
" \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"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"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 = toolkit.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))"
]
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"name": "Standalone Model Card Toolkit Demo",
"private_outputs": true,
"provenance": [],
"toc_visible": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 0
}