examples/cnn template/cnntemp.ipynb

346 lines
24 KiB
Plaintext

{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "w3cO7lQMtLkh",
"outputId": "267a2cff-6127-4946-8f3d-2ef927df4f29"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
"Collecting kfp==1.8.9\n",
" Downloading kfp-1.8.9.tar.gz (296 kB)\n",
"\u001b[K |████████████████████████████████| 296 kB 20.1 MB/s \n",
"\u001b[?25hCollecting absl-py<=0.11,>=0.9\n",
" Downloading absl_py-0.11.0-py3-none-any.whl (127 kB)\n",
"\u001b[K |████████████████████████████████| 127 kB 73.9 MB/s \n",
"\u001b[?25hCollecting PyYAML<6,>=5.3\n",
" Downloading PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl (636 kB)\n",
"\u001b[K |████████████████████████████████| 636 kB 57.3 MB/s \n",
"\u001b[?25hCollecting google-cloud-storage<2,>=1.20.0\n",
" Downloading google_cloud_storage-1.44.0-py2.py3-none-any.whl (106 kB)\n",
"\u001b[K |████████████████████████████████| 106 kB 64.8 MB/s \n",
"\u001b[?25hCollecting kubernetes<19,>=8.0.0\n",
" Downloading kubernetes-18.20.0-py2.py3-none-any.whl (1.6 MB)\n",
"\u001b[K |████████████████████████████████| 1.6 MB 64.0 MB/s \n",
"\u001b[?25hRequirement already satisfied: google-api-python-client<2,>=1.7.8 in /usr/local/lib/python3.7/dist-packages (from kfp==1.8.9->-r requirements.txt (line 1)) (1.12.11)\n",
"Collecting google-auth<2,>=1.6.1\n",
" Downloading google_auth-1.35.0-py2.py3-none-any.whl (152 kB)\n",
"\u001b[K |████████████████████████████████| 152 kB 66.3 MB/s \n",
"\u001b[?25hCollecting requests-toolbelt<1,>=0.8.0\n",
" Downloading requests_toolbelt-0.10.1-py2.py3-none-any.whl (54 kB)\n",
"\u001b[K |████████████████████████████████| 54 kB 3.4 MB/s \n",
"\u001b[?25hCollecting cloudpickle<3,>=2.0.0\n",
" Downloading cloudpickle-2.2.0-py3-none-any.whl (25 kB)\n",
"Collecting kfp-server-api<2.0.0,>=1.1.2\n",
" Downloading kfp-server-api-1.8.5.tar.gz (58 kB)\n",
"\u001b[K |████████████████████████████████| 58 kB 6.1 MB/s \n",
"\u001b[?25hCollecting jsonschema<4,>=3.0.1\n",
" Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)\n",
"\u001b[K |████████████████████████████████| 56 kB 5.3 MB/s \n",
"\u001b[?25hRequirement already satisfied: tabulate<1,>=0.8.6 in /usr/local/lib/python3.7/dist-packages (from kfp==1.8.9->-r requirements.txt (line 1)) (0.8.10)\n",
"Requirement already satisfied: click<9,>=7.1.2 in /usr/local/lib/python3.7/dist-packages (from kfp==1.8.9->-r requirements.txt (line 1)) (7.1.2)\n",
"Collecting Deprecated<2,>=1.2.7\n",
" Downloading Deprecated-1.2.13-py2.py3-none-any.whl (9.6 kB)\n",
"Collecting strip-hints<1,>=0.1.8\n",
" Downloading strip-hints-0.1.10.tar.gz (29 kB)\n",
"Collecting docstring-parser<1,>=0.7.3\n",
" Downloading docstring_parser-0.15-py3-none-any.whl (36 kB)\n",
"Collecting kfp-pipeline-spec<0.2.0,>=0.1.13\n",
" Downloading kfp_pipeline_spec-0.1.16-py3-none-any.whl (19 kB)\n",
"Collecting fire<1,>=0.3.1\n",
" Downloading fire-0.4.0.tar.gz (87 kB)\n",
"\u001b[K |████████████████████████████████| 87 kB 7.8 MB/s \n",
"\u001b[?25hRequirement already satisfied: protobuf<4,>=3.13.0 in /usr/local/lib/python3.7/dist-packages (from kfp==1.8.9->-r requirements.txt (line 1)) (3.19.6)\n",
"Requirement already satisfied: uritemplate<4,>=3.0.1 in /usr/local/lib/python3.7/dist-packages (from kfp==1.8.9->-r requirements.txt (line 1)) (3.0.1)\n",
"Requirement already satisfied: pydantic<2,>=1.8.2 in /usr/local/lib/python3.7/dist-packages (from kfp==1.8.9->-r requirements.txt (line 1)) (1.10.2)\n",
"Requirement already satisfied: typer<1.0,>=0.3.2 in /usr/local/lib/python3.7/dist-packages (from kfp==1.8.9->-r requirements.txt (line 1)) (0.4.2)\n",
"Collecting typing-extensions<4,>=3.7.4\n",
" Downloading typing_extensions-3.10.0.2-py3-none-any.whl (26 kB)\n",
"Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from absl-py<=0.11,>=0.9->kfp==1.8.9->-r requirements.txt (line 1)) (1.15.0)\n",
"Requirement already satisfied: wrapt<2,>=1.10 in /usr/local/lib/python3.7/dist-packages (from Deprecated<2,>=1.2.7->kfp==1.8.9->-r requirements.txt (line 1)) (1.14.1)\n",
"Requirement already satisfied: termcolor in /usr/local/lib/python3.7/dist-packages (from fire<1,>=0.3.1->kfp==1.8.9->-r requirements.txt (line 1)) (2.1.0)\n",
"Requirement already satisfied: google-auth-httplib2>=0.0.3 in /usr/local/lib/python3.7/dist-packages (from google-api-python-client<2,>=1.7.8->kfp==1.8.9->-r requirements.txt (line 1)) (0.0.4)\n",
"Requirement already satisfied: google-api-core<3dev,>=1.21.0 in /usr/local/lib/python3.7/dist-packages (from google-api-python-client<2,>=1.7.8->kfp==1.8.9->-r requirements.txt (line 1)) (2.8.2)\n",
"Requirement already satisfied: httplib2<1dev,>=0.15.0 in /usr/local/lib/python3.7/dist-packages (from google-api-python-client<2,>=1.7.8->kfp==1.8.9->-r requirements.txt (line 1)) (0.17.4)\n",
"Requirement already satisfied: googleapis-common-protos<2.0dev,>=1.56.2 in /usr/local/lib/python3.7/dist-packages (from google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.8.9->-r requirements.txt (line 1)) (1.56.4)\n",
"Requirement already satisfied: requests<3.0.0dev,>=2.18.0 in /usr/local/lib/python3.7/dist-packages (from google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.8.9->-r requirements.txt (line 1)) (2.23.0)\n",
"Collecting cachetools<5.0,>=2.0.0\n",
" Downloading cachetools-4.2.4-py3-none-any.whl (10 kB)\n",
"Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.7/dist-packages (from google-auth<2,>=1.6.1->kfp==1.8.9->-r requirements.txt (line 1)) (4.9)\n",
"Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.7/dist-packages (from google-auth<2,>=1.6.1->kfp==1.8.9->-r requirements.txt (line 1)) (0.2.8)\n",
"Requirement already satisfied: setuptools>=40.3.0 in /usr/local/lib/python3.7/dist-packages (from google-auth<2,>=1.6.1->kfp==1.8.9->-r requirements.txt (line 1)) (57.4.0)\n",
"Requirement already satisfied: google-cloud-core<3.0dev,>=1.6.0 in /usr/local/lib/python3.7/dist-packages (from google-cloud-storage<2,>=1.20.0->kfp==1.8.9->-r requirements.txt (line 1)) (2.3.2)\n",
"Requirement already satisfied: google-resumable-media<3.0dev,>=1.3.0 in /usr/local/lib/python3.7/dist-packages (from google-cloud-storage<2,>=1.20.0->kfp==1.8.9->-r requirements.txt (line 1)) (2.4.0)\n",
"Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /usr/local/lib/python3.7/dist-packages (from google-resumable-media<3.0dev,>=1.3.0->google-cloud-storage<2,>=1.20.0->kfp==1.8.9->-r requirements.txt (line 1)) (1.5.0)\n",
"Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema<4,>=3.0.1->kfp==1.8.9->-r requirements.txt (line 1)) (0.19.2)\n",
"Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from jsonschema<4,>=3.0.1->kfp==1.8.9->-r requirements.txt (line 1)) (4.13.0)\n",
"Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.7/dist-packages (from jsonschema<4,>=3.0.1->kfp==1.8.9->-r requirements.txt (line 1)) (22.1.0)\n",
"Requirement already satisfied: urllib3>=1.15 in /usr/local/lib/python3.7/dist-packages (from kfp-server-api<2.0.0,>=1.1.2->kfp==1.8.9->-r requirements.txt (line 1)) (1.24.3)\n",
"Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from kfp-server-api<2.0.0,>=1.1.2->kfp==1.8.9->-r requirements.txt (line 1)) (2022.9.24)\n",
"Requirement already satisfied: python-dateutil in /usr/local/lib/python3.7/dist-packages (from kfp-server-api<2.0.0,>=1.1.2->kfp==1.8.9->-r requirements.txt (line 1)) (2.8.2)\n",
"Requirement already satisfied: requests-oauthlib in /usr/local/lib/python3.7/dist-packages (from kubernetes<19,>=8.0.0->kfp==1.8.9->-r requirements.txt (line 1)) (1.3.1)\n",
"Collecting websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0\n",
" Downloading websocket_client-1.4.2-py3-none-any.whl (55 kB)\n",
"\u001b[K |████████████████████████████████| 55 kB 4.1 MB/s \n",
"\u001b[?25hRequirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /usr/local/lib/python3.7/dist-packages (from pyasn1-modules>=0.2.1->google-auth<2,>=1.6.1->kfp==1.8.9->-r requirements.txt (line 1)) (0.4.8)\n",
"Collecting pydantic<2,>=1.8.2\n",
" Downloading pydantic-1.10.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.8 MB)\n",
"\u001b[K |████████████████████████████████| 11.8 MB 34.0 MB/s \n",
"\u001b[?25h Downloading pydantic-1.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.8 MB)\n",
"\u001b[K |████████████████████████████████| 11.8 MB 73.2 MB/s \n",
"\u001b[?25h Downloading pydantic-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 MB)\n",
"\u001b[K |████████████████████████████████| 11.1 MB 61.1 MB/s \n",
"\u001b[?25hRequirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.8.9->-r requirements.txt (line 1)) (2.10)\n",
"Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0dev,>=2.18.0->google-api-core<3dev,>=1.21.0->google-api-python-client<2,>=1.7.8->kfp==1.8.9->-r requirements.txt (line 1)) (3.0.4)\n",
"Requirement already satisfied: wheel in /usr/local/lib/python3.7/dist-packages (from strip-hints<1,>=0.1.8->kfp==1.8.9->-r requirements.txt (line 1)) (0.38.3)\n",
"Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata->jsonschema<4,>=3.0.1->kfp==1.8.9->-r requirements.txt (line 1)) (3.10.0)\n",
"Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.7/dist-packages (from requests-oauthlib->kubernetes<19,>=8.0.0->kfp==1.8.9->-r requirements.txt (line 1)) (3.2.2)\n",
"Building wheels for collected packages: kfp, fire, kfp-server-api, strip-hints\n",
" Building wheel for kfp (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for kfp: filename=kfp-1.8.9-py3-none-any.whl size=409652 sha256=43e44f032c43467623798159d60362ba9ab12ac7467a89d19b5a4466995c9b69\n",
" Stored in directory: /root/.cache/pip/wheels/0e/20/7e/c2c43249eb0538c5aa2542bcc9b02affb0211ed5617fbd4abc\n",
" Building wheel for fire (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for fire: filename=fire-0.4.0-py2.py3-none-any.whl size=115940 sha256=eb7248330010e4ad64864fe4fc84c7c6071e087c8600f323385fd22323e3473f\n",
" Stored in directory: /root/.cache/pip/wheels/8a/67/fb/2e8a12fa16661b9d5af1f654bd199366799740a85c64981226\n",
" Building wheel for kfp-server-api (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for kfp-server-api: filename=kfp_server_api-1.8.5-py3-none-any.whl size=99714 sha256=a72a28dd2826841a3b7bf6963274d20ec0071f8196240d59bc6e977e22f45031\n",
" Stored in directory: /root/.cache/pip/wheels/77/0e/7b/ed385d69453b7b754834c01d83fa9f5708ba66b4f6ed5d6a35\n",
" Building wheel for strip-hints (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Created wheel for strip-hints: filename=strip_hints-0.1.10-py2.py3-none-any.whl size=22301 sha256=3bf78a6eefb5344febdc8fe4a7ca165f5e38b2b5ee816f60c3b339c19fed397d\n",
" Stored in directory: /root/.cache/pip/wheels/5e/14/c3/6e44e9b2545f2d570b03f5b6d38c00b7534aa8abb376978363\n",
"Successfully built kfp fire kfp-server-api strip-hints\n",
"Installing collected packages: cachetools, google-auth, typing-extensions, websocket-client, PyYAML, strip-hints, requests-toolbelt, pydantic, kubernetes, kfp-server-api, kfp-pipeline-spec, jsonschema, google-cloud-storage, fire, docstring-parser, Deprecated, cloudpickle, absl-py, kfp\n",
"\u001b[33m WARNING: The script wsdump is installed in '/root/.local/bin' which is not on PATH.\n",
" Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\n",
"\u001b[33m WARNING: The script strip-hints is installed in '/root/.local/bin' which is not on PATH.\n",
" Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\n",
"\u001b[33m WARNING: The script jsonschema is installed in '/root/.local/bin' which is not on PATH.\n",
" Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\n",
"\u001b[33m WARNING: The scripts dsl-compile, dsl-compile-v2 and kfp are installed in '/root/.local/bin' which is not on PATH.\n",
" Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\n",
"\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
"tensorflow 2.9.2 requires absl-py>=1.0.0, but you have absl-py 0.11.0 which is incompatible.\u001b[0m\n",
"Successfully installed Deprecated-1.2.13 PyYAML-5.4.1 absl-py-0.11.0 cachetools-4.2.4 cloudpickle-2.2.0 docstring-parser-0.15 fire-0.4.0 google-auth-1.35.0 google-cloud-storage-1.44.0 jsonschema-3.2.0 kfp-1.8.9 kfp-pipeline-spec-0.1.16 kfp-server-api-1.8.5 kubernetes-18.20.0 pydantic-1.9.2 requests-toolbelt-0.10.1 strip-hints-0.1.10 typing-extensions-3.10.0.2 websocket-client-1.4.2\n"
]
},
{
"output_type": "display_data",
"data": {
"application/vnd.colab-display-data+json": {
"pip_warning": {
"packages": [
"google",
"typing_extensions"
]
}
}
},
"metadata": {}
},
{
"output_type": "error",
"ename": "ModuleNotFoundError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-1-16b5e915de32>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtyping\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mNamedTuple\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mkfp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mkfp\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdsl\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mkfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomponents\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mfunc_to_container_op\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInputPath\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mOutputPath\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'kfp'",
"",
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0;32m\nNOTE: If your import is failing due to a missing package, you can\nmanually install dependencies using either !pip or !apt.\n\nTo view examples of installing some common dependencies, click the\n\"Open Examples\" button below.\n\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n"
],
"errorDetails": {
"actions": [
{
"action": "open_url",
"actionText": "Open Examples",
"url": "/notebooks/snippets/importing_libraries.ipynb"
}
]
}
}
],
"source": [
"#!/usr/bin/env python\n",
"# coding: utf-8\n",
"\n",
"# In[2]:\n",
"\n",
"\n",
"with open(\"requirements.txt\", \"w\") as f:\n",
" f.write(\"kfp==1.8.9\\n\")\n",
" \n",
"get_ipython().system('pip install -r requirements.txt --upgrade --user')\n",
"\n",
"\n",
"# In[1]:\n",
"\n",
"\n",
"from typing import NamedTuple\n",
"\n",
"import kfp\n",
"from kfp import dsl\n",
"from kfp.components import func_to_container_op, InputPath, OutputPath\n",
"\n",
"from typing import NamedTuple\n",
"def train(log_folder:str) -> NamedTuple('Outputs', [('logdir', str)]):\n",
" \n",
" print('mnist_func:', log_folder)\n",
" import tensorflow as tf\n",
" import json\n",
" mnist = tf.keras.datasets.mnist\n",
" (x_train,y_train), (x_test, y_test) = mnist.load_data()\n",
" x_train, x_test = x_train/255.0, x_test/255.0\n",
"\n",
" def create_model():\n",
" return tf.keras.models.Sequential([\n",
" tf.keras.layers.Flatten(input_shape = (28,28)),\n",
" tf.keras.layers.Dense(512, activation = 'relu'),\n",
" tf.keras.layers.Dropout(0.2),\n",
" tf.keras.layers.Dense(10, activation = 'softmax')\n",
" ])\n",
" model = create_model()\n",
" model.compile(optimizer='adam',\n",
" loss='sparse_categorical_crossentropy',\n",
" metrics=['accuracy'])\n",
" import datetime\n",
" import os\n",
" \n",
" ### add tensorboard logout callback\n",
" log_dir = os.path.join(log_folder, \"logs\", datetime.datetime.now().strftime(\"%Y%m%d-%H%M%S\"))\n",
" tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)\n",
" ######\n",
" \n",
" model.fit(x=x_train, \n",
" y=y_train, \n",
" epochs=5, \n",
" validation_data=(x_test, y_test), \n",
" callbacks=[tensorboard_callback])\n",
"\n",
" print('At least tensorboard callbacks are correct')\n",
" print('logdir:', log_dir)\n",
" return ([log_dir])\n",
"\n",
"def prepare_tensorboard_from_localdir(pvc_name:str) -> NamedTuple('Outputs', [('mlpipeline_ui_metadata', 'UI_metadata')]):\n",
" import json\n",
" import kfp.components as components\n",
" prepare_tensorboard = components.load_component_from_url(\n",
" 'https://raw.githubusercontent.com/kubeflow/pipelines/1b107eb4bb2510ecb99fd5f4fb438cbf7c96a87a/components/contrib/tensorflow/tensorboard/prepare_tensorboard/component.yaml'\n",
")\n",
" # log_dir_uri is consisted of volume:///folders\n",
" # the volume.name should be same as ones specified in pod_template.spec.volumes.name\n",
" \n",
" return prepare_tensorboard(\n",
" log_dir_uri=f'volume://mypvc/logs', \n",
" image=\"footprintai/tensorboard:2.7.0\", \n",
" pod_template_spec=json.dumps({\n",
" \"spec\": {\n",
" \"containers\": [\n",
" {\n",
" \"volumeMounts\": [\n",
" {\n",
" \"mountPath\": \"/data\",\n",
" \"name\": \"mypvc\"\n",
" }\n",
" ]\n",
" }\n",
" ],\n",
" \"serviceAccountName\": \"default-editor\",\n",
" \"volumes\": [\n",
" {\n",
" \"name\": \"mypvc\",\n",
" \"persistentVolumeClaim\": {\n",
" \"claimName\": pvc_name\n",
" }\n",
" }\n",
" ]\n",
" }\n",
" }),\n",
" )\n",
"\n",
"def model(text1):\n",
" return dsl.ContainerOp(\n",
" name='model',\n",
" image='library/bash:4.4.23',\n",
" command=['sh', '-c'],\n",
" arguments=['echo \"$0\"', text1])\n",
"\n",
"\n",
"# In[2]:\n",
"\n",
"\n",
"import kfp.dsl as dsl\n",
"import kfp.components as components\n",
"import time\n",
"\n",
"\n",
"@dsl.pipeline(\n",
" name='tf pipeline',\n",
" description='A pipeline to train a model on tf dataset and start a tensorboard.'\n",
")\n",
"def tf_pipeline(text1='message 1'):\n",
"\n",
" log_folder = '/data'\n",
" pvc_name = 'input'\n",
" unique_pvc_resource_name = 'my-awesome-kf-workshop-%d'% int(time.time())\n",
" \n",
" vop = dsl.VolumeOp(\n",
" name=pvc_name,\n",
" resource_name=unique_pvc_resource_name,\n",
" size=\"1Gi\",\n",
" modes=dsl.VOLUME_MODE_RWO,\n",
" generate_unique_name=False,\n",
" )\n",
" tf_op = func_to_container_op(\n",
" func=train,\n",
" base_image=\"tensorflow/tensorflow:2.0.0-py3\",\n",
" )\n",
" tensorboard_task = prepare_tensorboard_from_localdir(unique_pvc_resource_name)\n",
" \n",
" tf_task = tf_op(log_folder).add_pvolumes({\n",
" log_folder:vop.volume,\n",
" })\n",
"\n",
" \n",
" \n",
" step1_task = model(text1)\n",
"# step1_task.after(tensorboard_task) \n",
" tensorboard_task.after(tf_task)\n",
" tf_task.after(step1_task)\n",
"\n",
"\n",
"# In[4]:\n",
"\n",
"\n",
"kfp.compiler.Compiler().compile(tf_pipeline, 'helloworld.zip')\n",
"\n",
"\n",
"# In[ ]:\n"
]
}
]
}