我正在将python 3与nvidia Rapids结合使用,以便通过cuml库和GPU来加快机器学习训练的速度。
我的脚本还使用keras进行了GPU培训(超过tf),当我到达尝试使用CUML的阶段时,我遇到了内存错误。我怀疑这是因为TF不会释放GPU内存(看着nvidia-smi),我看到所有内存都已分配。
这是我用来训练累积模型的代码
import cuml
from cuml import LinearRegression
lr = LinearRegression()
lr.fit(encoded_data, y_train)
这是我得到的错误
[2]调用cuMemAlloc会导致CUDA_ERROR_OUT_OF_MEMORY
encoded_data和y_train是numpy数组,encoded_data是n * m个浮点数组,y_train是n * 1个作为标签的整数向量,在使用sklearn Logistic回归进行训练时,它们都可以正常工作。
我怎么能: 1,使用同一个GPU(首选)而不丢失我训练的所有tf模型(我拥有的内存比tf模型实际使用的内存更多,但是tf进程仍然占用了所有内存) 2.使用第二个GPU进行CUML计算(我无法找到一种方法来选择哪个GPU运行RAPIDS CUML模型训练。
答案 0 :(得分:0)
我将在下面回答#2,因为它可以使您以最快的速度上路。这是3行代码。对于#1,请在RAPIDS Github上提问,或在我们的slack channel上提问。
首先,运行nvidia-smi
获得您的GPU编号,并查看哪个正在为其分配给keras的内存。这是我的:
nvidia-smi
Fri Jun 28 16:50:06 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.39 Driver Version: 418.39 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro GV100 Off | 00000000:15:00.0 Off | Off |
| 29% 40C P2 26W / 250W | 32326MiB / 32478MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 Quadro GV100 Off | 00000000:2D:00.0 On | Off |
| 33% 46C P0 29W / 250W | 260MiB / 32470MiB | 26% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
在这里,有GPU#0和GPU#1。 GPU#0的内存使用良好。如果要在RAPIDS中运行其他内容,则需要使用GPU#1
import os
# Select a particular GPU to run the notebook
os.environ["CUDA_VISIBLE_DEVICES"]="1" # or replace '1' with which GPU you want to use if you
然后运行其余代码。
如果有帮助或需要进一步的帮助,请lmk