Не удается обнаружить графический процессор в докерском контейнере тензорного потока, запущенном из Pycharm - PullRequest
2 голосов
/ 11 октября 2019

Я пытаюсь запустить простой пример тензорного потока с использованием предоставленного gpu образа докера с тензорным потоком из среды разработки Pycharm. Все работает, за исключением того, что при запуске tenorflow не обнаруживает GPU из контейнера и по умолчанию возвращается к CPU:

tensorflow/stream_executor/cuda/cuda_driver.cc:318] failed call to cuInit:

Работает: Ubuntu 18.04.3 Docker 19.03.3 последняя версия поддержки докера NVIDIA согласно: https://github.com/NVIDIA/nvidia-docker

Я настроил свой проект Pycharm с функцией удаленного интерпретатора для запуска образа: tenorflow: latest-gpu

Если я запускаю контейнер из командной строки с помощью:

docker run --gpus all --rm tensorflow/tensorflow:latest-gpu nvidia-smi

Я получаю это:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26       Driver Version: 430.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 00000000:41:00.0  On |                  N/A |
| 28%   26C    P8     9W / 250W |    443MiB / 11177MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

.., который говорит мне, что установка докера, образ и поддержка док-станции nvidia все в порядке.

Теперь, когдаPycharm запускает контейнер, он НЕ включает параметр командной строки «--gpus all».

Если я запускаю ту же команду выше без параметра --gpus all:

docker run --rm tensorflow/tensorflow:latest-gpu nvidia-smi

Iget:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"nvidia-smi\": executable file not found in $PATH": unknown.

Таким образом, это указывает на то, что Pycharm не добавляет флаг в качестве виновника.

Однако согласно документации по адресу: https://docs.docker.com/config/containers/resource_constraints/ (нижняя часть графического процессора)переменная окружения NVIDIA_VISIBLE_DEVICES = все должновыполнить то же самое. Я подтвердил, что эта переменная окружения устанавливается даже без параметра --gpus all.

Кроме того, похоже, нет способа добавить дополнительные параметры командной строки из Pycharm. Так что я застрял. Я чувствую, что эта установка не слишком экзотична, и надеюсь, что мне не хватает чего-то простого.

...