Лаборатория Jupyter не видит графический процессор с tensorflow

#tensorflow #jupyter-notebook #jupyter-lab

#tensorflow #jupyter-ноутбук #jupyter-lab

Вопрос:

У меня установлена лаборатория jupyter на сервере ubuntu 18.04. Я установил видеокарту и установил tenserflow 2.3.1 (согласно этим инструкциям: https://www.tensorflow.org/install/gpu ) используя python 3.6.9. Мне пришлось добавить следующую переменную среды в /etc/environment, чтобы заставить ее работать:

 export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64
 

Однако лаборатория Jupyter не видит мой графический процессор! Когда я запускаю следующие команды в записной книжке jupyter lab

 import tensorflow as tf
tf.config.experimental.list_physical_devices()
 

он возвращает следующее:

ВЫВОД ИЗ JUPYTER LAB NOTBOOK

 [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
PhysicalDevice(name='/physical_device:XLA_CPU:0', device_type='XLA_CPU'),
PhysicalDevice(name='/physical_device:XLA_GPU:0', device_type='XLA_GPU')]
 

Но, когда я запускаю те же две строки в записной книжке ipython (или интерактивной оболочке python3 или с терминала в лаборатории jupyter) Я получаю следующий вывод:

ВЫВОД ИЗ ОБОЛОЧКИ IPYTHON

2020-11-28 13:21:39.005815: Я tensorflow/stream_executor/platform/default/dso_loader.cc:48] Успешно открыл динамическую библиотеку libcuda.so.1 2020-11-28

13:21:39.083058: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc: 982] успешное чтение узла NUMA из SysFS имело отрицательное значение (-1), но должен быть хотя бы один узел NUMA, поэтому возврат нулевого узла NUMA 2020-11-28

13:21:39.083573: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1716] Найдено устройство 0 со свойствами: pciBusID: 0000:01:00.0 имя: GeForce RTX 2060 Вычислительная мощность: 7,5 Частота ядра: 1,68 ГГц Количество ядер: 30 Размер памяти устройства: 5,79 Гигабайт Ширина полосы пропускания памяти устройства: 312,97 Гигабайт / с

2020-11-28 13:21:39.083610: Я tensorflow/stream_executor/platform/default/dso_loader.cc:48] Успешно открыл динамическую библиотеку libcudart.so.10.1 2020-11-28

13:21:39.142212: Я tensorflow/stream_executor/platform/default/dso_loader.cc:48] Успешно открыл динамическую библиотеку libcublas.so.10 2020-11-28

13:21:39.172917: Я tensorflow/stream_executor/platform/default/dso_loader.cc:48] Успешно открыл динамическую библиотеку libcufft.so.10 2020-11-28

13:21:39.180484: Я tensorflow/stream_executor/platform/default/dso_loader.cc:48] Успешно открыл динамическую библиотеку libcurand.so.10 2020-11-28

13:21:39.244521: Я tensorflow/stream_executor/platform/default/dso_loader.cc:48] Успешно открыл динамическую библиотеку libcusolver.so.10 2020-11-28

13:21:39.259263: Я tensorflow/stream_executor/platform/default/dso_loader.cc:48] Успешно открыл динамическую библиотеку libcusparse.so.10 2020-11-28

13:21:39.370126: Я tensorflow/stream_executor/platform/default/dso_loader.cc:48] Успешно открыл динамическую библиотеку libcudnn.so.7 2020-11-28

13:21:39.370414: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:982] успешное чтение узла NUMA из SysFS имело отрицательное значение (-1), но должен быть хотя бы один узел NUMA, поэтому возврат нулевого узла NUMA 2020-11-28

13:21:39.371750: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:982] успешное чтение узла NUMA из SysFS имело отрицательное значение (-1), но должен быть хотя бы один узел NUMA, поэтому возврат нулевого узла NUMA 2020-11-28

13:21:39.372808: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1858] Добавление видимых устройств gpu: 0

Выход [3]: [Физическое устройство (name= ‘/ physical_device:CPU: 0′, device_type=’CPU’), физическое устройство (name= ‘/ physical_device: XLA_CPU:0’, device_type= ‘XLA_CPU’), Физическое устройство (name= ‘/ physical_device: XLA_GPU:0’, device_type= ‘XLA_GPU’), физическое устройство (name= ‘/ physical_device: GPU:0’, device_type = ‘GPU’)]

Очевидно, что оболочка ipython / python3 видит это, а лаборатория jupyter — нет.

Я даже пытаюсь установить LD_LIBRARY_PATH в лаборатории jupyter через:

 import os
os.environ['LD_LIBRARY_PATH'] = '/usr/local/cuda-10.2/lib64'
 

По-прежнему не работает!

Как я могу заставить jupyter lab видеть мой графический процессор, чтобы я мог обучать свои сети на графическом процессоре, а не на процессоре?

редактирование 1: добавлена четкость вывода

Комментарии:

1. Вывод показывает, что лаборатория jupyter видит графический процессор, я не уверен, в чем именно проблема. Какая часть вывода «ясно» показывает, что лаборатория jupyter не видит его?

2. Выход [3] сверху использует интерактивную оболочку ipython, а не вывод из ноутбука jupyter lab. Провел небольшое исследование, и ‘XLA_GPU: 0’ не является графическим процессором

Ответ №1:

У меня была такая же проблема в Jupyter notebook, потому что я устанавливаю tensorflow через conda, и мне нужно добавить переменную path вручную. Я также не могу добавить переменные среды в записную книжку, поэтому вместо этого я попытался добавить переменные в kernel.json jupyter, и это сработало для меня. Это выглядит так:

 {
 "argv": [
  ...
 ],
 "env": {
    "LD_LIBRARY_PATH":"your_lib_path"
 },
...
}