tf.debugging.experimental.enable_dump_debug_info
Включить выгрузку отладочной информации из программы TensorFlow.
tf.debugging.experimental.enable_dump_debug_info(
dump_root, tensor_debug_mode=DEFAULT_TENSOR_DEBUG_MODE,
circular_buffer_size=1000, op_regex=None, tensor_dtypes=None
)
Отладочная информация выгружается в каталог на файловой системе, указанный как dump_root.
Выгруженную отладочную информацию можно использовать в интерфейсах отладчиков.
Файлы в каталоге выгрузки содержат следующую информацию:
- Конструкцию функции TensorFlow (например, компиляцию функций Python, помеченных аннотацией @tf.function), типы операций, имена (если доступны), контекст, входные и выходные тензоры и соответствующие трассировки стека.
- Выполнение операций (ops) и функций TensorFlow, а также их трассировки стека, типы операций, имена (если доступны) и контексты. Кроме того, в зависимости от значения аргумента
tensor_debug_mode(см. раздел Аргументы ниже), будут выгружаться значения выходных тензоров или более краткие сводки значений тензоров. - Снимок файлов исходного кода Python, участвующих в выполнении программы TensorFlow.
После включения выгрузки ее можно отключить с помощью соответствующего метода disable_dump_debug_info() в том же пространстве имен Python. Вызов этого метода более одного раза с одинаковыми dump_root является идемпотентным. Вызов этого метода более одного раза с разными tensor_debug_mode приводит к ValueError. Вызов этого метода более одного раза с разными circular_buffer_size приводит к ValueError. Вызов этого метода с другим dump_root отменяет ранее включенную dump_root.
Пример использования:
tf.debugging.experimental.enable_dump_debug_info('/tmp/my-tfdbg-dumps')
# Code to build, train and run your TensorFlow model...
Примечание: Если ваш код выполняется на TPUs, убедитесь, что вы вызываетеtf.config.set_soft_device_placement(True)перед вызовомtf.debugging.experimental.enable_dump_debug_info(), так как этот API использует автоматическую компиляцию вне TPU. Например:
tf.config.set_soft_device_placement(True)
tf.debugging.experimental.enable_dump_debug_info(
logdir, tensor_debug_mode="FULL_HEALTH")
resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='')
strategy = tf.distribute.TPUStrategy(resolver)
with strategy.scope():
# ...
| Аргументы | |
|---|---|
dump_root | Путь к каталогу, куда будет записана информация о выгрузке. |
tensor_debug_mode | Режим отладки значений тензоров в виде строки. В настоящее время поддерживаются следующие варианты:
|
circular_buffer_size | Размер циклических буферов для событий выполнения. Эти циклические буферы предназначены для уменьшения накладных расходов при отладке выгрузки. Они хранят самые последние события отладки, касающиеся выполнения операций в режиме eager и tf.function и трассировки значений тензоров, вычисленных внутри tf.function. Они записываются на файловую систему только при вызове соответствующего метода сброса (см. описание возвращаемых значений ниже). Ожидается, что это будет целое число. Если значение ≤ 0, поведение циклического буфера будет отключено, т. е. события отладки выполнения будут записываться в файловые записи так же, как и события невыполнения, такие как создание операций и снимки файлов исходного кода. |
op_regex | Выгружать данные только из тензоров типов операций, соответствующих регулярному выражению (через Python's re.match()). "Тип операции" относится к именам операций TensorFlow (например, "MatMul", "LogSoftmax"), которые могут повторяться в функции TensorFlow. Это не относится к именам узлов (например, "dense/MatMul", "dense_1/MatMul_1"), которые уникальны в пределах функции. op_regex="^(MatMul|Relu)$".op_regex="(?!^Relu$)". Этот фильтр работает в логическом отношении И с tensor_dtypes. |
tensor_dtypes | Выгружать данные только из тензоров указанных типов. Этот необязательный аргумент может быть в любом из следующих форматов: DType объектов или строк, которые можно преобразовать в DType объекты с помощью tf.as_dtype(). Примеры:tensor_dtype=[tf.float32, tf.float64],tensor_dtype=["float32", "float64"],tensor_dtypes=(tf.int32, tf.bool),tensor_dtypes=("int32", "bool")DType и возвращающая Python boolean, указывающий, следует ли включать тип в выгрузку данных. Примеры:tensor_dtype=lambda dtype: dtype.is_integer. Этот фильтр работает в логическом отношении И с op_regex. |
| Возвращаемое значение | |
|---|---|
Экземпляр DebugEventsWriter, используемый функцией выгрузки. Вызывающая сторона может использовать его методы сброса, включая FlushNonExecutionFiles() и FlushExecutionFiles(). |
© 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/debugging/experimental/enable_dump_debug_info