tf.xla.experimental.jit_scope
Включает или отключает 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 | Если значение равно true, помещает каждый подграф градиента в отдельную область компиляции. Это позволяет точно управлять тем, какие части графа будут скомпилированы как единое целое. Раздельная компиляция градиентов может повысить производительность некоторых графов. Область действия получает имя на основе области действия прямого вычисления, а также имени градиентов. В результате градиенты компилируются в области, отдельной как от прямого вычисления, так и от других градиентов. |
| Вызывает исключение | |
|---|---|
RuntimeError | если функция вызвана при включённом eager execution. |
| Возвращает | |
|---|---|
| Текущую область действия, в которой компиляция включена или отключена. |
© 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/xla/experimental/jit_scope