python - 为什么我的 CNN 模型在本地 CPU 上的训练时间比托管选项要少?
问题描述
我对深度学习完全陌生,我一直在学习一些教程,这些教程主要使用托管的 Jupyter 笔记本(Azure 和 Colaboratory)。我正处于开始尝试自己的神经网络的阶段;但是,我对应该在哪里训练我的 keras 模型感到有些困惑。为了做出决定,我在几个不同的地方运行了以下模型,总而言之,我的 i5 6500 CPU 排在第二位,这让我感到非常困惑。更令人困惑的是,使用 8 个虚拟 CPU 运行 Google Cloud Compute 比在我的 CPU 上运行要慢。我还没有尝试过我的 GTX1060 GPU;但是,假设它的性能甚至比我的 CPU 还要好,这似乎是合理的。为什么我会得到这些结果?人们通常在哪里训练他们的机器学习模型?我的结果如下。
from keras.datasets import mnist
from keras.preprocessing.image import load_img, array_to_img
from keras.utils.np_utils import to_categorical
from keras.models import Sequential
from keras.layers import Dense
image_height, image_width = 28, 28
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(60000, image_height * image_width)
x_test = x_test.reshape(10000, image_height * image_width)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255.0
x_test /= 255.0
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(784,)))
model.add(Dense(512, activation='relu'))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(x_train, y_train, epochs=2, validation_data=(x_test, y_test))
我在以下位置尝试了上述代码段。以下是每个时代的时间。
- 我的 i5 6500 CPU:20 秒
- 带 CPU 的协作笔记本:27s
- 带 GPU 的 Colaboratory Notebook:8 秒(预期)
- 带 TPU 的协作笔记本:26 秒
- 带 CPU 的 Azure Notebook:60 秒
- 谷歌云计算 Jupyterlab:4vCPUs:36s
- 谷歌云计算 Jupyterlab:8vCPUs:40s
不幸的是,使用 GPU 运行 Google Cloud Compute 需要我升级我的免费帐户,所以我没有尝试过。
解决方案
推荐阅读
- c++ - 将 memset 用于特定行的二维数组
- reactjs - 如何使用带有 React.js 的 Material-ui 在自动完成菜单上添加更新和删除按钮
- javascript - Ajax 查询以在 django admin 中获取下拉项目
- reactjs - 使用套接字更新 mui 数据网格,仅添加一个元素
- artificial-intelligence - 如何奖励代理在自我对抗游戏强化学习中的行为?
- python - itertools groupby中没有出现值 - python
- pine-script - 函数“max_bars_back”未按预期工作
- sqlite - 为什么我会得到“不明确的列名:account.accrued”?
- python - 将列表元素拆分为python中的列表
- c# - Unity UI - 如何制作“复合”布局组以在同一位置组合多个图像?