Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

Banco de memoria

Un banco de memoria es una estructura de datos utilizada en algoritmos de aprendizaje automático para almacenar y consultar información de iteraciones pasadas o muestras procesadas, desacoplando eficazmente la capacidad de memoria del modelo de sus limitaciones computacionales inmediatas . En el contexto del aprendizaje profundo (DL), un banco de memoria suele servir como repositorio de incrustaciones o vectores de características. Esto permite a un modelo comparar la entrada actual con un amplio historial de entradas anteriores sin necesidad de volver a procesar o mantener todos esos datos en la memoria de acceso aleatorio (RAM) activa simultáneamente. Al mantener un búfer de representaciones, los modelos pueden aprender de un contexto más amplio, mejorando el rendimiento en tareas que requieren consistencia a largo plazo o comparación con grandes conjuntos de datos.

La mecánica de un banco de memoria

La función principal de un banco de memoria es ampliar la información disponible más allá del tamaño del lote actual. Durante el entrenamiento, a medida que los datos fluyen a través de la red neuronal, las representaciones de características resultantes se introducen en el banco. Si el banco alcanza su capacidad máxima , las características más antiguas suelen eliminarse para dejar espacio a las nuevas, un proceso conocido como cola «primero en entrar, primero en salir» (FIFO).

Este mecanismo es especialmente importante porque GPU memoria de la GPU es finita. Sin un banco de memoria, comparar una sola imagen con un millón de imágenes requeriría un tamaño de lote imposible de ajustar en el hardware estándar. Con un banco de memoria, el modelo puede almacenar vectores ligeros de esos millones de imágenes y referenciarlos de forma eficiente utilizando técnicas de búsqueda por similitud, como el producto escalar o la similitud coseno.

Aplicaciones en el mundo real

Los bancos de memoria se han convertido en una piedra angular en varios flujos de trabajo avanzados de visión artificial (CV) y lenguaje natural :

  • Aprendizaje contrastivo (aprendizaje auto-supervisado): Una de las aplicaciones más famosas es el aprendizaje contrastivo, específicamente en algoritmos como Momentum Contrast (MoCo). Aquí, el objetivo es enseñar al modelo a distinguir una imagen específica de muchas muestras «negativas» (imágenes diferentes). Un banco de memoria almacena miles de representaciones de muestras negativas , lo que permite al modelo aprender características robustas sin necesidad de datos de entrenamiento etiquetados. Para obtener detalles técnicos más profundos, los investigadores suelen hacer referencia al artículo de MoCo que popularizó este enfoque.
  • Seguimiento de objetos a largo plazo: en el análisis de vídeo, un objeto (como un coche o una persona) puede quedar temporalmente oculto por un obstáculo. Los rastreadores estándar pueden perder la identidad (ID) del objeto durante esta oclusión. Los rastreadores avanzados utilizan un banco de memoria para almacenar las características visuales de los objetos detectados en el pasado. Cuando el objeto reaparece, el sistema consulta el banco para restablecer la ID correcta. Los usuarios que utilizan Ultralytics para el seguimiento de objetos se benefician de una lógica interna similar que mantiene la coherencia de la identidad entre los fotogramas.
  • Comprensión de vídeos: para reconocer acciones que duran varios segundos o minutos, los modelos necesitan un contexto temporal. Un banco de memoria actúa como un búfer para fotogramas o clips pasados, lo que permite a la red «recordar» lo que sucedió al principio de un vídeo mientras procesa el final. Esto es crucial para un reconocimiento preciso de las acciones.

Distinguir conceptos relacionados

Es útil diferenciar el banco de memoria de otros conceptos de almacenamiento y procesamiento que se encuentran en el glosario:

  • Banco de memoria frente a base de datos vectorial: Ambos almacenan incrustaciones para su recuperación. Sin embargo, un banco de memoria suele ser una estructura transitoria en memoria que se utiliza dinámicamente durante el entrenamiento o la inferencia activa de una sola sesión de modelo. Una base de datos vectorial (como las que se utilizan en RAG) es una solución de almacenamiento persistente y escalable destinada a durar indefinidamente y servir a múltiples aplicaciones.
  • Banco de memoria frente a ventana de contexto: Una ventana de contexto (común en los transformadores) define la longitud máxima de la secuencia de entrada que el modelo procesa a la vez (por ejemplo, 32 000 tokens). Un banco de memoria es un búfer externo que almacena representaciones comprimidas fuera de la ventana de procesamiento activa , lo que en teoría permite una profundidad de memoria infinita, como se ve en arquitecturas como Transformer-XL.
  • Banco de memoria frente a tamaño de lote: El tamaño del lote determina cuántas muestras se procesan en paralelo para las actualizaciones del gradiente. Un banco de memoria aumenta el número efectivo de muestras que el modelo puede «ver» con fines comparativos sin aumentar el coste computacional de las pasadas hacia adelante y hacia atrás.

Ejemplo de código: Simulación de un banco de características

Los siguientes Python El fragmento muestra el concepto de un banco de memoria de entrada por delante, salida por delante (FIFO) utilizando torch. Esta estructura se utiliza a menudo para mantener un historial continuo de vectores de características durante bucles de entrenamiento personalizados o tareas de inferencia complejas.

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])

Desafíos y consideraciones

Aunque potentes, los bancos de memoria introducen el reto de la «deriva de representación». Dado que la red del codificador cambia ligeramente con cada paso de entrenamiento, las características almacenadas en el banco desde hace 100 pasos pueden estar «obsoletas» o ser inconsistentes con el estado actual del modelo. Técnicas como el uso de un codificador de impulso (una media del modelo que se actualiza lentamente) ayudan a mitigar este problema.

Para los equipos que buscan gestionar versiones de conjuntos de datos y artefactos de modelos que utilizan estas técnicas avanzadas, Ultralytics proporciona un centro centralizado para organizar datos, track los experimentos e implementar modelos de manera eficiente. Gestionar la complejidad del almacenamiento y la recuperación de características es esencial para pasar de la inteligencia artificial (IA) experimental a sistemas de producción robustos .

Únase a la comunidad Ultralytics

Únete al futuro de la IA. Conecta, colabora y crece con innovadores de todo el mundo

Únete ahora