Das WIRKsam Projekt hat jetzt einen Big Data Cluster!
Von heute an koennen all unsere Wissenschaftler und studenten auf unsere neusten High Performance Compute Ressourcen zugreifen. Durch den Einsatz von, unter anderem, JupyterHub und SLURM koennen Benutzer dynamisch Rechenresourcen anfragen und einsetzen.
Anwendungsfall
Das neue Cluster wurde fuer das Forschungsproject „WIRKsam“ angeschafft, welches einen typischen Anwendungsfall fuer Verteiltes Rechnen dastellt.
Unser Big Data Lab forscht vorallem in den Gebieten „Data Science“ und „Machine Learning“. Aus diesem Grund benoetigen unsere Forschenden Zugriff auf High Performance Compute Ressourcen. Genauer haben Sie folgende Anforderungen:
- trainieren von Modellen des Machinellen lernens
- sehr große Datensätze unterschiedlicher Art (Tabellen, Bilder, Zeitreihen, …) untersuchen
- genaue Kontrolle über die Rechenressourcen für bestimmte Forschungsfragen (z. B. Datenlokalisierung)
- Zugriff auf neue und/oder Nischenbibliotheken
- große Datenmengen lesen und schreiben
- Daten sicher speichern
- genaue Kontrolle über die Rechenressourcen für bestimmte Forschungsfragen (z. B. Datenlokalität)
Workload Management
Slurm ist ein quelloffenes, fehlertolerantes und hoch skalierbares Cluster-Management- und Job-Scheduling-System für große und kleine Linux-Cluster. https://slurm.schedmd.com/overview.html
Slurm verwaltet, welche Ressourcen welcher Arbeitslast zugewiesen werden. Am nützlichsten für unsere Anforderungen ist der Batch-Modus, der es ermöglicht, lang laufende Arbeitslasten an unseren Cluster zu übermitteln. Die Arbeitslasten werden als Batch-Skripte übermittelt und vom Cluster ausgeführt.
Dies ist zwar sehr nützlich, wenn unsere Forschenden genau wissen, was sie berechnen wollen, aber auch die Möglichkeit, die Rechenressourcen interaktiv zu nutzen, um große Datenmengen zu untersuchen, ist sehr nützlich.
Slurm verfügt über einen interaktiven Modus, der den Benutzern Shell-Zugriff auf einen Rechenknoten mit bestimmten Ressourcen ermöglicht. Es gibt jedoch gut etablierte Tools mit viel mehr Funktionen als einem einfachen Shell-Zugang. Diese können für die Datenexploration und interaktive Entwicklung verwendet werden. Eines dieser bewährten Tools ist JupyterLab.
JupyterLab
JupyterLab ist eine hochgradig erweiterbare, funktionsreiche Anwendung zur Erstellung und Bearbeitung von „notebooks“ und ist Teil des Project Jupyter, eines großen Dachprojekts, das sich zum Ziel gesetzt hat, Werkzeuge (und Standards) für die interaktive Datenverarbeitung mit computergestützten Notizbüchern bereitzustellen. https://jupyterlab.readthedocs.io/en/latest/
Aufgrund seiner Beliebtheit und Vertrautheit bei unseren Studenten und Forschenden haben wir beschlossen, den Benutzern über JupyterLab-Server interaktiven Zugang zu unserem HPC-Cluster zu ermöglichen.
JupyterHub ermöglicht es uns, JupyterLab-Server auf unserem HPC-Cluster zu starten. Diese JupyterLab-Server können bei Bedarf über unseren Workload Manager Slurm auf die Ressourcen des HPC-Clusters zugreifen. Benutzer und Studenten können sich mit ihrem Gitlab-Konto anmelden. Von dort aus können sie die Ressourcenprofile auswählen, die ihren Bedürfnissen entsprechen.
Wann immer ein Benutzer einen JupyterLab-Server mit einem bestimmten Ressourcenprofil anfordert, wird diese Anforderung an Slurm gesendet. Slurm stellt die Anfrage dann in eine Warteschlange und gibt den Zugang zu den angeforderten Ressourcen so schnell wie möglich frei.
Die Forschende können ihre Arbeit in ihrem „JupyterLab workspace“ erledigen, ähnlich wie sie es auf ihrem persönlichen Computer tun würden.
Entwicklungsumgebung
Da die Forschung oft neueste oder Nischenbibliotheken benötigt, ist es sehr arbeitsintensiv, Entwicklungsumgebungen zentral zu verwalten. Daher ist es praktischer, den Nutzern so viel Kontrolle über ihre Entwicklungsumgebung wie möglich zu geben, damit sie die benötigten Werkzeuge und Bibliotheken selbst installieren können.
Durch den Einsatz von Singularity-Images geben wir den Nutzern eine Basis-Entwicklungsumgebung an die Hand. Die Benutzer können dann Pakete z.B. mit pip installieren. Forschende können auch eine Pull-Anfrage in unserem Gitlab-Repository erstellen, um Bibliotheken oder Programme zu unserer Basis-Entwicklungsumgebung hinzuzufügen.
Verteiles Dateisystem
Das „Hadoop Distributed Filesystem“ speichert all unsere Datensätze und erstreckt sich über alle Knoten des Clusters. Außerdem unterteilt es die Dateien in Blöcke, die im gesamten Cluster repliziert werden. Dies führt zu einer erhöhten Datensicherheit sowie zu hohen Datenleseraten bei gleichzeitiger Beibehaltung der Datenlokalität.
Da unsere Nutzer ihre Daten auf denselben Knoten berechnen, auf denen sie auch gespeichert sind, können wir Datenlokalität nutzen, um den Netzwerkverkehr zu reduzieren und die Datenleseraten weiter zu erhöhen.
Auf HDFS kann über das hdfs commandline-tool oder über jede Python-Bibliothek, die es unterstützt, zugegriffen werden.
Verteiltes Rechnen
Für verteiltes Rechnen können Nutzer Dask verwenden. Dask ist in unsere Basis-Entwicklungsumgebung vorinstalliert und Nutzer können ihre Dask-Cluster bei Bedarf über Python-Code erzeugen. Dask ist in der Lage, mehrere Dask-Arbeiter auf allen Knoten mit bestimmten Ressourcen über Slurm zu erzeugen.
cluster = SLURMCluster( …, queue=“eighty“, job_extra_directives=[„–gres=gpu:h100:1“], )Mit Dask-Clustern können die Nutzer Aufgaben auf mehrere Knoten gleichzeitig verteilen.
Beantragen Sie Zugang zum Cluster
Wenn Sie Student oder Mitarbeiter der FH-Aachen sind und derzeit an Projekten im Zusammenhang mit dem WIRKsam-Projekt arbeiten, können Sie Zugang zu unserem Big Data Cluster beantragen. Besuchen Sie einfach https://git.fh-aachen.de/bigdata-cluster/access-requests/-/issues und erstellen Sie ein „Issue“. Wenn Sie unsere Issue-vorlage ausfüllen, können wir Ihre Anfrage bearbeiten und Ihnen innerhalb von 6 Arbeitstagen eine Antwort geben.