Как отслеживать использование памяти GPU при обучении DNN?

#pytorch #gpu

#pytorch #gpu

Вопрос:

Я привожу пример результата. Я хочу спросить, как получить данные, подобные этому графику. введите описание изображения здесь

Ответ №1:

Вы можете использовать команды pytorch, например, torch.cuda.memory_stats для получения информации о текущем использовании памяти GPU, а затем создать временной график на основе этих отчетов.

Ответ №2:

Я думаю, что это лучшее

torch.cuda.mem_get_info

он возвращает глобальную свободную и общую память GPU, занятую для данного устройства, используя cudaMemGetInfo.

Ответ №3:

Используется другой метод nvidia-smi , который выглядит следующим образом

  ----------------------------------------------------------------------------- 
| NVIDIA-SMI 450.66       Driver Version: 450.66       CUDA Version: 11.0     |
|------------------------------- ---------------------- ---------------------- 
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|=============================== ====================== ======================|
|   0  GeForce GTX 1080    Off  | 00000000:01:00.0  On |                  N/A |
|  0%   50C    P8    12W / 215W |   1088MiB /  8113MiB |      0%      Default |
|                               |                      |                  N/A |
 ------------------------------- ---------------------- ---------------------- 
                                                                               
 ----------------------------------------------------------------------------- 
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1091      G   /usr/lib/xorg/Xorg                 24MiB |
|    0   N/A  N/A      1158      G   /usr/bin/gnome-shell               48MiB |
 ----------------------------------------------------------------------------- 
  

И используйте subprocess , чтобы получить строку, например

 import subprocess
import re
command = 'nvidia-smi'
while True:
    p = subprocess.check_output(command)
    ram_using = re.findall(r'bd MiB  /', str(p))[0][:-5]
    ram_total = re.findall(r'/  bd MiB', str(p))[0][3:-3]
    ram_percent = int(ram_using) / int(ram_total)
  

Или просто разделите строку str(p).split('n') и посчитайте длину строки