Yolo 비전 선전
선전
지금 참여하기
용어집

메모리 뱅크

메모리 뱅크는 머신러닝 알고리즘에서 과거 반복 과정이나 처리된 샘플의 정보를 저장하고 참조하기 위해 사용되는 데이터 구조로, 모델의 메모리 용량을 즉각적인 계산 제약으로부터 효과적으로 분리합니다. 딥러닝(DL)의 맥락에서 메모리 뱅크는 일반적으로 임베딩이나 특징 벡터의 저장소 역할을 합니다. 이를 통해 모델은 모든 데이터를 활성 랜덤 액세스 메모리(RAM)에 동시에 재처리하거나 유지할 필요 없이 방대한 과거 입력 기록과 현재 입력을 비교할 수 있습니다. 표현 버퍼를 유지함으로써 모델은 더 넓은 맥락에서 학습할 수 있어, 장기적 일관성이나 대규모 데이터셋 대비 비교가 필요한 작업에서 성능을 향상시킵니다.

기억 저장소의 작동 원리

메모리 뱅크의 주요 기능은 현재 배치 크기 이상의 정보를 확장하는 것이다. 훈련 과정에서 데이터가 신경망을 통과할 때, 생성된 특징 표현들은 뱅크로 밀려 들어간다. 뱅크가 최대 용량에 도달하면, 일반적으로 가장 오래된 특징들이 제거되어 새로운 특징들을 위한 공간을 마련하는데, 이 과정을 선입선출(FIFO) 큐라고 한다.

이 메커니즘은 특히 중요한데 그 이유는 GPU 메모리는 유한합니다. 메모리 뱅크가 없다면 단일 이미지를 백만 개의 다른 이미지와 비교하는 작업은 표준 하드웨어에 수용 불가능한 배치 크기를 요구할 것입니다. 메모리 뱅크를 사용하면 모델은 백만 개의 이미지에 대한 경량 벡터를 저장하고 내적(dot product)이나 코사인 유사도(cosine similarity)와 같은 유사도 검색 기법을 활용해 이를 효율적으로 참조할 수 있습니다.

실제 애플리케이션

메모리 뱅크는 여러 첨단 컴퓨터 비전(CV) 및 자연어 처리 워크플로우의 핵심 요소로 자리 잡았습니다:

  • 대조 학습(자기 지도 학습): 가장 유명한 응용 분야 중 하나는 대조 학습, 특히 모멘텀 대조(MoCo)와 같은 알고리즘입니다. 여기서 목표는 모델이 특정 이미지를 수많은 '부정' 샘플(다른 이미지)과 구별하도록 가르치는 것입니다. 메모리 뱅크는 수천 개의 부정 샘플 표현을 저장하여 모델이 라벨링된 훈련 데이터 없이도 강건한 특징을 학습할 수 있게 합니다. 심층적인 기술적 세부사항에 대해서는 연구자들이 이 접근법을 대중화한 MoCo 논문을 자주 참조합니다.
  • 장기 객체 추적: 영상 분석에서 객체(차량이나 사람 등)는 장애물에 의해 일시적으로 가려질 수 있습니다. 표준 추적기는 이러한 가림 현상 동안 객체의 식별자(ID)를 잃을 수 있습니다. 고급 추적기는 메모리 뱅크를 활용해 과거에 탐지된 객체의 시각적 특징을 저장합니다. 객체가 재등장하면 시스템은 뱅크를 조회하여 올바른 ID를 재설정합니다. 객체 추적을 위해 Ultralytics 활용하는 사용자는 프레임 간 동일성 일관성을 유지하는 유사한 내부 로직의 혜택을 누릴 수 있습니다.
  • 영상 이해: 수 초 또는 수 분에 걸쳐 발생하는 동작을 인식하려면 모델에 시간적 맥락이 필요합니다. 메모리 뱅크는 과거 프레임이나 클립을 위한 버퍼 역할을 하여 네트워크가 영상의 끝부분을 처리하는 동안 시작 부분에서 발생한 일을 "기억"할 수 있게 합니다. 이는 정확한 동작 인식에 매우 중요합니다.

관련 개념 구분하기

메모리 뱅크를 용어집에 수록된 다른 저장 및 처리 개념과 구분하는 것이 유용합니다:

  • 메모리 뱅크 대 벡터 데이터베이스: 둘 다 검색을 위한 임베딩을 저장합니다. 그러나 메모리 뱅크는 일반적으로 단일 모델 세션의 훈련 또는 능동적 추론 중에 동적으로 사용되는 일시적인 메모리 내 구조입니다. 벡터 데이터베이스( RAG에서 사용되는 것과 같은)는 영구적으로 지속되고 여러 애플리케이션에 서비스를 제공하기 위한 영구적이고 확장 가능한 저장 솔루션입니다.
  • 메모리 뱅크 대 컨텍스트 윈도우: 컨텍스트 윈도우(트랜스포머에서 흔히 사용됨)는 모델이 한 번에 처리하는 최대 입력 시퀀스 길이(예: 32k 토큰)를 정의합니다. 메모리 뱅크는 활성 처리 윈도우 외부에 압축된 표현을 저장하는 외부 버퍼로, 이론적으로 무한한 메모리 깊이를 허용하며, 트랜스포머-XL과 같은 아키텍처에서 볼 수 있습니다.
  • 메모리 뱅크 대 배치 크기: 배치 크기는 경사도 업데이트를 위해 병렬 처리되는 샘플 수를 결정합니다. 메모리 뱅크는 전방 및 후방 전파의 계산 비용을 증가시키지 않으면서 모델이 비교 목적으로 "확인"할 수 있는 효과적인 샘플 수를 증가시킵니다.

코드 예시: 피처 뱅크 시뮬레이션

다음 사항 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단계 전에 뱅크에 저장된 특징들은 "오래된" 상태이거나 현재 모델 상태와 일관성이 없을 수 있습니다. 모멘텀 인코더(모델의 천천히 업데이트되는 평균값)와 같은 기법은 이 문제를 완화하는 데 도움이 됩니다.

이러한 고급 기법을 활용하는 데이터셋 버전과 모델 아티팩트를 관리하려는 팀을 위해 Ultralytics 데이터를 체계화하고, 실험을 track , 모델을 효율적으로 배포할 수 있는 중앙 집중식 허브를 제공합니다. 특징 저장 및 검색의 복잡성을 관리하는 것은 실험적 인공지능(AI) 에서 견고한 생산 시스템으로 전환하는 데 필수적입니다.

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기