【问题标题】:Python Nvidia rapids memory error when using cuml for training machine learning modelPython Nvidia 在使用 cuml 训练机器学习模型时出现内存错误
【发布时间】:2019-06-06 09:35:38
【问题描述】:

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

我的脚本还使用带有 GPU 训练的 keras(通过 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.使用我的第二个GPU进行CUML计算(我找不到选择哪个GPU来运行RAPIDS CUML模型训练的方法。

【问题讨论】:

    标签: python tensorflow gpu nvidia rapids


    【解决方案1】:

    我将在下面回答 #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 
    

    然后运行其余代码。

    如果这有帮助或者您需要进一步的帮助,请联系我们

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 2021-06-03
      • 2019-05-16
      • 2020-11-10
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      相关资源
      最近更新 更多