1

我将 python 3 与 nvidia Rapids 一起使用,以便使用 cuml 库和 GPU 加速机器学习训练。

我的脚本还使用 keras 和 GPU 训练(通过 tf),当我到达尝试使用 CUML 的阶段时,我得到了内存错误。我怀疑这是因为 TF 没有释放 GPU 内存(查看 nvidia-smi)我看到所有内存都已分配。

这是我用来训练 cuml 模型的代码

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 逻辑回归进行训练时,两者都可以正常工作。

我怎么能: 1.使用相同的 GPU(首选)而不丢失我训练的所有 tf​​ 模型(我有更多的内存,然后 tf 模型在实践中需要,但 tf 进程仍然占用所有内存) 2.使用我的用于 CUML 计算的第二个 GPU(我找不到选择哪个 GPU 来运行 RAPIDS CUML 模型训练的方法。

4

1 回答 1

0

我将在下面回答#2,因为它会让您以最快的速度上路。这是3行代码。对于 #1,请在RAPIDS Github上提出问题或在我们的slack 频道上提问。

首先,运行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

于 2019-06-28T17:00:51.407 回答