深さの混合(MoD)がトークンを動的にルーティングすることでAI効率を最適化する仕組みを探る。Ultralytics YOLO26およびLLMにおいてFLOPsを削減する方法を学ぶ。
深層学習アーキテクチャでは、特に長いシーケンスや高解像度の入力を処理する場合、計算効率が極めて重要である。新たな手法では、入力のどの部分が完全な処理を必要とし、どの部分が特定の層を安全にバイパスできるかをネットワーク自身に判断させることで、計算リソースを動的に割り当てる。この動的ルーティング戦略は、モデルの予測能力や精度を損なうことなく、全体的な計算複雑性を低減する。
深さ混合(MoD)は主にトランスフォーマーアーキテクチャに適用される手法であり、 モデルが各層において特定のトークンに対する計算を動的にスキップすることを学習する。従来のトランスフォーマーは、 重要な情報であれ埋めの内容であれ、全てのトークンを全層で処理する。これに対し、 MoDモデルはルーター機構を用いてトークンを評価しスコアを割り当てる。 事前定義された容量制限まで、 最高スコアのトークンのみが 注意機構や密なフィードフォワード層などの 高負荷計算ブロックを通過する。 残りのトークンは残差接続を介してブロックを迂回し、 異なるトークンが異なる処理深度を経験する 「深さの混合」を効果的に創出する。
この手法は、最近のDeepMindの研究によって普及し、arXivリポジトリで広く文書化されており、学習時と推論時の両方で必要な浮動小数点演算(FLOPs)の総数を大幅に削減する。
この概念は専門家混合法(MoE)と混同されやすい。 どちらもルーティング機構を用いるが、解決する問題は異なる:
動的に計算リソースを予算化する能力により、この手法はコンピュータビジョンと自然言語処理の複数の領域において非常に価値が高い。
以下は、基本的なルーティング機構が一部の入力トークンの計算をスキップする方法を示す概念的な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といったフレームワークを活用することで、開発者はこれらのカスタム モデル最適化ブロックを統合できます。 さらに、Ultralytics ツールは、これらのルーターを正確にトレーニングするために必要なトレーニングデータの管理を支援し、 Google AIのようなエンタープライズエコシステムとのシームレスな統合を実現します。