Mixture of Depths(MoD)がトークンを動的にルーティングすることでAI効率をどのように最適化するかを探ります。この技術がUltralytics YOLO26とLLMのFLOPsをどのように削減するかについて学びましょう。
深層学習アーキテクチャでは、特に長いシーケンスや高解像度の入力を処理する場合、計算効率が最も重要です。新しいアプローチでは、ネットワークが入力のどの部分に完全な処理が必要で、どの部分が特定の層を安全にバイパスできるかを決定できるようにすることで、計算リソースを動的に割り当てます。この動的なルーティング戦略により、モデルの予測能力や精度を犠牲にすることなく、全体の計算複雑度が削減されます。
深さの混合 (MoD) は、主にTransformerアーキテクチャに適用されるアーキテクチャ技術であり、モデルが様々な層で特定のトークンの計算を動的にスキップすることを学習します。従来のTransformerは、重要な情報であろうと埋め草コンテンツであろうと、すべてのトークンをすべての層で処理します。対照的に、MoDモデルはルーターメカニズムを使用してトークンを評価し、スコアを割り当てます。事前定義された容量制限までの高スコアのトークンのみが、アテンションメカニズムや密なフィードフォワード層などの重い計算ブロックを通過します。残りのトークンは残差接続を介してブロックをバイパスし、異なるトークンが様々なレベルの処理深度を経験する「深さの混合」を効果的に生み出します。
この手法は、最近のDeepMindの研究によって普及し、arXivリポジトリで広範に文書化されており、トレーニングと推論の両方で必要とされる浮動小数点演算 (FLOPs)の総数を劇的に削減します。
この概念をMixture of Experts(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 frameworkやTensorFlowのようなフレームワークを活用することで、開発者はこれらのカスタムモデル最適化ブロックを統合できます。さらに、Ultralytics Platformのようなツールは、これらのルーターを正確に訓練するために必要な訓練データをチームが管理するのに役立ち、Google Cloud AIのようなエンタープライズエコシステムとシームレスに統合します。
未来の機械学習で、新たな一歩を踏み出しましょう。