このチュートリアルでは、GCP で TFF シミュレーションを実行する方法を説明します。
単一のランタイムコンテナでシミュレーションを実行する
1. Cloud SDK をインストールして初期化します。
2. TensorFlow Federated リポジトリを複製します。
$ git clone https://github.com/tensorflow/federated.git
$ cd "federated"
3. 単一のランタイムコンテナを実行します。
ランタイムコンテナを構築します。
$ docker build \ --network=host \ --tag "<registry>/tff-runtime" \ --file "tensorflow_federated/tools/runtime/container/Dockerfile" \ .
ランタイムコンテナを公開します。
$ docker push <registry>/tff-runtime
Compute Engine インスタンスを作成します。
Cloud Console で、VM Instances ページに移動します。
Create instance をクリックします。
Firewall セクションで、Allow HTTP traffic と Allow HTTPS traffic を選択します。
Create をクリックして、インスタンスを作成します。
ssh
でインスタンスに移動します。$ gcloud compute ssh <instance>
バックグラウンドでランタイムコンテナを実行します。
$ docker run \ --detach \ --name=tff-runtime \ --publish=8000:8000 \ <registry>/tff-runtime
インスタンスを終了します。
$ exit
インスタンスの内部 IP アドレスを取得します。
これは、テストスクリプトのパラメータとして後で使用します。
$ gcloud compute instances describe <instance> \ --format='get(networkInterfaces[0].networkIP)'
4. クライアントコンテナでシミュレーションを実行します。
クライアントコンテナを構築します。
$ docker build \ --network=host \ --tag "<registry>/tff-client" \ --file "tensorflow_federated/tools/client/latest.Dockerfile" \ .
クライアントコンテナを公開します。
$ docker push <registry>/tff-client
Compute Engine インスタンスを作成します。
Cloud Console で、VM Instances ページに移動します。
Create instance をクリックします。
Firewall セクションで、Allow HTTP traffic と Allow HTTPS traffic を選択します。
Create をクリックして、インスタンスを作成します。
Compute Engine インスタンスに実験をコピーします。
$ gcloud compute scp \ "tensorflow_federated/tools/client/test.py" \ <instance>:~
ssh
でインスタンスに移動します。$ gcloud compute ssh <instance>
クライアントコンテナをインタラクティブに実行します。
ターミナルに "Hello World" という文字列が出力されます。
$ docker run \ --interactive \ --tty \ --name=tff-client \ --volume ~/:/simulation \ --workdir /simulation \ <registry>/tff-client \ bash
Python スクリプトを実行します。
ランタイムコンテナを実行しているインスタンスの内部 IP アドレスを使用します。
$ python3 test.py --host '<IP address>'
コンテナを終了します。
$ exit
インスタンスを終了します。
$ exit