You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么TensorFlow在GTX 2060笔记本GPU上运行速度比CPU慢?

问题核心原因

当前训练场景的计算量过小,GPU的数据传输、初始化开销超过了并行计算带来的收益,因此出现GPU比CPU慢的情况,具体诱因和解决方法如下:


具体诱因

  • 数据集规模太小:15MB的CSV对应的训练样本量不足,单批次计算量极低,CPU和GPU之间的内存到显存的数据传输耗时,盖过了GPU的并行计算收益。
  • batch size设置过小:代码中fit方法未指定batch size,Keras默认使用32的小batch,GPU并行核心无法被充分调用,大部分时间处于闲置状态。
  • 模型计算量太低:整个网络仅包含4层小通道数的1D卷积+1层70单元的LSTM,总参数量极低,CPU本身就可以快速完成计算,不需要调用GPU。
  • 额外IO开销占比高:训练时每个epoch都执行保存检查点、写CSV日志的操作,小数据集下单个epoch耗时极短,频繁的磁盘IO操作进一步拉高了总耗时。
  • 注:你提供的代码中存在HTML转义字符",实际运行时需要全部替换为普通双引号",否则会报语法错误。

优化方案

  • 调大batch size:在cnn.fit参数中添加batch_size=512(可根据GTX2060的6G显存调整到1024甚至更高,只要不出现OOM报错即可),减少数据传输次数,提升GPU利用率。
  • 减少不必要的IO操作:调整ModelCheckpoint的保存频率,添加参数save_freq=10,改为每10个epoch保存一次检查点,降低磁盘IO占比。
  • 把数据提前加载到显存:预处理完成后,将X_train、y_train、X_test、y_test转换为TensorFlow张量并预存到显存,避免每轮训练都重复从内存拷贝数据,示例代码如下:
import tensorflow as tf
X_train = tf.convert_to_tensor(X_train, dtype=tf.float32)
y_train = tf.convert_to_tensor(y_train, dtype=tf.float32)
X_test = tf.convert_to_tensor(X_test, dtype=tf.float32)
y_test = tf.convert_to_tensor(y_test, dtype=tf.float32)
  • 确认环境配置正确:执行以下代码确认GPU被正确识别,且CUDA、cuDNN版本与TensorFlow版本匹配:
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))

如果上述优化后速度仍不符合预期,由于当前任务的计算量极低,直接使用CPU训练反而性价比更高。GPU的性能优势只有在大数据集、大参数量模型、大batch的训练场景下才能充分发挥。


内容的提问来源于stack exchange,提问作者Radu Florin Tudorache

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:18:03