Eine Speicherbank ist eine Datenstruktur, die in Algorithmen des maschinellen Lernens verwendet wird, um Informationen aus früheren Iterationen oder verarbeiteten Stichproben zu speichern und darauf zu verweisen, wodurch die Speicherkapazität des Modells effektiv von seinen unmittelbaren Rechenbeschränkungen entkoppelt wird . Im Zusammenhang mit Deep Learning (DL) dient eine Speicherbank in der Regel als Speicherort für Einbettungen oder Merkmalsvektoren. Dadurch kann ein Modell die aktuelle Eingabe mit einer umfangreichen Historie früherer Eingaben vergleichen, ohne alle diese Daten erneut verarbeiten oder gleichzeitig im aktiven Arbeitsspeicher (RAM) halten zu müssen. Durch die Pflege eines Puffers mit Darstellungen können Modelle aus einem breiteren Kontext lernen und so die Leistung bei Aufgaben verbessern, die langfristige Konsistenz oder den Vergleich mit großen Datensätzen erfordern.
Die Hauptfunktion einer Speicherbank besteht darin, die verfügbaren Informationen über die aktuelle Batchgröße hinaus zu erweitern. Während des Trainings werden die Daten durch das neuronale Netzwerk geleitet und die daraus resultierenden Merkmalsdarstellungen in die Bank verschoben. Wenn die Bank ihre maximale Kapazität erreicht, werden in der Regel die ältesten Merkmale entfernt, um Platz für neue zu schaffen. Dieser Vorgang wird als First-In-First-Out-Verfahren (FIFO) bezeichnet.
Dieser Mechanismus ist besonders wichtig, weil GPU Speicher begrenzt ist. Ohne eine Speicherbank würde der Vergleich eines einzelnen Bildes mit einer Million anderer Bilder eine Batchgröße erfordern, die auf Standard-Hardware nicht möglich ist . Mit einer Speicherbank kann das Modell leichtgewichtige Vektoren dieser Millionen von Bildern speichern und sie mithilfe von Ähnlichkeitssuchtechniken, wie dem Skalarprodukt oder der Kosinusähnlichkeit,
Speicherbanken sind zu einem Eckpfeiler in mehreren fortschrittlichen Computer Vision (CV) - und natürlichen Sprach- Workflows geworden:
Es ist hilfreich, die Speicherbank von anderen Speicher- und Verarbeitungskonzepten im Glossar zu unterscheiden:
Die folgenden Python Der Ausschnitt veranschaulicht das Konzept einer First-In, First-Out
(FIFO)-Speicherbank unter Verwendung von torchDiese Struktur wird häufig verwendet, um eine fortlaufende Historie von Merkmalsvektoren
während benutzerdefinierter Trainingsschleifen oder komplexer Inferenzaufgaben zu pflegen.
import torch
# Initialize a memory bank (Capacity: 100 features, Vector Dim: 128)
# In a real scenario, these would be embeddings from a model like YOLO26
memory_bank = torch.randn(100, 128)
# Simulate receiving a new batch of features (e.g., from the current image batch)
new_features = torch.randn(10, 128)
# Update the bank: Enqueue new features, Dequeue the oldest ones
# This maintains a fixed size while keeping the memory 'fresh'
memory_bank = torch.cat([memory_bank[10:], new_features], dim=0)
print(f"Updated Memory Bank Shape: {memory_bank.shape}")
# Output: Updated Memory Bank Shape: torch.Size([100, 128])
Speicherbanken sind zwar leistungsstark, bringen jedoch die Herausforderung der „Darstellungsdrift“ mit sich. Da sich das Encoder-Netzwerk mit jedem Trainingsschritt leicht verändert, können die vor 100 Schritten in der Bank gespeicherten Merkmale „veraltet“ oder mit dem aktuellen Modellstatus inkonsistent sein. Techniken wie die Verwendung eines Momentum-Encoders (ein sich langsam aktualisierender Durchschnitt des Modells) helfen, dieses Problem zu mildern.
Für Teams, die Datensatzversionen und Modellartefakte verwalten möchten, die diese fortschrittlichen Techniken nutzen, bietet Ultralytics eine zentrale Anlaufstelle, um Daten zu organisieren, Experimente track und Modelle effizient bereitzustellen. Die Verwaltung der Komplexität der Speicherung und Abfrage von Merkmalen ist unerlässlich für den Übergang von experimenteller künstlicher Intelligenz (KI) zu robusten Produktionssystemen.