Wie sorgt CPU-Offloading dafür, dass übergroße Modelle auf einem Heimserver laufen?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

CPU-Offloading hält ein übergroßes Modell am Laufen, indem ein Teil seiner Gewichte im Systemspeicher abgelegt wird, anstatt das gesamte Modell im Speicher des Beschleunigers vorhalten zu müssen.

Auf einem KI-Heimserver kann dadurch ein Modell, das auf einer einzelnen GPU nicht geladen werden kann, in einen nutzbaren lokalen Dienst verwandelt werden. Der Kompromiss ist unmittelbar: Der VRAM-Druck sinkt, aber CPU-Speicher, PCIe- oder Interconnect-Datenverkehr und manchmal auch die CPU-Ausführung werden Teil des Inferenzpfads. Offloading ist in erster Linie eine Kapazitätstechnik und nur dann eine Performance-Technik, wenn die Speicherhierarchie ausreichend schnell ist.

Ein übergroßes Modell scheitert, wenn das schnelle Gerät seinen erforderlichen Zustand nicht aufnehmen kann

Ein lokales Modell benötigt Platz für Gewichte sowie KV-Cache, Aktivierungen, temporäre Puffer und Laufzeitreservierungen. Wenn der Beschleuniger den erforderlichen residenten Zustand nicht aufnehmen kann, kann das Laden bereits fehlschlagen, bevor eine nützliche Inferenz beginnt.

Hugging Face Accelerate behandelt die Inferenz großer Modelle als Problem der Verteilung von Modellgewichten auf verfügbare Speicherebenen. CPU-Offloading fügt den Systemspeicher als langsamere Speicherebene für den Modellzustand hinzu.

Das Modell wird ausführbar, weil weniger davon gleichzeitig im VRAM verbleiben muss – nicht weil der Beschleuniger physischen Speicher hinzugewonnen hätte.

Ausgelagerte Gewichte verbleiben im Systemspeicher, bis ihre Schicht benötigt wird

Eine Laufzeitumgebung kann ausgewählte Parametertensoren auf der CPU belassen, während die aktuelle Schicht oder Schichtengruppe auf der GPU aktiv ist. Mit dem Fortschreiten der Ausführung werden benötigte Gewichte auf den Beschleuniger übertragen; ältere können zurückverschoben oder aus dem Gerätespeicher entfernt werden.

DeepSpeed ZeRO-Inference kann Modellgewichte im CPU- oder NVMe-Speicher halten und sie Schicht für Schicht auf die GPU streamen. Dadurch sinkt die maximale Belegung des Beschleunigerspeichers, während der Gewichtstransfer Teil der Ausführung wird.

Die Platzierung der Schichten kann auch statisch erfolgen: Einige Schichten verbleiben auf der CPU und werden dort ausgeführt, während andere auf der GPU bleiben. Beide Strategien tauschen Speicherdruck auf dem Gerät gegen langsamere Speicher- und Transferpfade ein.

Der PCIe- oder Unified-Memory-Pfad wird Teil jedes Tokens

Wenn Gewichte während der Vorwärtsausführung PCIe passieren müssen, liegen Transferlatenz und Bandbreite direkt auf dem kritischen Inferenzpfad. Ein Modell, das vollständig in den VRAM passt, kann residente Gewichte mit der Gerätebandbreite wiederverwenden; ein ausgelagertes Modell muss möglicherweise große Tensoren wiederholt abrufen.

PyTorch dokumentiert gepinnten Host-Speicher und das Transferverhalten zwischen CPU und GPU und verdeutlicht damit, warum die Bewegung zwischen Host und Gerät eine eigene Leistungsdomäne neben der GPU-Arithmetik darstellt.

Deshalb kann CPU-Offloading einen Out-of-Memory-Absturz in ein funktionierendes, aber langsameres Modell verwandeln. Zuerst wird die Kapazität gelöst; der Durchsatz kann jedoch stark sinken.

-15% OFF

Mehr Systemspeicher erweitert die Kapazität, garantiert aber keine höhere Geschwindigkeit

Es wird ausreichend RAM benötigt, um den ausgelagerten Teil sowie das Betriebssystem, den Seiten-Cache, Container, Datenbanken und andere Heimserver-Dienste aufzunehmen. Sobald das Modell in den Swap ausweicht, kann eine langsame Konfiguration unpraktisch werden.

Linux dokumentiert Speicher-Rückgewinnung und Swap als Teil der Speicherhierarchie des Systems. Ein ausgelagertes Modell konkurriert mit jedem anderen Prozess um dasselbe RAM-Budget.

Ein Heimserver, der zusätzlich ein NAS, einen Fotoindexer und eine Mediendatenbank betreibt, sollte echten Spielraum lassen, anstatt den RAM nur nach der Modellgröße zu bemessen.

Quantisierung und Offloading lösen unterschiedliche Teile des Anpassungsproblems

Quantisierung reduziert die für Gewichte verwendete Bytezahl, wodurch sowohl der GPU- als auch der CPU-Speicherbedarf sinken und das Transfervolumen reduziert werden kann. Offloading verändert, wo diese Bytes während der Ausführung liegen.

NVIDIA NeMo dokumentiert FP8-, INT8- und INT4-Quantisierung für einen geringeren Modellspeicherbedarf. Ein quantisiertes Modell passt möglicherweise vollständig auf die GPU und benötigt kein Offloading; ein größeres Modell kann dennoch beide Techniken erfordern.

Die richtige Reihenfolge besteht darin, zunächst die akzeptable Präzision und Modellqualität festzulegen und anschließend die Platzierung zu wählen. Das Offloading einer unnötig großen Repräsentation kann Bandbreite verschwenden.

Nutze CPU-Offloading, wenn das Ausführen des Modells wichtiger ist als maximaler Durchsatz

Der wichtigste Anwendungsfall ist ein gelegentlich verwendetes lokales Modell, das den VRAM übersteigt, aber weiterhin eine akzeptable Latenz liefert, wenn ein Teil seines Zustands im RAM liegt. Für interaktive Dienste mit mehreren Benutzern ist es weniger attraktiv, wenn jedes Token wiederholt eine langsame Verbindung passieren muss.

Der Leitfaden von ZimaSpace zur Speicher- und Beschleunigerdimensionierung für KI-NAS-Systeme bildet die Planungsebene: Offloading sollte als Kapazitätsfallback innerhalb der gesamten Heimserver-Last betrachtet werden.

Miss die VRAM-Nutzung, RAM-Nutzung, die zwischen Host und Gerät übertragenen Bytes, die Zeit bis zum ersten Token, die ausgegebenen Tokens pro Sekunde und die Auswirkungen auf andere selbst gehostete Dienste. Eine Konfiguration, die zwar technisch lädt, aber den Swap erzwingt oder das NAS ausbremst, ist keine sinnvolle Lösung.

Die Erklärung von ZimaSpace zu Modellresidenz und -verdrängung behandelt den benachbarten Zielkonflikt: Das Freigeben von Beschleunigerspeicher erhöht die Kapazität für andere Aufgaben, kann aber dazu führen, dass die nächste Anfrage erneut für einen Lade- oder Transferpfad bezahlt.

FAQ

Führt CPU-Offloading RAM und VRAM zu einem einzigen schnellen Speicherpool zusammen?

Nein. Die Laufzeitumgebung kann den Modellzustand auf beide Ebenen verteilen, aber CPU-RAM und GPU-VRAM haben unterschiedliche Bandbreiten und Latenzen. Transfers zwischen ihnen können zum Hauptengpass der Inferenz werden.

Wird ein ausgelagertes Modell durch mehr RAM schneller?

Nur wenn im aktuellen System RAM knapp ist, Paging stattfindet oder der vorgesehene ausgelagerte Zustand nicht resident gehalten werden kann. Zusätzlicher ungenutzter RAM beseitigt weder PCIe-Kosten noch CPU-Ausführungskosten.

Ist SSD-Offloading dasselbe wie CPU-Offloading?

Nein. Disk-Offloading fügt eine noch langsamere Speicherebene hinzu, wenn der RAM nicht ausreicht. Dadurch kann die Kapazität weiter steigen, aber Modellseiten müssen den Speicher und in der Regel anschließend den Systemspeicher passieren, bevor sie auf dem Beschleuniger ausgeführt werden.

Tech- & KI-Zentrum

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.