Python Nvidia ускоряет ошибку памяти при использовании cuml для обучения модели машинного обучения

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

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


person thebeancounter    schedule 06.06.2019    source источник


Ответы (1)


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

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

person TaureanDyerNV    schedule 28.06.2019