关于Colab GPU速度较慢有很多问题,但在我的情况下,情况正好相反。我尝试用tensorflow 2.4.0训练LSTM -
- 我的本地GPU - NVIDIA 1660Ti(计算能力- 7.5) Colab GPU - Tesla K80(计算能力- 3.7)
在colab上,单个epoch大约需要3.5分钟,而在我的gpu上需要10.5分钟。现在,我看到的基准测试显示,1660Ti应该比特斯拉K80快得多,所以我无法找出导致这个问题的原因。我尝试了不同版本的nvidia驱动程序,cudnn和cuda,但似乎没有区别
基准测试:http://ai-benchmark.com/ranking.html型号说明:
Model: "model_2"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_2 (InputLayer) [(None, None)] 0
__________________________________________________________________________________________________
embedding_1 (Embedding) (None, None, 50) 1659000 input_2[0][0]
__________________________________________________________________________________________________
input_3 (InputLayer) [(None, 64)] 0
__________________________________________________________________________________________________
input_4 (InputLayer) [(None, 64)] 0
__________________________________________________________________________________________________
lstm_2 (LSTM) (None, None, 64) 29440 embedding_1[1][0]
input_3[0][0]
input_4[0][0]
__________________________________________________________________________________________________
lstm_3 (LSTM) [(None, None, 64), ( 33024 lstm_2[1][0]
__________________________________________________________________________________________________
dense (Dense) (None, None, 33180) 2156700 lstm_3[1][0]
==================================================================================================
Total params: 3,878,164
Trainable params: 2,219,164
Non-trainable params: 1,659,000
colab是否有tensorflow的优化版本?或者这和操作系统有关,因为我用的是Windows。请帮我一下。
From comments
我认为GPU比较没有意义,你的本地GPU是笔记本电脑一个,而特斯拉K80是一个数据中心GPU,有着很大的不同热剖面,而K80有三倍以上的计算核心比1660Ti。所有基准测试都接近可能会使用的工作负载,因此工作负载在这个基准测试偏向于包括INT8,而K80不是INT8很好,但是训练神经网络是在FP32上完成的。最后是K80是一个比笔记本电脑快得多的GPU。
我也这么怀疑,但是我的gpu在处理cnn时比Tesla K80要快,这就是我问这个问题的原因。
当然,MNIST cnn并没有真正告诉你很多关于性能的信息(太小了)模型),我的观点是不存在像GPU A那样的通用声明总是比GPU B快,这完全取决于工作负载,你只要在一个工作负载中,K80要快得多。事实并非如此考虑到它有3倍多的计算元素,令人惊讶。
(转述自史努比博士)