Guide d'utilisation

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èle tf.keras .
  • run dans un script de bloc-notes contenant le modèle tf.keras . La méthode la plus courante consiste à utiliser run 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 .

Image de Colab

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 :

  1. Rendre les entités de code telles qu'un script/notebook Keras, le cloud et la distribution prêtes .
  2. Conversion de cette entité de distribution en un conteneur Docker avec les dépendances requises.
  3. Déployez ce conteneur à grande échelle et entraînez-vous à l'aide des stratégies de distribution TensorFlow.
  4. 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.