Банк памяти — это структура данных, используемая в алгоритмах машинного обучения для хранения и ссылки на информацию из прошлых итераций или обработанных выборок, что позволяет эффективно отделить объем памяти модели от ее непосредственных вычислительных ограничений. В контексте глубокого обучения (DL) банк памяти обычно служит хранилищем для встраиваний или векторов признаков. Это позволяет модели сравнивать текущий входной сигнал с обширной историей предыдущих входных сигналов без необходимости повторной обработки или одновременного хранения всех этих данных в активной оперативной памяти (RAM). Благодаря поддержанию буфера представлений модели могут обучаться в более широком контексте, улучшая производительность в задачах, требующих долгосрочной согласованности или сравнения с большими наборами данных.
Основная функция банка памяти заключается в расширении доступной информации за пределы текущего размера партии. Во время обучения, по мере прохождения данных через нейронную сеть, полученные представления характеристик заносятся в банк. Если банк достигает своей максимальной емкости, самые старые характеристики обычно удаляются, чтобы освободить место для новых, — этот процесс известен как очередь «первым пришел, первым ушел» (FIFO).
Этот механизм особенно важен, поскольку GPU память GPU ограничена. Без банка памяти для сравнения одного изображения с миллионом других потребовался бы пакет данных, который невозможно поместить на стандартном оборудовании. С банком памяти модель может хранить легкие векторы этих миллионов изображений и эффективно обращаться к ним с помощью методов поиска по схожести, таких как скалярное произведение или косинусная схожесть
Банки памяти стали краеугольным камнем в нескольких передовых рабочих процессах компьютерного зрения (CV) и естественного языка :
Полезно отличать банк памяти от других концепций хранения и обработки данных, представленных в глоссарии:
Следующие Python Фрагмент кода демонстрирует концепцию банка памяти по принципу «первым пришел, первым ушел»
(FIFO) с использованием torch. Эта структура часто используется для ведения скользящей истории векторов признаков
во время пользовательских циклов обучения или сложных задач вывода.
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])
Несмотря на свою мощность, банки памяти создают проблему «смещения представления». Поскольку сеть кодировщика слегка меняется с каждым шагом обучения, характеристики, хранящиеся в банке 100 шагов назад, могут быть «устаревшими» или несовместимыми с текущим состоянием модели. Такие методы, как использование кодировщика с импульсом (медленно обновляемое среднее значение модели), помогают смягчить эту проблему.
track команд, которые хотят управлять версиями наборов данных и артефактами моделей, использующими эти передовые технологии, Ultralytics предоставляет централизованный хаб для организации данных, отслеживания экспериментов и эффективного развертывания моделей. Управление сложностью хранения и извлечения функций имеет важное значение для перехода от экспериментального искусственного интеллекта (ИИ) к надежным производственным системам.