Ошибка памяти порогов Python Nvidia при использовании cuml для обучения модели машинного обучения - PullRequest
0 голосов
/ 06 июня 2019

Я использую python 3 с nvidia Rapids для ускорения обучения машинному обучению с использованием библиотеки cuml и графического процессора.

В моих скриптах также используются керасы с обучением на 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. Использовать один и тот же графический процессор (предпочтительно), не теряя все обученные модели tf (у меня больше памяти, чем на практике использует модель tf, но процесс tf по-прежнему занимает всепамять) 2. Используйте мой второй GPU для вычислений CUML (я не могу найти способ выбрать, какой GPU запускать обучение модели RAPIDS CUML.

1 Ответ

0 голосов
/ 28 июня 2019

Я собираюсь ответить на # 2 ниже, так как он поможет вам быстрее всего.Это 3 строки кода.Для # 1, пожалуйста, поднимите вопрос на RAPIDS Github или задайте вопрос на нашем слабом канале .

Сначала запустите nvidia-smi, чтобы получить ваши номера GPU ичтобы увидеть, какая из них выделяет память для керас.Вот мой:

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, мне нужно будет использовать графический процессор # 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, если это поможет или если вынужна дополнительная помощь

...