Ubuntu версии 20.04 LTS
Драйвер NVIDIA и связанный с ним пакет, например cuda, все установлены правильно. Выполнение кода nvidia-smi и cuda нормально.
Пакеты NVIDIA, связанные с Docker тоже установлены (NVIDIA Container Toolkit). Первоначальная проблема заключается в том, что если я пытаюсь проверить поддержку NVIDIA в докере, я получаю следующее сообщение об ошибке:
$ sudo docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
После обсуждения в Интернете я попытался переустановить докер, следуя приведенным здесь инструкциям: https://docs.docker.com/engine/install/ubuntu/ У меня это сработало. NVIDIA сейчас работает под докером.
Однако после перезагрузки он перестанет работать. Придется сделать что-то вроде:
$ sudo apt-get reinstall docker-ce docker-ce-cli containerd.io
Чтобы NVIDIA снова работала под докером. Могу подтвердить, что это будет вызывать каждая перезагрузка.
Как мне заставить его работать, чтобы мне не приходилось переустанавливать каждый раз после перезагрузки?
В моем случае Docker был установлен дважды, через snap и менеджер пакетов apt:
После перезагрузки у меня было:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 4e2eef94cd6b 3 weeks ago 73.9MB
tensorflow/tensorflow latest-gpu-jupyter f0b0261fec71 6 weeks ago 3.3GB
nvidia/cuda 10.0-base 841d44dd4b3c 9 months ago 110MB
Если я перезапущу службу Docker:
$ sudo service docker restart
У меня есть другой набор образов:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jupyter/r-notebook latest 14611e3d9838 2 weeks ago 2.59GB
ubuntu latest 4e2eef94cd6b 3 weeks ago 73.9MB
tensorflow/tensorflow latest-gpu-jupyter f0b0261fec71 6 weeks ago 3.3GB
$ dpkg -l | grep docker
ii docker-ce 5:19.03.12~3-0~ubuntu-focal amd64 Docker: the open-source application container engine
ii docker-ce-cli 5:19.03.12~3-0~ubuntu-focal amd64 Docker CLI: the open-source application container engine
$ snap list | grep docker
docker 19.03.11 471 latest/stable canonical* -
Я перезапустил ОС:
$ sudo init 6
и удалил все образы, созданные с помощью snap docker:
$ docker rmi $(docker images -q)
После этого я удалил snap docker:
$ sudo snap remove docker
$ sudo init 6
Теперь у меня есть работающая служба docker:
$ docker run --gpus all -p 8888:8888 -v /tf:/tf -w /tf --name tfgpu --rm tensorflow/tensorflow:latest-gpu-jupyter
[I 07:52:52.707 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 07:52:52.967 NotebookApp] Serving notebooks from local directory: /tf
[I 07:52:52.967 NotebookApp] The Jupyter Notebook is running at:
[I 07:52:52.967 NotebookApp] http://a1d1932a7004:8888/?token=74b0b061e2a1818b865c1f344be904758f9f0dba73b742d3
[I 07:52:52.967 NotebookApp] or http://127.0.0.1:8888/?token=74b0b061e2a1818b865c1f344be904758f9f0dba73b742d3
[I 07:52:52.967 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 07:52:52.972 NotebookApp]
To access the notebook, open this file in a browser:
file:///root/.local/share/jupyter/runtime/nbserver-1-open.html
Or copy and paste one of these URLs:
http://a1d1932a7004:8888/?token=74b0b061e2a1818b865c1f344be904758f9f0dba73b742d3
or http://127.0.0.1:8888/?token=74b0b061e2a1818b865c1f344be904758f9f0dba73b742d3