Я хочу использовать 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?
Большое спасибо!