tensorflow `tf.profiler.experimental.Trace`仅与名称为"TraceContext"的名称一起使用,

ih99xse1  于 4个月前  发布在  其他
关注(0)|答案(8)|浏览(104)

系统信息

  • 是否编写了自定义代码(与在TensorFlow中使用的库存示例脚本相反):是
  • OS平台和发行版(例如,Linux Ubuntu 16.04):Ubuntu 20.04
  • 移动设备(例如iPhone 8,Pixel 2,三星Galaxy)如果问题发生在移动设备上:
  • 从哪里安装的TensorFlow(源代码或二进制文件):二进制文件
  • TensorFlow版本(请使用以下命令):2.3.1
  • Python版本:3.8
  • Bazel版本(如果从源代码编译):
  • GCC/编译器版本(如果从源代码编译):
  • CUDA/cuDNN版本:10.1
  • GPU型号和内存:1080ti
    描述当前行为

Trace的名称参数必须完全为"TraceContext",否则“概述”页面不提供任何信息。有趣的是,其他页面仍然有效且具有所有正确的数据。但是标题页面已损坏,因此大多数用户不会想到查看其他页面,而只是假设整个事情都已损坏。

描述预期行为

它适用于任何名称

Contributing

  • 您是否想提交PR?(是/否):否
  • 简要描述您的候选解决方案(如果贡献):
    独立代码以重现问题
from datetime import datetime
import tensorflow as tf

b = tf.random.uniform([32,28,28,1])

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28, 1)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

def test(trace_name):
    logs = f"logs/{trace_name}" + datetime.now().strftime("%Y%m%d-%H%M%S")

    epoch = 0
    tf.profiler.experimental.start(logs)
    for step in range(100):
        if 1 < step < 100:
            with tf.profiler.experimental.Trace(trace_name):
                model(b)
        else:
            model(b)
    tf.profiler.experimental.stop()

test("TraceContext") # works fine
test("Broken") # no step marker observed error

其他信息/日志

7uzetpgm

7uzetpgm1#

为了加快故障排除过程,您能否与所有人分享带有所有依赖项的colab gist?谢谢。

4dbbbstv

4dbbbstv2#

这个问题已经被自动标记为过时,因为它没有最近的活动。如果没有进一步的活动发生,它将被关闭。谢谢。

rsaldnfx

rsaldnfx4#

笔记本需要什么权限?我刚刚设置为“任何有链接的人都可以查看”。

oipij1gg

oipij1gg5#

我能够复现在这里报告的问题。请找到 gist 。谢谢。

svmlkihl

svmlkihl6#

可以确认这对我来说也是在Tensorflow 2.6.0中发生的。
而且这里不仅仅是TraceContext这样的名称起作用。SessionRunFunctionRunRunGraph和其他主机事件也起作用。这些定义在:
tensorflow/tensorflow/core/profiler/utils/xplane_schema.cc
第68行的ed4d247
| | {"TraceContext", kTraceContext}, |

s4chpxco

s4chpxco7#

后续:Keras代码使用了另一个参数_r=1,这显然允许使用任何名称并仍然获得步骤:
tensorflow/tensorflow/python/keras/engine/training.py
第1182行到第1187行 in 760f923
| | withtrace.Trace( |
| | 'train', |
| | epoch_num=epoch, |
| | step_num=step, |
| | batch_size=batch_size, |
| | _r=1): |
示例有效:

with tf.profiler.experimental.Trace("trace_name", _r=1):
    train_step(b)
8nuwlpux

8nuwlpux8#

对于 TraceContext 的支持是用于遗留跟踪。请按照以下步骤收集新的跟踪信息。

相关问题