Я использую сингулярность, и мне нужно установить драйвер nvidia в мой контейнер сингулярности, чтобы выполнить глубокое обучение с gtx 1080. Этот образ сингулярности создан из докера nvidia отсюда: https://ngc.nvidia.com/catalog/containers/nvidia:калди и преобразован в контейнер сингулярности. Я думаю, что не было драйверов nvidia, потому что nvidia-smi не был найден до того, как я установил драйвер.
Я сделал следующие команды:
add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
apt install nvidia-418
после этого я хотел посмотреть, правильно ли установлен драйвер, я сделал команду:
nvidia-smi
которые возвращают: Не удалось инициализировать NVML: несоответствие версии драйвера/библиотеки
Я искал о том, как решить эту ошибку и нашел эту тему: Несоответствие версии драйвера/библиотеки NVIDIA NVML
Один ответ говорит, чтобы сделать команду:
lsmod | grep nvidia
а затем rmmod на каждом, кроме nvidia, и, наконец, rmmod nvidia.
rmmod drm
Но когда я делаю это, поскольку тема исключает это, у меня возникает ошибка: rmmod: ОШИБКА: модуль nvidia используется.
В теме сказано нажать lsof /dev/nvidia* и убить процесс, использующий модуль, но я ничего не вижу с написанным drm, и мне кажется, что это очень плохая идея убить процесс (Xorg, gnome-she) .
Вот ответ на команду lsof /dev/nvidia*, за которой следует команда lsmod | grep nvidia, а затем rmmod drm
Перезагрузка компьютера также не помогла.
что я должен сделать, чтобы управлять с помощью nvidia-smi и иметь возможность использовать свой графический процессор из контейнера сингулярности?
Спасибо
Возможно, вам придется выполнить описанные выше шаги в хост-ОС, а не в самом контейнере. /dev
монтируется в контейнер как есть и по-прежнему может использоваться хостом, хотя процессы запускаются в другом пользовательском пространстве.
Спасибо за ваш ответ. Я хотел установить драйвер графического процессора в контейнере сингулярности, потому что внутри контейнера я не мог использовать графический процессор (команда nvidia-smi : не найдена), а вне контейнера я мог использовать nvidia-smi.
Вы правы, драйвер должен быть установлен вне контейнера, я хотел установить его в контейнер, чтобы избежать моей проблемы с отсутствием доступа к драйверу изнутри контейнера.
Теперь я нашел решение: чтобы использовать GPU из контейнера сингулярности, вы должны добавить --nv при вызове контейнера. пример :
singularity exec --nv singularity_container.simg ~/test_gpu.sh
или
singularity shell --nv singularity_container.simg
Когда вы добавите --nv, контейнер получит доступ к драйверу nvidia, и nvidia-smi будет работать. Без этого вы не сможете использовать GPU, nvidia-smi не будет работать.