Ngân hàng bộ nhớ là một cấu trúc dữ liệu được sử dụng trong các thuật toán học máy để lưu trữ và tham chiếu thông tin từ các lần lặp trước hoặc các mẫu đã được xử lý, giúp tách biệt hiệu quả dung lượng bộ nhớ của mô hình khỏi các ràng buộc tính toán tức thời. Trong bối cảnh học sâu (DL) , ngân hàng bộ nhớ thường đóng vai trò là kho lưu trữ các embedding hoặc vector đặc trưng. Điều này cho phép mô hình so sánh đầu vào hiện tại với một lượng lớn dữ liệu đầu vào trước đó mà không cần phải xử lý lại hoặc lưu giữ tất cả dữ liệu đó trong bộ nhớ truy cập ngẫu nhiên (RAM) đang hoạt động cùng một lúc. Bằng cách duy trì một bộ đệm các biểu diễn, mô hình có thể học hỏi từ một bối cảnh rộng hơn, cải thiện hiệu suất trong các tác vụ yêu cầu tính nhất quán lâu dài hoặc so sánh với các tập dữ liệu lớn.
Chức năng chính của bộ nhớ đệm là mở rộng thông tin có sẵn vượt quá kích thước lô dữ liệu hiện tại. Trong quá trình huấn luyện, khi dữ liệu được truyền qua mạng nơ-ron, các biểu diễn đặc trưng thu được sẽ được đẩy vào bộ nhớ đệm. Nếu bộ nhớ đệm đạt đến dung lượng tối đa, các đặc trưng cũ nhất thường bị loại bỏ để nhường chỗ cho các đặc trưng mới, một quá trình được gọi là hàng đợi vào trước ra trước (FIFO).
Cơ chế này đặc biệt quan trọng vì bộ nhớ GPU có hạn. Nếu không có ngân hàng bộ nhớ, việc so sánh một hình ảnh với một triệu hình ảnh khác sẽ đòi hỏi kích thước lô dữ liệu không thể chứa vừa trên phần cứng tiêu chuẩn. Với ngân hàng bộ nhớ, mô hình có thể lưu trữ các vectơ nhẹ của một triệu hình ảnh đó và tham chiếu chúng một cách hiệu quả bằng cách sử dụng các kỹ thuật tìm kiếm sự tương đồng , chẳng hạn như tích vô hướng hoặc độ tương đồng cosin.
Các ngân hàng bộ nhớ đã trở thành nền tảng trong một số quy trình làm việc tiên tiến về thị giác máy tính (CV) và xử lý ngôn ngữ tự nhiên:
Việc phân biệt ngân hàng bộ nhớ với các khái niệm lưu trữ và xử lý khác được tìm thấy trong thuật ngữ là rất hữu ích:
Sau đây là Python Đoạn mã này minh họa khái niệm về ngân hàng bộ nhớ vào trước ra trước (FIFO) bằng cách sử dụng torchCấu trúc này thường được sử dụng để duy trì lịch sử cập nhật liên tục của các vectơ đặc trưng trong các vòng lặp huấn luyện tùy chỉnh hoặc các tác vụ suy luận phức tạp.
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])
Mặc dù mạnh mẽ, các ngân hàng bộ nhớ lại đặt ra thách thức về "sự thay đổi biểu diễn". Vì mạng mã hóa thay đổi nhẹ sau mỗi bước huấn luyện, các đặc trưng được lưu trữ trong ngân hàng từ 100 bước trước có thể bị "lỗi thời" hoặc không nhất quán với trạng thái hiện tại của mô hình. Các kỹ thuật như sử dụng bộ mã hóa động lượng (một giá trị trung bình được cập nhật chậm của mô hình) giúp giảm thiểu vấn đề này.
Đối với các nhóm muốn quản lý các phiên bản tập dữ liệu và các thành phần mô hình sử dụng các kỹ thuật tiên tiến này, Nền tảng Ultralytics cung cấp một trung tâm tập trung để tổ chức dữ liệu. track Các thí nghiệm và triển khai mô hình một cách hiệu quả. Quản lý sự phức tạp của việc lưu trữ và truy xuất tính năng là điều cần thiết để chuyển từ trí tuệ nhân tạo (AI) thử nghiệm sang các hệ thống sản xuất mạnh mẽ.