Als nächstesNächster Leitfaden
GPU-Planung und Cluster-Orchestrierung
Technisch
Technischer Leitfaden
Wie KI-Frameworks den begrenzten Speicher auf einer GPU zuweisen, wiederverwenden und zurückgewinnen und warum verbleibende Lücken (Fragmentierung) zu Fehlern wegen unzureichendem Speicher führen können, selbst wenn technisch gesehen noch genügend Speicher vorhanden ist.
Es zu verstehen, ist der Schlüssel, um große Modelle einzubauen und mysteriöse Unfälle zu vermeiden.
Der GPU-Speicher ist fest und wertvoll: Eine Karte kann insgesamt 24, 80 oder 192 GB haben, aufgeteilt nach Modellgewichten, Aktivierungen, Farbverläufen, Optimierungszuständen und temporären Puffern. Es wäre langsam, den Treiber aufzurufen, um bei jedem Vorgang Speicher zuzuweisen. Daher verwenden Frameworks wie PyTorch einen Caching-Allokator, der große Blöcke im Voraus erfasst, Unterteile verteilt und die freigegebenen Teile dann in einem Pool zur Wiederverwendung bereithält. Der Haken ist die Fragmentierung: Wenn Tensoren unterschiedlicher Größe zugewiesen und freigegeben werden, zerfällt der freie Speicherplatz in verstreute Blöcke. Sie können insgesamt 5 GB frei haben, aber keinen zusammenhängenden 2-GB-Tensor zuweisen, weil keine einzelne Lücke groß genug ist. Aus diesem Grund kann das Training trotz scheinbar verfügbarem Headroom mit Fehlern wegen unzureichendem Arbeitsspeicher abstürzen.
Architekturentscheidungen beeinflussen über Jahre hinweg die Leistung und die Betriebskosten.
Technische Schulungen helfen Teams dabei, den richtigen Stack auszuwählen, nicht nur den neuesten.
Bessere technische Entscheidungen reduzieren Zuverlässigkeitsvorfälle in der Produktion.
Die Speicherverwaltung wird intelligenter und ausgelagerter, inspiriert von Betriebssystemen. Techniken wie Allokatoren im virtuellen Speicherstil und ausgelagerte Aufmerksamkeit (zur Verwaltung des KV-Cache während der Inferenz) reduzieren Verschwendung und Fragmentierung erheblich. Erwarten Sie, dass Frameworks standardmäßig erweiterbare, defragmentierende Allokatoren, bessere Sichtbarkeit durch integrierte Profiler und eine engere Kopplung mit Auslagerung und Neuberechnung verwenden, damit das System GPU, CPU und Festplattenspeicher automatisch jongliert, um die Auslastung hoch zu halten und Abstürze seltener zu machen.
Ein Trainingslauf, der mit „CUDA nicht genügend Speicher“ abstürzt, obwohl im reservierten Speicher freier Speicherplatz angezeigt wird. Dies wurde durch die Einstellung von PYTORCH_CUDA_ALLOC_CONF zur Aktivierung erweiterbarer Segmente behoben.
Verwenden Sie Torch.cuda.memory_summary oder einen Speicher-Snapshot, um zu diagnostizieren, welche Tensoren und Fragmentierung die 80 GB einer GPU verschlingen.
PagedAttention von vLLM verwaltet den Aufmerksamkeits-KV-Cache in Seiten fester Größe, um viele gleichzeitige Chat-Anfragen zu bedienen, ohne Speicher zu verschwenden.
Reduzieren Sie die Batch-Größe oder aktivieren Sie Gradient Checkpointing, um den Aktivierungsspeicher zu reduzieren und fragmentierungsbedingte Fehler wegen unzureichendem Arbeitsspeicher zu vermeiden.
Die Optimierung eines Benchmarks kann umfassendere Systemschwächen verbergen.
Infrastruktur- und Wartungskosten werden oft unterschätzt.
Sicherheits- und Beobachtbarkeitslücken können größer werden, wenn die Systeme komplexer werden.
Definieren Sie vor der Implementierung Latenz-, Qualitäts- und Kostenziele.
Benchmark unter realistischen Last- und Datenbedingungen.
Instrumentenüberwachung auf Fehler, Drift und Benutzereinflüsse.
Bereiten Sie vor der Skalierung Rollback- und Incident-Response-Pfade vor.
Free newsletter
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Wie KI-Frameworks den begrenzten Speicher auf einer GPU zuweisen, wiederverwenden und zurückgewinnen und warum verbleibende Lücken (Fragmentierung) zu Fehlern wegen unzureichendem Speicher führen können, selbst wenn technisch gesehen noch genügend Speicher vorhanden ist. Es zu verstehen ist der Schlüssel zur Anpassung an große Modelle und zur Vermeidung mysteriöser Abstürze.
Fragmentierung bedeutet, dass der gesamte freie Speicher ausreicht, dieser jedoch in Stücke zerbrochen ist, sodass keine einzelne Lücke groß genug für einen großen Tensor ist.
Der Aufruf von cudaMalloc/cudaFree für jeden Vorgang ist langsam, daher greift der Caching-Allokator nach großen Blöcken und verwendet die freigegebenen Blöcke aus einem Pool wieder.
Dieses klassische Symptom der Fragmentierung tritt auf, wenn freier Speicher vorhanden ist, dieser jedoch nicht als zusammenhängender Block vorliegt, der groß genug für die Anforderung ist.
Wenn Sie PYTORCH_CUDA_ALLOC_CONF zur Aktivierung von expandable_segments festlegen, kann der Allokator Segmente vergrößern und fragmentierungsbedingte Fehler reduzieren.
PagedAttention speichert den KV-Cache in Seiten fester Größe wie dem virtuellen Speicher des Betriebssystems, wodurch die Fragmentierung verringert und viele Anfragen effizient bearbeitet werden.
Lerne weiter
Weitere Leitfäden zu diesem Thema ausgewählt
Als nächstesNächster Leitfaden
GPU-Planung und Cluster-Orchestrierung
Technisch