tf.compat.v1.tpu.CrossShardOptimizer
Оптимизатор, усредняющий градиенты между сегментами TPU.
Наследует от: Optimizer
tf.compat.v1.tpu.CrossShardOptimizer(
opt,
reduction=losses.Reduction.MEAN,
name='CrossShardOptimizer',
group_assignment=None
)
Используется в блокнотах
| Используется в руководстве |
|---|
| Аргументы | |
|---|---|
opt | Существующий Optimizer для обёртывания. |
reduction | Операция редукции, применяемая к потерям сегментов. |
name | Необязательный префикс имени для операций, создаваемых при применении градиентов. По умолчанию — "CrossShardOptimizer". |
group_assignment | Необязательные списки int32 размерности 2 с формой [num_groups, num_replicas_per_group], описывающие, как применять оптимизатор к подгруппам. |
| Исключения | |
|---|---|
ValueError | Если reduction не является допустимой межсегментной операцией редукции. |
Методы
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 | Необязательное имя возвращаемой операции. По умолчанию используется имя, переданное конструктору Optimizer. |
| Возвращает | |
|---|---|
Operation, применяющую градиенты. Если 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(), градиенты масштабированной функции потерь будут масштабированы на 1.0 / num_shards относительно градиентов исходной функции потерь. Этот коэффициент масштабирования важен, поскольку 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(). |
| Возвращает | |
|---|---|
Variable для слота, если он был создан, в противном случае — 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 | Tensor, содержащий минимизируемое значение. |
global_step | Необязательный Variable, значение которого увеличивается на единицу после обновления переменных. |
var_list | Необязательный список или кортеж объектов Variable, которые необходимо обновить для минимизации loss. По умолчанию используется список переменных, собранных в графе под ключом GraphKeys.TRAINABLE_VARIABLES. |
gate_gradients | Способ управления вычислением градиентов. Может принимать значения GATE_NONE, GATE_OP или GATE_GRAPH. |
aggregation_method | Указывает метод объединения слагаемых градиента. Допустимые значения определены в классе AggregationMethod. |
colocate_gradients_with_ops | Если True, попытаться разместить градиенты совместно с соответствующей операцией. |
name | Необязательное имя возвращаемой операции. |
grad_loss | Необязательный параметр. Tensor, содержащий градиент, вычисленный для loss. |
| Возвращает | |
|---|---|
Операцию, обновляющую переменные из var_list. Если global_step не равно None, эта операция также увеличивает global_step. |
| Исключения | |
|---|---|
ValueError | Если некоторые переменные не являются объектами Variable. |
Совместимость с eager execution
Если eager execution включён, loss должна быть функцией Python без аргументов, вычисляющей минимизируемое значение. Минимизация (и вычисление градиента) выполняется относительно элементов var_list, если параметр не равен None, или относительно всех обучаемых переменных, созданных при выполнении функции loss. При включённом eager execution параметры 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