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 呼び出しは次のことを実行します。
- Keras スクリプト/ノートブック、クラウド、ディストリビューションなどのコード エンティティを準備します。
- この配布エンティティを、必要な依存関係を備えたDocker コンテナに変換します。
- このコンテナを大規模にデプロイし、TensorFlow 分散戦略を使用してトレーニングします。
- ホストされた TensorBoard でログをストリーミングして監視し、チェックポイント ストレージを管理します。
デフォルトでは、Docker イメージを構築して Google コンテナ レジストリに公開するためのローカル Docker デーモン。イメージはgcr.io/your-gcp-project-id
に公開されます。 docker_config.image_build_bucket
を指定した場合、 Google Cloud ビルドを使用して Docker イメージをビルドして公開します。
Google AI プラットフォームは、Google Cloud に Docker イメージをデプロイするために使用されます。