PyTorch внутри Docker видит графические процессоры только когда root - PullRequest
1 голос
/ 23 октября 2019

Я хочу использовать PyTorch на удаленной машине. Наша система настроена так, что мы должны работать только из докеров. Контейнер, в котором я сейчас нахожусь, был запущен с:

nvidia-docker run -it --rm --shm-size=2g -v /home/user/:/home/user/ -v /home/user/storage:/storage 
-v /storage/user:/storage/data_storage -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group 
--user 1009:1009 -p 8884:8884 --ulimit memlock=-1 --name user_test user/deepo:all-jupyter

Если я наберу nvidia-smi, я получу вывод, как и ожидалось:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 415.27       Driver Version: 415.27       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| 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...  On   | 00000000:04:00.0 Off |                  N/A |
| 64%   86C    P2   217W / 250W |   8578MiB / 11178MiB |     86%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla P40           On   | 00000000:06:00.0 Off |                    0 |
| N/A   89C    P0   123W / 250W |   8593MiB / 22919MiB |     99%      Default |
+-------------------------------+----------------------+----------------------+
|   2  GeForce GTX 108...  On   | 00000000:07:00.0 Off |                  N/A |
| 45%   75C    P2    94W / 250W |   6956MiB / 11178MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  Tesla P40           On   | 00000000:08:00.0 Off |                    0 |
| N/A   52C    P0   131W / 250W |   6965MiB / 22919MiB |     85%      Default |
+-------------------------------+----------------------+----------------------+
|   4  TITAN V             On   | 00000000:0C:00.0 Off |                  N/A |
| 33%   48C    P8    29W / 250W |   1043MiB / 12036MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   5  GeForce GTX 108...  On   | 00000000:0D:00.0 Off |                  N/A |
| 38%   65C    P2    80W / 250W |   6956MiB / 11178MiB |     14%      Default |
+-------------------------------+----------------------+----------------------+
|   6  Quadro GV100        On   | 00000000:0E:00.0 Off |                  Off |
| 50%   64C    P2    55W / 250W |   7516MiB / 32478MiB |     14%      Default |
+-------------------------------+----------------------+----------------------+
|   7  GeForce GTX 108...  On   | 00000000:0F:00.0 Off |                  N/A |
| 46%   78C    P2    98W / 250W |   6956MiB / 11178MiB |     14%      Default |
+-------------------------------+----------------------+----------------------+

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

Если я сейчас попробую использовать PyTorch:

[R1]user@docked:/$ python
Python 3.6.8 (default, Jan 14 2019, 11:02:34) 
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
False

Так что в этом случае мой PyTorch не может найти графические процессоры или установить CUDA. Однако, если я теперь отключусь от док-контейнера, а затем снова подключусь как root с

[R1]user@remote-machine:~$ docker exec -it -u root 1122a334b455 bash
root@1122a334b455:/# python
Python 3.6.8 (default, Jan 14 2019, 11:02:34) 
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True

, CUDA внезапно станет доступной. Кто-нибудь знает, что здесь происходит? Почему мой питон видит графические процессоры только когда я подключаюсь к докеру как root?

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...