Spec-Zone.ru › TensorFlow

tf.compat.v1.tpu.CrossShardOptimizer

Оптимизатор, усредняющий градиенты по фрагментам TPU.

Наследуется от: Optimizer

tf.compat.v1.tpu.CrossShardOptimizer(
    opt,
    reduction=losses.Reduction.MEAN,
    name='CrossShardOptimizer',
    group_assignment=None
)

Используется в ноутбуках

Используется в руководстве
  • Миграция с TPU embedding_columns на слой TPUEmbedding
Аргументы
opt Существующий Optimizer для инкапсуляции.
reduction Редукция для применения к потерям фрагмента.
name Необязательный префикс имени для операций, созданных при применении градиентов. По умолчанию "CrossShardOptimizer".
group_assignment Необязательные 2-мерные списки int32 с формой [num_groups, num_replicas_per_group], описывающие способ применения оптимизатора к подгруппам.
Исключения
ValueError Если редукция не является допустимой редукцией для кросс-фрагментного вычисления.

Методы

apply_gradients

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

apply_gradients(
    grads_and_vars, global_step=None, name=None
)

Применение градиентов к переменным.

Вызывает tpu_ops.cross_replica_sum() для суммирования вкладов градиентов по репликам, а затем применяет реальный оптимизатор.

Аргументы
grads_and_vars Список пар (градиент, переменная), возвращаемых compute_gradients().
global_step Необязательная переменная, увеличиваемая на единицу после обновления переменных.
name Необязательное имя возвращаемой операции. По умолчанию — имя, переданное в конструктор оптимизатора.
Возвращаемое значение
Операция, применяющая градиенты. Если global_step не равно None, эта операция также увеличивает global_step.
Исключения
ValueError Если grads_and_vars имеет неправильный формат.

compute_gradients

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

compute_gradients(
    loss, var_list=None, **kwargs
)

Вычисление градиентов "loss" для переменных в "var_list".

Просто оборачивает compute_gradients() от реального оптимизатора. Градиенты будут агрегированы в apply_gradients(), чтобы пользователь мог изменять градиенты, например, применять обрезку по глобальной норме с учетом каждой реплики, если это необходимо. Глобальная норма с агрегированными градиентами может быть плохой, так как большие градиенты одной реплики могут повлиять на градиенты других реплик.

Когда CrossShardOptimizer создается с reduction == losses.Reduction.MEAN (по умолчанию), эта функция масштабирует loss на 1.0 / num_shards перед вычислением градиентов. Предполагая, что оптимизатор использует реализацию compute_gradients() по умолчанию, градиенты масштабированной loss масштабируются на 1.0 / num_shards по сравнению с градиентами исходной loss. Этот коэффициент масштабирования важен, поскольку apply_gradients() суммирует градиенты по фрагментам, а не усредняет их. Однако коэффициент масштабирования необходимо учитывать при обрезке нормы градиентов или выполнении других постпроцессингов.

Аргументы
loss Тензор, содержащий значение для минимизации.
var_list Необязательный список или кортеж tf.Variable для обновления, чтобы минимизировать loss. По умолчанию — список переменных, собранных в графе по ключу GraphKey.TRAINABLE_VARIABLES.
**kwargs Параметры для compute_gradients().
Возвращаемое значение
Список пар (градиент, переменная).
Исключения
ValueError Если не внутри tpu_shard_context или group_assignment некорректен.

get_name

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

get_name()

get_slot

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

get_slot(
    *args, **kwargs
)

Возвращает слот с именем "name", созданный для "var" оптимизатором.

Просто оборачивает get_slot() фактического оптимизатора.

Аргументы
*args Аргументы для get_slot().
**kwargs Параметры для get_slot().
Возвращаемое значение
Переменная для слота, если она была создана, или None иначе.

get_slot_names

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

get_slot_names(
    *args, **kwargs
)

Возвращает список имён слотов, созданных Optimizer.

Просто оборачивает get_slot_names() фактического оптимизатора.

Аргументы
*args Аргументы для get_slot().
**kwargs Параметры для get_slot().
Возвращаемое значение
Список строк.

minimize

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

minimize(
    loss,
    global_step=None,
    var_list=None,
    gate_gradients=GATE_OP,
    aggregation_method=None,
    colocate_gradients_with_ops=False,
    name=None,
    grad_loss=None
)

Добавление операций для минимизации loss путем обновления var_list.

Этот метод просто объединяет вызовы compute_gradients() и apply_gradients(). Если вы хотите обработать градиент перед применением, вызовите compute_gradients() и apply_gradients() явно вместо использования этой функции.

Аргументы
loss Тензор, содержащий значение для минимизации.
global_step Необязательная переменная, увеличиваемая на единицу после обновления переменных.
var_list Необязательный список или кортеж объектов переменных для обновления, чтобы минимизировать loss. По умолчанию — список переменных, собранных в графе по ключу GraphKeys.TRAINABLE_VARIABLES.
gate_gradients Способ управления вычислением градиентов. Может быть GATE_NONE, GATE_OP или GATE_GRAPH.
aggregation_method Указывает метод комбинирования членов градиента. Допустимые значения определены в классе AggregationMethod.
colocate_gradients_with_ops Если True, попытаться поместить градиенты в область видимости соответствующей операции.
name Необязательное имя возвращаемой операции.
grad_loss Необязательно. Тензор, содержащий градиент, вычисленный для loss.
Возвращаемое значение
Операция, обновляющая переменные в var_list. Если global_step не равно None, эта операция также увеличивает global_step.
Исключения
ValueError Если некоторые переменные не являются объектами Variable.

жадное соответствие

При включенном режиме жадного выполнения, loss должна быть функцией Python, которая не принимает аргументов и вычисляет значение, которое нужно минимизировать. Минимизация (и вычисление градиента) выполняется относительно элементов var_list, если оно не равно None, иначе относительно всех обучаемых переменных, созданных во время выполнения функции loss. gate_gradients, aggregation_method, colocate_gradients_with_ops и grad_loss игнорируются при включенном режиме жадного выполнения.

variables

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

variables()

Передача переменных из базового оптимизатора.

Переменные класса
GATE_GRAPH 2
GATE_NONE 0
GATE_OP 1

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/tpu/CrossShardOptimizer

Spec-Zone.ru

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