Bellek bankası, makine öğrenimi algoritmalarında geçmiş iterasyonlardan veya işlenmiş örneklerden gelen bilgileri depolamak ve referanslamak için kullanılan bir veri yapısıdır ve modelin bellek kapasitesini anlık hesaplama kısıtlamalarından etkili bir şekilde ayırır. Derin öğrenme (DL) bağlamında, bellek bankası genellikle gömülü veya özellik vektörleri için bir depo görevi görür. Bu, modelin tüm verileri aktif rasgele erişim belleğinde (RAM) aynı anda yeniden işlemek veya tutmak zorunda kalmadan, mevcut girdiyi önceki girdilerin geniş geçmişiyle karşılaştırmasına olanak tanır. Temsillerin bir tamponunu koruyarak, modeller daha geniş bir bağlamdan öğrenebilir ve uzun vadeli tutarlılık veya büyük veri kümeleriyle karşılaştırma gerektiren görevlerde performansı artırabilir. büyük veri kümeleriyle karşılaştırma gerektiren görevlerde performansı artırabilir.
Bir bellek bankasının temel işlevi, mevcut bilgileri mevcut toplu iş boyutunun ötesine genişletmektir. Eğitim sırasında, veriler sinir ağından geçerken, ortaya çıkan özellik temsilleri bankaya aktarılır. Banka maksimum kapasitesine ulaşırsa, genellikle en eski özellikler yeni özelliklere yer açmak için kaldırılır; bu işlem İlk Giren İlk Çıkar (FIFO) kuyruğu olarak bilinir.
Bu mekanizma özellikle önemlidir çünkü GPU bellek sınırlıdır. Bellek bankası olmadan, tek bir görüntüyü bir milyon diğer görüntüyle karşılaştırmak, standart donanıma sığması imkansız bir toplu iş boyutu gerektirir. Bellek bankası ile model, bu bir milyon görüntünün hafif vektörlerini depolayabilir ve nokta çarpımı veya kosinüs benzerliği gibi benzerlik arama tekniklerini kullanarak bunlara verimli bir şekilde başvurabilir.
Bellek bankaları, birçok gelişmiş bilgisayar görme (CV) ve doğal dil iş akışında temel bir unsur haline gelmiştir:
Hafıza bankasını, sözlükte bulunan diğer depolama ve işleme kavramlarından ayırmak yararlıdır:
Aşağıdakiler Python snippet, First-In, First-Out
(FIFO) bellek bankası kavramını kullanarak gösterir. torch. Bu yapı, özel eğitim döngüleri veya karmaşık çıkarım görevleri sırasında özellik vektörlerinin geçmişini korumak için sıklıkla kullanılır
.
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])
Güçlü olmalarına rağmen, bellek bankaları "temsil kayması" sorununu da beraberinde getirir. Kodlayıcı ağı her eğitim adımında biraz değiştiğinden, 100 adım önce bankada depolanan özellikler "eski" veya mevcut model durumuyla tutarsız olabilir. Momentum kodlayıcı (modelin yavaşça güncellenen ortalaması) gibi teknikler bu sorunu hafifletmeye yardımcı olur.
Bu gelişmiş teknikleri kullanan veri kümesi sürümlerini ve model artefaktlarını yönetmek isteyen ekipler için Ultralytics , verileri düzenlemek, deneyleri track ve modelleri verimli bir şekilde dağıtmak için merkezi bir hub sağlar. Özellik depolama ve geri getirmenin karmaşıklığını yönetmek, deneysel yapay zekadan (AI) sağlam üretim sistemlerine geçmek için gereklidir.