HN Launch: Virtuelle GPU-Verbindungen über TCP
(thundercompute.com)- GPUs sind im Gegensatz zu CPU, Storage, Networking und Arbeitsspeicher noch nicht als reichlich verfügbare Ressource virtualisiert worden; Thunder Compute will dies auf der Systemebene lösen
- Beim Ausbau des Angebots geht es nicht nur darum, mehr Chips zu produzieren, sondern auch darum, bereits bereitgestellte GPUs durch Software-Nutzung besser auszulasten
- Während bisherige Optimierungen auf der Workload-Ebene blieben, etwa beim Batching von Inferenz oder beim Queuing von Trainingsjobs, zielt GPU-Virtualisierung auf einen vergleichsweise wenig bearbeiteten Systembereich
- NVIDIA H100 kann ab 1,38 $ pro Stunde in VS Code, CLI und Browser genutzt werden; hervorgehoben werden 80 % Einsparung gegenüber AWS, keine Verträge, keine Egress-Kosten und skalierbarer Storage
- Vier Jahre lang wurden im Stealth-Modus Forschungsprototypen entwickelt; über die eigene Cloud und Enterprise-Partner soll eine Verbesserung der GPU-Kapazität in Rechenzentren ausgerollt werden
Niedrige Auslastung durch GPU-Virtualisierung verbessern
- Thunder Compute ist der Ansicht, dass mehrere knappe Ressourcen im Computing mit der Zeit reichlich verfügbar wurden, GPUs diesen Wandel jedoch noch nicht durchlaufen haben
- GPUs reichlich verfügbar zu machen, hängt nicht nur von der Produktion weiterer Chips ab, sondern auch von Software, die bereits bereitgestellte Chips besser nutzt
- Derzeit werden GPUs häufig nicht ausreichend ausgelastet, und bestehende Lösungen konzentrieren sich vor allem auf die Workload-Ebene
- Inferenzanfragen werden per Batching verarbeitet
- Trainingsjobs werden über mehrere Server-Flotten hinweg per Queuing organisiert
- CPU, Storage, Networking und Arbeitsspeicher sind weithin virtualisiert, bei GPUs hat sich Virtualisierung auf vergleichbarem Niveau jedoch noch nicht etabliert
- Diesen freien Bereich auf Systemebene anzugehen, ist der Kernansatz von Thunder Compute
Produktansatz und Rollout-Plan
- Thunder Compute ist ein Systemlabor mit kommerziellem Fokus, das aktuelle Forschung zur GPU-Virtualisierung in Produktionsumgebungen anwenden will
- Das Team beschreibt sich als bestehend aus Infrastruktur-Experten und Systemforschern mit Erfahrung bei Citadel Securities, Aquatic und AWS
- Vier Jahre lang wurden im Stealth-Modus Forschungsprototypen entwickelt; aktuell werden die Ergebnisse über die eigene Cloud und Enterprise-Partner ausgerollt
- Laut Produktbeschreibung ist NVIDIA H100 ab 1,38 $ pro Stunde nutzbar
- Zugriff ist über VS Code, CLI und Browser möglich
- Hervorgehoben werden 80 % Einsparung gegenüber AWS
- Keine Verträge, keine Egress-Kosten und skalierbarer Storage werden angeboten
- Ziel ist es, die GPU-Kapazität in Rechenzentren schrittweise zu verbessern
1 Kommentare
Hacker-News-Kommentare
Ziemlich interessant. Ich brauchte früher einmal GPU-over-IP, allerdings nur für Video-Transcoding
Mein Homelab-Server hatte eine leistungsschwache AMD-GPU, die jedes Mal den Kernel abstürzen ließ, wenn ich Video-Encoding versuchte, und mein Gaming-PC hatte eine NVIDIA RTX 3080. Also habe ich https://github.com/steelbrain/ffmpeg-over-ip gebaut, den Server auf der Windows-Maschine und den Client auf dem Medienserver (Plex, Emby, Jellyfin usw.) laufen lassen, und es funktionierte perfekt
https://gist.github.com/tzmartin/88abb7ef63e41e27c2ec9a5ce5d...
https://news.ycombinator.com/showhn.html
https://news.ycombinator.com/item?id=22336638
Ich frage mich auch, ob es abseits von Video-Encoding sinnvolle Einsatzfälle für GPU-over-network gibt. Wenn die Latenz steigt, dürfte das für Machine Learning oder grafikintensive Arbeit doch schwierig werden
Wenn das an der CPU/GPU-Grenze arbeitet, frage ich mich, ob es bei Datensätzen, die nicht in den VRAM passen, nicht zu einem enormen I/O-Flaschenhals kommt
Vielleicht verstehe ich die Funktionsweise falsch, aber wenn GPU-I/O abgefangen wird, klingt es so, als müsste in jeder Epoche der komplette Datensatz zur Remote-Maschine gestreamt werden, was verschwenderisch wirkt
Die BERT-Inferenzleistung ist hier zu sehen: https://youtu.be/qsOBFQZtsFM?t=69
Training hat mehr Overhead als Inferenz, und wir arbeiten an weiteren Optimierungen, um näher an native Performance zu kommen
Für alle, die neugierig sind, wie das tatsächlich funktioniert: Es sieht so aus, als würde eine Bibliothek in den Prozess injiziert, diese Funktionen[1] hooken und dann an den Service weiterreichen
[1] https://pastebin.com/raw/kCYmXr5A
ld-/ldd-Flag, das anzeigt, welche Symbole neu gebunden werdenAußerdem dachte ich, dass Symbole schwach sein müssten, um neu gebunden zu werden. Da NVIDIA kaum schwache Symbole exponieren dürfte, heißt das wohl, dass es praktisch ein LD_PRELOAD-Ansatz ist
Interessant, aber mich interessiert eher Self-Hosting. Ich habe bereits viele GPUs, einige laufen und einige stehen ungenutzt herum
Ich frage mich, ob es eine Self-Hosting-Option gibt, damit man die bereits vorhandenen GPUs nutzen kann
Vorteile wie effizientes Job-Scheduling, GPU-Sharing und einfache Bedienung würden auch in einer Self-Hosting-Umgebung unverändert greifen. Wir sind für diese Möglichkeit in Zukunft definitiv offen
Ich verstehe es nicht ganz. Man kann in ECS doch einfach direkt die gewünschte GPU-Instanz starten. Warum sollte man in ECS eine Instanz starten, um dann eure GPUs von ECS aus zu nutzen?
Außerdem verstehe ich nicht, warum man statt echtem Nitro ein halbes Nitro wollen sollte
Wenn man fortlaufend Entwicklung mit GPU-Bedarf betreibt, zahlt man normalerweise für die gesamte Zeit, in der die Instanz eingeschaltet ist. Mit Thunder zahlt man nur für die Zeit, in der die GPU tatsächlich genutzt wird. Wenn also nur CPU-Code läuft, fallen keine GPU-Zeitkosten an. Die Alternative wäre, Instanzen manuell ein- und auszuschalten, was umständlich sein kann
Außerdem kann man Typ und Anzahl der verwendeten GPUs leicht skalieren. Wenn du zum Beispiel auf einer günstigen T4-Instanz entwickelst und dann ein komplettes Deep-Learning-Training auf 8 A100s laufen lassen willst, musst du nicht die Instanz wechseln und die Umgebung neu einrichten. Du führst einfach einen Befehl aus und lässt es direkt auf stärkeren GPUs laufen
Man kann ohne GPU entwickeln und dann plötzlich eine GPU anhängen, wenn eine Simulation läuft, und es dürfte deutlich günstiger als AWS sein. Im Kern wirkt es so, als würde es das Problem, das Ray(https://www.ray.io/) löst, auf allgemeinere Weise angehen. Noch spannender wäre feineres GPU-Sharing, etwa halbe GPUs
Das interessiert mich sehr, deshalb habe ich beschlossen, T4-Instanzen kostenlos freizuschalten. Probiert es gern aus und sagt mir, was ihr davon haltet
Cool. Ich frage mich, ob ihr es auch mit MIG oder vGPU zum Laufen bringen konntet
Eines der wichtigsten kurzfristigen Ziele ist GPU-Sharing. Dabei sollen Nutzer nicht auf einen Teil des Speichers begrenzt sein, sondern den gesamten GPU-Speicher verwenden können, was besser sein könnte als MIG oder vGPU
Ich frage mich, wie es sich bei echter Nutzung mit sinnvoller Auslastung anfühlt. Taugt es auch für Hash-Cracking?
Immer wenn ich an virtuelle GPUs über das Netzwerk denke, muss ich an Botnets denken. Besonders an diese Stelle hier: https://www.hpcwire.com/2012/12/06/gpu_monster_shreds_passwo... — „Gosney musste zunächst Professor Amnon Barak, Mitbegründer von Mosix, davon überzeugen, dass er nicht ‘die Welt in ein gigantisches Botnet verwandeln’ wollte“
Diese Technologie hat interessante Anwendungsmöglichkeiten für den Aufbau sehr flexibler Cluster innerhalb eines Rechenzentrums, und genau das untersuchen wir derzeit
Die ursprünglichen SGI-Ingenieure, die glx entwickelt haben, haben sehr sorgfältig darauf geachtet, für GPU-Transfers X11-Mechanismen zu verwenden. Deshalb war es ziemlich einfach, einen GL-Stream übers Netzwerk zu schicken und auf meiner Grafikkarte rendern zu lassen
Das war so nach dem Motto: „Auf dem Supercomputer am Ende des Flurs ausführen, auf der Workstation rendern.“ Neuere Treiberentwicklung scheint darauf keine Rücksicht mehr zu nehmen, daher ist das heute meist nicht mehr möglich. Ich weiß nicht, wie nützlich es in der Praxis wirklich war. Wenn man eine gute Grafikkarte hatte, hatte man meistens auch eine gute CPU. Trotzdem war es spaßig zum Herumspielen, und es hatte einen seltsamen Reiz, dass ein Programm im Maschinenraum beschleunigte Grafik bekam. Einmal habe ich es sogar geschafft, glquake auf diese Weise laufen zu lassen
Dass das überhaupt möglich ist, ist beeindruckend, aber ich frage mich, was passiert, wenn die Netzwerkverbindung abbricht oder nicht zu 100 % stabil ist
Meiner Erfahrung nach reagieren Treiber schon dann nicht gut, wenn sich die lokale GPU nur ein bisschen merkwürdig verhält