L'API tfc.run
vous permet d'entraîner vos modèles à grande échelle sur GCP.
L'API tfc.run
peut être utilisée de quatre manières différentes. Ceci est défini par l'endroit où vous exécutez l'API (script Python vs notebook Python) et par votre paramètre entry_point
:
- Fichier Python en tant que
entry_point
. - Fichier de bloc-notes en tant que
entry_point
. -
run
dans un script Python contenant le modèletf.keras
. -
run
dans un script de notebook contenant le modèletf.keras
. La méthode la plus courante consiste à utiliserrun
dans un notebook.
Le entry_point
est un (chemin d'accès à un) script Python ou fichier de bloc-notes, ou None
. Si None
, l'intégralité du fichier actuel est envoyée à Google Cloud.
Utiliser un fichier Python comme entry_point
.
Si vous avez votre modèle tf.keras
dans un fichier python ( mnist_example.py
), vous pouvez écrire le script simple suivant ( scale_mnist.py
) pour mettre à l'échelle votre modèle sur GCP.
import tensorflow_cloud as tfc
tfc.run(entry_point='mnist_example.py')
Veuillez noter que tous les fichiers de la même arborescence de répertoires que entry_point
seront regroupés dans l'image Docker créée, avec le fichier entry_point
. Il est recommandé de créer un nouveau répertoire pour héberger chaque projet cloud qui comprend les fichiers nécessaires et rien d'autre, afin d'optimiser les temps de création d'images.
Utilisation d'un fichier notebook comme entry_point
.
Si vous avez votre modèle tf.keras
dans un fichier notebook ( mnist_example.ipynb
), vous pouvez écrire le script simple suivant ( scale_mnist.py
) pour mettre à l'échelle votre modèle sur GCP.
import tensorflow_cloud as tfc
tfc.run(entry_point='mnist_example.ipynb')
Veuillez noter que tous les fichiers de la même arborescence de répertoires que entry_point
seront regroupés dans l'image Docker créée, avec le fichier entry_point
. Comme le script python entry_point
ci-dessus, nous avons recommandé de créer un nouveau répertoire pour héberger chaque projet cloud qui comprend les fichiers nécessaires et rien d'autre, afin d'optimiser les temps de création d'image.
Utilisation run
dans un script Python contenant le modèle tf.keras
.
Vous pouvez utiliser l'API run
à partir de votre fichier python qui contient le modèle tf.keras
( mnist_scale.py
). Dans ce cas d'utilisation, entry_point
doit être None
. L'API run
peut être appelée n'importe où et l'intégralité du fichier sera exécutée à distance. L'API peut être appelée à la fin pour exécuter le script localement à des fins de débogage (éventuellement avec moins d'époques et d'autres indicateurs).
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)
Veuillez noter que tous les fichiers de la même arborescence de répertoires que le script Python seront regroupés dans l'image Docker créée, avec le fichier Python. Il est recommandé de créer un nouveau répertoire pour héberger chaque projet cloud qui comprend les fichiers nécessaires et rien d'autre, afin d'optimiser les temps de création d'images.
Utilisation run
dans un script de notebook contenant le modèle tf.keras
.
Dans ce cas d'utilisation, entry_point
doit être None
et docker_config.image_build_bucket
doit être spécifié, pour garantir que la build peut être stockée et publiée.
Que se passe-t-il lorsque vous appelez run
?
L'appel API accomplira les tâches suivantes :
- Rendre les entités de code telles qu'un script/notebook Keras, le cloud et la distribution prêtes .
- Conversion de cette entité de distribution en un conteneur Docker avec les dépendances requises.
- Déployez ce conteneur à grande échelle et entraînez-vous à l'aide des stratégies de distribution TensorFlow.
- Diffusez les journaux et surveillez-les sur TensorBoard hébergé, gérez le stockage des points de contrôle.
Par défaut, le démon Docker local pour créer et publier des images Docker dans le registre de conteneurs Google. Les images sont publiées sur gcr.io/your-gcp-project-id
. Si vous spécifiez docker_config.image_build_bucket
, nous utiliserons Google Cloud build pour créer et publier des images Docker.
La plate-forme Google AI est utilisée pour déployer des images Docker sur Google Cloud.