TensorFlow:不同GPU上的不同结果

时间:2017-09-19 15:07:51

标签: tensorflow gpgpu object-detection tensorflow-gpu

系统信息

  • 您正在使用的模型的顶级目录是什么: 使用未经修改的预训练coco模型:faster_rcnn_inception_resnet_v2_atrous_coco_11_06_2017,faster_rcnn_resnet101_coco_11_06_2017,rfcn_resnet101_coco_11_06_2017

  • 我是否编写过自定义代码(与使用TensorFlow中提供的库存示例脚本相反): 否

  • OS平台和分发(例如,Linux Ubuntu 16.04): 更新:现在在两台机器上测试,都重现它: 机器1:Linux Ubuntu 14.04.4 LTS 机器2:Linux Ubuntu 16.04.2 LTS

  • 从(来源或二进制)安装的TensorFlow : 官方码头集装箱,最后一次提交58fb6d7e257f28cd7934316d6ae7a81ec42a533a docker version from 2017-08-24T02:37:57.51182742Z cuda_memtest.log.txt

  • TensorFlow版本(使用下面的命令): (' v1.2.0-5-g435cdfc',' 1.2.1')

  • Bazel版本(如果从源代码编译): N / A

  • CUDA / cuDNN版本: 来自官方码头:CUDA 8.,cuDNN 5.1.10

  • GPU型号和内存: 机器1:三个nVIDIA GeForce GTX 1080,12 GB 机器2:两个nVIDIA GeForce GTX 1080,12 GB

  • 重现的确切命令: 使用不同的GPU运行object_detection_tutorial.ipynb,可以使用export CUDA_VISIBLE_DEVICES =,也可以在会话配置中设置它。包含多次运行3个GPU并比较输出的版本。

描述问题

在不同的GPU上运行会产生不同的结果,而GPU 1和2则不具有确定性。这是使用来自此存储库的链接model zoo和提供的object_detection_tutorial.ipynb的冻结预训练网络,除了设置cuda visible_device_list之外没有任何修改。然而,SSD冻结模型在我看到的3个GPU上提供了相同的输出。

我还在所有3个GPU上运行了cuda_memtest,附加了日志

更新:我刚刚在第二台机器上测试了2个GPU,并重现了这个问题。 GPU 0是确定性的,GPU 1不是(并且经常产生不良结果)。

源代码/日志

我已经附加了修改过的object_detection_tutorial.ipynb的差异,它在3个GPU上循环3次并打印出顶部分数,这些分数根据运行情况而变化。附上的是ipynb的PDF,上面有检测。文字输出:

> Evaluating image 0
> 
>   Running on GPU 0
>       Top 4 box scores: 
>       Iter 1: [ 0.99978215  0.99857557  0.95300484  0.91580492]
>       Iter 2: [ 0.99978215  0.99857557  0.95300484  0.91580492]
>       Iter 3: [ 0.99978215  0.99857557  0.95300484  0.91580492]
> 
>   Running on GPU 1
>       Top 4 box scores: 
>       Iter 1: [ 0.68702352  0.16781448  0.13143283  0.12993629]
>       Iter 2: [ 0.18502565  0.16854601  0.08074528  0.07859289]
>       Iter 3: [ 0.18502565  0.16854601  0.05546702  0.05111229]
> 
>   Running on GPU 2
>       Top 4 box scores: 
>       Iter 1: [ 0.68702352  0.16781448  0.13143283  0.12993629]
>       Iter 2: [ 0.18941374  0.18502565  0.16854601  0.16230994]
>       Iter 3: [ 0.18502565  0.16854601  0.05546702  0.05482833]
> 
> 
> Evaluating image 1
> 
>   Running on GPU 0
>       Top 4 box scores: 
>       Iter 1: [ 0.99755412  0.99750346  0.99380219  0.99067008]
>       Iter 2: [ 0.99755412  0.99750346  0.99380219  0.99067008]
>       Iter 3: [ 0.99755412  0.99750346  0.99380219  0.99067008]
> 
>   Running on GPU 1
>       Top 4 box scores: 
>       Iter 1: [ 0.96881998  0.96441168  0.96164131  0.96006596]
>       Iter 2: [ 0.9377929   0.91686022  0.80374646  0.79758978]
>       Iter 3: [ 0.90396696  0.89217037  0.85456908  0.85334581]
> 
>   Running on GPU 2
>       Top 4 box scores: 
>       Iter 1: [ 0.9377929   0.91686022  0.80374646  0.79758978]
>       Iter 2: [ 0.9377929   0.91686022  0.80374646  0.79758978]
>       Iter 3: [ 0.9377929   0.91686022  0.80374646  0.79758978]

object_detection_tutorial.diff.txt

gpu_output_differences.pdf

更新了更长时间: cuda_memtest.log.txt

0 个答案:

没有答案