Spec-Zone.ru › TensorFlow 2.3

tf.keras.utils.multi_gpu_model

Просмотреть исходный код на GitHub

Реплицирует модель на разных GPU. (устарело)

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.keras.utils.multi_gpu_model

tf.keras.utils.multi_gpu_model(
    model, gpus, cpu_merge=True, cpu_relocation=False
)
Предупреждение: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена после 2020-04-01. Инструкции по обновлению: Используйте tf.distribute.MirroredStrategy вместо этого.

В частности, эта функция реализует параллелизм данных с использованием нескольких GPU на одной машине. Она работает следующим образом:

  • Разделяет входные данные модели на несколько суб-пачек.
  • Применяет копию модели к каждой суб-пачке. Каждая копия модели выполняется на выделенном GPU.
  • Объединяет результаты (на CPU) в одну большую пачку.

Например, если ваш batch_size равен 64, и вы используете gpus=2, тогда мы разделим входные данные на 2 суб-пачки по 32 образца, обработаем каждую суб-пачку на одном GPU, а затем вернем полную пачку из 64 обработанных образцов.

Это обеспечивает квазилинейное ускорение на до 8 GPU.

Эта функция доступна только с бэкэндом TensorFlow на данный момент.

Аргументы
model Экземпляр модели Keras. Для избежания ошибок OOM, эта модель может быть построена на CPU, например (см. пример использования ниже).
gpus Целое число >= 2, количество GPU, на которых нужно создать реплики модели.
cpu_merge Булево значение, определяющее, следует ли принудительно объединять веса модели в области CPU.
cpu_relocation Булево значение, определяющее, следует ли создавать веса модели в области CPU. Если модель не определена в какой-либо области устройства, вы можете исправить это, активировав этот параметр.
Возвращает
Экземпляр Keras Model , который можно использовать так же, как и начальный аргумент model, но который распределяет свою нагрузку на несколько GPU.

Пример 1: Обучение моделей с объединением весов на CPU

import tensorflow as tf
from keras.applications import Xception
from keras.utils import multi_gpu_model
import numpy as np

num_samples = 1000
height = 224
width = 224
num_classes = 1000

# Instantiate the base model (or "template" model).
# We recommend doing this with under a CPU device scope,
# so that the model's weights are hosted on CPU memory.
# Otherwise they may end up hosted on a GPU, which would
# complicate weight sharing.
with tf.device('/cpu:0'):
    model = Xception(weights=None,
                     input_shape=(height, width, 3),
                     classes=num_classes)

# Replicates the model on 8 GPUs.
# This assumes that your machine has 8 available GPUs.
parallel_model = multi_gpu_model(model, gpus=8)
parallel_model.compile(loss='categorical_crossentropy',
                       optimizer='rmsprop')

# Generate dummy data.
x = np.random.random((num_samples, height, width, 3))
y = np.random.random((num_samples, num_classes))

# This `fit` call will be distributed on 8 GPUs.
# Since the batch size is 256, each GPU will process 32 samples.
parallel_model.fit(x, y, epochs=20, batch_size=256)

# Save model via the template model (which shares the same weights):
model.save('my_model.h5')

Пример 2: Обучение моделей с объединением весов на CPU с использованием cpu_relocation

..
# Not needed to change the device scope for model definition:
model = Xception(weights=None, ..)

try:
    model = multi_gpu_model(model, cpu_relocation=True)
    print("Training using multiple GPUs..")
except:
    print("Training using single GPU or CPU..")

model.compile(..)
..

Пример 3: Обучение моделей с объединением весов на GPU (рекомендуется для NV-link)

..
# Not needed to change the device scope for model definition:
model = Xception(weights=None, ..)

try:
    model = multi_gpu_model(model, cpu_merge=False)
    print("Training using multiple GPUs..")
except:
    print("Training using single GPU or CPU..")
model.compile(..)
..
Возможные исключения
ValueError если аргумент gpus не соответствует доступным устройствам.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/keras/utils/multi_gpu_model

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API