Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

Mezcla de profundidades (MoD)

Descubra cómo Mixture of Depths (MoD) optimiza la eficiencia de la IA mediante el enrutamiento dinámico de tokens. Descubra cómo esta técnica reduce los FLOP en Ultralytics y los LLM.

En las arquitecturas de aprendizaje profundo, la eficiencia computacional es primordial, especialmente cuando se procesan secuencias largas o entradas de alta resolución. Un enfoque novedoso asigna dinámicamente los recursos computacionales al permitir que la red decida qué partes de la entrada requieren un procesamiento completo y cuáles pueden omitir ciertas capas de forma segura. Esta estrategia de enrutamiento dinámico reduce la complejidad computacional general sin sacrificar la capacidad predictiva ni la precisión del modelo.

Comprender el concepto

La mezcla de profundidades (MoD) es una técnica arquitectónica que se aplica principalmente a las arquitecturas Transformer, en las que el modelo aprende a omitir dinámicamente el cálculo de tokens específicos en varias capas. Los transformadores tradicionales procesan cada token a través de todas las capas, ya sea una pieza de información crucial o contenido de relleno. Por el contrario, un modelo MoD utiliza un mecanismo de enrutamiento para evaluar los tokens y asignarles una puntuación. Solo los tokens con la puntuación más alta, hasta un límite de capacidad predefinido, pasan por los bloques de cálculo pesados, como los mecanismos de atención o las capas densas de alimentación directa . Los tokens restantes omiten el bloque a través de conexiones residuales, creando efectivamente una «mezcla de profundidades» en la que los diferentes tokens experimentan distintos niveles de profundidad de procesamiento.

Este método, popularizado por la reciente investigación de DeepMind y documentado extensivamente en el repositorio arXiv, reduce drásticamente el número total de operaciones de coma flotante (FLOP) necesarias tanto durante el entrenamiento como durante la inferencia.

Diferenciación de la mezcla de expertos (MoE)

Es fácil confundir este concepto con una mezcla de expertos (MoE). Aunque ambos utilizan mecanismos de enrutamiento, resuelven problemas diferentes:

  • El MoE dirige los tokens a diferentes subredes (expertos) dentro de una capa. La profundidad computacional sigue siendo la misma para todos los tokens, pero aumenta el recuento de parámetros del modelo.
  • El MoD dirige los tokens al bloque de cálculo o a una conexión de salto. El recuento de parámetros permanece estrictamente constante, pero la profundidad computacional disminuye para los tokens menos importantes, lo que mejora directamente la latencia de la inferencia.

Aplicaciones en el mundo real

La capacidad de presupuestar dinámicamente los cálculos hace que esta técnica sea muy valiosa en múltiples ámbitos de la visión artificial y el procesamiento del lenguaje natural.

  1. Optimización del contexto en modelos lingüísticos: modernos modelos lingüísticos de gran tamaño (LLM) de organizaciones como OpenAI y Anthropic procesan ventanas de contexto masivas. Al emplear un enrutamiento dinámico en profundidad , estos modelos pueden omitir palabras de relleno estructurales o repetitivas, reservando el cálculo profundo para pasos de razonamiento complejos y la extracción de datos.
  2. IA de visión de alta resolución: en sistemas de visión avanzados como el modelo Ultralytics , el procesamiento de imágenes grandes para la detección de objetos y la segmentación de imágenes requiere una memoria inmensa. El enrutamiento en profundidad permite a la red omitir la extracción de características en fondos uniformes (como cielos vacíos o paredes en blanco ), centrando la potencia computacional en objetos intrincados en primer plano. Esto es crucial para implementar modelos en hardware de IA periférico con recursos limitados optimizado por bibliotecas CUDA .

Ejemplo de aplicación

A continuación se muestra un PyTorch conceptual PyTorch que demuestra cómo un mecanismo de enrutamiento básico podría omitir el cálculo de una parte de los tokens de entrada, simulando un comportamiento de enrutamiento en profundidad.

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)

Aprovechando marcos como el PyTorch o TensorFlow, los desarrolladores pueden integrar estos bloques de optimización de modelos personalizados. Además, herramientas como la Ultralytics ayudan a los equipos a gestionar los datos de entrenamiento necesarios para entrenar con precisión estos enrutadores, además de integrarse a la perfección con ecosistemas empresariales como Google AI.

Potencia con Ultralytics YOLO

Obtenga visión artificial avanzada para sus proyectos. Encuentre la licencia adecuada para sus objetivos hoy mismo.

Explore las opciones de licencia