Khám phá cách Mixture of Depths (MoD) tối ưu hóa hiệu quả AI bằng cách định tuyến token một cách linh hoạt. Tìm hiểu cách kỹ thuật này giảm thiểu FLOPs trong Ultralytics YOLO26 và LLM.
Trong các kiến trúc học sâu, hiệu quả tính toán là tối quan trọng, đặc biệt khi xử lý các chuỗi dài hoặc đầu vào có độ phân giải cao. Một phương pháp mới phân bổ tài nguyên tính toán một cách linh hoạt bằng cách cho phép mạng quyết định phần nào của đầu vào cần được xử lý đầy đủ và phần nào có thể bỏ qua một số lớp nhất định một cách an toàn. Chiến lược định tuyến động này giúp giảm độ phức tạp tính toán tổng thể mà không làm giảm khả năng dự đoán hoặc độ chính xác của mô hình.
Kiến trúc Mixture of Depths (MoD) chủ yếu được áp dụng cho các kiến trúc Transformer, trong đó mô hình học cách bỏ qua các phép tính một cách linh hoạt đối với các token cụ thể ở các lớp khác nhau. Các Transformer truyền thống xử lý mọi token qua mọi lớp, cho dù đó là một phần thông tin quan trọng hay nội dung phụ. Ngược lại, mô hình MoD sử dụng cơ chế định tuyến để đánh giá các token và gán cho chúng một điểm số. Chỉ những token có điểm số cao nhất—trong giới hạn dung lượng được xác định trước—mới được truyền qua các khối tính toán nặng, chẳng hạn như cơ chế chú ý hoặc các lớp truyền thẳng dày đặc. Các token còn lại bỏ qua khối này thông qua các kết nối dư , tạo ra một "sự pha trộn các độ sâu" hiệu quả, trong đó các token khác nhau trải nghiệm các mức độ xử lý khác nhau.
Phương pháp này, được phổ biến bởi nghiên cứu gần đây của DeepMind và được ghi chép chi tiết trong kho lưu trữ arXiv , giúp giảm đáng kể tổng số phép toán dấu phẩy động (FLOPs) cần thiết trong cả quá trình huấn luyện và suy luận.
Rất dễ nhầm lẫn khái niệm này với mô hình "Hỗn hợp các chuyên gia" (Mixture of Experts - MoE) . Mặc dù cả hai đều sử dụng cơ chế định tuyến, nhưng chúng giải quyết các vấn đề khác nhau:
Khả năng phân bổ ngân sách tính toán một cách linh hoạt khiến kỹ thuật này trở nên vô cùng giá trị trong nhiều lĩnh vực thị giác máy tính và xử lý ngôn ngữ tự nhiên.
Dưới đây là một ý tưởng khái niệm. PyTorch Đoạn mã này minh họa cách một cơ chế định tuyến cơ bản có thể bỏ qua quá trình tính toán đối với một phần các token đầu vào, mô phỏng hành vi định tuyến theo chiều sâu.
import torch
import torch.nn as nn
class MixtureOfDepthsBlock(nn.Module):
def __init__(self, d_model, capacity_factor=0.5):
super().__init__()
self.capacity_factor = capacity_factor
self.router = nn.Linear(d_model, 1)
self.heavy_compute = nn.Sequential(nn.Linear(d_model, d_model * 4), nn.GELU(), nn.Linear(d_model * 4, d_model))
def forward(self, x):
# x shape: (batch_size, seq_len, d_model)
seq_len = x.size(1)
capacity = int(seq_len * self.capacity_factor)
# 1. Compute routing scores
scores = self.router(x).squeeze(-1) # Shape: (batch_size, seq_len)
# 2. Identify top-k tokens to process
topk_indices = torch.topk(scores, capacity, dim=1).indices
# 3. Create an output tensor mirroring the input (residual baseline)
output = x.clone()
# 4. Apply heavy computation only to the selected tokens
for b in range(x.size(0)):
selected_tokens = x[b, topk_indices[b]]
processed_tokens = self.heavy_compute(selected_tokens)
output[b, topk_indices[b]] += processed_tokens
return output
# Example usage
dummy_input = torch.randn(2, 64, 128) # Batch=2, Seq=64, Dim=128
mod_block = MixtureOfDepthsBlock(d_model=128, capacity_factor=0.5)
output = mod_block(dummy_input)
print(f"Output shape: {output.shape}") # Expect (2, 64, 128)
Bằng cách tận dụng các framework như PyTorch hoặc TensorFlow , các nhà phát triển có thể tích hợp các khối tối ưu hóa mô hình tùy chỉnh này. Hơn nữa, các công cụ như Ultralytics Platform giúp các nhóm quản lý dữ liệu huấn luyện cần thiết để huấn luyện chính xác các bộ định tuyến này, đồng thời tích hợp liền mạch với các hệ sinh thái doanh nghiệp như Google Cloud AI .