当 Tensorboard 尝试重用已杀死的 Windows PID 时如何重置它
How to reset Tensorboard when it tries to reuse a killed Windows PID
如果两天的挫败感泄露出去,我们深表歉意...
问题:无法可靠地运行 jupyter notebook 中的 Tensorboard(实际上是在 Jupyter Lab 中)
%tensorboard --logdir {logdir}
如果我终止 tensorboard 进程并在 notebook 中重新启动它说它正在重用死进程和端口,但是进程已经死了并且 netstat -ano | findstr :6006` 什么也没显示,所以端口看起来也关闭了。
问题:以$deity的名义,我如何让tensorboard从头开始重新启动并忘记它认为它知道的关于进程、端口等的信息?如果我能做到这一点,我就可以解决剩余路径等问题...
已知问题已经解决(我认为):需要转义Python字符串中的反斜杠以获得正确的路径和其他 OS 个小精灵;避免路径中的空格,确保大小写正确...
环境: Win 64-bit Home with Anaconda and Tensforflow-GPU 2 installed via conda install - TF正在工作并将数据写入通过回调给定的指定路径
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1) # logdir is the full path
但如果我能在笔记本中可靠地启动 Tensorboard,我就该死了。
我发现如果我启动一个 Anaconda 命令 window 并从那里调用 tensorboard tensorboard 就可以启动...
(TF2GPU_Anaconda) C:\Users\Julian>tensorboard --logdir "a:\tensorboard200102-112749"
2020-01-02 11:53:58.478848: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.0.0 at http://localhost:6006/ (Press CTRL+C to quit)
它在 localhost:6006 的 Chrome 中可以访问(具体来说 http://localhost:6006/#scalars&run=20200102-112749%5Ctrain
)(我将忽略张量板的 other 问题例如标量上的刷新失败、图形上的奇怪消息等)和
%tensorboard --logdir {logdir}
然后在笔记本和单独的 chrome 选项卡中显示 tensorboard。
但是! 虽然 tensorboard 在笔记本中报告它正在重用旧的死 PID,但实际上它是在一个完全不同的新 PID 上
我做错了什么,如何完全重置 tensorboard?
PS 最后一次(成功!)调用实际上是
%tensorboard --logdir {makeWindowsCmdPath('A:\tensorboard\20200102-112749')}
其中 makeWindowsCmdPath 定义为
def makeWindowsCmdPath(path):
return '\"' + str(path) + '\"'
更新 2020-01-03 最终成功的 MWE 已在 Github 的评论中上传,以响应包含 PID 引用错误的问题张量板
嘿——很遗憾得知您 运行 遇到了问题。完全是
合理的是你所描述的一切都是准确的,而且是我的
过错。 :-)
How in the name of $deity do I get tensorboard to restart from scratch
and forget what it thinks it knows about processes, ports etc.? If I
could do that I could hack away at residual path etc. issues...
您的临时目录中有一个名为 .tensorboard-info
的目录
它维护着我们的 TensorBoard 作业的最大努力注册表
认为是运行。当 TensorBoard 启动时(以任何方式,包括
使用 %tensorboard
),它将一个“信息文件”写入该目录,并且
当您使用 %tensorboard
时,我们首先检查是否有“兼容
instance”(相同的工作目录和 CLI args)仍然是 运行,如果
所以重用它。当 TensorBoard 实例干净地关闭时,它
删除自己的信息文件。这个想法是只要 TensorBoard 是
干净地关闭我们应该始终有一个准确的记录
进程是实时的,并且由于此注册表位于任何临时目录中
硬关机导致的错误将是短暂的。
但这就是我犯错的地方:来自 POSIX 世界而不是
非常熟悉 Windows 应用程序开发,我没有意识到
Windows 临时目录实际上并没有自动删除,
曾经。因此,任何簿记错误都会无限期地存在。
所以,你的问题的答案是,“删除 .tensorboard-info
位于 tempfile.gettempdir()
下的目录”(最好是当你
没有任何活跃的 运行 TensorBoard 实例)。
我们可以通过多种方式在 TensorBoard 中合理地解决这个问题
核心:参见 https://github.com/tensorflow/tensorboard/issues/2483
开始,我也考虑过分摊的方法,比如让每个
TensorBoard 实例在启动时对其他实例执行一些清理
时间。我们还没有开始实施这些。
让我知道这是否有帮助,或者是否无法解决您的问题。
如果两天的挫败感泄露出去,我们深表歉意...
问题:无法可靠地运行 jupyter notebook 中的 Tensorboard(实际上是在 Jupyter Lab 中)
%tensorboard --logdir {logdir}
如果我终止 tensorboard 进程并在 notebook 中重新启动它说它正在重用死进程和端口,但是进程已经死了并且 netstat -ano | findstr :6006` 什么也没显示,所以端口看起来也关闭了。
问题:以$deity的名义,我如何让tensorboard从头开始重新启动并忘记它认为它知道的关于进程、端口等的信息?如果我能做到这一点,我就可以解决剩余路径等问题...
已知问题已经解决(我认为):需要转义Python字符串中的反斜杠以获得正确的路径和其他 OS 个小精灵;避免路径中的空格,确保大小写正确...
环境: Win 64-bit Home with Anaconda and Tensforflow-GPU 2 installed via conda install - TF正在工作并将数据写入通过回调给定的指定路径
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1) # logdir is the full path
但如果我能在笔记本中可靠地启动 Tensorboard,我就该死了。
我发现如果我启动一个 Anaconda 命令 window 并从那里调用 tensorboard tensorboard 就可以启动...
(TF2GPU_Anaconda) C:\Users\Julian>tensorboard --logdir "a:\tensorboard200102-112749"
2020-01-02 11:53:58.478848: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.0.0 at http://localhost:6006/ (Press CTRL+C to quit)
它在 localhost:6006 的 Chrome 中可以访问(具体来说 http://localhost:6006/#scalars&run=20200102-112749%5Ctrain
)(我将忽略张量板的 other 问题例如标量上的刷新失败、图形上的奇怪消息等)和
%tensorboard --logdir {logdir}
然后在笔记本和单独的 chrome 选项卡中显示 tensorboard。
但是! 虽然 tensorboard 在笔记本中报告它正在重用旧的死 PID,但实际上它是在一个完全不同的新 PID 上
我做错了什么,如何完全重置 tensorboard?
PS 最后一次(成功!)调用实际上是
%tensorboard --logdir {makeWindowsCmdPath('A:\tensorboard\20200102-112749')}
其中 makeWindowsCmdPath 定义为
def makeWindowsCmdPath(path):
return '\"' + str(path) + '\"'
更新 2020-01-03 最终成功的 MWE 已在 Github 的评论中上传,以响应包含 PID 引用错误的问题张量板
嘿——很遗憾得知您 运行 遇到了问题。完全是 合理的是你所描述的一切都是准确的,而且是我的 过错。 :-)
How in the name of $deity do I get tensorboard to restart from scratch and forget what it thinks it knows about processes, ports etc.? If I could do that I could hack away at residual path etc. issues...
您的临时目录中有一个名为 .tensorboard-info
的目录
它维护着我们的 TensorBoard 作业的最大努力注册表
认为是运行。当 TensorBoard 启动时(以任何方式,包括
使用 %tensorboard
),它将一个“信息文件”写入该目录,并且
当您使用 %tensorboard
时,我们首先检查是否有“兼容
instance”(相同的工作目录和 CLI args)仍然是 运行,如果
所以重用它。当 TensorBoard 实例干净地关闭时,它
删除自己的信息文件。这个想法是只要 TensorBoard 是
干净地关闭我们应该始终有一个准确的记录
进程是实时的,并且由于此注册表位于任何临时目录中
硬关机导致的错误将是短暂的。
但这就是我犯错的地方:来自 POSIX 世界而不是 非常熟悉 Windows 应用程序开发,我没有意识到 Windows 临时目录实际上并没有自动删除, 曾经。因此,任何簿记错误都会无限期地存在。
所以,你的问题的答案是,“删除 .tensorboard-info
位于 tempfile.gettempdir()
下的目录”(最好是当你
没有任何活跃的 运行 TensorBoard 实例)。
我们可以通过多种方式在 TensorBoard 中合理地解决这个问题 核心:参见 https://github.com/tensorflow/tensorboard/issues/2483 开始,我也考虑过分摊的方法,比如让每个 TensorBoard 实例在启动时对其他实例执行一些清理 时间。我们还没有开始实施这些。
让我知道这是否有帮助,或者是否无法解决您的问题。