[Tensorboard尝试重用被杀死的Windows PID时如何重置

问题描述 投票:0回答:1

道歉,如果两天的挫败感通过...泄漏>

问题

:无法使用在jupyter笔记本中(实际上,在Jupyter Lab中)可靠地运行Tensorboard。
%tensorboard --logdir {logdir}

并且,如果我杀死了张量板进程,然后在笔记本中再次启动,它会说它正在重用无效的进程和端口,但是该进程已无效,并且netstat -ano | findstr:6006`没有显示任何内容,因此该端口也似乎处于关闭状态。

问题

:如何以$ deity的名义使tensorboard从头开始重新启动,却忘记它对进程,端口等的了解?如果可以的话,我可以解决残留路径等问题。

已经解决的已知问题(我[[思考

)):需要在Python字符串中转义反斜杠以获取正确的路径和其他OS语法;避免在路径中留空格,确保大小写正确...

Environment

:通过conda install安装了Anaconda和Tensforflow-GPU 2的Win 64位家庭版-TF正在工作,并将数据写入通过回叫给出的指定路径tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1) # logdir is the full path
但是我不能在笔记本中可靠地启动Tensorboard。

我发现如果我启动一个Anaconda命令窗口并从那里调用tensorboard,那么tensorboard会开始正常...]

(TF2GPU_Anaconda) C:\Users\Julian>tensorboard --logdir "a:\tensorboard\20200102-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)(我将忽略tensorboard的

other

问题,例如标量刷新失败,图形上的奇数消息等)。
%tensorboard --logdir {logdir}
然后在笔记本电脑和单独的chrome标签中显示张量板。

但是!

当张量板在笔记本中报告它正在重用旧的无效PID时,实际上是在完全不同的新PID上
我一直在做错什么,如何完全重置张量板?

PS

上一次(成功!)调用实际上是与%tensorboard --logdir {makeWindowsCmdPath('A:\\tensorboard\\20200102-112749')}
其中makeWindowsCmdPath定义为

def makeWindowsCmdPath(path): return '\"' + str(path) + '\"'

UPDATE

2020年1月3日,针对包含张量板的PID引用错误的问题,已在Github的注释中上传了最终成功的MWE。道歉,如果两天的挫败感消失了……问题:无法使用%tensorboard --logdir {logdir}在jupyter笔记本中(实际上在Jupyter Lab中)可靠地运行Tensorboard,并且如果我杀死了...

嘿,很抱歉得知您遇到了问题。完全是可能是您所描述的一切都是准确的,也是我的故障。 :-)

如何以$ deity的名义使张量板从头开始重新启动而忘记了它认为对进程,端口等有什么了解?如果我可以做到,我可以在剩余路径等处破解。

您的临时目录中有一个名为.tensorboard-info的目录维护我们的TensorBoard作业的尽力而为注册表认为正在运行。 TensorBoard启动时(以任何方式,包括使用%tensorboard),它将“信息文件”写入该目录,并且当您使用%tensorboard时,我们首先检查是否“兼容”实例”(相同的工作目录和CLI参数)仍在运行,如果因此,请重新使用它。当TensorBoard实例完全关闭时,它删除自己的信息文件。这个想法是,只要TensorBoard彻底关闭,我们应该始终准确记录进程是实时的,并且由于此注册表位于临时目录中,因此任何由于硬关闭而导致的错误将是短暂的。

但是这是我犯错的地方:来自POSIX世界,而不是我对Windows应用程序开发非常熟悉,但我没有意识到Windows临时目录实际上并未自动删除,曾经。因此,任何簿记错误会无限期存在。

因此,您的问题的答案是,“删除.tensorboard-info目录位于tempfile.gettempdir()下(最好是当您没有任何正在运行的TensorBoard实例)。

我们可以通过一些方法在TensorBoard中合理地解决此问题核心:请参阅https://github.com/tensorflow/tensorboard/issues/2483开始,我也考虑过分期摊销的方法,例如让每个TensorBoard实例在启动时执行其他实例的一些清理时间。我们尚未开始实施这些。

让我知道这是否有帮助或是否无法解决您的问题。

python windows jupyter-notebook tensorboard jupyter-lab
1个回答
0
投票
嘿,很抱歉得知您遇到了问题。完全是可能是您所描述的一切都是准确的,也是我的故障。 :-)
© www.soinside.com 2019 - 2024. All rights reserved.