使用ガイド

tfc.run API を使用すると、GCP 上でモデルを大規模にトレーニングできます。

tfc.run API は 4 つの異なる方法で使用できます。これは、API を実行している場所 (Python スクリプトと Python ノートブック) と、 entry_pointパラメーターによって定義されます。

  • Python ファイルをentry_pointとして指定します。
  • ノートブック ファイルをentry_pointとして指定します。
  • tf.kerasモデルを含む Python スクリプト内でrun
  • tf.kerasモデルを含むノートブック スクリプト内でrun 。最も一般的な方法は、ノートブック内でrunを使用することです。

entry_point 、Python スクリプトまたはノートブック ファイル (へのパス)、またはNoneです。 Noneの場合、現在のファイル全体が Google Cloud に送信されます。

Python ファイルをentry_pointとして使用します。

tf.kerasモデルが Python ファイル ( mnist_example.py ) にある場合は、次の簡単なスクリプト ( scale_mnist.py ) を記述して、GCP 上でモデルをスケーリングできます。

import tensorflow_cloud as tfc
tfc.run(entry_point='mnist_example.py')

作成された docker イメージには、 entry_pointと同じディレクトリ ツリー内のすべてのファイルが、 entry_pointファイルとともにパッケージ化されることに注意してください。イメージのビルド時間を最適化するために、必要なファイルのみを含む各クラウド プロジェクトを格納する新しいディレクトリを作成することをお勧めします。

ノートブック ファイルをentry_pointとして使用します。

tf.kerasモデルがノートブック ファイル ( mnist_example.ipynb ) にある場合は、次の簡単なスクリプト ( scale_mnist.py ) を記述して、GCP 上でモデルをスケーリングできます。

import tensorflow_cloud as tfc
tfc.run(entry_point='mnist_example.ipynb')

作成された docker イメージには、 entry_pointと同じディレクトリ ツリー内のすべてのファイルが、 entry_pointファイルとともにパッケージ化されることに注意してください。上記の Python スクリプトのentry_pointと同様に、イメージのビルド時間を最適化するために、必要なファイルのみを含む各クラウド プロジェクトを格納する新しいディレクトリを作成することをお勧めします。

tf.kerasモデルを含む Python スクリプト内でrunを使用します。

tf.kerasモデル ( mnist_scale.py ) を含む Python ファイル内からrun API を使用できます。この使用例では、 entry_point Noneである必要があります。 run API はどこからでも呼び出すことができ、ファイル全体がリモートで実行されます。最後に API を呼び出して、デバッグ目的でスクリプトをローカルで実行できます (エポックやその他のフラグを少なくすることもできます)。

import tensorflow_datasets as tfds
import tensorflow as tf
import tensorflow_cloud as tfc

tfc.run(
    entry_point=None,
    distribution_strategy='auto',
    requirements_txt='requirements.txt',
    chief_config=tfc.MachineConfig(
            cpu_cores=8,
            memory=30,
            accelerator_type=tfc.AcceleratorType.NVIDIA_TESLA_T4,
            accelerator_count=2),
    worker_count=0)

datasets, info = tfds.load(name='mnist', with_info=True, as_supervised=True)
mnist_train, mnist_test = datasets['train'], datasets['test']

num_train_examples = info.splits['train'].num_examples
num_test_examples = info.splits['test'].num_examples

BUFFER_SIZE = 10000
BATCH_SIZE = 64

def scale(image, label):
    image = tf.cast(image, tf.float32)
    image /= 255
    return image, label

train_dataset = mnist_train.map(scale).cache()
train_dataset = train_dataset.shuffle(BUFFER_SIZE).batch(BATCH_SIZE)

model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, 3, activation='relu', input_shape=(
        28, 28, 1)),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(loss='sparse_categorical_crossentropy',
              optimizer=tf.keras.optimizers.Adam(),
              metrics=['accuracy'])
model.fit(train_dataset, epochs=12)

Python スクリプトと同じディレクトリ ツリー内のすべてのファイルは、Python ファイルとともに、作成された Docker イメージにパッケージ化されることに注意してください。イメージのビルド時間を最適化するために、必要なファイルのみを含む各クラウド プロジェクトを格納する新しいディレクトリを作成することをお勧めします。

tf.kerasモデルを含むノートブック スクリプト内でrun使用します。

コラボのイメージ

この使用例では、ビルドを確実に保存および公開できるように、 entry_point Noneにし、 docker_config.image_build_bucketを指定する必要があります。

runを呼び出すとどうなりますか?

API 呼び出しは次のことを実行します。

  1. Keras スクリプト/ノートブック、クラウド、ディストリビューションなどのコード エンティティを準備します。
  2. この配布エンティティを、必要な依存関係を備えたDocker コンテナに変換します。
  3. このコンテナを大規模にデプロイし、TensorFlow 分散戦略を使用してトレーニングします。
  4. ホストされた TensorBoard でログをストリーミングして監視し、チェックポイント ストレージを管理します。

デフォルトでは、Docker イメージを構築して Google コンテナ レジストリに公開するためのローカル Docker デーモン。イメージはgcr.io/your-gcp-project-idに公開されます。 docker_config.image_build_bucketを指定した場合、 Google Cloud ビルドを使用して Docker イメージをビルドして公開します。

Google AI プラットフォームは、 Google Cloud に Docker イメージをデプロイするために使用されます。