Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
1 result

README.md

Blame
  • README.md 6.85 KiB

    Makefile

    Voraussetzungen

    Server-Admin kontaktieren

    • Server: Public SSH-Key
    • Client: Private SSH-Key
    • Client: SSH-Config konfiguriert
    Details anzeigen

    Dieses Projekt sieht eine Kommunikation zwischen Client und Server mittels SSH vor. Aufgrund der höheren Sicherheit und einfacheren Bedienbarkeit sind SSH-Keys für den Authentifizierungsprozess zu verwenden.

    Das Schlüsselpaar aus Private-Key und Public-Key muss zuvor gemeinsam mit dem Server-Admin eingerichtet werden. Je nach Server-Konfiguration kann es erforderlich sein, die SSH-Config anzupassen.

    Empfehlung

    Die Verwendung des Terminal-Multiplexers Byobu wird empfohlen.

    # Debian / Ubuntu
    sudo apt install byobu

    Download & Installation: https://www.byobu.org/downloads

    Details anzeigen

    Vorteile von Byobu:

    • Sitzungen beibehalten: Byobu ermöglicht das Starten von Sitzungen, die im Hintergrund weiterlaufen, selbst wenn das Terminal geschlossen oder die Verbindung getrennt wird.
    • Einfache Wiederherstellung: Es ist jederzeit möglich, zu einer bestehenden Sitzung zurückzukehren, um den Status von Prozessen zu überprüfen oder die Arbeit fortzusetzen.

    Installation

    1. Makefile herunterladen
    2. Makefile in Projektordner speichern
    3. Makefile konfigurieren
    4. make install
    Details anzeigen

    Die Makefile dient in diesem Projekt zur Vereinfachung von Prozessen, die sonst in vielen Einzelschritten manuell über die bash-Konsole durchgeführt werden müssten.

    Im Abschnitt Projektstruktur ist ein beispielhafter Aufbau eines Projekts skizziert.

    Hilfen zur Konfiguration der Makefile und Bedeutung der verwendeten Variablen sind im Abschnitt Konfiguration zu finden.

    Bedienung

    siehe Befehle

    1. make upload Projektdateien hochladen
    2. make run Python-Script ausführen
    3. make log Fortschritt überprüfen
    4. make download Output-Dateien herunterladen
    Details anzeigen

    Die Makefile ist so konfiguriert, dass sie mit Erhalt einfacher Befehlen komplexe oder aufwendige Prozesse ausführt.

    Im Abschnitt Befehle sind diese sogenannten Targets und deren Aufgabe näher beschrieben.

    Projektstruktur

    Beispiel

    /home/max/akis/my_project/
    ├── data
    │   ├── one.pkl
    │   ├── three.pkl
    │   └── two.pkl
    ├── main.py
    ├── makefile
    ├── output
    │   └── empty
    └── scripts
        ├── script-1.py
        ├── script-2.py
        └── script-3.py
    Details anzeigen

    Diese Projektstruktur ist nur ein Beispiel. Sie soll jedoch verdeutlichen, dass auch verschachtelte Projekte mit der Makefile bedienbar sind.

    Wichtig ist jedoch, dass in der Makefile das MAIN_SCRIPT konfiguriert ist. Dieses Python-Script wird durch die Makefile ausgeführt; hier: main.py.

    Wie das MAIN_SCRIPT aufgebaut ist, ist dabei nicht relevant. Es könnte ein alleinstehendes Script sein, welches ohne andere Python-Scripts auskommt. Oder es führt andere Python-Scripts aus; wie im obigen Beispiel scripts/script-1.py, scripts/script-2.py und scripts/script-3.py.

    Importierte Datasets liegen oft nicht innerhalb des Projektordners, sondern werden von extern importiert. Es ist darauf zu achten, dass auch der Server Zugriff auf den Pfad der Datasets hat. Symbolische Links können hier hilfreich sein.

    Output-Dateien, die nach Abschluss des Scripts wieder auf den Client heruntergeladen werden sollen, können mit REMOTE_OUTPUT_FILES definiert werden. Sie werden durch den Aufruf von make download im zuvor definierten Ordner LOCAL_OUTPUT_DIR abgespeichert.

    Konfiguration

    Variable Verwendung Beispiel
    SERVER_USER Server: User Name mmustermann
    SERVER_HOST Server: Host Name hyrican-1-extern
    CONDA_PATH Server: Conda-Installations-Pfad /home/mmustermann/.local/opt/conda
    CONDA_ENV Server: Conda-Environment-Name ml
    PYTHON_VERSION Python: Gewünschte Version 3.10
    PYTHON_PACKAGES Python: Benötigte Pakete tensorflow-cpu matplotlib optuna
    MAIN_SCRIPT Auszuführendes Python-Script 1 main.py
    LOG_FILE Log-Datei (optional) 1 progress.log
    LOCAL_PROJECT_DIR Client: Projektordner 1 .
    LOCAL_OUTPUT_DIR Client: Output-Ordner 1 output
    REMOTE_PROJECT_DIR Server: Projektordner 2 /home/mmustermann/akis/my_project
    REMOTE_OUTPUT_FILES Server: Output-Dateien 1 output/*.svg output/*pkl
    COPY_LINKS_AS_FILES Server: Kopiert Datei des Symlinks false

    Befehle

    make <target>

    Target Aktion Ort
    install Installiert Python Environment und Pakete Server
    upload Läd veränderte Projektdateien hoch Client → Server
    run Führt Python Script aus Server
    kill Bricht Python Script ab Server
    log Zeigt Log-Datei (optional) an Client
    download Läd Outputdateien herunter Server → Client
    delete Löscht Projektdateien Server

    TODOs

    • Bedienung über Byobu
    • Datasets über NFS
    • Benachrichtigung bei Abbruch/Erfolg
      • Slack
      • Matrix
    • parallele Ausführung mehrerer Scripts