<commit_before>{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "grBmytrShbUE"
      },
      "source": [
        "# High-performance Simulation with Kubernetes\n",
        "\n",
        "This tutorial will describe how to set up high-performance simulation using a\n",
        "TFF runtime running on Kubernetes. The model is the same as in the previous\n",
        "tutorial, **High-performance simulations with TFF**. The only difference is that\n",
        "here we use a worker pool instead of a local executor.\n",
        "\n",
        "This tutorial refers to Google Cloud's [GKE](https://cloud.google.com/kubernetes-engine/) to create the Kubernetes cluster,\n",
        "but all the steps after the cluster is created can be used with any Kubernetes\n",
        "installation."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "SyXVaj0dknQw"
      },
      "source": [
        "<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/high_performance_simulation_with_kubernetes\"><img src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" />View on TensorFlow.org</a>\n",
        "  </td>\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.20.0/docs/tutorials/high_performance_simulation_with_kubernetes.ipynb\"><img src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" />Run in Google Colab</a>\n",
        "  </td>\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.20.0/docs/tutorials/high_performance_simulation_with_kubernetes.ipynb\"><img src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" />View source on GitHub</a>\n",
        "  </td>\n",
        "  <td>\n",
        "    <a href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/high_performance_simulation_with_kubernetes.ipynb\"><img src=\"https://www.tensorflow.org/images/download_logo_32px.png\" />Download notebook</a>\n",
        "  </td>\n",
        "</table>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yiq_MY4LopET"
      },
      "source": [
        "## GKE で TFF ワーカーを起動する\n",
        "\n",
        "> **注:** このチュートリアルは、ユーザーが既存の GCP プロジェクトを持っていることを前提としています。\n",
        "\n",
        "### Kubernetes クラスタの作成\n",
        "\n",
        "次の手順は一度だけ実行する必要があります。クラスタは、今後のワークロードに再利用できます。\n",
        "\n",
        "GKE の指示に従って、[コンテナクラスタを作成](https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#step_4_create_a_container_cluster)します。このチュートリアルの以下の部分では、クラスタ名が`tff-cluster`であると想定していますが、実際の名前は重要ではありません。「*ステップ 5: アプリケーションのデプロイ*」に到達したら、指示に従うのをやめます。\n",
        "\n",
        "### TFF ワーカーアプリケーションをデプロイする\n",
        "\n",
        "GCP とやり取りするコマンドは、[ローカル](https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#option_b_use_command-line_tools_locally)または[ Google Cloud Shell ](https://cloud.google.com/shell/)で実行できます。Google Cloud Shell では、追加の設定は必要ないため、Google Cloud Shell の使用をお勧めします。\n",
        "\n",
        "1. 次のコマンドを実行して、Kubernetes アプリケーションを起動します。\n",
        "\n",
        "```\n",
        "$ kubectl create deployment tff-workers --image=gcr.io/tensorflow-federated/remote-executor-service:latest\n",
        "```\n",
        "\n",
        "1. アプリケーションのロードバランサを追加します。\n",
        "\n",
        "```\n",
        "$ kubectl expose deployment tff-workers --type=LoadBalancer --port 80 --target-port 8000\n",
        "```\n",
        "\n",
        "> **注:** これにより、デプロイメントがインターネットに公開されますが、これはデモのみのためです。運用環境では、ファイアウォールと認証を強くお勧めします。"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WK4ohHUZvVVc"
      },
      "source": [
        "Google Cloud Console でロードバランサの IP アドレスを検索します。後でトレーニングループをワーカーアプリに接続するために必要になります。"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8Lq8r5uaT2rB"
      },
      "source": [
        "### (または) Docker コンテナをローカルで起動する\n",
        "\n",
        "```\n",
        "$ docker run --rm -p 8000:8000 gcr.io/tensorflow-federated/remote-executor-service:latest\n",
        "```"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_zFenI3IPpgI"
      },
      "source": [
        "## TFF 環境の設定"
      ]<commit_msg>Translate high_performance_simulation_with_kubernetes.ipynb via GitLocalize<commit_after>{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "grBmytrShbUE"
      },
      "source": [
        "# High-performance Simulation with Kubernetes\n",
        "\n",
        "This tutorial will describe how to set up high-performance simulation using a\n",
        "TFF runtime running on Kubernetes. The model is the same as in the previous\n",
        "tutorial, **High-performance simulations with TFF**. The only difference is that\n",
        "here we use a worker pool instead of a local executor.\n",
        "\n",
        "This tutorial refers to Google Cloud's [GKE](https://cloud.google.com/kubernetes-engine/) to create the Kubernetes cluster,\n",
        "but all the steps after the cluster is created can be used with any Kubernetes\n",
        "installation."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "SyXVaj0dknQw"
      },
      "source": [
        "<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://www.tensorflow.org/federated/tutorials/high_performance_simulation_with_kubernetes\"><img src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" />View on TensorFlow.org</a>\n",
        "  </td>\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/federated/blob/v0.20.0/docs/tutorials/high_performance_simulation_with_kubernetes.ipynb\"><img src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" />Run in Google Colab</a>\n",
        "  </td>\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://github.com/tensorflow/federated/blob/v0.20.0/docs/tutorials/high_performance_simulation_with_kubernetes.ipynb\"><img src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" />View source on GitHub</a>\n",
        "  </td>\n",
        "  <td>\n",
        "    <a href=\"https://storage.googleapis.com/tensorflow_docs/federated/docs/tutorials/high_performance_simulation_with_kubernetes.ipynb\"><img src=\"https://www.tensorflow.org/images/download_logo_32px.png\" />Download notebook</a>\n",
        "  </td>\n",
        "</table>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yiq_MY4LopET"
      },
      "source": [
        "## GKE で TFF ワーカーを起動する\n",
        "\n",
        "> **注:** このチュートリアルは、ユーザーが既存の GCP プロジェクトを持っていることを前提としています。\n",
        "\n",
        "### Kubernetes クラスタの作成\n",
        "\n",
        "次の手順は一度だけ実行する必要があります。クラスタは、今後のワークロードに再利用できます。\n",
        "\n",
        "GKE の指示に従って、[コンテナクラスタを作成](https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#step_4_create_a_container_cluster)します。このチュートリアルの以下の部分では、クラスタ名が`tff-cluster`であると想定していますが、実際の名前は重要ではありません。「*ステップ 5: アプリケーションのデプロイ*」に到達したら、指示に従うのをやめます。\n",
        "\n",
        "### TFF ワーカーアプリケーションをデプロイする\n",
        "\n",
        "GCP とやり取りするコマンドは、[ローカル](https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#option_b_use_command-line_tools_locally)または[ Google Cloud Shell ](https://cloud.google.com/shell/)で実行できます。Google Cloud Shell では、追加の設定は必要ないため、Google Cloud Shell の使用をお勧めします。\n",
        "\n",
        "1. 次のコマンドを実行して、Kubernetes アプリケーションを起動します。\n",
        "\n",
        "```\n",
        "$ kubectl create deployment tff-workers --image=gcr.io/tensorflow-federated/remote-executor-service:latest\n",
        "```\n",
        "\n",
        "1. アプリケーションのロードバランサを追加します。\n",
        "\n",
        "```\n",
        "$ kubectl expose deployment tff-workers --type=LoadBalancer --port 80 --target-port 8000\n",
        "```\n",
        "\n",
        "> **注:** これにより、デプロイメントがインターネットに公開されますが、これはデモのみのためです。運用環境では、ファイアウォールと認証を強くお勧めします。"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "WK4ohHUZvVVc"
      },
      "source": [
        "Google Cloud Console でロードバランサの IP アドレスを検索します。後でトレーニングループをワーカーアプリに接続するために必要になります。"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8Lq8r5uaT2rB"
      },
      "source": [
        "### (または) Docker コンテナをローカルで起動する\n",
        "\n",
        "```\n",
        "$ docker run --rm -p 8000:8000 gcr.io/tensorflow-federated/remote-executor-service:latest\n",
        "```"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_zFenI3IPpgI"
      },
      "source": [
        "## TFF 環境の設定"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "ke7EyuvG0Zyn"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "-"
          ]
        }
      ],
      "source": [
        "#@test {\"skip\": true}\n",
        "!pip install --quiet --upgrade tensorflow-federated\n",
        "!pip install --quiet --upgrade nest-asyncio\n",
        "\n",
        "import nest_asyncio\n",
        "nest_asyncio.apply()"
      ]
{'fraction_non_alphanumeric': 0.17272822555287706, 'fraction_numerical': 0.00901373021695839, 'mean_word_length': 2.350421348314607, 'pattern_counts': {'":': 60, '<': 47, '<?xml version=': 0, '>': 51, 'https://': 24, 'lorem ipsum': 0, 'www.': 10, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5938948', 'n_tokens_mistral': 4077, 'n_tokens_neox': 3820, 'n_words': 520}