pyt*_*sta 1 python machine-learning deep-learning keras tensorflow
我目前正在学习 Keras。我的问题是,如果我在 RTX Titan 这样的高端 GPU 上训练模型,我可以导出模型,将其加载到另一台低端机器上的新程序中,然后仅使用 CPU 进行预测。那可能吗?
从理论上讲,我认为这就是机器学习的工作原理。该模型在高端 GPU 上进行训练,一旦导出,就可以加载到任何机器上,无论它是否有 GPU,并可用于进行预测。
如果不是,那么机器学习模型是否部署在具有许多 GPU 的高端服务器上?
是的,在 keras 中它将无缝工作。使用 TensorFlow 的 Keras 将检查 GPU 是否可用,如果可用,则模型将在 GPU 上进行训练。
同样,在加载模型时进行推理时,如果没有可用的 GPU,它将使用 CPU。
使用 google colab 进行实验
让我们使用“GPU”运行时开始谷歌协作
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
import tensorflow as tf
tf.compat.v1.debugging.set_log_device_placement(True)
print(tf.config.list_physical_devices('GPU'))
model = Sequential()
model.add(Dense(1024, input_dim=8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mse', optimizer='adam', metrics=['accuracy'])
X = np.random.randn(10,8)
y = np.random.randn(10)
model.fit(X, y, epochs=2)
model.save("model.h5")
Run Code Online (Sandbox Code Playgroud)
输出
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
Epoch 1/2
1/1 [==============================] - 0s 1ms/step - loss: 0.6570 - accuracy: 0.0000e+00
Epoch 2/2
1/1 [==============================] - 0s 983us/step - loss: 0.6242 - accuracy: 0.0000e+00
<tensorflow.python.keras.callbacks.History at 0x7fcad09366a0>
Run Code Online (Sandbox Code Playgroud)
因此,在本例中,模型是在可用的 GPU 上进行训练的。使用命令可以看到它占用了GPU !nvidia-smi。我们已将模型保存为model.h5. 让我们下载它并制作本地副本
现在让我们将 Colab 的运行时更改为“CPU”。让我们将我们的数据上传model.h5到协作实验室并进行预测。
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
import tensorflow as tf
from keras.models import load_model
tf.compat.v1.debugging.set_log_device_placement(True)
print(tf.config.list_physical_devices('GPU'))
model = load_model('model.h5')
model.predict(X)
Run Code Online (Sandbox Code Playgroud)
输出:
[]
array([[0.4464949 ],
[0.43229908],
[0.49823508],
[0.4367126 ],
[0.47648385],
[0.48096564],
[0.47863394],
[0.5031184 ],
[0.45698297],
[0.45885688]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,没有可用的 GPU,模型已加载并在 CPU 上运行预测。
Keras 是无缝的。但在 pytorch 中,情况有所不同,我们必须手动将模型从 GPU 移动到 CPU。
| 归档时间: |
|
| 查看次数: |
3801 次 |
| 最近记录: |