Руководство по использованию

API tfc.run позволяет масштабировать модели в GCP.

API tfc.run можно использовать четырьмя различными способами. Это определяется тем, где вы запускаете API (скрипт Python или блокнот Python), и вашим параметром entry_point :

  • Файл Python как entry_point .
  • Файл записной книжки как entry_point .
  • run в сценарии Python, содержащем модель tf.keras .
  • run в сценарии записной книжки, содержащем модель tf.keras . Самый распространенный способ — использовать 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')

Обратите внимание, что все файлы в том же дереве каталогов, что и entry_point , будут упакованы в созданный образ Docker вместе с файлом 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')

Обратите внимание, что все файлы в том же дереве каталогов, что и entry_point , будут упакованы в созданный образ Docker вместе с файлом entry_point . Как и в приведенном выше сценарии entry_point Python, мы рекомендуем создать новый каталог для размещения каждого облачного проекта, включающий необходимые файлы и ничего больше, чтобы оптимизировать время сборки образа.

Использование run внутри скрипта Python, содержащего модель tf.keras .

Вы можете использовать API run из файла Python, который содержит модель tf.keras ( mnist_scale.py ). В этом случае entry_point должна быть None . API run можно вызвать где угодно, и весь файл будет выполнен удаленно. В конце можно вызвать 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, будут упакованы в созданный образ Docker вместе с файлом Python. Рекомендуется создать новый каталог для каждого облачного проекта, включающий необходимые файлы и ничего больше, чтобы оптимизировать время создания образа.

Использование сценария run в блокноте, содержащего модель tf.keras .

Изображение колаба

В этом случае для параметра entry_point должно быть установлено значение None и необходимо указать docker_config.image_build_bucket , чтобы гарантировать возможность сохранения и публикации сборки.

Что происходит, когда вы вызываете run ?

Вызов API выполнит следующее:

  1. Подготовка объектов кода, таких как скрипт/блокнот Keras, облако и дистрибутив .
  2. Преобразование этого объекта распространения в Docker-контейнер с необходимыми зависимостями.
  3. Разверните этот контейнер в нужном масштабе и обучите его, используя стратегии распространения TensorFlow.
  4. Передавайте журналы и отслеживайте их на размещенном TensorBoard, управляйте хранилищем контрольных точек.

По умолчанию это локальный демон Docker для создания и публикации образов Docker в реестре контейнеров Google. Изображения публикуются по адресу gcr.io/your-gcp-project-id . Если вы укажете docker_config.image_build_bucket , мы будем использовать сборку Google Cloud для создания и публикации образов Docker.

Платформа Google AI используется для развертывания образов Docker в Google Cloud.