Nutzung eines Supercomputers, hätte paar Fragen

Peter_2498

Lieutenant
Registriert
Apr. 2018
Beiträge
602
Ich schreibe aktuell meine Bachelorarbeit in Physik und brauche für meine Berechnungen den Zugang zum Supercomputer meiner Uni. Ich bin gerade dabei den Antrag für mein Projekt auszufüllen und mir ist als Nicht-Informatiker einiges nicht so klar.

Das Projekt, welches ich auf dem Rechner laufen lassen will, ist ein KI-Projekt mit PyTorch. Nun möchte man im Antrag wissen, wieviele Kerne ein typischer "single batch run" braucht und wieviel Speicher ich pro Kern brauche.

Ich weiß jetzt nicht so genau was ich da eintragen soll oder wie ich das überhaupt messen soll. Ich weiß einfach, dass mein Skript auf "normalen" Studentenservern unserer Uni fast 1 Woche läuft.
 
Da gibt es kein normal. Das hängt alles von deinem genauen Workload ab.
 
Du hast du ein Programm für einen Supercomputers geschrieben. Wenn man wa sauf einem Supercomputer laufen lassen möchte, muss man sagen, wie viele Kerne es benötigt bzw. wie viele man braucht. Dann bekommst du auch die beantragten Resourcen zugewiesen.

Wie skaliert deine Anwendung?
Peter_2498 schrieb:
Ich weiß jetzt nicht so genau was ich da eintragen soll oder wie ich das überhaupt messen soll. Ich weiß einfach, dass mein Skript auf "normalen" Studentenservern unserer Uni fast 1 Woche läuft.
Was ist ein normaler Stundenserver? Sind alle Kerne ausgelastet? Usw.
 
Einfach mit den wissenschaftlichen MA dort sprechen? Mit der Info läuft auf XYZ eine Woche kriegt man ja schon mehr raus.


Muss ja nicht jeder Physiker auch ein Sheldon sein :)
 
  • Gefällt mir
Reaktionen: nutrix
Ich hoffe du weißt wenigstens welches Betriebssystem auf dem Supercomputer - oder nennen wir es einfach mal - Großrechner - läuft und entsprechend welche Software da drauf läuft.
PyTorch ist ein Python Framework für Deep Leaning Anwendungen. Das kann auf CPUs und GPUs laufen.
Da stellt sich die Frage nach der Ausstattung des Großrechners. Sind da CUDA-fähige nVidia Grafikkarten drin oder nicht?

Ich kanne mich damit Null aus, aber so ganz auf die Schnelle mal oberflächlich geschaut, kann man in dem Framework die Anzahl der genutzten CPU-Kerne, die Menge des genutzten Arbeitsspeichers usw. einstellen/vorgeben. Also, irgendwas musst du da ja angegeben haben, oder?
 
Peter_2498 schrieb:
Hat i7-12700T CPU und 32 GB ram. Keine GPU.
Die CPU hat 10c/20t.

Profitiert dein Programm von einer GPU?

Hast der Supercomputer auch GPUs usw.
Peter_2498 schrieb:
Habe ich nicht gecheckt. Wie kann ich sowas checken während mein Skript läuft?
Google hilft dir gerne dabei. ;)

Wie schafft man ein Programm für einen Supercomputer zu schreiben, sich dann aber mit Grundlagen nicht auskennen? Sicher, dass dein Programm die Hardware optimal nutzt, wenn es z.B. eine Woche mit i7-12700T braucht?
 
  • Gefällt mir
Reaktionen: NJay
oicfar schrieb:
Wie schafft man ein Programm für einen Supercomputer zu schreiben, sich dann aber mit Grundlagen nicht auskennen? Sicher, dass dein Programm die Hardware optimal nutzt, wenn es z.B. eine Woche mit i7-12700T braucht?
Genau das. „Supercomputer“ werden durch parallelisierung schneller. Das muss man aber aktiv einbauen.
 
  • Gefällt mir
Reaktionen: oicfar
Also ich habe nun das Skript gestartet auf einer Tmux Session auf dem Server(Linux Server) und kriege mit dem Befehl "top" folgende Werte für den Python-Prozess:

%CPU = 1197, %MEM = 6.1, PR = 20

KnolleJupp schrieb:
Da stellt sich die Frage nach der Ausstattung des Großrechners. Sind da CUDA-fähige nVidia Grafikkarten drin oder nicht?
Ja, da gibt es diese A100 oder H100 GPUs was ja Sinn macht mit den ganzen Vektoroperationen die da in PyTorch mit CUDA parallelisiert werden.


PS.: Mein Skript läuft aktuell auf der "cpu-only" PyTorch-Variante, da es auf dem Server keine CUDA-fähige Grafikkarte gibt.
Ergänzung ()

NJay schrieb:
Das muss man aber aktiv einbauen.
Das nimmt einem PyTorch größtenteils ab. Ja man muss hier und da was anpassen aber kein Hexenwerk.
 
Zuletzt bearbeitet:
Wenn du deine Anwendung auf einem Server mit GPUs laufen lassen möchtest, dann würde ich zuerst versuchen es auf irgendeinem privaten Computer mit einer GPU laufen zu lassen. Natürlich nicht, bis es fertig ist.
  • 1-2h cpu-only
  • 1-2h mit GPU Nutzung -> sollte in der gleichen Zeit deutlich mehr schaffen.
um zu sehen wie sich die Hardware verhält während dein Programm läuft.

Ansonsten spreche mit jemanden aus deinem Bereich, der dir da paar Tipps geben kann. Und die, die dein Antrag bearbeiten, helfen dir sicherlich auch, wie man hier vorgehen sollte.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Peter_2498
Peter_2498 schrieb:
Also ich habe nun das Skript gestartet auf einer Tmux Session auf dem Server(Linux Server) und kriege mit dem Befehl "top" folgende Werte für den Python-Prozess:

%CPU = 1197, %MEM = 6.1, PR = 20
Tipp mal in Top auf die 1. Damit kannst du Dir die Werte für jede CPU separat anzeigen lassen. 1197% CPU heißt aber zumindest, dass da schon mal mindestens 12 Kerne genutzt werden.
 
  • Gefällt mir
Reaktionen: redjack1000 und =dantE=
1. CPU-Kerne bestimmen

Der Wert %CPU = 1197 bedeutet, dass dein Skript etwa 12 Kerne (1197 % / 100 % = 11,97) nutzt.

Linux zeigt die CPU-Last als Prozentsatz aller logischen Kerne an, also wenn dein Server z. B. 32 logische Kerne hat, entspricht 1197 % ungefähr 12 vollen Kernen.

Antrag:
Falls du den gleichen oder einen leistungsfähigeren Server auf dem Supercomputer nutzen willst, trage ca. 12 CPU-Kerne für einen „single batch run“ ein.

2. Speicherverbrauch pro Kern bestimmen

%MEM = 6.1 bedeutet, dass dein Prozess 6.1 % des gesamten RAMs nutzt.

Falls dein Server z. B. 128 GB RAM hat, dann nutzt dein Prozess ca.

IMG_5426.jpeg


Da dein Prozess auf 12 Kernen läuft, beträgt der durchschnittliche Speicherbedarf pro Kern:


IMG_5427.jpeg


Antrag:
Falls dein Code gleich bleibt, kannst du in den Antrag schreiben:

12 CPU-Kerne pro Batch-Run
Ca. 650 MB RAM pro Kern (Gesamt: 7.8 GB)

——
-mit GPT3o Mini und erweitertem Research erstellt!
 
  • Gefällt mir
Reaktionen: Peter_2498
In der Regel hat so ein Cluster (nicht Supercomputer) mehrere Knoten. Wie skalierst du denn über die Knoten? Selbst bei Numa musst du sicherlich einiges beachten. Dann wirst du sehr wahrscheinlich auch nicht frei beliebige Software installieren können. Da werden Frameworks vorgegebenen wo du deine Software anpassen musst.
 
  • Gefällt mir
Reaktionen: NJay
JumpingCat schrieb:
Dann wirst du sehr wahrscheinlich auch nicht frei beliebige Software installieren können.
Also PyTorch haben die. Sorry, aber was ist "Numa"?
Ergänzung ()

JumpingCat schrieb:
In der Regel hat so ein Cluster (nicht Supercomputer) mehrere Knoten.
Ja, das ist so ein Cluster mit vielen Knoten.
 
Zuletzt bearbeitet:
Zuletzt bearbeitet: (Typo beseitigt)
Die 1197% legen nahe, dass du alle 12 physischen Kerne der CPU nutzt. Das bedeutet aber nicht, dass das Script immer 12 Kerne nutzt. Innerhalb eines Knotens kannst du über NUMA auch mehr nutzen, musst das dann aber ggf. berücksichtigen, falls deine Anwendung anfällig für Latenzen beim Speicherzugriff ist. Über mehrere Knoten könntest du dann noch mehr Kerne verwenden, mit wiederum höheren Latenzen.
 
Zurück
Oben