tf.xla.experimental.jit_scope
| Просмотреть исходный код на GitHub |
Включить или отключить JIT-компиляцию операторов в области действия.
@contextlib.contextmanager
tf.xla.experimental.jit_scope(
compile_ops=True, separate_compiled_gradients=False
)
Примечание: Это экспериментальная функция.
Компиляция является подсказкой и поддерживается только в лучшем случае.
Пример использования:
with tf.xla.experimental.jit_scope():
c = tf.matmul(a, b) # compiled
with tf.xla.experimental.jit_scope(compile_ops=False):
d = tf.matmul(a, c) # not compiled
with tf.xla.experimental.jit_scope(
compile_ops=lambda node_def: 'matmul' in node_def.op.lower()):
e = tf.matmul(a, b) + d # matmul is compiled, the addition is not.
Пример separate_compiled_gradients:
# In the example below, the computations for f, g and h will all be compiled
# in separate scopes.
with tf.xla.experimental.jit_scope(
separate_compiled_gradients=True):
f = tf.matmul(a, b)
g = tf.gradients([f], [a, b], name='mygrads1')
h = tf.gradients([f], [a, b], name='mygrads2')
Операции, которые не находятся в области действия, могут быть объединены и скомпилированы с операциями в области действия с compile_ops=True, в то время как операции в области действия с compile_ops=False никогда не будут скомпилированы.
Например:
# In the example below, x and loss may be clustered and compiled together, # while y will not be compiled. with tf.xla.experimental.jit_scope(): x = tf.matmul(a, b) with tf.xla.experimental.jit_scope(compile_ops=False): y = tf.matmul(c, d) loss = x + y
Если вы хотите скомпилировать только операции в области действия с compile_ops=True, рассмотрите добавление внешней области jit_scope(compile_ops=False):
# In the example below, only x will be compiled.
with tf.xla.experimental.jit_scope(compile_ops=False):
with tf.xla.experimental.jit_scope():
x = tf.matmul(a, b)
y = tf.matmul(c, d)
loss = x + y
| Аргументы | |
|---|---|
compile_ops | Включить или отключить компиляцию в области действия. Либо булево значение Python, либо вызываемая функция, которая принимает параметр node_def и возвращает булево значение Python. |
separate_compiled_gradients | Если значение истинно, каждый подграф градиента помещается в отдельную область компиляции. Это дает тонкую настройку контроля над тем, какие части графа будут скомпилированы как единица. Отдельная компиляция градиентов может обеспечить лучшую производительность для некоторых графов. Область действия называется на основе области действия вычисления вперёд, а также имени градиентов. В результате градиенты будут скомпилированы в области действия, которая отделена как от вычисления вперёд, так и от других градиентов. |
| Исключения | |
|---|---|
RuntimeError | если вызов происходит, когда включено выполнение в режиме eager. |
| Возвращает | |
|---|---|
| Текущая область действия, которая включает или отключает компиляцию. |
© 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.4/api_docs/python/tf/xla/experimental/jit_scope