深圳Yolo 视觉
深圳
立即加入
词汇表

深度混合(MoD)

探索深度混合(MoD)如何通过动态路由令牌来优化AI效率。了解该技术如何Ultralytics 大型语言模型(LLMs)的浮点运算次数(FLOPs)。

在深度学习架构中,计算效率至关重要,尤其在处理长序列或高分辨率输入时。一种新颖方法通过让网络自主决定输入数据的哪些部分需要完整处理、哪些部分可安全跳过特定层,从而动态分配计算资源。这种动态路由策略在不牺牲模型预测能力或准确性的前提下,有效降低了整体计算复杂度

理解概念

深度混合(MoD)是一种主要应用于Transformer 架构技术,该模型能够动态跳过特定层级中某些标记的计算。传统Transformer模型会将每个标记(无论是否为关键信息或填充内容)处理通过所有层级。相比之下,MoD模型采用路由器机制评估标记并赋予其评分。 仅最高分令牌(不超过预设容量上限) 才会通过注意力机制或全连接层等 高计算复杂度模块。其余令牌通过残差连接 绕过该模块,从而形成"深度混合"机制—— 不同令牌经历不同程度的深度处理。

该方法由DeepMind近期研究推广,并在arXiv库中得到详尽记录,它能大幅减少训练和推理过程中所需的浮点运算总数(FLOPs)

与专家混合(MoE)的区别

这个概念很容易与专家混合模型(MoE)混淆。虽然两者都使用路由机制,但它们解决的是不同的问题:

  • MoE将令牌路由至同一层内的不同子网络(专家)。所有令牌的计算深度保持不变,但模型的参数数量随之增加。
  • MoD将令牌路由至计算块或跳过连接。参数计数保持严格恒定,但重要性较低的令牌其计算深度会降低,从而直接提升推理延迟

实际应用

动态计算预算能力使该技术在计算机视觉和自然语言处理的多个领域具有极高价值。

  1. 语言模型中的上下文优化:现代 大型语言模型(LLMs)来自 OpenAI和Anthropic等机构 Anthropic 处理海量上下文窗口。通过采用动态深度路由机制,这些模型能跳过结构性或重复性填充词,将深度计算资源保留用于复杂推理步骤和事实提取。
  2. 高分辨率视觉AI: Ultralytics 等先进视觉系统中,处理大型图像进行目标检测图像分割需要海量内存。 深度路由技术使网络能够跳过均匀背景(如空旷天空或空白墙面)的特征提取,将计算资源集中于复杂前景物体。这对将模型部署至CUDA 库调优的资源受限边缘AI硬件至关重要。

实施实例

以下是一个概念PyTorch ,演示了基本路由机制如何跳过部分输入令牌的计算,从而模拟深度路由行为。

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)

通过利用PyTorch 或TensorFlow等框架 TensorFlow,开发者可集成这些定制化的 模型优化模块。 此外Ultralytics 工具能协助团队管理 准确训练这些路由器所需的 训练数据,同时Google AI等企业生态系统 实现无缝集成。

使用Ultralytics YOLO增强动力

为您的项目获取高级 AI 视觉。立即找到适合您目标的许可证。

探索许可选项