tensorflow TF2在包含三阶导数的损失函数下停止在GPU模式下工作,

3df52oht  于 5个月前  发布在  其他
关注(0)|答案(5)|浏览(59)

请确保这是一个bug。根据我们的
GitHub Policy ,
我们只在GitHub上解决代码/文档bug、性能问题、功能请求和
构建/安装问题。标签:bug_template*

系统信息

  • 我是否编写了自定义代码(与使用TensorFlow提供的库存示例脚本相反):自定义代码
  • OS平台和发行版(例如,Linux Ubuntu 16.04):Windows 10 20H2,OS构建19042.1348
  • 移动设备(例如iPhone 8,Pixel 2,Samsung Galaxy),如果问题发生在移动设备上:N/A
  • 从哪里安装的TensorFlow(源代码或二进制文件):anaconda pip install
  • TensorFlow版本(使用以下命令):v2.7.0-rc1-69-gc256c071bb2 2.7.0
  • Python版本:Python 3.7.4
  • Bazel版本(如果从源代码编译):N/A
  • GCC/编译器版本(如果从源代码编译):N/A
  • CUDA/cuDNN版本:cuda10.0/cudnn11.5
  • GPU型号和内存:2080TI & 1080TI

您可以使用我们的环境捕获 script 收集一些此信息。您还可以使用以下命令获取TensorFlow版本:

  1. TF 1.0: python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"
  2. TF 2.0: python -c "import tensorflow as tf; print(tf.version.GIT_VERSION, tf.version.VERSION)"

描述当前行为

在此处包含的情况中,手动定义的损失函数包括3阶导数。请在此附上包含python脚本的zip包:NS_tf2.py。
在NS_tf2.py中,该项的形式如下:

其中pred表示顺序网络的输出,var1和var2是Tensor。
在python脚本开头
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
用于选择cpu和gpu之间。
上面的代码在cpu模式下运行良好:
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
但在将硬件设置为1080ti或2080ti时会卡住。

描述预期行为

代码在gpu模式下运行

Contributing

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

提供一个最小必要的可复现测试用例,以生成问题。如果可能的话,请分享链接到Colab/Jupyter/任何笔记本。
请在附加的包中找到代码。请首先转到脚本目录以运行脚本。

其他信息/日志 包括有助于诊断问题的任何日志或源代码。如果包括回溯,请包括完整的回溯。大型日志和文件应附加。

请在附加的包中找到代码。请首先转到脚本目录以运行脚本。

balp4ylt

balp4ylt1#

@sanatmpa1 能够在使用 TensorFlow v2.7.0 和 tf-nightly(2.8.0.dev20211215)的 colab 上重现该问题,请参考附件中的代码片段。谢谢!

pw136qt2

pw136qt22#

@UsherWang,您能进一步解释一下"stalled"是什么意思吗?我打开了由@sushreebarsa编写的v2.7.0脚本,发现它一直运行到第840个纪元,然后收到了KeyboardInterrupt。

mkshixfv

mkshixfv3#

你好,@JW1992 ,

感谢你的回复。正如描述中提到的,在CPU模式下运行良好,但在我的环境设置下,在GPU模式下会出现卡顿。在@sushreebarsa所做的测试中,不清楚他/她使用的是哪个平台(C/GPU)。这里的"卡顿"指的是TensorFlow在特定的迭代步骤上陷入困境,继续运行并且长时间无法产生结果。

iklwldmw

iklwldmw4#

谢谢你,Usher。你的意思是在GPU上,代码会在特定的时期阻塞吗?这是可重复的(在同一时期停滞)吗?
如果你能找到一个更简单的复现方法,我们就能更容易地找到根本原因。

kxe2p93d

kxe2p93d5#

感谢@JW1992的回复。我记得在我系统中,这种行为是不确定的。它在不同尝试中停止的纪元号似乎有所不同。顺便说一下,我刚刚在我的linux系统上测试了这段代码,看起来这个问题在我自己的linux系统上没有发生,但在windows上出现了。

相关问题