Diese Anleitung soll die Einrichtung eines Fernzugriffs auf Jupyter Notebooks, die auf einem PC mit Nvidia-Grafikkarte in einem Heimnetzwerk laufen, erläutern.
Als Betriebssystem wird hier Rocky Linux 8 (binärkompatibel zu RHEL 8) genutzt. Mit leichten Anpassungen können auch andere Linux-Distributionen wie OpenSUSE oder Debian verwendet werden. Hierbei sollte auf die von der zu installierenden CUDA-Version unterstützten Distributions-Versionen geachtet werden.
Bei der Auswahl der zu installierenden CUDA- und Anaconda-Version sollte außerdem auf die Kompatibilität der mit Anaconda ausgelieferten PyTorch-Version mit der CUDA-Version geachtet werden. In dieser Anleitung werden Anaconda 2022.10 und CUDA 11.7 verwerdet.
usermod -aG wheel 'marc'
dnf install -y epel-release gcc kernel-devel-$(uname -r) kernel-headers-$(uname -r)
Eine ausführliche Anleitung ist auf Nvidias Dokumentations-Website zu finden.
Auf Nvidias Developer-Website kann man sich über einen Klick auf den Button rpm (local) eine Anleitung zum Herunterladen und Ausführen des Installationsskriptes anzeigen lassen. Die Befehle müssen nun einzeln im Terminal ausgeführt werden und sollten ähnlich den folgenden aussehen.
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-rhel8-11-7-local-11.7.0_515.43.04-1.x86_64.rpm sudo rpm -i cuda-repo-rhel8-11-7-local-11.7.0_515.43.04-1.x86_64.rpm sudo dnf clean all sudo dnf -y module install nvidia-driver:latest-dkms sudo dnf -y install cuda
Auf der Anaconda-Website zunächst über den Link „64-Bit (x86) Installer“ das Installationsskript herunterladen.
Im Download-Verzeichnis anschließend folgende Befehle ausführen:
chmod +x Anaconda3-2022.10-Linux-x86_64.sh ./Anaconda3-2022.10-Linux-x86_64.sh
Nach dem Ausführen des Anaconda-Installationsskriptes muss noch PyTorch mit CUDA-Unterstützung installiert werden. Der passende Befehl kann auf der PyTorch-Website je nach Installationsart und CUDA-Version zusammengeklickt werden (in diesem Fall Stable / Linux / Conda / Python / CUDA 11.7).
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia conda install tensorboard torchvision
Zwischen den S
dnf install nginx certbot python3-certbot-nginx systemctl start nginx systemctl enable nginx
Um nicht nach jedem Start des Systems Jupyter Notebook händisch starten zu müssen, wird ein Systemd-Service eingerichtet.
/etc/systemd/system/jupyter-notebook.service
[Unit] Description=JupyterNotebook After=syslog.target After=network.target [Service] Type=simple User=[username] Group=[groupname] WorkingDirectory=[directory] ExecStart=[executable] Restart=always [Install] WantedBy=multi-user.target
systemctl start jupyter-notebook systemctl enable jupyter-notebook
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https
/etc/nginx/conf.d/jupyter.conf
server { server_name [domain]; listen 80; listen [::]:80; listen 443 ssl http2; listen [::]:443 ssl http2; if ($ssl_protocol = "") { return 301 https://$server_name$request_uri; } root /usr/share/nginx/html; #add_header Content-Security-Policy "default-src 'none'; img-src 'self' data$ add_header Strict-Transport-Security "max-age=31536000; preload;"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header Referrer-Policy "no-referrer"; ssl_certificate /etc/letsencrypt/live/[domain]/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/[domain]/privkey.pem; #include /etc/nginx/tls-config; location / { proxy_pass http://localhost:8888; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; } access_log /var/log/nginx/access-jupyter.log; error_log /var/log/nginx/error-jupyter.log; }
TODO: