Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

Hỗn hợp độ sâu (MoD)

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.

Hiểu khái niệm

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.

Phân biệt với hỗn hợp các chuyên gia (MoE)

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:

  • MoE định tuyến các token đến các mạng con khác nhau (chuyên gia) trong cùng một lớp. Độ sâu tính toán vẫn giữ nguyên cho tất cả các token, nhưng số lượng tham số của mô hình tăng lên.
  • MoD định tuyến các token đến khối tính toán hoặc kết nối bỏ qua. Số lượng tham số vẫn không đổi, nhưng độ sâu tính toán giảm đối với các token ít quan trọng hơn, trực tiếp cải thiện độ trễ suy luận .

Các Ứng dụng Thực tế

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.

  1. Tối ưu hóa ngữ cảnh trong mô hình ngôn ngữ: Các mô hình ngôn ngữ lớn hiện đại (LLM) từ các tổ chức như OpenAIAnthropic xử lý các cửa sổ ngữ cảnh khổng lồ. Bằng cách sử dụng định tuyến độ sâu động, các mô hình này có thể bỏ qua các từ đệm cấu trúc hoặc lặp lại, dành khả năng tính toán sâu cho các bước suy luận phức tạp và trích xuất thông tin thực tế.
  2. Trí tuệ nhân tạo thị giác độ phân giải cao: Trong các hệ thống thị giác tiên tiến như mô hình Ultralytics YOLO26 , việc xử lý các hình ảnh lớn để phát hiện đối tượngphân đoạn hình ảnh đòi hỏi bộ nhớ khổng lồ. Định tuyến theo chiều sâu cho phép mạng bỏ qua việc trích xuất đặc trưng trên các nền đồng nhất (như bầu trời trống hoặc tường trắng), tập trung sức mạnh tính toán vào các đối tượng phức tạp ở tiền cảnh. Điều này rất quan trọng để triển khai các mô hình trên phần cứng AI biên có tài nguyên hạn chế được tối ưu hóa bằng các thư viện tối ưu hóa CUDA .

Ví dụ triển khai

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 .

Tăng sức mạnh với Ultralytics YOLO

Nhận AI thị giác tiên tiến cho các dự án của bạn. Tìm giấy phép phù hợp với mục tiêu của bạn ngay hôm nay.

Tìm hiểu các tùy chọn cấp phép