{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Packages your Python function, Python file or Jupyter notebook as a Docker image" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Environment Setup" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import sys\n", "import time\n", "from kubeflow import fairing\n", "from kubeflow.fairing import TrainJob\n", "from kubeflow.fairing.backends import KubeflowAWSBackend" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "AWS_ACCOUNT_ID=fairing.cloud.aws.guess_account_id()\n", "AWS_REGION='us-west-2'\n", "DOCKER_REGISTRY = '{}.dkr.ecr.{}.amazonaws.com'.format(AWS_ACCOUNT_ID, AWS_REGION)\n", "\n", "PY_VERSION = \".\".join([str(x) for x in sys.version_info[0:3]])\n", "BASE_IMAGE = 'python:{}'.format(PY_VERSION)\n", "\n", "# TODO: There's a bug in the code. python:3.6.8 won't work for this. Has to use org/repo:tag format\n", "BASE_IMAGE = 'tensorflow/tensorflow:1.14.0-py3'\n", "\n", "# Setting up AWS Elastic Container Registry (ECR) for storing output containers\n", "# You can use any docker container registry istead of ECR\n", "AWS_ACCOUNT_ID=fairing.cloud.aws.guess_account_id()\n", "AWS_REGION='us-west-2'\n", "DOCKER_REGISTRY = '{}.dkr.ecr.{}.amazonaws.com'.format(AWS_ACCOUNT_ID, AWS_REGION)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Convert Python function" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def train():\n", " print(\"simple train job!\")\n", "\n", "job = TrainJob(train, base_docker_image=BASE_IMAGE, docker_registry=DOCKER_REGISTRY, backend=KubeflowAWSBackend())\n", "job.submit() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Convert Python file " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%writefile train.py\n", "print(\"hello world!\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "job = TrainJob(\"train.py\", base_docker_image=BASE_IMAGE, docker_registry=DOCKER_REGISTRY, backend=KubeflowAWSBackend())\n", "job.submit() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Convert Jupyter Notebook" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%writefile requirements.txt\n", "papermill\n", "jupyter" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# We already have a train.ipynb in the same folder\n", "job = TrainJob(\"train.ipynb\", input_files=[\"requirements.txt\"], base_docker_image=BASE_IMAGE, docker_registry=DOCKER_REGISTRY, backend=KubeflowAWSBackend())\n", "job.submit()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }