Sehr große Modelle mit Accelerate laden
Zusammenfassung
Accelerate verteilt Modellteile über GPU, CPU und Datenträger, statt zuerst das gesamte Modell im Arbeitsspeicher aufzubauen. Leere Initialisierung und automatische Gerätekarten vermeiden unnötige Spitzen. init_empty_weights erzeugt die Modellstruktur zunächst ohne Parameterdaten.
Ideen
- Speicherspitzen beim Laden können größer sein als der spätere Inferenzbedarf.
- Hierarchisches Offloading tauscht Kapazität gegen Übertragungszeit und Komplexität.
Fakten
- init_empty_weights erzeugt die Modellstruktur zunächst ohne Parameterdaten.
- device_map kann Schichten auf GPU, CPU und Datenträger verteilen.
Kritik
- Ein Modell, das technisch lädt, kann durch Offloading für interaktive Nutzung zu langsam werden.
Empfehlungen
- Plane Speicherbudget und Transferpfade pro Schicht und messe die resultierende Tokenlatenz.
Referenzen
Originalbeitrag auf Hugging Face lesen →
Links zur Originalquelle und zum Webarchiv öffnen einen neuen Tab.