问题类型
性能问题
你是否在TF nightly版本中复现了这个bug?
是的
问题来源
源代码
Tensorflow版本
'v1.12.1-89750-g9f16e373ca8', '2.13.0'
自定义代码
无
OS平台和发行版
Ubuntu 22.04
移动设备
- 无响应*
Python版本
3.10.6
Bazel版本
5.3.0
GCC/编译器版本
11.3.0
CUDA/cuDNN版本
12.0 / 8.8
GPU型号和内存
RTX 4090 Aorus Master
当前行为?
After upgrading to RTX4090 i installed cuda 12.0 + cudnn 8.8 and found that some models become slower (e.g. EfficientNets) and some not (SwinTransformer).
I localized the issue to combination of `DepthwiseConv2D + model.compile(jit_compile=True)`.
In my case this combination is 24 times slower then `Conv2D + model.compile(jit_compile=True)` and 8 times slower then `DepthwiseConv2D + model.compile(jit_compile=False)`.
Here are some numbers:
Colab + TF 2.11.0 with fp32
dw=True, jit_compile=True, ETA after 200 steps: 1:18:06
dw=False, jit_compile=True, ETA after 200 steps: 1:18:20
dw=True, jit_compile=False, ETA after 200 steps: 2:29:57
Colab + TF nightly with fp32
dw=True, jit_compile=True, ETA after 200 steps: 1:21:25
dw=False, jit_compile=True, ETA after 200 steps: 1:18:23
dw=True, jit_compile=False, ETA after 200 steps: 2:29:40
RTX4090 + Cuda 12.0 + Cudnn 8.8 + TF nightly with fp32
dw=True, jit_compile=True, ETA after 200 steps: 3:43:26
dw=False, jit_compile=True, ETA after 200 steps: 9:13
dw=True, jit_compile=False, ETA after 200 steps: 26:18
RTX4090 + Cuda 12.0 + Cudnn 8.8 + TF nightly with mixed_fp16
dw=True, jit_compile=True, ETA after 200 steps: 1:17:36
dw=False, jit_compile=True, ETA after 200 steps: 4:33
dw=True, jit_compile=False, ETA after 200 steps: 21:57
独立代码以重现问题
https://colab.research.google.com/drive/1KTMAVhpQLQhRphRfRjHNo8faR9NBOlK6#scrollTo=IEGDQp7G6aUq
相关日志输出
- 无响应*
8条答案
按热度按时间xzlaal3s1#
Downgrading to cuda 11.8 did not help.
But when i downgraded to TF 2.11 and cuda 11.2, depthwise conv become just 2 times slower then normal one.
Compilation from source with TF 2.11 and Cuda 11.2 required to limit compute compatibility with 8.6
And now, when running model i get warning:
dgjrabp22#
@shkarupa-alex,
感谢您报告此问题。此问题与Keras有关。Keras的开发已转移到另一个仓库。
您能否在此将此问题发布到keras-team/keras仓库?
如需了解更多信息,请参考:
感谢您!
sg2wtvxw3#
@tilakrayal,请问您能解释一下为什么您认为这个问题与Keras有关吗?
在底层,它使用了tf.nn.depthwise_conv2d,这是TensorFlow核心的一部分。除了这一点之外,这个层没有什么特别之处。
因此,我认为这个问题完全与TensorFlow有关。
jutyujz04#
@sachinprasadhs,
我能够在tensorflow v2.11和tf-nightly上重现这个问题。请查看这个问题的摘要here。
zzzyeukh5#
你好,TensorFlow 2.12或2.13仍是一个开发分支,我们计划在即将发布的Tensorflow 2.12版本中迁移cuDNN和CUDA版本。
在此之前,请根据以下发布的测试配置对其进行测试。
| 版本 | Python版本 | 编译器 | 构建工具 | cuDNN | CUDA |
| ------------ | ------------ | ------------ | ------------ | ------------ | ------------ |
| tensorflow_gpu-2.11.0 | 3.7-3.10 | MSVC 2019 | Bazel 5.3.0 | 8.1 | 11.2 |
根据你的发现,
DepthwiseConv2D
比Conv2D慢2倍,这可能是因为在DepthwiseConv2D中采用了不同的实现方法。fcg9iug36#
在此之前,请将以下文本内容与以下发布的测试配置进行对比。
@sachinprasadhs ,我的稳定版本和CUDA 11.2的测试结果在这里 #59772 (评论)
//ptxas警告,DWConv速度慢2倍
6yoyoihd7#
更令人困惑的是,带有jit_compile=True的DWConv比没有jit_compile的DWConv慢。
RTX4090 + Cuda 12.0 + Cudnn 8.8 + TF nightly with fp32
dw=True, jit_compile=True, 200步后的预计时间:3分43秒26
dw=False, jit_compile=True, 200步后的预计时间:9分13秒
dw=True, jit_compile=False, 200步后的预计时间:26分18秒
dzhpxtsq8#
在2.12版本的新鲜发布和cuda 11.8上测试,看到相同的数字。
Conv2D = 4分31秒 vs DepthwiseConv2d = 1小时17分22秒