schlagmaWiki

Sammlung verschiedenster Dinge

Benutzer-Werkzeuge

Webseiten-Werkzeuge


oeffentlich:dl4cv-einrichtung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
oeffentlich:dl4cv-einrichtung [16.01.2023 23:20] – gelöscht - Externe Bearbeitung (Unknown date) 127.0.0.1oeffentlich:dl4cv-einrichtung [05.05.2023 12:08] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Einrichtung von Jupyter Notebooks mit Anaconda, CUDA und Fernzugriff ======
 +
 +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 [[https://rockylinux.org/download|Rocky Linux 8]] (binärkompatibel zu RHEL 8) genutzt. Mit leichten Anpassungen können auch andere Linux-Distributionen wie [[https://get.opensuse.org/leap/|OpenSUSE]] oder [[https://www.debian.org/distrib/|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.
 +
 +==== Nutzer zur Wheel-Gruppe ====
 +<code>
 +usermod -aG wheel 'marc'
 +</code>
 +
 +===== CUDA =====
 +==== Vorbereitung ====
 +
 +<code>
 +dnf install -y epel-release gcc kernel-devel-$(uname -r) kernel-headers-$(uname -r)
 +</code>
 +
 +Eine ausführliche Anleitung ist auf [[https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html|Nvidias Dokumentations-Website]] zu finden.
 +
 +==== Installation ====
 +
 +Auf [[https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Rocky&target_version=8|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.
 +
 +<code>
 +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
 +</code>
 +
 +===== Anaconda =====
 +
 +==== Installation ====
 +
 +Auf der [[https://www.anaconda.com/products/distribution#Downloads|Anaconda-Website]] zunächst über den Link "64-Bit (x86) Installer" das Installationsskript herunterladen.
 +
 +Im Download-Verzeichnis anschließend folgende Befehle ausführen:
 +
 +<code>
 +chmod +x Anaconda3-2022.10-Linux-x86_64.sh
 +./Anaconda3-2022.10-Linux-x86_64.sh
 +</code>
 +
 +==== PyTorch ====
 +
 +Nach dem Ausführen des Anaconda-Installationsskriptes muss noch PyTorch mit CUDA-Unterstützung installiert werden. Der passende Befehl kann auf der [[https://pytorch.org/get-started/locally/#start-locally|PyTorch-Website]] je nach Installationsart und CUDA-Version zusammengeklickt werden (in diesem Fall ''Stable'' / ''Linux'' / ''Conda'' / ''Python'' / ''CUDA 11.7'').
 +
 +<code>
 +conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
 +conda install tensorboard torchvision
 +</code>
 +
 +===== Fernzugriff =====
 +
 +==== Installation benötigter Pakete ====
 +Zwischen den S
 +
 +<code>
 +dnf install nginx certbot python3-certbot-nginx
 +systemctl start nginx
 +systemctl enable nginx
 +</code>
 +
 +==== DynDNS einrichten ====
 +
 +==== Systemd-Service für Notebooks anlegen ====
 +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''
 +
 +<code>
 +[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
 +</code>
 +
 +<code>
 +systemctl start jupyter-notebook
 +systemctl enable jupyter-notebook
 +</code>
 +
 +==== Firewall ====
 +<code>
 +firewall-cmd --permanent --add-service=http
 +firewall-cmd --permanent --add-service=https
 +</code>
 +
 +==== Proxy-Konfiguration ====
 +
 +''/etc/nginx/conf.d/jupyter.conf''
 +
 +<code nginx>
 +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;
 +}
 +</code>
 +
 +----
 +
 +**TODO:**
 +  * DynDNS-Einrichtung
 +  * tls-config ersetzen
 +  * CSP
 +  * Domains verallgemeinern
 +
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki