Plataforma: x86_64, Ubuntu 22.04.4 LTS, 5.15.0-101-genérico, jupyterhub 2.0.0+ds1-2
Eu instalei jupyterhub
a partir dos repositórios oficiais de software do Ubuntu (pacote jupyterhub
). Isso funciona e posso fazer login e executar o código Python. No jupyterhub, estou usando a mesma versão do Python do meu sistema Python. Não creio que seja uma questão de ter diferentes versões de bibliotecas instaladas.
No PyTorch , posso obter acesso à GPU de consoles de vários usuários, inclusive no IPython:
moo@hostname:~$ ipython3
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.8.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import torch
In [2]: torch.cuda.is_available()
Out[2]: True
Mas não funciona no jupyterhub:
import torch
torch.cuda.is_available()
False
Parece que este é um problema com permissões/acesso do jupyterhub. De dentro do jupyterhub:
!nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
Isso funciona bem no console do usuário que recebo quando executo !whoami
no Jupyter.
Alguém tem alguma idéia sobre o que tentar a seguir?
Isso acontece devido à forma como o pacote jupyterhub Ubuntu está configurado para systemd.
Por padrão, a interface do contêiner systemd para jupyterhub está
PrivateDevices=yes
habilitada,/etc/systemd/system/multi-user.target.wants/jupyterhub.service
o que significa que o dispositivo nvidia não é acessível de dentro do notebook jupyter e leva a esse comportamento estranho.Desativando a opção de dispositivos privados no arquivo de configuração do systemd relevante e reiniciando o serviço jupyterhub:
Isso resolveu o problema no meu caso.