← Alle KI-News
Aionity · KI-NewsSicherheit

Spyre wird über torch-spyre als PyTorch-Gerät eingebunden

IBM beschreibt, wie torch-spyre PyTorch-Geräte, Speicherverwaltung, Streams und Compiler mit dem Spyre-Beschleuniger verbindet. Dadurch sollen eager und kompilierte Ausführung denselben Integrationspfad nutzen.

Symbolbild: Spyre wird über torch-spyre als PyTorch-Gerät eingebunden
Symbolbild · KI-generiert

Spyre ist ein auf Inferenz ausgelegter KI-Beschleuniger von IBM. Die Anbindung an PyTorch nutzt dessen vorhandene Schnittstellen für Geräte, Speicherverwaltung, Streams und Compiler. Über PrivateUse1 erhält Spyre eine eigene Geräteidentität; mit dem PyTorch-Allocator verwaltete Tensoren können auf dem Gerät mit dem Bezeichner „spyre“ liegen. FX-Graphen bleiben im Compilerpfad von Inductor. Die Integration soll sowohl eager als auch kompilierte Ausführung über denselben Weg ermöglichen und den Aufwand beim Starten von Programmen senken.

Die Hardware arbeitet mit 32 Kernen, die über einen Ring mit hoher Bandbreite verbunden sind. Jeder Kern verfügt über 2 MB lokalen Scratchpad-Speicher. Für Tensoren und Programme stehen bis zu 128 GB LPDDR5 zur Verfügung. Die Laufzeitumgebung verwaltet diesen LPDDR5-Speicher; der Compiler plant bereits vor der Ausführung, wie Daten zwischen LPDDR5 und den Scratchpads bewegt werden. Übertragen wird in Einheiten von 128 Byte, weshalb Layout und Ausrichtung für den Zugriff eine Rolle spielen.

Ein kompiliertes Spyre-Programm besteht aus Abläufen für verschiedene Funktionseinheiten, darunter Verarbeitungselemente sowie Einheiten für Spezialfunktionen und Speicherzugriffe. Die Hardware führt diese anhand verfügbarer Operanden aus. Zur Laufzeit wird das Programm als zusammenhängende Rechenoperation mit seinen Tensorargumenten eingereiht. Mehrere Rechenoperationen können dabei nicht gleichzeitig über die Laufzeit gestartet werden: Sie teilen sich eine Rechenwarteschlange und werden nacheinander abgearbeitet.

Überlappung ist laut PyTorch stattdessen zwischen Rechnen und Datenbewegung möglich. Streams führen ihre jeweiligen Arbeitsschritte geordnet aus; Ereignisse verbinden getrennte Streams, wenn eine Operation auf das Ergebnis einer anderen angewiesen ist. Werden Transfers und Berechnungen in getrennte Streams gelegt, können die entsprechenden Pipelines parallel arbeiten. Bleibt alles in einem Stream, laufen sie nacheinander. Kompilierte Programme setzen außerdem ein festgelegtes Datenlayout voraus. Adressen für Eingabe- und Ausgabetensoren bleiben zunächst offen, weil der Allocator sie erst zur Laufzeit bestimmt.

War der Artikel hilfreich?
Frag Aiory dazu Aiory liest den Artikel und beantwortet deine Fragen dazu.

Quellen

  • PyTorchPrimärquelleInhalt der PyTorch Foundation, CC BY 4.0, zusammengefasst und übersetzt.

KI-erstellter Artikel: Die Aionity-KI hat recherchiert – sie sucht die Originalquelle (etwa die Seite des Herstellers), zieht weitere Berichte hinzu und schreibt daraus einen eigenen Text. Alle Quellen stehen oben. Eine eigene Meinung gibt sie nicht ab. Kennzeichnung nach Art. 50 KI-Verordnung. Fehler? Sag uns im Discord Bescheid.

Alle KI-Meldungen live im Discord Die wichtigsten auch auf X und Bluesky.

← Alle KI-News

Fragen? Einfach mitreden – im Discord.

Discord ist ein kostenloser Gruppenchat. Dort kannst du nachfragen, was eine Meldung bedeutet, eigene Fragen stellen und dich mit anderen austauschen – ganz ohne Vorwissen. Wir fangen gerade erst an: Schau gern vorbei und sag Hallo.