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 выполнит следующее:
- Подготовка объектов кода, таких как скрипт/блокнот Keras, облако и дистрибутив .
- Преобразование этого объекта распространения в Docker-контейнер с необходимыми зависимостями.
- Разверните этот контейнер в большом масштабе и обучите его, используя стратегии распространения TensorFlow.
- Передавайте журналы и отслеживайте их на размещенном TensorBoard, управляйте хранилищем контрольных точек.
По умолчанию локальный демон Docker для создания и публикации образов Docker в реестре контейнеров Google. Изображения публикуются по адресу gcr.io/your-gcp-project-id
. Если вы укажете docker_config.image_build_bucket
, мы будем использовать сборку Google Cloud для создания и публикации образов Docker.
Платформа Google AI используется для развертывания образов Docker в Google Cloud.